Operating Systems Homework

profilebshap0624
project4.tgz

home/bshapir/cs314/project4/option1/lab4_1/lab4.ppt

Lab 4: Memory Management

Lab 4

  • Part 1: Dynamic one-level paging
  • Part 2: Dynamic two-level paging
  • Part 3: Shared memory

lab4-1: Dynamic one-level page

  • DLXOS so far
  • Static one-level page table
  • Single 64KB page
  • memory.h:
  • #define MEMORY_L1_PAGE_SIZE_BITS 16
  • #define L1_MAX_ENTRIES 0x01
  • process.c: ProcessFork()
  • pcb->npages = 1;

lab4-1: Dynamic one-level page

  • Page size: 8kb
  • 256 total pages, 2mb total space
  • Max 512kb virtual space per process
  • Max 16 physical pages per process
  • Track using PCB->npages
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Lab4-1: The Translation

Page 0

Page 1

Page 2

Page N-2

Page N-1

Frame

Number

Valid

Flag

page table

Virtual Address

offset

Physical Address

offset

(512KB  19bit)

Frame Number

(2MB  21bit)

Page Number

Lab4-1: To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, …
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address using page table
  • process.c: ProcessFork()
  • Allocate initial pages (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exits.

Lab4-1: More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

Utility functions

  • MemoryAllocPage()
  • Allocate a page of memory and return page number.
  • MemorySetupPte()
  • Given a page number, return the page table entry.
  • MemoryFreePage()
  • Given a page table entry, free the page.

Lab4-2: Dynamic two-level paging

  • Virtual address space per process: 16MB
  • How many bits is virtual address?
  • Page size: 8kb
  • How many pages one process has?
  • One L1 page table entry corresponds to 512kb
  • How many entries in L1, L2 page tables?
  • Max 1MB physical space per process
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Two Level Paging

L1

Virtual Memory

16MB

0

L2

To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, L2_MAX_ENTRIES …
  • process.c: ProcessFork()
  • Allocate initial L2 page table and initial page (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exit.
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address

More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix L1, L2 page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

home/bshapir/cs314/project4/option1/lab4_1/dlxsim.cc

home/bshapir/cs314/project4/option1/lab4_1/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  This file contains the routines that manage higher-level
//  functionality.  Instruction execution is in a separate file.
//

/* Copyright (c) 1999-2004 by Ethan L. Miller

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.
*/

static   char  rcsid []   =
     "$Id: dlxsim.cc,v 1.16 2004/10/01 18:43:40 elm Exp $" ;
char  rcsDlxsimDate []   =   "$Date: 2004/10/01 18:43:40 $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   < time . h >
#include   < signal . h >
#include   < fcntl . h >
#include   "dlx.h"
#include   "dlx-inlines.h"

extern   int  errno ;
char  debug [ 100 ];
//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu ( int  msize ) : debugger ( NULL )
{
     int  i ;
     struct  timeval t ;

    flags  =   0 ;
    usElapsed  =   0 ;
    tickCounter  =   0 ;
    instrsExecuted  =   0 ;
    instPerUs  =   1 ;
     for   ( =   0 ;  i  <   32 ;  i ++ )   {
        sreg [ i ]   =   0 ;
        ireg [ i ]   =   0 ;
        freg [ i ]   =   0 ;
     }
     SetStatusBit ( DLX_STATUS_PAGE_TABLE );
     SetStatusBit ( DLX_STATUS_SYSMODE );
     EnableInterrupts ();
    timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
    memSize  =  msize ;
    memory  =   new  uint32 [ msize  /   sizeof ( uint32 )];
    basicBlockStart  =   1 ;          // basic block can never start at address 1!
     // Initialize the keyboard I/O stuff.
    kbdbufferedchars  =   0 ;
    kbdrpos  =  kbdwpos  =   0 ;
    kbdcounter  =   0 ;
    diskIntrTime  =   1e60 ;
     SetupRawIo ();
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =   ( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
  Cpu :: TraceFile ( char   * name )
{
     if   (( name  ==  NULL )   ||   ( ! strcmp ( name ,   "-" )))   {
        tracefp  =  stdout ;
         return   ( 1 );
     }   else   if   (( tracefp  =  fopen ( name ,   "w" ))   ==  NULL )   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int   Cpu :: CauseException ( int  excType )
{
    uint32 ivec ;

    DBPRINTF ( 't' ,   "Exception being done (cause=0x%x @ pc=0x%x).\n" ,
             excType ,  PC ()   -   4 );
    ivec  =   GetSreg ( DLX_SREG_INTRVEC );
     OutputBasicBlock ( ivec );
     if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
        fprintf ( tracefp ,   "X %x %x\n" ,  excType ,  PC ()   -   4 );
     }
     PutSreg ( DLX_SREG_CAUSE ,  excType );
     // PC has already been incremented, so decrement it first.  If this
     // is a trap or interrupt, the PC will have already been incremented
     // (if necessary) so the IAR points to the next instruction to
     // execute.
     PutSreg ( DLX_SREG_IAR ,  PC ()   -   4 );
     // Save the current status register
     PutSreg ( DLX_SREG_ISR ,   GetSreg ( DLX_SREG_STATUS ));
     // Save the current value of register 31.  This is necessary to give
     // the interrupt handler a temporary register that can be used to
     // switch to a system stack (rather than user stack)
     PutSreg ( DLX_SREG_IR31 ,   GetIreg ( 31 ));
     // Set the next instruction to be run to be the interrupt vector.
     SetPC ( ivec );
     // Set the status register to be system mode
     PutSreg ( DLX_SREG_STATUS ,
             GetSreg ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
     // Turn off interrupts
     DisableInterrupts ();
     return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
     int
     Cpu :: VaddrToPaddr ( uint32 vaddr ,  uint32  &  paddr ,  uint32 op ,
                      uint32 pteflags )
{

     if   (( vaddr  &   0x3 )   !=   0 )   {
         CauseException ( DLX_EXC_ADDRESS );
         return   ( 0 );
     }
     // For system references, physical address is the same
     // as virtual address.  Also, if no translation bits are set, physical
     // address is set to virtual address.
    paddr  =  vaddr ;
     if   ( UserMode ())   {
         // For user mode addresses, translate using 
         if   ( StatusBit ( DLX_STATUS_PAGE_TABLE ))   {
            uint32 pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
            uint32 pteaddr ;
            uint32 offsetinpage ,  entrynum ;
            uint32 pagemask ;

            DBPRINTF ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
            pt1base  =   GetSreg ( DLX_SREG_PGTBL_BASE );
            pt1pagebits  =   GetSreg ( DLX_SREG_PGTBL_BITS );
            pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
            pt1pagebits  &=   0xffff ;
            pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
            offsetinpage  =  vaddr  &  pagemask ;
             // Mask off the low bits
            vaddr  &=   ~ pagemask ;
             if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
                 GetSreg ( DLX_SREG_PGTBL_SIZE ))   {
                DBPRINTF ( 'm' ,
                          "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
                         pt1pagebits ,  pt2pagebits ,
                          GetSreg ( DLX_SREG_PGTBL_SIZE ),  entrynum );
                 CauseException ( DLX_EXC_ACCESS );
                 return   ( 0 );
             }
            pteaddr  =  pt1base  +   4   *  entrynum ;
            paddr  =   Memory ( pteaddr );
             // If the L2 page size is the same as the L1 page size, there's
             // no L2 page table!
             if   ( pt1pagebits  !=  pt2pagebits )   {
                pt2base  =  paddr ;
                 if   ( pt2base  ==   0 )   {
                    DBPRINTF ( 'm' ,
                              "No L2 table at entry %d! (base = 0x%x)\n" ,
                             entrynum ,  pt1base );
                     CauseException ( DLX_EXC_PAGEFAULT );
                     return   ( 0 );
                 }
                pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                                          (( 1   <<
                                            ( pt1pagebits  -  pt2pagebits ))   -
                                           1 ));
                paddr  =   Memory ( pteaddr );
             }
            DBPRINTF ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
             if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
                DBPRINTF ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_PAGEFAULT );
                 return   ( 0 );
             }
             if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
                 SetMemory ( pteaddr ,
                          paddr  |   ( pteflags  &
                                    ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
             }
            paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
            paddr  |=  offsetinpage ;
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
                     vaddr  |  offsetinpage ,  paddr ,
                      Memory ( paddr ),  pt1base ,  pt1pagebits ,  entrynum );
             // Fall through for address range check
         }   else   if   ( StatusBit ( DLX_STATUS_TLB ))   {
             // TLB is fully associative
             int  tlbLine ,  gotAddr  =   0 ;
            uint32 tlbVpage ,  tlbPpage ,  pageSize ,  pageMask ,  entryBits ;

            DBPRINTF ( 'm' ,   "Translating addr 0x%x with TLB.\n" ,  vaddr );
             for   ( tlbLine  =   0 ;  tlbLine  <  DLX_TLB_NENTRIES ;  tlbLine ++ )   {
                 GetTlb ( tlbLine ,  tlbVpage ,  tlbPpage );
                pageSize  =   1   <<   ( tlbPpage  &  DLX_TLB_ENTRY_PAGESIZE_MASK );
                pageMask  =   ~ ( pageSize  -   1 );
                entryBits  =  tlbVpage  &  DLX_PTE_MASK ;
                tlbVpage  &=  pageMask ;
                 if   (( vaddr  >=   ( tlbVpage  &  pageMask ))   &&
                     ( vaddr  <   ( tlbVpage  +  pageSize ))   &&
                     ( entryBits  &  DLX_PTE_VALID ))   {
                     // Got a match!
                    gotAddr  =   1 ;
                     break ;
                 }
             }
             if   ( ! gotAddr )   {
                DBPRINTF ( 'm' ,   "No TLB entry for vaddr 0x%x.\n" ,  vaddr );
                 // Cause a TLB exception if we didn't find the page
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_TLBFAULT );
                 return   ( 0 );
             }
             AccessTlb ( tlbLine ,  DLX_PTE_REFERENCED  |
                       (( op  ==  DLX_MEM_WRITE )   ?  DLX_PTE_DIRTY  :   0 ));
            paddr  =   ( tlbPpage  &  pageMask )   |   ( vaddr  &   ~ pageMask );
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using tlb entry %d (v=%08x,p=%08x)\n" ,
                     vaddr ,  paddr ,   Memory ( paddr ),  tlbLine ,  tlbVpage ,
                     tlbPpage );
             // Fall through for address range check
         }
     }
     if   (( paddr  <=  memSize )   ||   (( paddr  >=  DLX_IO_BASE )   &&
                                ( paddr  <=   ( DLX_IO_BASE  +  DLX_IO_SIZE ))))   {
         return   ( 1 );
     }   else   {
        DBPRINTF ( 't' ,   "Illegal system address: 0x%x.\n" ,  vaddr );
         CauseException ( DLX_EXC_ACCESS );
         return   ( 0 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
  Cpu :: ReadWord ( uint32 vaddr ,  uint32  &  val ,  uint32 op )
{
    uint32 paddr ;
     int  i ;
     int  done  =   0 ;

    DBPRINTF ( 'l' ,   "Trying to read virtual address: 0x%x.\n" ,  vaddr );
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
        val  =   Memory ( paddr );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_STATUS  +   ( *   0x10 ))   {
                 if   ( disk [ i ]   !=  NULL )   {
                    val  =  disk [ i ] -> GetStatus ();
                 }   else   {
                    val  =   0 ;
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
        DBPRINTF ( 'l' ,   "Trying to load special address: 0x%x.\n" ,  paddr );
         switch   ( paddr )   {
         case  DLX_KBD_NCHARSIN :
            val  =   KbdNumInChars ();
             break ;
         case  DLX_KBD_NCHARSOUT :
            val  =   KbdNumOutChars ();
             break ;
         case  DLX_KBD_GETCHAR :
            val  =   KbdGetChar ();
             break ;
         case  DLX_GETMEMSIZE :
            val  =  memSize ;
             break ;
         case  DLX_TIMER_GETTIMER :
            val  =   GetTimer ();
             break ;
         case  DLX_TIME_MICROSECONDS :
            val  =   ( int )   ( usElapsed  %   1000000L );
             break ;
         case  DLX_TIME_SECONDS :
            val  =   ( int )   ( usElapsed  /   1000000L );
             break ;
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: WriteWord ( uint32 vaddr ,  uint32 val )
{
    uint32 paddr ;
     int  done  =   0 ;
     int  i ;

     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
                      DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
         SetMemory ( paddr ,  val );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_REQ  +   ( *   0x10 ))   {
                 if   (( disk [ i ]   !=  NULL ))   {
                    val  =  disk [ i ] -> StartIo ( val ,   this );
                     if   ( disk [ i ] -> FinishTime ()   <  diskIntrTime )   {
                        diskIntrTime  =  disk [ i ] -> FinishTime ();
                     }
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
         switch   ( paddr )   {
         case  DLX_KBD_PUTCHAR :
             KbdPutChar ( val );
             break ;
         case  DLX_KBD_INTR :
             if   ( val  ==   0 )   {
                flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
             }   else   {
                flags  |=  DLX_FLAG_KBD_INTERRUPT ;
             }
             break ;
         case  DLX_TIMER_SETTIMER :
            DBPRINTF ( 'o' ,   "Setting timer to %d us.\n" ,  val );
             SetTimer ( val );
             break ;
#if   0
         case  DLX_DISK_REQUEST :
            diskReq  =  val ;
             StartDiskIo ();
             break ;
         case  DLX_DISK_BLOCK :
            diskBlock  =  val ;
             break ;
         case  DLX_DISK_ADDR :
            diskAddr  =  val ;
             break ;
#endif
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: TestWriteWord ( uint32 vaddr )
{
    uint32 paddr ;
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void   Cpu :: Open ()
{
    uint32 name ;
     char  nameBuf [ 100 ];
     char   * tp ;
     int  accessType ;
     int  i ;

    name  =   GetParam ( 0 );
    accessType  =   GetParam ( 1 );
    DBPRINTF ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * )  memory  +  name ,
             accessType );
     switch   ( accessType )   {
     case   1 :
        tp  =   "r" ;
         break ;
     case   2 :
        tp  =   "w" ;
         break ;
     case   3 :
        tp  =   "r+" ;
         break ;
     default :
         SetResult ( 0xffffffff );
         return ;
         break ;
     }
     for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
         if   ( fp [ i ]   ==  NULL )   {
             if   ( ! CheckAddr ( name ))   {
                 SetResult ( 0xffffffff );
                 return ;
             }
            strncpy ( nameBuf ,   ( char   * )  memory  +  name ,   98 );
             // If fopen fails, it returns NULL, so it looks like no open
             // was done.
            fp [ i ]   =  fopen ( nameBuf ,  tp );
             break ;
         }
     }
     if   ( >=  DLX_MAX_FILES )   {
        i  =   - 1 ;
     }   else   if   ( fp [ i ]   ==  NULL )   {
        i  =   - errno ;
     }
    DBPRINTF ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
     SetResult ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void   Cpu :: Read ()
{
     FileIo ( DLX_FILE_READ );
}

void   Cpu :: Write ()
{
     FileIo ( DLX_FILE_WRITE );
}

void   Cpu :: FileIo ( int  kind )
{
     int  fd ;
    uint32 buf ;
     int  size ;
     int  n ;

    fd  =   GetParam ( 0 );
    buf  =   GetParam ( 1 );
    size  =   GetParam ( 2 );
    DBPRINTF ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
              ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,  fd ,  size ,  buf );
     if   ( ! CheckAddr ( buf )   ||   ( ! CheckFd ( fd )))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   ( kind  ==  DLX_FILE_WRITE )   {
        n  =  fwrite (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }   else   {
        n  =  fread (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }
     if   ( >   0 )   {
         SetResult ( n );
     }   else   if   ( feof ( fp [ fd ]))   {
         SetResult ( 0 );
     }   else   {
         SetResult ( - errno );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void   Cpu :: Seek ()
{
     int  fd ;
     int  offset ;
     int  whence ;
     int  rv ;

    fd  =   GetParam ( 0 );
    offset  =   GetParam ( 1 );
    whence  =   GetParam ( 2 );
     if   ( ! CheckFd ( fd ))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   (( rv  =  fseek ( fp [ fd ],  offset ,  whence ))   <   0 )   {
         SetResult ( rv );
     }   else   {
         SetResult ( ftell ( fp [ fd ]));
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void   Cpu :: Close ()
{
     int  fd ;
    uint32 retval ;

    fd  =   GetParam ( 0 );
     if   ( ! CheckFd ( fd ))   {
        retval  =   0xffffffff ;
     }   else   {
        retval  =  fclose ( fp [ fd ]);
     }
    DBPRINTF ( 'F' ,   "Closing file %d.\n" ,  fd );
    fp [ fd ]   =  NULL ;
     SetResult ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void   Cpu :: Random ()
{
     int  n ;

    n  =  random ();
     SetResult ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void   Cpu :: Srandom ()
{
    uint32 seed ;

    seed  =   GetParam ( 0 );
    srandom ( seed );
     SetResult ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetTime
//
//  Get the current (real world) time.
//
//----------------------------------------------------------------------
void   Cpu :: GetTime ()
{
     SetResult ( time (( time_t  * )   0 ));
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32  Cpu :: GetParam ( int  p )
{
    uint32 stackPtr ;

    stackPtr  =   GetIreg ( 29 );
     return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void   Cpu :: SetResult ( uint32 r )
{
     PutIreg ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void   Cpu :: Printf ()
{
    uint32 fmtaddr ;
     char   * c ;
    uint32 args [ 10 ];
     int  nargs  =   0 ;

    fmtaddr  =   GetParam ( 0 );
     // 
     for   ( =  fmtaddr  +   ( char   * )  memory ;   * !=   '\0' ;  c ++ )   {
         if   ( * ==   '%' )   {
             // if this is a %%, skip past second %
             if   ( * ( +   1 )   ==   '%' )   {
                c ++ ;
                 continue ;
             }
             // Get the current argument off the stack
            args [ nargs ]   =   GetParam ( nargs  +   1 );
            DBPRINTF ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
                     args [ nargs ],  args [ nargs ]);
             while   ( 1 )   {
                c ++ ;
                 if   ( * ==   's' )   {
                     // If it's a string, the address is relative to the
                     // start of emulated memory.
                    args [ nargs ]   +=   ( uint32 )  memory ;
                     break ;
                 }   else   if   ( * ==   'l' )   {
                     continue ;
                 }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
                     // If it's a floating point number, it'll be passed as
                     // a double, so grab the second word also.
                    nargs  +=   1 ;
                    args [ nargs ]   =   GetParam ( nargs  +   1 );
                     break ;
                 }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
                     // If it's another formatting character, it's not
                     // a string, but we can leave the loop anyway.
                     break ;
                 }
             }
            nargs  +=   1 ;
         }
     }
    printf ( fmtaddr  +   ( char   * )  memory ,
           args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
           args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
    fflush ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void   Cpu :: Exit ()
{
     struct  timeval t ;

    printf ( "Exiting at program request.\n" );
    printf ( "Instructions executed: %.0lf\n" ,   ( double )  instrsExecuted );
    printf ( "Time simulated: %.03lf secs\n" ,   ( double )  usElapsed  /   1e6 );
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =
         (( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 )   -  realElapsed ;
    printf ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
    printf
         ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
          ( double )  instrsExecuted  *   1e-6   /  realElapsed );
     ClearRawIo ();
    exit ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int   Cpu :: ExecOne ()
{
     int  i ;
    uint32 curInst ;
    uint32 tmpPc ;
    uint32 curOp ;
    uint32 retval ;
    uint32 funcCode ;              // subcode for RRR & FP ops
     static   int  kbdIntrPending  =   0 ;

     if   ( ++ tickCounter  >=  instPerUs )   {
        tickCounter  =   0 ;
        usElapsed  +=   1 ;
        instrsExecuted  +=  instPerUs ;
     }
     // Increment PC before checking for interrupts because CauseException
     // will subtract 4 off the PC before placing the value into the IAR.
     // By incrementing here, we ensure that the current instruction is
     // the one whose address goes into the IAR.
     SetPC ( PC ()   +   4 );
     // Check for an input character.  If we got one, remember it so that
     // we can interrupt next time interrupts are enabled.
     if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
        kbdcounter  =   0 ;
        kbdIntrPending  |=   GetCharIfAvail ();
        stopnext  =   ( debugger  &&  debugger -> HasData ());
     }

     if   ( IntrLevel ()   <   8 )   {
         // Check for previous keyboard interrupt
         if   ( kbdIntrPending )   {
            DBPRINTF ( 't' ,   "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
            kbdIntrPending  =   0 ;   // Reset to no pending interrupt
             CauseException ( DLX_EXC_KBD );
             return   ( 0 );
         }   else   if   ( diskIntrTime  <  usElapsed )   {
             int  nextDisk  =   - 1 ;
            DBPRINTF ( 't' ,   "Disk interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
             CauseException ( DLX_EXC_DISK );
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  usElapsed ))   {
                    disk [ i ] -> FinishIo ( this );
                 }
             }
            diskIntrTime  =   1e60 ;
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  diskIntrTime ))   {
                    diskIntrTime  =  disk [ i ] -> FinishTime ();
                    nextDisk  =  i ;
                 }
             }
            DBPRINTF ( 'K' ,   "Disk interrupt time (disk %d) is %g.\n" ,
                     nextDisk ,  diskIntrTime );
             return   ( 0 );
         }   else   if   ( timerInterrupt  <  usElapsed )   {
            DBPRINTF ( 't' ,
                      "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
                     PC ()   -   4 ,   ( double )  usElapsed ,
                      ( double )  timerInterrupt );
            timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
             CauseException ( DLX_EXC_TIMER );
             return   ( 0 );
         }
     }

     if   ( ! ReadWord ( PC ()   -   4 ,  curInst ,  DLX_MEM_INSTR ))   {
        DBPRINTF ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC ()   -   4 );
         return   ( 0 );
     }
    curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
    DBPRINTF ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
              ( int )  instrsExecuted  %   1000000 ,
             curInst ,  PC ()   -   4 ,  curOp ,
              ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
             DLX_ALU_FUNC_CODE_MASK );
     switch   ( curOp )   {
     case   0x00 :                    // ALU and other R-R operations
        funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
                    DLX_ALU_FUNC_CODE_MASK );
        retval  =   ( rrrInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     case   0x01 :                    // FP operations
        funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
                    DLX_FPU_FUNC_CODE_MASK );
        retval  =   ( fpInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     default :
        retval  =   ( regInstrs [ curOp ]. handler )   ( curInst ,   this );
         break ;
     }
     if   ( stopnext )   {
        stopnext  =   false ;
         DebugControl ();
     }
     return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format is elf.
//  basically hands just hands control to the elf stuff
//
//----------------------------------------------------------------------


extern   "C"   {
#include   "elf.h"
     int   Cpu :: LoadMemory ( const   char   * file ,  uint32  &  startAt )   {
         Elf32_EHdr  hdr ;
        FILE  * fp ;

         if   (( fp  =  fopen ( file ,   "r" ))   ==  NULL )   {
            fprintf ( stderr ,   "Couldn't open file\n" );
             return   ( 0 );
         }

         if   ( - 1   ==  read_elfheader ( fp ,   & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to readelf header\n\n\n" );
             return   ( 0 );
         }
        startAt  =  ntohl ( hdr . e_entry );

         if   ( - 1   ==
            load_program ( fp ,   (( unsigned   char   * )   (( void   * )  memory )),
                          & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to load program\n\n\n" );
             return   ( 0 );
         }

        fclose ( fp );
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void   Cpu :: SetTimer ( uint32 usecs )
{
    timerInterrupt  =  usElapsed  +  usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::GetTimer
//
//----------------------------------------------------------------------
uint32  Cpu :: GetTimer ()
{
     return   (( uint32 )   ( timerInterrupt  -  usElapsed ));
}


//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32  Cpu :: KbdGetChar ()
{
    uint32 v ;

     if   ( kbdbufferedchars  ==   0 )   {
         return   ( 0 );
     }
    v  =  kbdbuffer [ kbdrpos ++ ];
    kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
    kbdbufferedchars -- ;
     return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void   Cpu :: IgnoreExit ( int  ignore )
{
    flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
     if   ( ignore )   {
        flags  |=  DLX_FLAG_IGNORE_EXIT ;
     }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void   Cpu :: OutputBasicBlockActual ()
{
     int  i ,  ninstrs ;

    ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
     // Print out the basic block information here
     if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
        fprintf ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
     }
     if   ( flags  &  DLX_TRACE_MEMORY )   {
         for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
            fprintf ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,
                    accesses [ i ]. reg ,  accesses [ i ]. addr ,  accesses [ i ]. value );
         }
     }
    naccesses  =   0 ;
}

//----------------------------------------------------------------------
//
//  Cpu::DebugControl
//
//  Hands control to the debugger
//
//----------------------------------------------------------------------
void   Cpu :: DebugControl ()
{
     if   ( debugger )
        stopnext  =  debugger -> TakeControl ();
}

home/bshapir/cs314/project4/option1/lab4_1/execs/os.dlx.obj

start:00001000 00012dfc 00001000 00009ff8 0000b000 00007dfc 00001000:3c010000 :24211010 :00204030 :08005e34 :0060f831 :33ff0040 :17e0001c :3c1f0000 :27fffe28 :8fff0000 :8fff0004 :affdff48 :37fd0000 :10000004 :afbdff48 :2fbd0154 :afa1002c :afa20030 :afa30034 :afa40038 :afa5003c :afa60040 :afa70044 :afa80048 :afa9004c :afaa0050 :afab0054 :afac0058 :afad005c :afae0060 :afaf0064 :afb00068 :afb1006c :afb20070 :afb30074 :afb40078 :afb5007c :afb60080 :afb70084 :afb80088 :afb9008c :afba0090 :afbb0094 :afbc0098 :afbe00a0 :00401831 :afa300a4 :bfa000a8 :bfa200b0 :bfa400b8 :bfa600c0 :bfa800c8 :bfaa00d0 :bfac00d8 :bfae00e0 :bfb000e8 :bfb200f0 :bfb400f8 :bfb60100 :bfb80108 :bfba0110 :bfbc0118 :bfbe0120 :00802031 :afa40128 :00602831 :afa5012c :00c03031 :afa60130 :01201831 :afa30134 :01801831 :afa30138 :01a01831 :afa3013c :01c01831 :afa30140 :afa60000 :afa40004 :afa50008 :8fa1009c :afa1000c :3c010000 :2421fe28 :8c210000 :8c220000 :afa20028 :ac3d0000 :08008908 :54000000 :0c009674 :3c010000 :2421fe28 :8c210000 :8c3d0000 :8fa20028 :ac220000 :8fa30128 :00602030 :8fa3012c :00601830 :8fa30130 :00603030 :8fa30134 :00604830 :8fa30138 :00606030 :8fa3013c :00606830 :8fa30140 :00607030 :9fa000a8 :9fa200b0 :9fa400b8 :9fa600c0 :9fa800c8 :9faa00d0 :9fac00d8 :9fae00e0 :9fb000e8 :9fb200f0 :9fb400f8 :9fb60100 :9fb80108 :9fba0110 :9fbc0118 :9fbe0120 :8fa20030 :8fa30034 :8fa40038 :8fa5003c :8fa60040 :8fa70044 :8fa80048 :8fa9004c :8faa0050 :8fab0054 :8fac0058 :8fad005c :8fae0060 :8faf0064 :8fb00068 :8fb1006c :8fb20070 :8fb30074 :8fb40078 :8fb5007c :8fb60080 :8fb70084 :8fb80088 :8fb9008c :8fba0090 :8fbb0094 :8fbc0098 :8fbe00a0 :8fbf00a4 :27bd0154 :ac3d0004 :37a10000 :8c3dff48 :8c21fed8 :40000000 :2fbd0010 :afa2000c :8fa20010 :3042000f :00a00831 :afa10008 :3021fff0 :00410825 :00202830 :8fa10008 :3021000f :8fa2000c :27bd0010 :4be00000 :54000000 :00a00831 :3021000f :4be00000 :54000000 :44000410 :54000000 :4be00000 :54000000 :44002020 :4be00000 :54000000 :44002021 :4be00000 :54000000 0000b000:3a206669 :6c657379 :732e632c :7620312e :31203230 :30302f30 :392f3230 :2030313a :35303a31 :3920656c :6d204578 :7020656c :6d203030 :30 000012fc:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0ffffe94 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0ffffe50 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0ffffe0c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000b038:41747465 :706d7469 :6e672074 :6f206f70 :656e2025 :73206d6f :64653d25 :642e0a00 0000b058:646c783a :00 0000b060:46696c65 :20257320 :6f70656e :696e6720 :696e2066 :696c6520 :73797374 :656d2025 :642e0a00 0000b084:4f70656e :65642025 :7320696e :20465320 :25642c20 :6d6f6465 :3d256420 :736c6f74 :3d25642e :0a00 00001798:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc40000 :8fc50004 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080066 :afa80004 :0c00264c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c002624 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080000 :2508b038 :afa80000 :afa40004 :afa50008 :0c0097ac :54000000 :23bd0010 :30a50003 :64a10000 :10200044 :54000000 :20030000 :3c060000 :24c6b110 :00061020 :8c410004 :64210000 :10200018 :54000000 :2042010c :20630001 :7061001f :1420ffe0 :54000000 :6c61001f :10200010 :54000000 :2001ffff :08000224 :54000000 :50610004 :00230820 :50210002 :00230822 :50210002 :00261020 :ac450004 :23bdfff0 :afa40000 :3c010000 :2421b058 :afa10004 :20080004 :afa80008 :0c002210 :54000000 :23bd0010 :64210000 :14200014 :54000000 :20840004 :20080001 :08000008 :54000000 :20080000 :ac480000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080066 :afa80004 :0c00250c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0024e4 :54000000 :23bd0008 :64210000 :1020004c :54000000 :23bdfff0 :3c080000 :2508b060 :afa80000 :afa40004 :50610004 :00230820 :50210002 :00230822 :50210002 :3c080000 :2508b110 :00280820 :8c210000 :afa10008 :0c009648 :54000000 :23bd0010 :23bdfff0 :50610004 :00230820 :50210002 :00230822 :50260002 :3c080000 :2508b110 :00c83820 :8ce20000 :50410001 :00220820 :50210003 :3c080000 :2508b0e0 :00280820 :afa30000 :afa40004 :afa50008 :8c210000 :4c200000 :54000000 :00011020 :23bd0010 :68410000 :10200024 :54000000 :3c080000 :2508b110 :00c80820 :20080000 :ac280004 :00020820 :08000090 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080066 :afa80004 :0c0023e0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0023b8 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdffe8 :3c080000 :2508b084 :afa80000 :afa40004 :8ce70000 :afa70008 :afa5000c :afa30010 :0c009534 :54000000 :23bd0018 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c040000 :2484b110 :00240820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200074 :54000000 :23bdfff8 :53e10004 :003f0820 :50210002 :003f0822 :50230002 :3c040000 :2484b110 :00640820 :8c220000 :50410001 :00220820 :50210003 :3c040000 :2484b0e0 :00240820 :afbf0000 :8c210010 :4c200000 :54000000 :23bd0008 :3c040000 :2484b110 :00641020 :20040000 :ac440004 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463b0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210004 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463b0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210008 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463b0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c21000c :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff0 :afa20000 :3c010000 :2421b058 :afa10004 :20030004 :afa30008 :0c001bc4 :54000000 :23bd0010 :64210000 :1420001c :54000000 :20420004 :23bdfff8 :3c010000 :2421b10c :08000010 :54000000 :23bdfff8 :3c010000 :2421b0f4 :afa20000 :8c210000 :4c200000 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000b0ac:41747465 :6d707469 :6e672074 :6f206f70 :656e2066 :696c6520 :25732069 :6e746f20 :64657363 :2025642c :206d6f64 :65202564 :2e0a00 00001f94:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc30004 :8fc50008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20060066 :afa60004 :0c001e54 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c001e2c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6b0ac :afa60000 :afa30004 :afa40008 :afa5000c :0c008fb0 :54000000 :23bd0010 :23bdfff8 :afa30000 :afa50004 :0c008f08 :54000000 :00011820 :50810004 :00240820 :50210002 :00240822 :50210002 :3c060000 :24c6b110 :00260820 :ac230108 :23bd0008 :68620000 :00030820 :14400008 :54000000 :20010001 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5b110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008e50 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5b110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008dcc :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5b110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008d48 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff8 :50410004 :00220820 :50210002 :00220822 :50210002 :3c030000 :2463b110 :00230820 :8c210108 :afa10000 :0c008cac :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :2001ffff :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffb110 :003f0820 :201f0000 :ac3f0108 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffb110 :003f0820 :8c210108 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :3c1f0000 :27ffb110 :23e22074 :20030000 :afe30004 :23ff010c :03e2082c :1420ffec :54000000 :3c010000 :2421b0e0 :3c030000 :24631f94 :ac230000 :3c030000 :24632270 :ac230010 :3c030000 :246320c0 :ac230004 :3c030000 :24632150 :ac230008 :3c030000 :246321e0 :ac23000c :3c030000 :246322e0 :ac230014 :3c030000 :24632380 :ac230018 :3c030000 :24632430 :ac230028 :3c030000 :24632330 :ac23001c :3c030000 :24632358 :ac230020 :3c030000 :246323dc :ac230024 :3c030000 :24632458 :ac23002c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d290:3a206d65 :6d6f7279 :2e632c76 :20312e31 :20323030 :302f3039 :2f323020 :30313a35 :303a3139 :20656c6d :20457870 :20656c6d :20303030 00002570:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffec20 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffebdc :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffeb98 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d2c4:ffffffff 00002a0c:afbefffc :001df020 :afbffff8 :2fbd0008 :3c01ffff :24210000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d2c8:53657420 :66726565 :6d617020 :656e7472 :79202564 :20746f20 :30782578 :2e0a00 00002a3c:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fdf0004 :00031020 :74610000 :14200008 :54000000 :2062001f :5c450005 :50a10005 :00611822 :20010001 :00231004 :3c010000 :2421d2c4 :8c210000 :00411026 :50a10002 :3c060000 :24c6d438 :00262020 :8c810000 :00221024 :03e30804 :00410825 :ac810000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2006006d :afa60004 :0c001354 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c00132c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6d2c8 :afa60000 :afa50004 :8c840000 :afa40008 :0c0084b0 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d2e8:4d617020 :68617320 :25642065 :6e747269 :65732c20 :6d656d6f :72792073 :697a6520 :69732030 :7825782e :0a00 0000d314:46726565 :20706167 :65732073 :74617274 :20776974 :68207061 :67652023 :20307825 :782e0a00 0000d338:496e6974 :69616c69 :7a656420 :25642066 :72656520 :70616765 :732e0a00 00002b6c:afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :3c01ffff :24210000 :8c220000 :74410000 :14200008 :54000000 :2442ffff :5c480010 :3c030000 :2463d42c :3c010001 :24212df8 :8c210000 :2422fffc :74410000 :14200008 :54000000 :2442ffff :5c410010 :ac610000 :3c030000 :2463d430 :2102001f :74410000 :14200008 :54000000 :2102003e :5c410005 :ac610000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200b006d :afab0004 :0c001200 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c0011d8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256bd2e8 :afab0000 :8c610000 :afa10004 :afa80008 :0c00835c :54000000 :23bd0010 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200b006d :afab0004 :0c001180 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c001158 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256bd314 :afab0000 :3c010000 :2421d42c :8c210000 :afa10004 :0c0082d8 :54000000 :23bd0008 :20020000 :3c040000 :2484d430 :8c810000 :0041082a :1020002c :54000000 :3c030000 :2463d438 :200b0000 :ac6b0000 :20630004 :20420001 :8c810000 :0041082a :1420ffe4 :54000000 :3c020000 :2442d434 :200b0000 :ac4b0000 :3c010000 :2421d42c :8c240000 :0088082a :10200104 :54000000 :00023820 :200a0001 :3c090000 :2529d2c4 :8ce10000 :20210001 :ace10000 :00041020 :74810000 :14200008 :54000000 :2082001f :5c460005 :50c10005 :00810822 :01411804 :8d210000 :00611026 :50c10002 :3c0b0000 :256bd438 :002b2820 :8ca10000 :00220824 :00230825 :aca10000 :23bdfff8 :3c0b0000 :256bfd60 :afab0000 :200b006d :afab0004 :0c001028 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c0b0000 :256bfd60 :afab0000 :200b002b :afab0004 :0c000ff8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256bd2c8 :afab0000 :afa60004 :8ca50000 :afa50008 :0c00817c :54000000 :23bd0010 :20840001 :0088082a :1420ff14 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200b006d :afab0004 :0c000f90 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c000f68 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256bd338 :afab0000 :3c010000 :2421d434 :8c210000 :afa10004 :0c0080e8 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d354:00000000 :4552524f :52204154 :20544849 :5320504f :494e540a :00 0000d370:416c6c6f :63617469 :6e67206d :656d6f72 :792c2073 :74617274 :696e6720 :77697468 :20706167 :65202564 :0a00 0000d39c:416c6c6f :63617465 :64206d65 :6d6f7279 :2c206672 :6f6d206d :61702025 :642c2070 :61676520 :25642c20 :6d61703d :30782578 :2e0a00 00002f48:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :3c010000 :2421d434 :8c210000 :64210000 :1420002c :54000000 :23bdfff8 :3c070000 :24e7d358 :afa70000 :0c008050 :54000000 :20010000 :23bd0008 :08000238 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2007006d :afa70004 :0c000e68 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000e40 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c070000 :24e7d370 :afa70000 :3c010000 :2421d354 :8c210000 :afa10004 :0c007fc0 :54000000 :23bd0008 :3c020000 :2442d354 :8c410000 :3c040000 :2484d438 :50210002 :00240820 :8c210000 :64210000 :1420004c :54000000 :3c010000 :2421d430 :8c230000 :8c410000 :20210001 :ac410000 :0023082d :1020000c :54000000 :20070000 :ac470000 :8c410000 :50210002 :00240820 :8c210000 :64210000 :1020ffc8 :54000000 :3c010000 :2421d354 :8c210000 :50210002 :3c070000 :24e7d438 :00270820 :8c230000 :201f0000 :30610001 :14200020 :54000000 :20020001 :23ff0001 :005f0804 :00610824 :64210000 :1020ffec :54000000 :20010001 :003f1004 :3c010000 :2421d2c4 :8c210000 :00412026 :3c050000 :24a5d354 :8ca30000 :3c060000 :24c6d438 :50610002 :00261020 :8c410000 :00240824 :ac410000 :50610005 :003f1820 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2007006d :afa70004 :0c000cdc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000cb4 :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070000 :24e7d39c :afa70000 :8ca10000 :afa10004 :afa30008 :50210002 :00260820 :8c210000 :afa1000c :0c007e28 :54000000 :23bd0010 :3c010000 :2421d434 :8c220000 :2042ffff :ac220000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d3d0:46726565 :64207061 :67652030 :7825782c :20256420 :72656d61 :696e696e :672e0a00 00003210:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc60000 :20030001 :00061020 :74c10000 :14200008 :54000000 :20c2001f :5c450005 :50a10005 :00c10822 :00611804 :3c010000 :2421d2c4 :8c210000 :00611026 :50a10002 :3c070000 :24e7d438 :00272020 :8c810000 :00220824 :00230825 :ac810000 :23bdfff8 :3c070000 :24e7fd60 :afa70000 :2007006d :afa70004 :0c000b84 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c070000 :24e7fd60 :afa70000 :2007002b :afa70004 :0c000b54 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7d2c8 :afa70000 :afa50004 :8c840000 :afa40008 :0c007cd8 :54000000 :23bd0010 :3c020000 :2442d434 :8c410000 :20210001 :ac410000 :23bdfff8 :3c030000 :2463fd60 :afa30000 :2007006d :afa70004 :0c000ae8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0c000ac0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7d3d0 :afa70000 :afa60004 :8c420000 :afa20008 :0c007c44 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc10004 :583f0010 :3022ffff :8c610064 :03e1082b :14200024 :54000000 :53e10002 :00230820 :8c210060 :2004fff8 :00240824 :00220820 :08000008 :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50004 :8fc40008 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afa50000 :afbf0004 :afa20008 :0c000c9c :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50008 :8fc40004 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afbf0000 :afa50004 :afa20008 :0c000b74 :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :50210010 :34210001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :23bdfff8 :97c10000 :afa10000 :0ffffb14 :54000000 :23bd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :201ffff8 :003f0824 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d3f0:00003404 :4f706572 :616e6420 :666f7220 :696e7374 :72756374 :696f6e20 :25303878 :20697320 :30782578 :20287265 :673d3c25 :642c3078 :25783e29 :0a00 00003748:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc50004 :58a1001a :203fffe0 :6fe1000f :14200020 :54000000 :3c010000 :2421d3f0 :8c210000 :003f0806 :30210001 :10200010 :54000000 :2001ffff :080000c4 :54000000 :58a10015 :3026001f :30bfffff :5be1000f :10200010 :54000000 :3c07ffff :24e70000 :03e7f825 :8c420000 :50c10002 :00220820 :8c230028 :007f2020 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2007006d :afa70004 :0c00062c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000604 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070000 :24e7d3f4 :afa70000 :afa50004 :afa40008 :afa6000c :afa30010 :0c007784 :54000000 :23bd0018 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000038a0:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffcef4 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffceb0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffce6c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f438:00002710 :456e7465 :72696e67 :2050726f :63657373 :4d6f6475 :6c65496e :69740a00 0000f458:496e6974 :69616c69 :7a696e67 :20504342 :20256420 :40203078 :25782e0a :00 0000f478:4c656176 :696e6720 :50726f63 :6573734d :6f64756c :65496e69 :740a00 00004738:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff6b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff68c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080000 :2508f43c :afa80000 :0c00681c :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fe2c :afa20000 :0c0038c4 :54000000 :3c080000 :2508fe38 :afa80000 :0c0038b0 :54000000 :3c080000 :2508fe44 :afa80000 :0c00389c :54000000 :3c080000 :2508fe50 :afa80000 :0c003888 :54000000 :20040000 :23bd0008 :3c070000 :24e7fd60 :3c010000 :2421fe5c :00022820 :20220068 :00011820 :00033020 :23bdfff8 :afa70000 :20080070 :afa80004 :0ffff5cc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa70000 :2008002b :afa80004 :0ffff5a4 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080000 :2508f458 :afa80000 :afa40004 :afa60008 :0c00672c :54000000 :23bd0010 :20080001 :ac68000c :20080000 :ac480000 :ac43000c :ac450008 :ac450004 :8ca80000 :ac480000 :aca20000 :8c410000 :ac220004 :8ca10008 :20210001 :aca10008 :20420078 :20630078 :20c60078 :20840001 :7081001f :1420ff38 :54000000 :3c010000 :2421fe28 :20080000 :ac280000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff4e8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff4c0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080000 :2508f478 :afa80000 :0c006650 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8c61000c :201fffc0 :003f0824 :00220825 :ac61000c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030000 :2463fe2c :20820068 :8c610004 :ac830070 :ac81006c :8c250000 :ac450000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8c810064 :0041082a :10200038 :54000000 :00041820 :23bdfff8 :8c650060 :afa50000 :0fffec34 :54000000 :23bd0008 :20630004 :20420001 :8c810064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe738 :54000000 :23bd0008 :8c81000c :2005ffc0 :00250824 :34210001 :ac81000c :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdf0004 :ac3f002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f494:4e6f7720 :656e7465 :72696e67 :2050726f :63657373 :53636865 :64756c65 :20286375 :723d3078 :25782c20 :25642072 :65616479 :290a00 0000f4c8:4e6f2072 :756e6e61 :626c6520 :70726f63 :65737365 :73202d20 :65786974 :696e6721 :0a00 0000f4ec:41626f75 :7420746f :20737769 :74636820 :746f2050 :43422030 :7825782c :666c6167 :733d3078 :25782040 :20307825 :780a00 0000f51c:46726565 :696e6720 :7a6f6d62 :69652050 :43422030 :7825782e :0a00 0000f538:4c656176 :696e6720 :50726f63 :65737353 :63686564 :756c6520 :28637572 :3d307825 :78290a00 00004b4c:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff2a0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff278 :54000000 :23bd0008 :64210000 :10200040 :54000000 :3c010000 :2421fe38 :8c220008 :23bdfff0 :3c080000 :2508f494 :afa80000 :3c010000 :2421fe28 :8c210000 :afa10004 :afa20008 :0c0063e8 :54000000 :23bd0010 :3c050000 :24a5fe38 :8ca10008 :60210000 :10200028 :54000000 :23bdfff8 :3c080000 :2508f4c8 :afa80000 :0c0063b4 :54000000 :0c006394 :54000000 :23bd0008 :8ca10000 :8c24000c :3c010000 :2421fe28 :8c210000 :00810828 :10200078 :54000000 :20830068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8c680000 :ac280000 :8c610000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :ac680000 :8ca10004 :ac850070 :ac81006c :8c280000 :ac680000 :ac230000 :8c610000 :ac230004 :8ca10008 :20210001 :aca10008 :3c010000 :2421fe38 :8c210000 :8c24000c :3c010000 :2421fe28 :ac240000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff120 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff0f8 :54000000 :23bd0008 :64210000 :10200038 :54000000 :23bdfff0 :3c080000 :2508f4ec :afa80000 :afa40004 :8c88000c :afa80008 :8c810004 :8c210128 :afa1000c :0c006270 :54000000 :23bd0010 :3c070000 :24e7fe50 :3c060000 :24c6fd60 :3c050000 :24a5fe2c :8ce10008 :60210000 :1420016c :54000000 :8ce10000 :8c24000c :23bdfff8 :afa60000 :20080070 :afa80004 :0ffff06c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa60000 :2008002b :afa80004 :0ffff044 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c080000 :2508f51c :afa80000 :afa40004 :0c0061d0 :54000000 :23bd0008 :209f0068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8fe80000 :ac280000 :8fe10000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :afe80000 :8ca10004 :ac850070 :ac81006c :8c280000 :afe80000 :ac3f0000 :8fe10000 :ac3f0004 :8ca10008 :20210001 :aca10008 :20030000 :8c810064 :0061082a :10200038 :54000000 :00041020 :23bdfff8 :8c480060 :afa80000 :0fffe81c :54000000 :23bd0008 :20420004 :20630001 :8c810064 :0061082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe320 :54000000 :23bd0008 :8c81000c :2008ffc0 :00280824 :34210001 :ac81000c :0bfffe8c :54000000 :23bdfff8 :3c010000 :2421f438 :8c210000 :afa10000 :0c0044d0 :54000000 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0fffeeec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0fffeec4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c080000 :2508f538 :afa80000 :3c010000 :2421fe28 :8c210000 :afa10004 :0c006044 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f55c:53757370 :656e6469 :6e672050 :43422030 :78257820 :28257329 :2e0a00 0000f578:25733a20 :25730a00 0000f580:50726f63 :65737353 :75737065 :6e6400 0000f590:54727969 :6e672074 :6f207375 :7370656e :64206120 :6e6f6e2d :72756e6e :696e6720 :70726f63 :65737321 :0a00 00004fe0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffee18 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffedf0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c040000 :2484f55c :afa40000 :afa30004 :20610010 :afa10008 :0c005f74 :54000000 :23bd0010 :8064000f :58810001 :30210001 :14200038 :54000000 :23bdfff0 :3c040000 :2484f578 :afa40000 :3c010000 :2421f580 :afa10004 :3c040000 :2484f590 :afa40008 :0c005f2c :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210004 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020000 :2442fe44 :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f5bc:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 0000f5d4:50726f63 :65737357 :616b6575 :7000 0000f5e4:54727969 :6e672074 :6f207761 :6b652075 :70206120 :6e6f6e2d :736c6565 :70696e67 :2070726f :63657373 :210a00 00005178:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffec80 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffec58 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040000 :2484f5bc :afa40000 :afa30004 :0c005de4 :54000000 :23bd0008 :8064000f :58810002 :30210001 :14200038 :54000000 :23bdfff0 :3c040000 :2484f578 :afa40000 :3c010000 :2421f5d4 :afa10004 :3c040000 :2484f5e4 :afa40008 :0c005d9c :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210002 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020000 :2442fe38 :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f610:456e7465 :72696e67 :2050726f :63657373 :44657374 :726f7920 :666f7220 :30782578 :2e0a00 0000f634:4c656176 :696e6720 :50726f63 :65737344 :65737472 :6f792066 :6f722030 :7825782e :0a00 00005308:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffeaf0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffeac8 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040000 :2484f610 :afa40000 :afa30004 :0c005c54 :54000000 :23bd0008 :8c61000c :2004ffc0 :00240824 :34210010 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020000 :2442fe50 :ac620070 :ac62006c :8c440000 :afe40000 :ac5f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffe9ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffe9c4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040000 :2484f634 :afa40000 :afa30004 :0c005b50 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :00000000 000054c4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :64410000 :10200020 :54000000 :3c010000 :2421f658 :ac220000 :3c010000 :2421f65c :20050000 :ac250000 :3c1f0000 :27fff65c :8fe30000 :3c010000 :2421f658 :8c220000 :00430820 :90210000 :64210000 :10200010 :54000000 :6c610062 :10200020 :54000000 :20010000 :08000058 :54000000 :23e10001 :ac410000 :08000044 :54000000 :70610063 :10200038 :54000000 :00022020 :001f1020 :8c5f0000 :009f0820 :90210000 :64210000 :1020ffc8 :54000000 :23e10001 :ac410000 :70210063 :1420ffd8 :54000000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f660:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 0000f680:456e7465 :72696e67 :2050726f :63657373 :466f726b :20617267 :733d3078 :25782030 :78257820 :25732025 :640a00 0000f6ac:46415441 :4c206572 :726f723a :206e6f20 :66726565 :2070726f :63657373 :6573210a :00 0000f6d0:476f7420 :61206c69 :6e6b2040 :20307825 :780a00 0000f6e4:4265666f :72652072 :6573746f :72652069 :6e746572 :72757074 :2076616c :75652069 :73203078 :25782e0a :00 0000f710:4e657720 :696e7465 :72727570 :74207661 :6c756520 :69732030 :7825782e :0a00 0000f730:61464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65206d65 :6d6f7279 :202d206e :6f206672 :65652070 :61676573 :210a00 0000f764:62464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65207379 :7374656d :20737461 :636b202d :206e6f20 :66726565 :20706167 :6573210a :00 0000f7a0:53657474 :696e6720 :75702050 :43422040 :20307825 :78202873 :79732073 :7461636b :3d307825 :782c206d :656d3d30 :7825782c :2073697a :653d3078 :2578290a :00 0000f7e0:41626f75 :7420746f :206c6f61 :64202573 :0a00 0000f7f4:46696c65 :20257320 :2d3e2073 :74617274 :3d307825 :3038780a :00 0000f810:46696c65 :20257320 :2d3e2063 :6f646520 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 0000f838:46696c65 :20257320 :2d3e2064 :61746120 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 0000f860:506c6163 :696e6720 :25642062 :79746573 :20617420 :76616464 :72202530 :38782e0a :00 0000f884:53657474 :696e6720 :63757272 :656e7450 :43423d30 :7825782c :20737461 :636b6672 :616d653d :30782578 :0a00 0000f8b0:4c656176 :696e6720 :50726f63 :65737346 :6f726b20 :28257329 :0a00 000055cc:afbefffc :001df020 :afbffff8 :2fbd02d8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :afad002c :8fc50000 :8fca0004 :8fcc0008 :8fc4000c :200d0000 :afcdfd58 :23bdfff8 :200d000f :afad0000 :0fffbc54 :54000000 :00011820 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0049 :afad0004 :0fffe7d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe7b0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf660 :afad0000 :afa30004 :0c00593c :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe760 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe738 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c0d0000 :25adf680 :afad0000 :afa50004 :afaa0008 :afac000c :afa40010 :0c0058b8 :54000000 :23bd0018 :3c020000 :2442fe2c :8c410008 :60210000 :10200028 :54000000 :23bdfff8 :3c0d0000 :25adf6ac :afad0000 :0c005884 :54000000 :0c005864 :54000000 :23bd0008 :8c490000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe69c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe674 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf6d0 :afad0000 :afa90004 :0c005800 :54000000 :23bd0008 :8d210008 :8c210008 :6c210000 :1020002c :54000000 :8d210004 :8d2d0000 :ac2d0000 :8d210000 :8d2d0004 :ac2d0004 :8d220008 :8c410008 :2021ffff :ac410008 :200d0000 :ad2d0000 :8d26000c :8cc1000c :200dffc0 :002d0824 :34210002 :acc1000c :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0049 :afad0004 :0fffe5c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe5a0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffba18 :54000000 :23bdfff8 :3c0d0000 :25adf6e4 :afad0000 :afa10004 :0c005724 :54000000 :23bd0008 :23bdfff8 :afa30000 :0fffb9ac :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0049 :afad0004 :0fffe534 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe50c :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffb984 :54000000 :23bdfff8 :3c0d0000 :25adf710 :afad0000 :afa10004 :0c005690 :54000000 :23bd0008 :23bdfff8 :20c10010 :afa10000 :afac0004 :0fffdffc :54000000 :200d0001 :accd0064 :0fffd5c0 :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0000 :25adf730 :afad0000 :0c005638 :54000000 :0c005618 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fffdcdc :54000000 :acc10060 :0fffd56c :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0000 :25adf764 :afad0000 :0c0055e4 :54000000 :0c0055c4 :54000000 :23bd0008 :50410010 :acc10008 :3428fe8c :acc80004 :acc80000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe3ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe3c4 :54000000 :23bd0008 :64210000 :10200040 :54000000 :23bdffe8 :3c0d0000 :25adf7a0 :afad0000 :afa60004 :8ccd0008 :afad0008 :8ccd0060 :afad000c :8cc10064 :50210010 :afa10010 :0c005534 :54000000 :23bd0018 :200d0000 :ad0d0028 :20c10060 :ad010138 :8ccd0064 :ad0d013c :3c010010 :24210010 :ad010140 :64810000 :10200640 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe328 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe300 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf7e0 :afad0000 :afac0004 :0c00548c :54000000 :23bd0008 :23bdffe8 :afac0000 :23c1fd6c :afa10004 :23c1fd68 :afa10008 :23c1fd64 :afa1000c :23c1fd60 :afa10010 :23c1fd5c :afa10014 :0c0007b0 :54000000 :00012820 :23bd0018 :68a10000 :102000bc :54000000 :3c030000 :2463fe2c :20c20068 :8c610004 :acc30070 :acc1006c :8c2d0000 :ac4d0000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8cc10064 :0041082a :10200038 :54000000 :00061820 :23bdfff8 :8c6d0060 :afad0000 :0fffdac8 :54000000 :23bd0008 :20630004 :20420001 :8cc10064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94c10008 :afa10000 :0fffd5cc :54000000 :23bd0008 :8cc1000c :200dffc0 :002d0824 :34210001 :acc1000c :2001ffff :080006a0 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe1ac :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe184 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0000 :25adf7f4 :afad0000 :afac0004 :8fcdfd6c :afad0008 :0c005308 :54000000 :23bd0010 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe12c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe104 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0000 :25adf810 :afad0000 :afac0004 :8fcdfd68 :afad0008 :8fcdfd64 :afad000c :0c005280 :54000000 :23bd0010 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe0a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe07c :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0000 :25adf838 :afad0000 :afac0004 :8fcdfd60 :afad0008 :8fcdfd5c :afad000c :0c0051f8 :54000000 :23bd0010 :23c3ff90 :23c7fd58 :3c040000 :2484fd60 :23bdfff0 :afa50000 :afa30004 :afa70008 :200d0064 :afad000c :0c000984 :54000000 :00011020 :23bd0010 :6c410000 :102000b0 :54000000 :23bdfff8 :afa40000 :200d0070 :afad0004 :0fffdfe0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :200d002b :afad0004 :0fffdfb8 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0d0000 :25adf860 :afad0000 :afa20004 :8fc1fd58 :00220822 :afa10008 :0c005138 :54000000 :23bd0010 :23bdfff0 :afa60000 :afa30004 :8fc1fd58 :00220822 :afa10008 :afa2000c :0fffd580 :54000000 :23bd0010 :0bffff24 :54000000 :23bdfff8 :afa50000 :0fffbbfc :54000000 :200d0100 :ad0d012c :240dfc00 :ad0d009c :23bdfff8 :afa60000 :afaa0004 :8d0d009c :afad0008 :200d03e0 :afad000c :0fffd530 :54000000 :23bd0010 :65410000 :10200020 :54000000 :3c010000 :2421f658 :ac2a0000 :3c010000 :2421f65c :200d0000 :ac2d0000 :3c030000 :2463f65c :8c640000 :3c010000 :2421f658 :8c220000 :00440820 :90210000 :64210000 :10200010 :54000000 :6c810062 :10200020 :54000000 :20030000 :08000054 :54000000 :20410001 :ac610000 :08000040 :54000000 :70810063 :10200034 :54000000 :00022820 :8c620000 :00a20820 :90210000 :64210000 :1020ffcc :54000000 :20410001 :ac610000 :70210063 :1420ffd8 :54000000 :00041820 :2402fc00 :00620820 :afc1fd78 :20070003 :3c040000 :2484f65c :3c0b0000 :256bf658 :00025020 :23c50004 :8c9f0000 :8d630000 :007f0820 :90210000 :64210000 :10200010 :54000000 :6fe10062 :10200020 :54000000 :20030000 :08000054 :54000000 :20610001 :ac810000 :08000040 :54000000 :73e10063 :10200034 :54000000 :00031020 :8c830000 :00430820 :90210000 :64210000 :1020ffcc :54000000 :20610001 :ac810000 :70210063 :1420ffd8 :54000000 :001f1820 :006a0820 :aca1fd78 :64610000 :10200014 :54000000 :20a50004 :20e70001 :0bffff5c :54000000 :20e1fffe :afc1fd70 :50210002 :01410822 :afc1fd74 :23bdfff0 :afa60000 :23c1fd70 :afa10004 :50e20002 :8d01009c :00220822 :afa10008 :afa2000c :0fffd360 :54000000 :8d01009c :00220822 :ad01009c :8fcdfd6c :ad0d0128 :8cc1000c :34210200 :acc1000c :23bd0010 :08000038 :54000000 :3c0d0000 :25ad7ad4 :ad0d00a4 :8cc10008 :2421ffe0 :ad01009c :ac2a0000 :ad050128 :200d0140 :ad0d012c :8cc1000c :34210100 :acc1000c :23bdfff8 :200d000f :afad0000 :0fffb118 :54000000 :23bd0008 :3c030000 :2463fe38 :8c620004 :ad230008 :ad220004 :8c4d0000 :ad2d0000 :ac490000 :8d220000 :ac490004 :8c620008 :20420001 :ac620008 :23bdfff8 :afa10000 :0fffb0d0 :54000000 :23bd0008 :3c010000 :2421fe28 :8c210000 :64210000 :14200090 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffdc40 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdc18 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0000 :25adf884 :afad0000 :afa60004 :8ccd0000 :afad0008 :0c004d9c :54000000 :23bd0010 :3c010000 :2421fe28 :ac260000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffdbb4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdb8c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf8b0 :afad0000 :afac0004 :0c004d18 :54000000 :23bd0008 :3c0d0000 :25adfe5c :00cd1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fad002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f8cc:50726f63 :65737347 :6574436f :6465496e :666f3a20 :6f70656e :206f6620 :25732066 :61696c65 :64202825 :64292e0a :00 0000f8fc:46696c65 :20646573 :63726970 :746f7220 :6973206e :6f772025 :642e0a00 0000f918:50726f63 :65737347 :6574436f :6465496e :666f3a20 :72656164 :20676f74 :20256420 :286e6f74 :20256429 :20627974 :65732066 :726f6d20 :25730a00 0000f950:73746172 :743a00 0000f958:50726f63 :65737347 :6574436f :6465496e :666f3a20 :2573206d :69737369 :6e672073 :74617274 :206c696e :6520286e :6f742061 :20444c58 :20657865 :63757461 :626c653f :290a00 0000634c:afbefffc :001df020 :afbffff8 :2fbd00a8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc60000 :8fc70004 :8fc80008 :8fc9000c :8fca0010 :8fcb0014 :23bdfff8 :afa60000 :200c0001 :afac0004 :0fffb3e4 :54000000 :00011820 :23bd0008 :68610000 :10200088 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffda4c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffda24 :54000000 :23bd0008 :64210000 :10200224 :54000000 :23bdfff0 :3c0c0000 :258cf8cc :afac0000 :afa60004 :afa30008 :0c004bac :54000000 :23bd0010 :080001f8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd9c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd9a0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0000 :258cf8fc :afac0000 :afa30004 :0c004b2c :54000000 :23bd0008 :23bdfff0 :afa30000 :23c4ff90 :afa40004 :200c0064 :afac0008 :0fffb718 :54000000 :00012820 :23bd0010 :64a10064 :102000a8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd91c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd8f4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0c0000 :258cf918 :afac0000 :afa50004 :200c0064 :afac0008 :afa6000c :0c004a74 :54000000 :23bd0010 :23bdfff8 :afa30000 :0fffb568 :54000000 :2001ffff :23bd0008 :080001d0 :54000000 :23bdfff8 :afa40000 :3c010000 :2421f950 :afa10004 :0fffd664 :54000000 :23bd0008 :64210000 :14200088 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd84c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd824 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0000 :258cf958 :afac0000 :afa60004 :0c0049b0 :54000000 :23bd0008 :2001ffff :08000120 :54000000 :23bdfff8 :afa40000 :200c003a :afac0004 :0fffd7d0 :54000000 :20210001 :afc1ff8c :23bdfff8 :afa10000 :23c2ff8c :afa20004 :200c0010 :afac0008 :0fffd930 :54000000 :ace10000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd910 :54000000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8f4 :54000000 :ad010000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8d4 :54000000 :ad210000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8b4 :54000000 :ad410000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd894 :54000000 :ad610000 :afa40000 :200c000a :afac0004 :0fffd6f4 :54000000 :23c2ff8f :00220822 :afa30000 :afa10004 :200c0000 :afac0008 :0fffb694 :54000000 :00030820 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f99c:476f7420 :25642062 :79746573 :20617420 :6f666673 :65742025 :64202e2e :2e00 0000f9bc:20746572 :6d696e61 :74656420 :61742025 :642e0a00 0000f9d0:42756666 :65722069 :73202725 :73270a00 0000f9e0:4e657720 :61646472 :65737320 :69732030 :7825782e :0a00 0000f9f8:5365656b :696e6720 :746f2025 :6420616e :64207265 :7475726e :696e6720 :25642062 :79746573 :210a00 000067ac:afbefffc :001df020 :afbffff8 :2fbd0110 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fca0000 :8fc70008 :8fc2000c :8fcb0004 :23c3ff28 :afc3ff24 :23bdfff0 :afaa0000 :200c0000 :afac0004 :200c0001 :afac0008 :0fffb5d8 :54000000 :00014820 :50420001 :23bd0010 :6c4100c8 :10200008 :54000000 :200200c8 :23bdfff0 :afaa0000 :afa30004 :afa20008 :0fffb3ac :54000000 :00012820 :23bd0010 :70a10000 :10200010 :54000000 :20010000 :08000594 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd5a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd57c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c0c0000 :258cf99c :afac0000 :afa50004 :afa90008 :0c004704 :54000000 :23bd0010 :20a5ffff :23c1ff28 :00251020 :0800000c :54000000 :2042ffff :20a5ffff :90410000 :6421000a :1420ffec :54000000 :23c1ff29 :00250820 :200c005a :a02c0000 :23c1ff2a :00250820 :200c0000 :a02c0000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd4dc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd4b4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0000 :258cf9bc :afac0000 :afa50004 :0c004640 :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd464 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd43c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0000 :258cf9d0 :afac0000 :23c1ff28 :afa10004 :0c0045c4 :54000000 :23bd0008 :20050000 :3c080000 :2508fd60 :23bdfff8 :8fccff24 :afac0000 :200c005a :afac0004 :0fffd3e0 :54000000 :23bd0008 :64210000 :102002ec :54000000 :23bdfff8 :8fccff24 :afac0000 :200c003a :afac0004 :0fffd3b4 :54000000 :23bd0008 :64210000 :102002c0 :54000000 :8fc2ff24 :90410000 :6421003a :102000b8 :54000000 :6ca10000 :142002a0 :54000000 :23bdfff0 :afa20000 :23c1ff24 :afa10004 :200c0010 :afac0008 :0fffd4ec :54000000 :ace10000 :afa80000 :200c0066 :afac0004 :0fffd34c :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa80000 :200c002b :afac0004 :0fffd324 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0000 :258cf9e0 :afac0000 :8ce10000 :afa10004 :0c0044ac :54000000 :23bd0008 :8fc1ff24 :90210000 :6421003a :142001f8 :54000000 :8fc1ff24 :20210001 :afc1ff24 :00ab3020 :8fc1ff24 :08000010 :54000000 :8fc1ff24 :20210001 :afc1ff24 :903f0000 :63e10020 :1420ffe8 :54000000 :63e10009 :1420ffdc :54000000 :8fc2ff24 :805f0000 :33e300ff :6061000a :10200014 :54000000 :20410001 :afc1ff24 :0bfffe78 :54000000 :20020000 :23e1ffd0 :302100ff :70210009 :14200024 :54000000 :23e1ff9f :302100ff :70210005 :14200010 :54000000 :64610041 :14200008 :54000000 :20020001 :64410000 :1020fe30 :54000000 :8fc1ff24 :80220001 :20030000 :2041ffd0 :302100ff :70210009 :14200028 :54000000 :2041ff9f :302100ff :70210005 :14200014 :54000000 :304100ff :64210041 :14200008 :54000000 :20030001 :64610000 :1020fddc :54000000 :8fc1ff24 :90220000 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f2020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2044ffa9 :0800001c :54000000 :2061ffbf :70210005 :20040000 :10200008 :54000000 :2064ffc9 :8fc1ff24 :90220001 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f1020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2042ffa9 :0800001c :54000000 :2061ffbf :70210005 :20020000 :10200008 :54000000 :2062ffc9 :50810004 :00220820 :a0c10000 :20c60001 :20a50001 :8fc1ff24 :20210002 :afc1ff24 :8ce10000 :20210001 :ace10000 :0bfffe20 :54000000 :23bdfff0 :afaa0000 :8fc1ff24 :00290820 :23c3ff28 :00230822 :afa10004 :200c0000 :afac0008 :0fffb07c :54000000 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd0a0 :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd078 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0c0000 :258cf9f8 :afac0000 :8fc1ff24 :00290820 :00230822 :afa10004 :afa50008 :0c0041f4 :54000000 :23bd0010 :00050820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000fa98:476f7420 :25642061 :7267756d :656e7473 :2e0a00 0000faac:41766169 :6c61626c :65206d65 :6d6f7279 :3a203078 :2578202d :3e203078 :25782e0a :00 0000fad0:41726775 :6d656e74 :20636f75 :6e742069 :73202564 :2e0a00 0000fae8:41726775 :6d656e74 :20256420 :69732025 :732e0a00 0000fafc:436f6e76 :65727465 :64202573 :20746f20 :25643d25 :730a00 0000fbdc:25303878 :3a202530 :32782530 :32782530 :32782530 :32780a00 0000fbf4:4f707469 :6f6e2025 :73206e6f :74207265 :636f676e :697a6564 :2e0a00 0000fc10:41626f75 :7420746f :20696e69 :7469616c :697a6520 :71756575 :65732e0a :00 0000fc30:41667465 :7220696e :69746961 :6c697a69 :6e672071 :75657565 :732e0a00 0000fc4c:41667465 :7220696e :69746961 :6c697a69 :6e67206d :656d6f72 :792e0a00 0000fc68:41667465 :7220696e :69746961 :6c697a69 :6e672070 :726f6365 :73736573 :2e0a00 0000fc88:41667465 :7220696e :69746961 :6c697a69 :6e672073 :796e6368 :726f6e69 :7a617469 :6f6e2074 :6f6f6c73 :2e0a00 0000fcb4:41667465 :7220696e :69746961 :6c697a69 :6e67206b :6579626f :6172642e :0a00 0000fcd4:766d00 0000fcd8:564d2044 :65736372 :6970746f :72206973 :2025640a :00 0000fcf0:43726561 :74656420 :70726f63 :65737365 :73202d20 :61626f75 :7420746f :20736574 :2074696d :65722071 :75616e74 :756d2e0a :00 0000fd24:53657420 :74696d65 :72207175 :616e7475 :6d20746f :2025642c :2061626f :75742074 :6f207275 :6e206669 :72737420 :70726f63 :6573732e :0a00 00006e44:afbefffc :001df020 :afbffff8 :2fbd00c8 :8fce0000 :8fd40004 :0c0040f4 :54000000 :20100000 :20150000 :afd5ff50 :afd5ff54 :afd5ff58 :afd5ff5c :afd5ff60 :afd5ff64 :afd5ff68 :afd5ff6c :afd5ff70 :afd5ff74 :afd5ff78 :afd5ff7c :3c010000 :2421fd60 :20150000 :a0350001 :0c0009e4 :54000000 :23bdfff8 :3c150000 :26b5fa98 :afb50000 :afae0004 :0c004120 :54000000 :0fffbb38 :54000000 :23bdfff8 :3c150000 :26b5faac :afb50000 :3c020001 :24422df8 :8c420000 :afa20004 :afa10008 :0c0040ec :54000000 :3c150000 :26b5fad0 :afb50000 :afae0004 :0c0040d4 :54000000 :20090000 :23bd0010 :012e082a :10200044 :54000000 :00141020 :23bdfff0 :3c150000 :26b5fae8 :afb50000 :afa90004 :8c550000 :afb50008 :0c004098 :54000000 :23bd0010 :20420004 :21290001 :012e082a :1420ffc8 :54000000 :0fffb50c :54000000 :20090000 :012e082a :1020033c :54000000 :23ccff80 :23cdff38 :3c0f0000 :25effb13 :21f20001 :21f10002 :00144020 :8d020000 :90410000 :6021002d :102002f8 :54000000 :90420001 :60410066 :142000e0 :54000000 :6c410066 :14200018 :54000000 :60410044 :102002a0 :54000000 :08000024 :54000000 :60410069 :14200048 :54000000 :60410075 :10200280 :54000000 :08000260 :54000000 :23bdfff8 :3c150000 :26b5fd60 :afb50000 :21080004 :21290001 :8d010000 :afa10004 :0fffc948 :54000000 :08000268 :54000000 :23bdfff0 :21080004 :21290001 :8d150000 :afb50000 :20150000 :afb50004 :afb50008 :0fffcf60 :54000000 :00011820 :afa10000 :afac0004 :0fffce40 :54000000 :3c150000 :26b5fafc :afb50000 :8d010000 :afa10004 :afa30008 :afac000c :0c003f58 :54000000 :23bd0010 :08000200 :54000000 :20150000 :afd5ff38 :23bdffe8 :21080004 :21290001 :8d150000 :afb50000 :23c1ff4c :afa10004 :23c1ff48 :afa10008 :23c1ff44 :afa1000c :23c1ff40 :afa10010 :23c1ff3c :afa10014 :0ffff260 :54000000 :00015020 :3c150000 :26b5f7f4 :afb50000 :8d010000 :afa10004 :8fd5ff4c :afb50008 :0c003ed8 :54000000 :3c150000 :26b5f810 :afb50000 :8d010000 :afa10004 :8fd5ff48 :afb50008 :8fd5ff44 :afb5000c :0c003eac :54000000 :3c150000 :26b5f838 :afb50000 :8d010000 :afa10004 :8fd5ff40 :afb50008 :8fd5ff3c :afb5000c :0c003e80 :54000000 :23bd0018 :3c0b0000 :256bfb16 :23bdfff0 :afaa0000 :3c150000 :26b5fb13 :afb50004 :afad0008 :201500c8 :afb5000c :0ffff60c :54000000 :00011820 :23bd0010 :6c610000 :10200098 :54000000 :20020000 :0043082a :1020ffb8 :54000000 :000b3820 :00113020 :00122820 :000f2020 :23bdffe8 :3c150000 :26b5fbdc :afb50000 :8fc1ff38 :00220820 :00230822 :afa10004 :90810000 :afa10008 :90a10000 :afa1000c :90c10000 :afa10010 :90e10000 :afa10014 :0c003dd0 :54000000 :23bd0018 :20e70004 :20c60004 :20a50004 :20840004 :20420004 :0043082a :1420ff98 :54000000 :0bffff34 :54000000 :23bdfff8 :afaa0000 :0c003d10 :54000000 :0800003c :54000000 :21080004 :21290001 :8d100000 :00099820 :08000028 :54000000 :23bdfff8 :3c150000 :26b5fbf4 :afb50000 :8d010000 :afa10004 :0c003d54 :54000000 :23bd0008 :66010000 :14200018 :54000000 :21080004 :21290001 :012e082a :1420fce8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffcb58 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcb30 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc10 :afb50000 :0c003cc0 :54000000 :23bd0008 :0c000c64 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffcadc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcab4 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc30 :afb50000 :0c003c44 :54000000 :23bd0008 :0fffb7b8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffca60 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffca38 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc4c :afb50000 :0c003bc8 :54000000 :23bd0008 :0fffd308 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc9e4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc9bc :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc68 :afb50000 :0c003b4c :54000000 :23bd0008 :0c00127c :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc968 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc940 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc88 :afb50000 :0c003ad0 :54000000 :23bd0008 :0c001f08 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc8ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc8c4 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fcb4 :afb50000 :0c003a54 :54000000 :23bd0008 :23c2ff80 :23c3ffe3 :20150061 :a0550000 :20420001 :0043082c :1420ffec :54000000 :23bdfff8 :3c150000 :26b5fcd4 :afb50000 :20150002 :afb50004 :0fffa1bc :54000000 :00014820 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc838 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc810 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c150000 :26b5fcd8 :afb50000 :afa90004 :0c00399c :54000000 :23bd0008 :23bdfff0 :afa90000 :20150000 :afb50004 :afb50008 :0fffa784 :54000000 :afa90000 :23c1ff80 :afa10004 :20150050 :afb50008 :0fffa66c :54000000 :afa90000 :0fffa45c :54000000 :23bd0010 :66010000 :102000c4 :54000000 :00134820 :026e082a :10200044 :54000000 :23c4fff8 :51210002 :00341820 :01331022 :7041000a :10200028 :54000000 :50410002 :00240820 :8c750000 :ac35ff58 :20630004 :21290001 :012e082a :1420ffd0 :54000000 :23bdffd0 :8fd5ff50 :afb50000 :8fc1ff54 :afa10004 :8fd5ff58 :afb50008 :8fd5ff5c :afb5000c :8fd5ff60 :afb50010 :8fd5ff64 :afb50014 :8fd5ff68 :afb50018 :8fd5ff6c :afb5001c :8fd5ff70 :afb50020 :8fd5ff74 :afb50024 :8fd5ff78 :afb50028 :8fd5ff7c :afb5002c :0c000220 :54000000 :23bd0030 :0c003764 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc6a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc67c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fcf0 :afb50000 :0c00380c :54000000 :23bd0008 :23bdfff8 :3c030000 :2463f438 :8c750000 :afb50000 :0c001bfc :54000000 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc618 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc5f0 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c150000 :26b5fd24 :afb50000 :8c610000 :afa10004 :0c003778 :54000000 :23bd0008 :0fff98e8 :54000000 :0c00374c :54000000 :0c003750 :54000000 0000fd5c:00000000 00007894:afbefffc :001df020 :afbffff8 :2fbd0008 :3c010000 :2421fd5c :98200000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :3c010000 :2421fe28 :8c210000 :3c1f0000 :27fffe5c :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :3c1f0000 :27fffe5c :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0408 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :20040000 :8fc10000 :64210000 :1020005c :54000000 :23c5fc10 :001ef820 :20020000 :00851820 :8fe10000 :00220820 :80210000 :a0610000 :20420001 :20630001 :20840001 :8fe10000 :00410820 :9021ffff :64210000 :1420ffd0 :54000000 :23ff0004 :8fe10000 :64210000 :1420ffb4 :54000000 :23c3fc10 :00641020 :23c1fc11 :00240820 :20060000 :a0260000 :a0460000 :23bdfff0 :20060000 :afa60000 :afa30004 :8fc60000 :afa60008 :20060001 :afa6000c :0fffdb78 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0fffd0b4 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0c0034f8 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff9690 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff964c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff9608 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010d5c:496e6974 :69616c69 :7a696e67 :20717565 :7565206c :696e6b20 :25642e0a :00 00007f9c:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :3c050001 :24a50dc8 :afa50000 :0c0000e0 :54000000 :20030000 :23bd0008 :3c040000 :2484fd60 :3c020001 :24420dd4 :23bdfff8 :afa40000 :20050069 :afa50004 :0fffbe34 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2005002b :afa50004 :0fffbe0c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c050001 :24a50d5c :afa50000 :afa30004 :0c002f98 :54000000 :23bd0008 :20050000 :ac450000 :23bdfff8 :afa20000 :0c000078 :54000000 :23bd0008 :20420010 :20630001 :7061018f :1420ff64 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :ac210000 :ac210004 :201f0000 :ac3f0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010d7c:25733a20 :25730a00 00010d84:51756575 :65467265 :654c696e :6b00 00010d94:4c696e6b :206e6f74 :20656d70 :747900 000080e8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8c610000 :64210000 :10200038 :54000000 :23bdfff0 :3c040001 :24840d7c :afa40000 :3c010001 :24210d84 :afa10004 :3c040001 :24840d94 :afa40008 :0c002ea8 :54000000 :23bd0010 :3c020001 :24420dc8 :8c410004 :ac620008 :ac610004 :8c240000 :ac640000 :ac230000 :8c610000 :ac230004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010da4:51756575 :65416c6c :6f634c69 :6e6b00 00010db4:4c696e6b :206e6f74 :20616c6c :6f636174 :65642100 000081a0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24420dc8 :8c410008 :60210000 :14200054 :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c640000 :ac240000 :8c610000 :8c640004 :ac240004 :8c620008 :8c410008 :2021ffff :ac410008 :20040000 :ac640000 :08000008 :54000000 :20030000 :64610000 :14200038 :54000000 :23bdfff0 :3c040001 :24840d7c :afa40000 :3c010001 :24210da4 :afa10004 :3c040001 :24840db4 :afa40008 :0c002d8c :54000000 :23bd0010 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff8f04 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff8ec0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8e7c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000126d4:456e7465 :72696e67 :2053796e :63684d6f :64756c65 :496e6974 :0a00 000126f0:4c656176 :696e6720 :53796e63 :684d6f64 :756c6549 :6e69740a :00 00008728:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20030070 :afa30004 :0fffb6d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb6b0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :246326d4 :afa30000 :0c002840 :54000000 :23bd0008 :3c1f0001 :27ff27b8 :23e2026c :20030000 :afe30010 :23ff0014 :03e2082c :1420ffec :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20030070 :afa30004 :0fffb640 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb618 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :246326f0 :afa30000 :0c0027a8 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :23bdfff8 :afa20000 :0ffff81c :54000000 :ac43000c :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :2005000f :afa50000 :0fff899c :54000000 :00012020 :23bd0008 :20030000 :3c1f0001 :27ff27b8 :001f1020 :8fe10010 :64210000 :10200078 :54000000 :205f0014 :20630001 :7061001f :1420ffdc :54000000 :23bdfff8 :afa40000 :0fff8950 :54000000 :23bd0008 :60610020 :14200054 :54000000 :50610002 :00230820 :50210002 :3c050001 :24a527b8 :00251020 :23bdfff8 :afa20000 :0ffff740 :54000000 :8fc50000 :ac45000c :23bd0008 :00030820 :08000018 :54000000 :20050001 :afe50010 :0bffff94 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001270c:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 0001272c:50726f63 :20307825 :78207761 :6974696e :67206f6e :2073656d :20307825 :782c2063 :6f756e74 :3d25642e :0a00 00012758:53757370 :656e6469 :6e672063 :75727265 :6e742070 :726f6320 :28307825 :78292e0a :00 000089c4:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc40000 :23bdfff8 :2007000f :afa70000 :0fff8888 :54000000 :00013020 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070049 :afa70004 :0fffb40c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb3e4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c070001 :24e7270c :afa70000 :afa60004 :0c002570 :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070073 :afa70004 :0fffb394 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb36c :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070001 :24e7272c :afa70000 :3c010000 :2421fe28 :8c210000 :afa10004 :afa40008 :8c87000c :afa7000c :0c0024e0 :54000000 :23bd0010 :8c81000c :2021ffff :ac81000c :68210000 :102000d8 :54000000 :0ffff670 :54000000 :00011020 :3c050000 :24a5fe28 :8ca10000 :20070000 :ac470000 :ac41000c :23bdfff8 :3c030000 :2463fd60 :afa30000 :20070073 :afa70004 :0fffb2c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0fffb2a0 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c070001 :24e72758 :afa70000 :8ca10000 :afa10004 :0c002428 :54000000 :23bd0008 :8c810004 :ac440008 :ac410004 :8c270000 :ac470000 :ac220000 :8c410000 :ac220004 :8c810008 :20210001 :ac810008 :0fff86d8 :54000000 :23bdfff8 :afa60000 :0fff867c :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244227b8 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffd2c :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001277c:5369676e :616c6c69 :6e67206f :6e207365 :6d203078 :25782c20 :636f756e :743d2564 :2e0a00 000127a0:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 00008cd4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :23bdfff8 :2005000f :afa50000 :0fff8580 :54000000 :00012020 :23bd0008 :23bdfff8 :3c030000 :2463fd60 :afa30000 :20050073 :afa50004 :0fffb104 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2005002b :afa50004 :0fffb0dc :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c050001 :24a5277c :afa50000 :afa20004 :8c45000c :afa50008 :0c002260 :54000000 :23bd0010 :8c41000c :20210001 :ac41000c :70210000 :102000ec :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c650000 :ac250000 :8c610000 :8c650004 :ac250004 :8c620008 :8c410008 :2021ffff :ac410008 :20050000 :ac650000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20050073 :afa50004 :0fffb024 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2005002b :afa50004 :0fffaffc :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c050001 :24a527a0 :afa50000 :8c61000c :afa10004 :0c002184 :54000000 :23bd0008 :23bdfff8 :8c65000c :afa50000 :0fffc2f8 :54000000 :afa30000 :0ffff25c :54000000 :23bd0008 :23bdfff8 :afa40000 :0fff83e8 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244227b8 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffdb0 :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012a38:3a207472 :6170732e :632c7620 :312e3120 :32303030 :2f30392f :32302030 :313a3530 :3a313920 :656c6d20 :45787020 :656c6d20 :303030 00008f60:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff8230 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff81ec :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff81a8 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :24210010 :8fdf0000 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :242101c0 :201f0001 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012a6c:46617461 :6c3a2043 :756d756c :61746976 :65206c65 :6e677468 :206f6620 :616c6c20 :61726775 :6d656e74 :73203e20 :3130300a :00 00009464:afbefffc :001df020 :afbffff8 :2fbd06a0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc40000 :8fc60004 :23c2fbf8 :23c3fc5b :200c0000 :a04c0000 :20420001 :0043082c :1420ffec :54000000 :20050000 :64c10000 :142000a0 :54000000 :23bdfff0 :3c020000 :2442fe28 :8c4c0000 :afac0000 :afa40004 :23c1f990 :afa10008 :200c0200 :afac000c :0fffa080 :54000000 :23bd0010 :23c4fb8f :23c3fb90 :23bdfff0 :8c4c0000 :afac0000 :8fc1f990 :00250820 :afa10004 :afa30008 :200c0001 :afac000c :0fffa048 :54000000 :20840001 :20630001 :20a50001 :23bd0010 :70a10063 :10200060 :54000000 :90810000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1f990 :afa10004 :200c0200 :afac0008 :0fffac34 :54000000 :8fccf990 :afac0000 :23c1fb90 :afa10004 :200c0064 :afac0008 :0fffa428 :54000000 :23bd0010 :200c0000 :a3ccfbf3 :20050000 :64c10000 :142000b0 :54000000 :3c080000 :2508fe28 :23cbfbf8 :23cafbf7 :23c6fff8 :23c90020 :8cc1f998 :64210000 :1020012c :54000000 :20020000 :00063820 :00aa2020 :00ab1820 :23bdfff0 :8d0c0000 :afac0000 :8ce1f998 :00220820 :afa10004 :afa30008 :200c0001 :afac000c :0fff9f54 :54000000 :20840001 :20630001 :20a50001 :20420001 :23bd0010 :70a103ff :10200014 :54000000 :90810000 :64210000 :1420ffa8 :54000000 :20c60004 :00c9082c :102000b0 :54000000 :0bffff70 :54000000 :23c5fbf8 :00053820 :23c3fff8 :23c60020 :2064f998 :8c820000 :64410000 :10200084 :54000000 :23bdfff8 :afa20000 :0fffa518 :54000000 :00a11020 :00470822 :23bd0008 :6c210064 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c2a6c :afac0000 :0c001910 :54000000 :0c0018f0 :54000000 :23bd0008 :23bdfff8 :afa50000 :8c810000 :afa10004 :0fffa274 :54000000 :200c0000 :a04c0000 :23bd0008 :20630004 :0066082c :1420ff70 :54000000 :200c0000 :a3ccfff7 :23bdfff0 :200c0000 :afac0000 :23c1fbf8 :afa10004 :23c1fb90 :afa10008 :200c0001 :afac000c :0fffbe7c :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd00d0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :8fc40000 :8fc10004 :20080000 :00081820 :64210000 :142000a0 :54000000 :23bdfff0 :3c020000 :2442fe28 :8c4b0000 :afab0000 :afa40004 :23c1ff58 :afa10008 :200b0028 :afab000c :0fff9d6c :54000000 :23bd0010 :23c5ffa7 :23c4ffa8 :23bdfff0 :8c4b0000 :afab0000 :8fc1ff58 :00230820 :afa10004 :afa40008 :200b0001 :afab000c :0fff9d34 :54000000 :20a50001 :20840001 :20630001 :23bd0010 :7061004f :10200060 :54000000 :90a10000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1ff58 :afa10004 :200b0028 :afab0008 :0fffa920 :54000000 :8fcbff58 :afab0000 :23c1ffa8 :afa10004 :200b0050 :afab0008 :0fffa114 :54000000 :23bd0010 :200b0000 :a3cbfff7 :23c3ffa8 :80620000 :304100ff :64210000 :102000f0 :54000000 :23cafff8 :23c9ff5c :51010002 :00293820 :002a3020 :304100ff :60210025 :102000b4 :54000000 :90610001 :60210025 :10200010 :54000000 :20630001 :08000098 :54000000 :8ceb0000 :accbff88 :51010002 :00292820 :002a2020 :20630001 :807f0000 :33e200ff :60410073 :14200060 :54000000 :6041006c :1420ffe0 :54000000 :23e1ff9a :302100ff :70210001 :14200010 :54000000 :60410065 :10200020 :54000000 :20e70004 :20c60004 :21080001 :8ca50004 :ac85ff8c :08000018 :54000000 :23e1ff9f :302100ff :70210019 :1020ff90 :54000000 :20e70004 :20c60004 :21080001 :20630001 :80620000 :304100ff :64210000 :1420ff2c :54000000 :23bdffd8 :23c1ffa8 :afa10000 :8fc1ff80 :afa10004 :8fcbff84 :afab0008 :8fcbff88 :afab000c :8fcbff8c :afab0010 :8fcbff90 :afab0014 :8fcbff94 :afab0018 :8fcbff98 :afab001c :8fcbff9c :afab0020 :0c0015c4 :54000000 :23bd0028 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012aa0:496e7465 :72727570 :74206361 :7573653d :30782578 :20696172 :3d307825 :78206973 :723d3078 :25782061 :7267733d :30782530 :38782e0a :00 00012ad8:476f7420 :6120636f :6e746578 :74207377 :69746368 :20747261 :70210a00 00012af4:476f7420 :616e2065 :78697420 :74726170 :210a00 00012b08:476f7420 :6120666f :726b2074 :72617021 :0a00 00012b1c:476f7420 :61207072 :6f636573 :7320736c :65657020 :74726170 :210a00 00012b38:476f7420 :61207072 :696e7466 :20747261 :70210a00 00012b4c:476f7420 :616e206f :70656e20 :77697468 :20706172 :616d6574 :65727320 :28272573 :272c3078 :2578290a :00 00012b78:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :74726170 :20283078 :25782920 :2d206578 :6974696e :67210a00 00012ba4:476f7420 :61207469 :6d657220 :696e7465 :72727570 :74210a00 00012bbc:476f7420 :61206b65 :79626f61 :72642069 :6e746572 :72757074 :20286368 :61723d30 :78257828 :2563292c :206e6c65 :66743d25 :6429210a :00 00012bf4:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c20696e :73747275 :6374696f :6e206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 00012c30:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :73797374 :656d2069 :6e746572 :72757074 :20283078 :25782920 :2d206578 :6974696e :67210a00 00012c68:41626f75 :7420746f :20726574 :75726e20 :66726f6d :20646f69 :6e746572 :72757074 :2e0a00 00009a6c:afbefffc :001df020 :afbffff8 :2fbd0058 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc60004 :8fc50008 :8fc3000c :23bdfff8 :3c040000 :2484fd60 :afa40000 :20070074 :afa70004 :0fffa374 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2007002b :afa70004 :0fffa34c :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070001 :24e72aa0 :afa70000 :afa20004 :afa60008 :afa5000c :afa30010 :0c0014cc :54000000 :23bd0018 :3c070800 :24e70000 :00470824 :64210000 :10200924 :54000000 :3c07f7ff :24e7ffff :00471024 :60410400 :14200110 :54000000 :6c410400 :14200074 :54000000 :60410212 :14200638 :54000000 :6c410212 :14200030 :54000000 :60410210 :1420050c :54000000 :6c410210 :1420055c :54000000 :60410201 :102008b0 :54000000 :080002dc :54000000 :60410214 :14200484 :54000000 :68410214 :14200358 :54000000 :60410300 :10200884 :54000000 :08000100 :54000000 :60410432 :14200658 :54000000 :6c410432 :14200030 :54000000 :60410430 :14200174 :54000000 :6c410430 :14200600 :54000000 :60410410 :10200840 :54000000 :080001cc :54000000 :60410451 :142006dc :54000000 :6c410451 :14200018 :54000000 :60410450 :10200814 :54000000 :08000614 :54000000 :60410452 :14200758 :54000000 :60410580 :102007f4 :54000000 :080004e8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa1b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa18c :54000000 :23bd0008 :64210000 :10200894 :54000000 :23bdfff8 :3c070001 :24e72ad8 :08000870 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa148 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa120 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72af4 :afa70000 :0c0012b0 :54000000 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffdd28 :54000000 :080008fc :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa0b0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa088 :54000000 :23bd0008 :64210000 :102008a8 :54000000 :23bdfff8 :3c070001 :24e72b08 :afa70000 :0c001218 :54000000 :08000884 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa038 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa010 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72b1c :afa70000 :0c0011a0 :54000000 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffb174 :54000000 :0fffacd8 :54000000 :080007e4 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fff9f98 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9f70 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72b38 :afa70000 :0c001100 :54000000 :23bd0008 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff890 :54000000 :08000750 :54000000 :30a10040 :64210000 :1020001c :54000000 :8c670000 :afc7ffe8 :8c630004 :afc3ffec :0800006c :54000000 :23bdfff0 :3c020000 :2442fe28 :8c470000 :afa70000 :afa30004 :23c1ffe8 :afa10008 :20070008 :afa7000c :0fff961c :54000000 :8c420000 :afa20000 :8fc1ffe8 :afa10004 :23c2ffc8 :afa20008 :2007001f :afa7000c :0fff95f4 :54000000 :20070000 :a3c7ffe7 :afc2ffe8 :23bd0010 :23bdfff8 :20070000 :afa70000 :0fff72d4 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :8fc1ffec :3c070001 :24e70000 :00270820 :afa10004 :0fffab2c :54000000 :23bdfff8 :3c070001 :24e72b4c :afa70000 :8fc1ffe8 :afa10004 :8fc7ffec :afa70008 :0c000fd8 :54000000 :23bd0010 :23bdfff8 :afa20000 :0fff7260 :54000000 :08000630 :54000000 :23bdfff8 :20070000 :afa70000 :0fff7244 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffaaa8 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7204 :54000000 :080005d4 :54000000 :23bdfff8 :20070000 :afa70000 :0fff71e8 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffaa4c :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff71a8 :54000000 :08000578 :54000000 :23bdfff8 :20070000 :afa70000 :0fff718c :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa9f0 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff714c :54000000 :0800051c :54000000 :23bdfff8 :20070000 :afa70000 :0fff7130 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa994 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff70f0 :54000000 :080004c0 :54000000 :23bdfff8 :20070000 :afa70000 :0fff70d4 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa938 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7094 :54000000 :08000464 :54000000 :0fffd6c0 :54000000 :00011020 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa8f0 :54000000 :08000430 :54000000 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff21c :54000000 :08000410 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010000 :2421fe28 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff92f4 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9f0c :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe5ec :54000000 :00011020 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa828 :54000000 :08000368 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010000 :2421fe28 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff924c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9e64 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe8c8 :54000000 :00011020 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa780 :54000000 :080002c0 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010000 :2421fe28 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff91a4 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9dbc :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffeaac :54000000 :00011020 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa6d8 :54000000 :08000218 :54000000 :23bdfff8 :3c070001 :24e72b78 :080001ec :54000000 :60410003 :14200148 :54000000 :6c410003 :14200024 :54000000 :60410001 :14200178 :54000000 :60410002 :102001b0 :54000000 :08000140 :54000000 :60410040 :14200038 :54000000 :6c410040 :14200018 :54000000 :60410020 :10200184 :54000000 :0800016c :54000000 :60410048 :10200170 :54000000 :08000088 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fff9940 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9918 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72ba4 :afa70000 :0c000aa8 :54000000 :23bd0008 :0fffa5fc :54000000 :0800010c :54000000 :3c04fff0 :248401a0 :3c03fff0 :24630180 :8c820000 :8c610000 :23bdfff0 :3c070001 :24e72bbc :afa70000 :afa10004 :afa10008 :afa2000c :0c000a58 :54000000 :23bd0010 :6c410001 :102000c0 :54000000 :0bffffc0 :54000000 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffd4bc :54000000 :08000090 :54000000 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffd498 :54000000 :0800006c :54000000 :23bdfff0 :3c070001 :24e72bf4 :afa70000 :afa60004 :afa50008 :0c0009d8 :54000000 :0c0009b8 :54000000 :23bd0010 :0800003c :54000000 :0fffd480 :54000000 :0800002c :54000000 :23bdfff8 :3c070001 :24e72c30 :afa70000 :afa20004 :0c000998 :54000000 :0c000978 :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fff97b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff978c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72c68 :afa70000 :0c00091c :54000000 :23bd0008 :0fff6a8c :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff6a84 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff6a40 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff69fc :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012c8c:50726f63 :65737320 :2300 00012c98:52756e6e :696e6720 :70726f63 :65737320 :25642028 :69746572 :6174696f :6e202564 :29210a00 0000aba8:afbefffc :001df020 :afbffff8 :2fbd0078 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc60000 :2001000a :00c00035 :00200835 :0401000f :00001034 :50410002 :00220820 :50210001 :00c13822 :70c10063 :102000dc :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25082d30 :00280820 :afa10000 :20080001 :afa80004 :0fffdc34 :54000000 :20030001 :23bd0008 :23c4ffd0 :23c5ffa8 :00061020 :23bdfff8 :afa40000 :3c080001 :25082c8c :afa80004 :0fff8d10 :54000000 :afa30000 :afa50004 :0fff923c :54000000 :afa40000 :afa50004 :0fff8de0 :54000000 :23bdfff8 :3c080000 :2508aba8 :afa80000 :50410005 :00220822 :50210002 :00220820 :50210003 :00260820 :afa10004 :afa40008 :20080000 :afa8000c :0fffa908 :54000000 :23bd0010 :00461020 :20630001 :70610006 :1420ff70 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25082d30 :00280820 :afa10000 :0fffdcc0 :54000000 :20030000 :23bd0008 :50c20001 :0062082a :10200070 :54000000 :200503e8 :00022020 :00600035 :00a00835 :0401000f :00001034 :50410005 :00220822 :50210002 :00220820 :50210003 :00610829 :14200028 :54000000 :23bdfff0 :3c080001 :25082c98 :afa80000 :afa60004 :afa30008 :0c000278 :54000000 :23bd0010 :20630001 :0064082a :1420ffa0 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25082d30 :00280820 :afa10000 :0fffdf24 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012cbc:63686173 :65746169 :6c00 00012cc8:43686173 :696e6720 :7461696c :2025642e :0a00 00012cdc:4f70656e :206f6620 :2825732c :30782578 :29207265 :7475726e :73203078 :25782e0a :00 00012d00:43686173 :65546169 :6c00 0000ade8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :24632cbc :23bdfff8 :3c050001 :24a52cc8 :afa50000 :afa40004 :0c0001c0 :54000000 :afa30000 :20822000 :afa20004 :0c000158 :54000000 :23bdfff8 :3c050001 :24a52cdc :afa50000 :afa30004 :afa20008 :afa1000c :0c000188 :54000000 :23bd0010 :70810027 :1020003c :54000000 :23bdfff0 :3c050000 :24a5ade8 :afa50000 :20810001 :afa10004 :3c050001 :24a52d00 :afa50008 :20050000 :afa5000c :0fffa724 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012d0c:25642000 :52616e64 :6f6d206e :756d6265 :72202530 :32692069 :73203078 :25303878 :2e0a00 0000aed4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24422d30 :204300b4 :23bdfff8 :afa20000 :20040001 :afa40004 :0fffd958 :54000000 :23bd0008 :20420014 :0043082c :1420ffd8 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012df8:00012e00 0000af48:44000300 :4be00000 :54000000 :4be00000 :54000000 :44002013 :4be00000 :54000000 :44002014 :4be00000 :54000000 :44002010 :4be00000 :54000000 :44002011 :4be00000 :54000000 :44002012 :4be00000 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44002f00 :4be00000 :54000000 :44000300 :4be00000 :54000000 :44002001 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_1/execs/userprog1.dlx.obj

start:00001000 0000201b 00001000 00000b30 00002000 0000001b 00002000:0a0a496e :20557365 :7270726f :67312c20 :53756d20 :3a202564 :0a0a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :0c000b14 :54000000 :20030000 :201f0000 :20027000 :a05f0000 :20422000 :23ff0001 :73e1000b :1420ffec :54000000 :201f7000 :3c040001 :24846000 :03e41020 :83e40000 :00831820 :23ff2000 :03e2082c :1420ffec :54000000 :23bdfff8 :3c040000 :24842000 :afa40000 :306100ff :afa10004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_1/execs/userprog.dlx.obj

start:00001000 00002074 00001000 00000bf8 00002000 00000074 00002000:0a546573 :74696e67 :20636173 :65202564 :0a00 00002014:0a557361 :67653a20 :00 00002020:205b6361 :73652069 :645d0a0a :00 00002030:75736572 :70726f67 :312e646c :782e6f62 :6a00 00002044:75736572 :70726f67 :322e646c :782e6f62 :6a00 00002058:54657374 :20636173 :65202564 :206e6f74 :20737570 :706f7274 :65640a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :8fc20000 :8fc30004 :0c000bd0 :54000000 :60410002 :10200050 :54000000 :23bdfff0 :8c630004 :afa30000 :20040000 :afa40004 :2004000a :afa40008 :0c0008b4 :54000000 :00011020 :3c040000 :24842000 :afa40000 :afa20004 :0c000134 :54000000 :23bd0010 :08000048 :54000000 :23bdfff8 :3c040000 :24842014 :afa40000 :0c000110 :54000000 :8c630000 :afa30000 :0c000100 :54000000 :3c040000 :24842020 :afa40000 :0c0000ec :54000000 :0c000b28 :54000000 :60410001 :14200018 :54000000 :60410002 :1020005c :54000000 :0800002c :54000000 :23bdfff8 :3c040000 :24842030 :afa40000 :20040000 :afa40004 :0c0000bc :54000000 :08000048 :54000000 :23bdfff8 :3c040000 :24842044 :afa40000 :20040000 :afa40004 :0c000094 :54000000 :08000020 :54000000 :23bdfff8 :3c040000 :24842058 :afa40000 :afa20004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_1/execs/userprog2.dlx.obj

start:00001000 00002019 00001000 00000b30 00002000 00000019 00002000:0a20696e :20557365 :7270726f :67322c20 :53756d20 :3a202564 :00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :0c000b14 :54000000 :20030000 :201f0000 :20027000 :a05f0000 :20422000 :23ff0001 :73e1000c :1420ffec :54000000 :201f7000 :3c040001 :24848000 :03e41025 :83e40000 :00831820 :23ff2000 :03e2082c :1420ffec :54000000 :23bdfff8 :3c040000 :24842000 :afa40000 :306100ff :afa10004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_1/src/queue.c

// // queue.c // // Variables for queues, and a routine to initialize the pool of links. // // #include "dlxos.h" #include "queue.h" Queue freeLinks; static Link linkpool[QUEUE_MAX_LINKS]; void QueueModuleInit () { int i; QueueInit (&freeLinks); for (i = 0; i < QUEUE_MAX_LINKS; i++) { dbprintf ('i', "Initializing queue link %d.\n", i); linkpool[i].next = NULL; QueueFreeLink (&(linkpool[i])); } } void QueueInit (Queue *q) { q->first = (Link *)q; q->last = (Link *)q; q->nitems = 0; } void QueueFreeLink (Link *l) { extern Queue freeLinks; // Make sure the link has already been freed! ASSERT ((l->next == NULL), "Link not empty"); QueueInsertLast (&freeLinks, l); } Link * QueueAllocLink () { extern Queue freeLinks; Link *l; if (! QueueEmpty (&freeLinks)) { l = QueueFirst (&freeLinks); QueueRemove (l); } else { l = NULL; } ASSERT ((l != NULL), "Link not allocated!"); return (l); }

home/bshapir/cs314/project4/option1/lab4_1/src/dlxos.ps

home/bshapir/cs314/project4/option1/lab4_1/src/lab4.h

#ifndef _LAB4_H_ #define _LAB4_H_ #define NULL (void *)0x0 #define INVALID_SEM -1 typedef unsigned int uint32; typedef int sem_t; //Related to processes uint32 getpid(); //trap 0x431 void process_create(char *arg1, ...); //trap 0x432 //Related to semaphores sem_t sem_create(int count); //trap 0x450 int sem_wait(sem_t sem); //trap 0x451 int sem_signal(sem_t sem); //trap 0x452 #endif _LAB4_H_

home/bshapir/cs314/project4/option1/lab4_1/src/dlxos.h

// // Routines used by the entire operating system. // #ifndef _dlxos_h_ #define _dlxos_h_ #include "misc.h" typedef unsigned int uint32; #define DLX_PROCESS_QUANTUM 10000 // in microseconds extern void SetTimer (int); extern char debugstr[]; #define ASSERT(cond,s) (cond ? 0 : printf ("%s: %s\n", __FUNCTION__,s)) // dbprintf() is a VERY useful macro. It gets used as follows: // dbprintf ('x', "This prints %d and %x\n", val1, val2); // This will print the expected string only if the debugging options contain // the letter 'x'. This allows users to turn on different debugging // statements at different times by using different letters. For example, // process debugging statements could use 'p', and memory 'm'. Specifying // a '+' in the debugging string will turn on all debugging printfs. #define dbprintf(flag, format, args...) \ if ((dindex(debugstr,flag)!=(char *)0) || \ (dindex(debugstr,'+')!=(char *)0)) { \ printf (format, ## args); \ } extern int CurrentIntrs (); extern int SetIntrs (int); extern void KbdModuleInit (); extern void intrreturn (); inline int DisableIntrs () { return (SetIntrs (0xf)); } inline int EnableIntrs () { return (SetIntrs (0x0)); } inline int RestoreIntrs (int intrs) { return (SetIntrs (intrs)); } #endif // _dlxos_h_

home/bshapir/cs314/project4/option1/lab4_1/src/dlx.h

// // Definitions of flags and other things defined by the DLX processor. // #ifndef _dlx_h_ #define _dlx_h_ #define DLX_STATUS_INTRMASK 0x0f // up to 16 interrupt levels #define DLX_STATUS_FPTRUE 0x20 // Set if last FP comparison was true #define DLX_STATUS_SYSMODE 0x40 // Set if CPU is in system mode #define DLX_STATUS_PAGE_TABLE 0x100 // Set -> use a page table #define DLX_STATUS_TLB 0x200 // Set -> use a software-loaded TLB #endif // _dlx_h_

home/bshapir/cs314/project4/option1/lab4_1/src/userprog2.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 25 4 ; Text size: 2864 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a20696e .ascii "\n in Userprog2, Sum : %d\000" 12 00002004 20557365 12 00002008 7270726f 12 0000200c 67322c20 12 00002010 53756d20 12 00002014 3a202564 12 00002018 00 13 00002019 .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 0 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 23 00001010 0c000b14 jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20030000 addi r3,r0,(#0x0)&0xff 26 0000101c 201f0000 addi r31,r0,#0 27 00001020 20027000 addi r2,r0,#28672 28 00001024 L16_LF0: 29 00001024 a05f0000 sb (r2),r31 30 00001028 20422000 addi r2,r2,#8192 31 0000102c 23ff0001 addi r31,r31,#1 32 00001030 73e1000c slei r1,r31,#12 33 00001034 1420ffec bnez r1,L16_LF0 34 00001038 54000000 nop; not filled. 35 0000103c 201f7000 addi r31,r0,#28672 36 00001040 3c040001 lhi r4,#1 37 00001044 24848000 addui r4,r4,#32768 38 00001048 03e41025 or r2,r31,r4 39 0000104c L21_LF0: 40 0000104c 83e40000 lb r4,(r31) 41 00001050 00831820 add r3,r4,r3 42 00001054 23ff2000 addi r31,r31,#8192 43 00001058 03e2082c sle r1,r31,r2 44 0000105c 1420ffec bnez r1,L21_LF0 45 00001060 54000000 nop; not filled. 46 00001064 23bdfff8 addi r29,r29,#-8 47 00001068 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 48 0000106c 24842000 addui r4,r4,(LC0_LF0)&0xffff 49 00001070 afa40000 sw (r29),r4 50 00001074 306100ff andi r1,r3,#0x00ff 51 00001078 afa10004 sw 4(r29),r1 52 0000107c 0c000058 jal _Printf 53 00001080 54000000 nop; not filled. 54 00001084 23bd0008 addi r29,r29,#8 55 00001088 0c000a90 jal _exit 56 0000108c 54000000 nop 57 00001090 .endproc _main 58 ;;; 59 ;;; Stub functions for DLX traps. 60 ;;; 61 ;;; Ethan L. Miller, 1999. Released to the public domain. 62 ;;; 63 ;;; The traps such as Open and Close 64 ;;; (note the capital letters) are for use by user programs. The traps 65 ;;; with names such as open and close (lower case) are for use by the OS. 66 ;;; 69 00001090 .align 2 71 ;;; The following are the traps to be used by user-level programs 72 ;;; 74 00001090 .align 2 75 00001090 .proc _Open 76 00001090 .global _Open 77 00001090 _Open: 78 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 79 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 80 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 81 00001090 44000213 trap #0x213 82 00001094 4be00000 jr r31 83 00001098 54000000 nop 84 0000109c .endproc _Open 86 0000109c .proc _Close 87 0000109c .global _Close 88 0000109c _Close: 89 0000109c 44000214 trap #0x214 90 000010a0 4be00000 jr r31 91 000010a4 54000000 nop 92 000010a8 .endproc _Close 94 000010a8 .proc _Read 95 000010a8 .global _Read 96 000010a8 _Read: 97 000010a8 44000210 trap #0x210 98 000010ac 4be00000 jr r31 99 000010b0 54000000 nop 100 000010b4 .endproc _Read 102 000010b4 .proc _Write 103 000010b4 .global _Write 104 000010b4 _Write: 105 000010b4 44000211 trap #0x211 106 000010b8 4be00000 jr r31 107 000010bc 54000000 nop 108 000010c0 .endproc _Write 110 000010c0 .proc _Lseek 111 000010c0 .global _Lseek 112 000010c0 _Lseek: 113 000010c0 44000212 trap #0x212 114 000010c4 4be00000 jr r31 115 000010c8 54000000 nop 116 000010cc .endproc _Lseek 118 000010cc .proc _Putchar 119 000010cc .global _Putchar 120 000010cc _Putchar: 121 000010cc 44000280 trap #0x280 122 000010d0 4be00000 jr r31 123 000010d4 54000000 nop 124 000010d8 .endproc _Putchar 126 000010d8 .proc _Printf 127 000010d8 .global _Printf 128 000010d8 _Printf: 129 000010d8 44000201 trap #0x201 130 000010dc 4be00000 jr r31 131 000010e0 54000000 nop 132 000010e4 .endproc _Printf 134 000010e4 .proc _getpid 135 000010e4 .global _getpid 136 000010e4 _getpid: 137 000010e4 44000431 trap #0x431 138 000010e8 4be00000 jr r31 139 000010ec 54000000 nop 140 000010f0 .endproc _getpid 142 000010f0 .proc _process_create 143 000010f0 .global _process_create 144 000010f0 _process_create: 145 000010f0 44000432 trap #0x432 146 000010f4 4be00000 jr r31 147 000010f8 54000000 nop 148 000010fc .endproc _process_create 151 000010fc .proc _sem_create 152 000010fc .global _sem_create 153 000010fc _sem_create: 154 000010fc 44000450 trap #0x450 155 00001100 4be00000 jr r31 156 00001104 54000000 nop 157 00001108 .endproc _sem_create 159 00001108 .proc _sem_wait 160 00001108 .global _sem_wait 161 00001108 _sem_wait: 162 00001108 44000451 trap #0x451 163 0000110c 4be00000 jr r31 164 00001110 54000000 nop 165 00001114 .endproc _sem_wait 167 00001114 .proc _sem_signal 168 00001114 .global _sem_signal 169 00001114 _sem_signal: 170 00001114 44000452 trap #0x452 171 00001118 4be00000 jr r31 172 0000111c 54000000 nop 173 00001120 .endproc _sem_signal 176 ; Compiled by GCC 178 00001120 .align 2 179 00001120 .proc _isspace 180 00001120 .global _isspace 181 00001120 _isspace: 182 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 183 00001120 afbefffc sw -4(r29),r30; push fp 184 00001124 001df020 add r30,r0,r29; fp = sp 185 00001128 afbffff8 sw -8(r29),r31; push ret addr 186 0000112c 2fbd0010 subui r29,r29,#16; alloc local storage 187 00001130 afa20000 sw 0(r29),r2 188 00001134 83c20003 lb r2,3(r30) 189 00001138 201f0000 addi r31,r0,#0 190 0000113c 304100ff andi r1,r2,#0x00ff 191 00001140 60210020 seqi r1,r1,#32 192 00001144 14200018 bnez r1,L6_LF2 193 00001148 54000000 nop; not filled. 194 0000114c 2041fff7 addi r1,r2,#-9 195 00001150 302100ff andi r1,r1,#0x00ff 196 00001154 70210001 sleui r1,r1,#1 197 00001158 10200008 beqz r1,L5_LF2 198 0000115c 54000000 nop; not filled. 199 00001160 L6_LF2: 200 00001160 201f0001 addi r31,r0,#1 201 00001164 L5_LF2: 202 00001164 001f0820 add r1,r0,r31 203 00001168 8fa20000 lw r2,0(r29) 204 0000116c 8fdffff8 lw r31,-8(r30) 205 00001170 001ee820 add r29,r0,r30 206 00001174 8fdefffc lw r30,-4(r30) 207 00001178 4be00000 jr r31 208 0000117c 54000000 nop 209 00001180 .endproc _isspace 210 00001180 .align 2 211 00001180 .proc _isxdigit 212 00001180 .global _isxdigit 213 00001180 _isxdigit: 214 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 215 00001180 afbefffc sw -4(r29),r30; push fp 216 00001184 001df020 add r30,r0,r29; fp = sp 217 00001188 afbffff8 sw -8(r29),r31; push ret addr 218 0000118c 2fbd0010 subui r29,r29,#16; alloc local storage 219 00001190 afa20000 sw 0(r29),r2 220 00001194 83df0003 lb r31,3(r30) 221 00001198 20020000 addi r2,r0,#0 222 0000119c 23e1ffd0 addi r1,r31,#-48 223 000011a0 302100ff andi r1,r1,#0x00ff 224 000011a4 70210009 sleui r1,r1,#9 225 000011a8 14200028 bnez r1,L12_LF2 226 000011ac 54000000 nop; not filled. 227 000011b0 23e1ff9f addi r1,r31,#-97 228 000011b4 302100ff andi r1,r1,#0x00ff 229 000011b8 70210005 sleui r1,r1,#5 230 000011bc 14200014 bnez r1,L12_LF2 231 000011c0 54000000 nop; not filled. 232 000011c4 33e100ff andi r1,r31,#0x00ff 233 000011c8 64210041 snei r1,r1,#65 234 000011cc 14200008 bnez r1,L11_LF2 235 000011d0 54000000 nop; not filled. 236 000011d4 L12_LF2: 237 000011d4 20020001 addi r2,r0,#1 238 000011d8 L11_LF2: 239 000011d8 00020820 add r1,r0,r2 240 000011dc 8fa20000 lw r2,0(r29) 241 000011e0 8fdffff8 lw r31,-8(r30) 242 000011e4 001ee820 add r29,r0,r30 243 000011e8 8fdefffc lw r30,-4(r30) 244 000011ec 4be00000 jr r31 245 000011f0 54000000 nop 246 000011f4 .endproc _isxdigit 247 000011f4 .align 2 248 000011f4 .proc _dstrcpy 249 000011f4 .global _dstrcpy 250 000011f4 _dstrcpy: 251 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 252 000011f4 afbefffc sw -4(r29),r30; push fp 253 000011f8 001df020 add r30,r0,r29; fp = sp 254 000011fc afbffff8 sw -8(r29),r31; push ret addr 255 00001200 2fbd0010 subui r29,r29,#16; alloc local storage 256 00001204 afa20000 sw 0(r29),r2 257 00001208 afa30004 sw 4(r29),r3 258 0000120c 8fdf0000 lw r31,(r30) 259 00001210 8fc20004 lw r2,4(r30) 260 00001214 001f1820 add r3,r0,r31 261 00001218 L19_LF2: 262 00001218 80410000 lb r1,(r2) 263 0000121c a3e10000 sb (r31),r1 264 00001220 20420001 addi r2,r2,#1 265 00001224 23ff0001 addi r31,r31,#1 266 00001228 302100ff andi r1,r1,#0x00ff 267 0000122c 64210000 snei r1,r1,#0 268 00001230 1420ffe4 bnez r1,L19_LF2 269 00001234 54000000 nop; not filled. 270 00001238 00030820 add r1,r0,r3 271 0000123c 8fa20000 lw r2,0(r29) 272 00001240 8fa30004 lw r3,4(r29) 273 00001244 8fdffff8 lw r31,-8(r30) 274 00001248 001ee820 add r29,r0,r30 275 0000124c 8fdefffc lw r30,-4(r30) 276 00001250 4be00000 jr r31 277 00001254 54000000 nop 278 00001258 .endproc _dstrcpy 279 00001258 .align 2 280 00001258 .proc _dstrncpy 281 00001258 .global _dstrncpy 282 00001258 _dstrncpy: 283 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 284 00001258 afbefffc sw -4(r29),r30; push fp 285 0000125c 001df020 add r30,r0,r29; fp = sp 286 00001260 afbffff8 sw -8(r29),r31; push ret addr 287 00001264 2fbd0018 subui r29,r29,#24; alloc local storage 288 00001268 afa20000 sw 0(r29),r2 289 0000126c afa30004 sw 4(r29),r3 290 00001270 afa40008 sw 8(r29),r4 291 00001274 8fc20000 lw r2,(r30) 292 00001278 8fc30004 lw r3,4(r30) 293 0000127c 8fdf0008 lw r31,8(r30) 294 00001280 00022020 add r4,r0,r2 295 00001284 08000024 j L37_LF2 296 00001288 54000000 nop; not filled. 297 0000128c L34_LF2: 298 0000128c 80610000 lb r1,(r3) 299 00001290 a0410000 sb (r2),r1 300 00001294 20630001 addi r3,r3,#1 301 00001298 20420001 addi r2,r2,#1 302 0000129c 302100ff andi r1,r1,#0x00ff 303 000012a0 64210000 snei r1,r1,#0 304 000012a4 10200018 beqz r1,L32_LF2 305 000012a8 54000000 nop; not filled. 306 000012ac L37_LF2: 307 000012ac 001f0820 add r1,r0,r31 308 000012b0 23ffffff addi r31,r31,#-1 309 000012b4 70210000 slei r1,r1,#0 310 000012b8 1020ffd0 beqz r1,L34_LF2 311 000012bc 54000000 nop; not filled. 312 000012c0 L32_LF2: 313 000012c0 00040820 add r1,r0,r4 314 000012c4 8fa20000 lw r2,0(r29) 315 000012c8 8fa30004 lw r3,4(r29) 316 000012cc 8fa40008 lw r4,8(r29) 317 000012d0 8fdffff8 lw r31,-8(r30) 318 000012d4 001ee820 add r29,r0,r30 319 000012d8 8fdefffc lw r30,-4(r30) 320 000012dc 4be00000 jr r31 321 000012e0 54000000 nop 322 000012e4 .endproc _dstrncpy 323 000012e4 .align 2 324 000012e4 .proc _dstrcat 325 000012e4 .global _dstrcat 326 000012e4 _dstrcat: 327 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 328 000012e4 afbefffc sw -4(r29),r30; push fp 329 000012e8 001df020 add r30,r0,r29; fp = sp 330 000012ec afbffff8 sw -8(r29),r31; push ret addr 331 000012f0 2fbd0010 subui r29,r29,#16; alloc local storage 332 000012f4 afa20000 sw 0(r29),r2 333 000012f8 afa30004 sw 4(r29),r3 334 000012fc 8fdf0000 lw r31,(r30) 335 00001300 001f1820 add r3,r0,r31 336 00001304 90610000 lbu r1,(r3) 337 00001308 64210000 snei r1,r1,#0 338 0000130c 10200018 beqz r1,L50_LF2 339 00001310 54000000 nop; not filled. 340 00001314 L51_LF2: 341 00001314 23ff0001 addi r31,r31,#1 342 00001318 93e10000 lbu r1,(r31) 343 0000131c 64210000 snei r1,r1,#0 344 00001320 1420fff0 bnez r1,L51_LF2 345 00001324 54000000 nop; not filled. 346 00001328 L50_LF2: 347 00001328 001f1020 add r2,r0,r31 348 0000132c 8fdf0004 lw r31,4(r30) 349 00001330 L54_LF2: 350 00001330 83e10000 lb r1,(r31) 351 00001334 a0410000 sb (r2),r1 352 00001338 23ff0001 addi r31,r31,#1 353 0000133c 20420001 addi r2,r2,#1 354 00001340 302100ff andi r1,r1,#0x00ff 355 00001344 64210000 snei r1,r1,#0 356 00001348 1420ffe4 bnez r1,L54_LF2 357 0000134c 54000000 nop; not filled. 358 00001350 00030820 add r1,r0,r3 359 00001354 8fa20000 lw r2,0(r29) 360 00001358 8fa30004 lw r3,4(r29) 361 0000135c 8fdffff8 lw r31,-8(r30) 362 00001360 001ee820 add r29,r0,r30 363 00001364 8fdefffc lw r30,-4(r30) 364 00001368 4be00000 jr r31 365 0000136c 54000000 nop 366 00001370 .endproc _dstrcat 367 00001370 .align 2 368 00001370 .proc _dstrncmp 369 00001370 .global _dstrncmp 370 00001370 _dstrncmp: 371 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 372 00001370 afbefffc sw -4(r29),r30; push fp 373 00001374 001df020 add r30,r0,r29; fp = sp 374 00001378 afbffff8 sw -8(r29),r31; push ret addr 375 0000137c 2fbd0018 subui r29,r29,#24; alloc local storage 376 00001380 afa20000 sw 0(r29),r2 377 00001384 afa30004 sw 4(r29),r3 378 00001388 afa40008 sw 8(r29),r4 379 0000138c afa5000c sw 12(r29),r5 380 00001390 8fc30000 lw r3,(r30) 381 00001394 8fc40004 lw r4,4(r30) 382 00001398 8fc50008 lw r5,8(r30) 383 0000139c 20020000 addi r2,r0,#0 384 000013a0 0045082a slt r1,r2,r5 385 000013a4 1020003c beqz r1,L73_LF2 386 000013a8 54000000 nop; not filled. 387 000013ac L75_LF2: 388 000013ac 909f0000 lbu r31,(r4) 389 000013b0 67e10000 snei r1,r31,#0 390 000013b4 10200038 beqz r1,L86_LF2 391 000013b8 54000000 nop; not filled. 392 000013bc 90610000 lbu r1,(r3) 393 000013c0 003f0829 sne r1,r1,r31 394 000013c4 1420001c bnez r1,L73_LF2 395 000013c8 54000000 nop; not filled. 396 000013cc 20630001 addi r3,r3,#1 397 000013d0 20840001 addi r4,r4,#1 398 000013d4 20420001 addi r2,r2,#1 399 000013d8 0045082a slt r1,r2,r5 400 000013dc 1420ffcc bnez r1,L75_LF2 401 000013e0 54000000 nop; not filled. 402 000013e4 L73_LF2: 403 000013e4 00450828 seq r1,r2,r5 404 000013e8 10200010 beqz r1,L80_LF2 405 000013ec 54000000 nop; not filled. 406 000013f0 L86_LF2: 407 000013f0 20010000 addi r1,r0,#0 408 000013f4 08000028 j L84_LF2 409 000013f8 54000000 nop; not filled. 410 000013fc L80_LF2: 411 000013fc 907f0000 lbu r31,(r3) 412 00001400 90830000 lbu r3,(r4) 413 00001404 03e30822 sub r1,r31,r3 414 00001408 74210000 sgei r1,r1,#0 415 0000140c 2002ffff addi r2,r0,#-1 416 00001410 10200008 beqz r1,L82_LF2 417 00001414 54000000 nop; not filled. 418 00001418 03e31029 sne r2,r31,r3 419 0000141c L82_LF2: 420 0000141c 00020820 add r1,r0,r2 421 00001420 L84_LF2: 422 00001420 8fa20000 lw r2,0(r29) 423 00001424 8fa30004 lw r3,4(r29) 424 00001428 8fa40008 lw r4,8(r29) 425 0000142c 8fa5000c lw r5,12(r29) 426 00001430 8fdffff8 lw r31,-8(r30) 427 00001434 001ee820 add r29,r0,r30 428 00001438 8fdefffc lw r30,-4(r30) 429 0000143c 4be00000 jr r31 430 00001440 54000000 nop 431 00001444 .endproc _dstrncmp 432 00001444 .align 2 433 00001444 .proc _dstrlen 434 00001444 .global _dstrlen 435 00001444 _dstrlen: 436 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 437 00001444 afbefffc sw -4(r29),r30; push fp 438 00001448 001df020 add r30,r0,r29; fp = sp 439 0000144c afbffff8 sw -8(r29),r31; push ret addr 440 00001450 2fbd0010 subui r29,r29,#16; alloc local storage 441 00001454 afa20000 sw 0(r29),r2 442 00001458 8fdf0000 lw r31,(r30) 443 0000145c 20020000 addi r2,r0,#0 444 00001460 08000008 j L97_LF2 445 00001464 54000000 nop; not filled. 446 00001468 L95_LF2: 447 00001468 20420001 addi r2,r2,#1 448 0000146c L97_LF2: 449 0000146c 93e10000 lbu r1,(r31) 450 00001470 23ff0001 addi r31,r31,#1 451 00001474 64210000 snei r1,r1,#0 452 00001478 1420ffec bnez r1,L95_LF2 453 0000147c 54000000 nop; not filled. 454 00001480 00020820 add r1,r0,r2 455 00001484 8fa20000 lw r2,0(r29) 456 00001488 8fdffff8 lw r31,-8(r30) 457 0000148c 001ee820 add r29,r0,r30 458 00001490 8fdefffc lw r30,-4(r30) 459 00001494 4be00000 jr r31 460 00001498 54000000 nop 461 0000149c .endproc _dstrlen 462 0000149c .align 2 463 0000149c .proc _dstrstr 464 0000149c .global _dstrstr 465 0000149c _dstrstr: 466 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 467 0000149c afbefffc sw -4(r29),r30; push fp 468 000014a0 001df020 add r30,r0,r29; fp = sp 469 000014a4 afbffff8 sw -8(r29),r31; push ret addr 470 000014a8 2fbd0020 subui r29,r29,#32; alloc local storage 471 000014ac afa20000 sw 0(r29),r2 472 000014b0 afa30004 sw 4(r29),r3 473 000014b4 afa40008 sw 8(r29),r4 474 000014b8 afa5000c sw 12(r29),r5 475 000014bc afa60010 sw 16(r29),r6 476 000014c0 afa70014 sw 20(r29),r7 477 000014c4 8fc50000 lw r5,(r30) 478 000014c8 8fc70004 lw r7,4(r30) 479 000014cc 20030000 addi r3,r0,#0 480 000014d0 90e10000 lbu r1,(r7) 481 000014d4 20e20001 addi r2,r7,#1 482 000014d8 64210000 snei r1,r1,#0 483 000014dc 1020001c beqz r1,L125_LF2 484 000014e0 54000000 nop; not filled. 485 000014e4 L126_LF2: 486 000014e4 20630001 addi r3,r3,#1 487 000014e8 90410000 lbu r1,(r2) 488 000014ec 20420001 addi r2,r2,#1 489 000014f0 64210000 snei r1,r1,#0 490 000014f4 1420ffec bnez r1,L126_LF2 491 000014f8 54000000 nop; not filled. 492 000014fc L125_LF2: 493 000014fc 00033020 add r6,r0,r3 494 00001500 080000ac j L149_LF2 495 00001504 54000000 nop; not filled. 496 00001508 L130_LF2: 497 00001508 00051820 add r3,r0,r5 498 0000150c 00072020 add r4,r0,r7 499 00001510 20020000 addi r2,r0,#0 500 00001514 0046082a slt r1,r2,r6 501 00001518 1020003c beqz r1,L134_LF2 502 0000151c 54000000 nop; not filled. 503 00001520 L136_LF2: 504 00001520 909f0000 lbu r31,(r4) 505 00001524 67e10000 snei r1,r31,#0 506 00001528 10200038 beqz r1,L150_LF2 507 0000152c 54000000 nop; not filled. 508 00001530 90610000 lbu r1,(r3) 509 00001534 003f0829 sne r1,r1,r31 510 00001538 1420001c bnez r1,L134_LF2 511 0000153c 54000000 nop; not filled. 512 00001540 20630001 addi r3,r3,#1 513 00001544 20840001 addi r4,r4,#1 514 00001548 20420001 addi r2,r2,#1 515 0000154c 0046082a slt r1,r2,r6 516 00001550 1420ffcc bnez r1,L136_LF2 517 00001554 54000000 nop; not filled. 518 00001558 L134_LF2: 519 00001558 00460828 seq r1,r2,r6 520 0000155c 10200010 beqz r1,L141_LF2 521 00001560 54000000 nop; not filled. 522 00001564 L150_LF2: 523 00001564 20010000 addi r1,r0,#0 524 00001568 08000028 j L132_LF2 525 0000156c 54000000 nop; not filled. 526 00001570 L141_LF2: 527 00001570 90630000 lbu r3,(r3) 528 00001574 90820000 lbu r2,(r4) 529 00001578 00620822 sub r1,r3,r2 530 0000157c 74210000 sgei r1,r1,#0 531 00001580 201fffff addi r31,r0,#-1 532 00001584 10200008 beqz r1,L143_LF2 533 00001588 54000000 nop; not filled. 534 0000158c 0062f829 sne r31,r3,r2 535 00001590 L143_LF2: 536 00001590 001f0820 add r1,r0,r31 537 00001594 L132_LF2: 538 00001594 64210000 snei r1,r1,#0 539 00001598 14200010 bnez r1,L131_LF2 540 0000159c 54000000 nop; not filled. 541 000015a0 00050820 add r1,r0,r5 542 000015a4 0800001c j L146_LF2 543 000015a8 54000000 nop; not filled. 544 000015ac L131_LF2: 545 000015ac 20a50001 addi r5,r5,#1 546 000015b0 L149_LF2: 547 000015b0 90a10000 lbu r1,(r5) 548 000015b4 64210000 snei r1,r1,#0 549 000015b8 1420ff4c bnez r1,L130_LF2 550 000015bc 54000000 nop; not filled. 551 000015c0 20010000 addi r1,r0,#0 552 000015c4 L146_LF2: 553 000015c4 8fa20000 lw r2,0(r29) 554 000015c8 8fa30004 lw r3,4(r29) 555 000015cc 8fa40008 lw r4,8(r29) 556 000015d0 8fa5000c lw r5,12(r29) 557 000015d4 8fa60010 lw r6,16(r29) 558 000015d8 8fa70014 lw r7,20(r29) 559 000015dc 8fdffff8 lw r31,-8(r30) 560 000015e0 001ee820 add r29,r0,r30 561 000015e4 8fdefffc lw r30,-4(r30) 562 000015e8 4be00000 jr r31 563 000015ec 54000000 nop 564 000015f0 .endproc _dstrstr 565 000015f0 .align 2 566 000015f0 .proc _dmindex 567 000015f0 .global _dmindex 568 000015f0 _dmindex: 569 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 570 000015f0 afbefffc sw -4(r29),r30; push fp 571 000015f4 001df020 add r30,r0,r29; fp = sp 572 000015f8 afbffff8 sw -8(r29),r31; push ret addr 573 000015fc 2fbd0020 subui r29,r29,#32; alloc local storage 574 00001600 afa20000 sw 0(r29),r2 575 00001604 afa30004 sw 4(r29),r3 576 00001608 afa40008 sw 8(r29),r4 577 0000160c afa5000c sw 12(r29),r5 578 00001610 afa60010 sw 16(r29),r6 579 00001614 8fc40000 lw r4,(r30) 580 00001618 8fc60004 lw r6,4(r30) 581 0000161c 90810000 lbu r1,(r4) 582 00001620 64210000 snei r1,r1,#0 583 00001624 10200060 beqz r1,L164_LF2 584 00001628 54000000 nop; not filled. 585 0000162c 00012820 add r5,r0,r1 586 00001630 L165_LF2: 587 00001630 00061020 add r2,r0,r6 588 00001634 80df0000 lb r31,(r6) 589 00001638 33e100ff andi r1,r31,#0x00ff 590 0000163c 64210000 snei r1,r1,#0 591 00001640 1020003c beqz r1,L163_LF2 592 00001644 54000000 nop; not filled. 593 00001648 90830000 lbu r3,(r4) 594 0000164c L169_LF2: 595 0000164c 33e100ff andi r1,r31,#0x00ff 596 00001650 00610828 seq r1,r3,r1 597 00001654 10200010 beqz r1,L168_LF2 598 00001658 54000000 nop; not filled. 599 0000165c 00040820 add r1,r0,r4 600 00001660 08000028 j L173_LF2 601 00001664 54000000 nop; not filled. 602 00001668 L168_LF2: 603 00001668 20420001 addi r2,r2,#1 604 0000166c 805f0000 lb r31,(r2) 605 00001670 33e100ff andi r1,r31,#0x00ff 606 00001674 64210000 snei r1,r1,#0 607 00001678 1420ffd0 bnez r1,L169_LF2 608 0000167c 54000000 nop; not filled. 609 00001680 L163_LF2: 610 00001680 14a0ffac bnez r5,L165_LF2 611 00001684 54000000 nop; not filled. 612 00001688 L164_LF2: 613 00001688 20010000 addi r1,r0,#0 614 0000168c L173_LF2: 615 0000168c 8fa20000 lw r2,0(r29) 616 00001690 8fa30004 lw r3,4(r29) 617 00001694 8fa40008 lw r4,8(r29) 618 00001698 8fa5000c lw r5,12(r29) 619 0000169c 8fa60010 lw r6,16(r29) 620 000016a0 8fdffff8 lw r31,-8(r30) 621 000016a4 001ee820 add r29,r0,r30 622 000016a8 8fdefffc lw r30,-4(r30) 623 000016ac 4be00000 jr r31 624 000016b0 54000000 nop 625 000016b4 .endproc _dmindex 626 000016b4 .align 2 627 000016b4 .proc _dindex 628 000016b4 .global _dindex 629 000016b4 _dindex: 630 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 631 000016b4 afbefffc sw -4(r29),r30; push fp 632 000016b8 001df020 add r30,r0,r29; fp = sp 633 000016bc afbffff8 sw -8(r29),r31; push ret addr 634 000016c0 2fbd0010 subui r29,r29,#16; alloc local storage 635 000016c4 afa20000 sw 0(r29),r2 636 000016c8 afa30004 sw 4(r29),r3 637 000016cc 8fc20000 lw r2,(r30) 638 000016d0 8fc30004 lw r3,4(r30) 639 000016d4 08000024 j L187_LF2 640 000016d8 54000000 nop; not filled. 641 000016dc L183_LF2: 642 000016dc 33e100ff andi r1,r31,#0x00ff 643 000016e0 00230828 seq r1,r1,r3 644 000016e4 10200010 beqz r1,L184_LF2 645 000016e8 54000000 nop; not filled. 646 000016ec 00020820 add r1,r0,r2 647 000016f0 08000020 j L186_LF2 648 000016f4 54000000 nop; not filled. 649 000016f8 L184_LF2: 650 000016f8 20420001 addi r2,r2,#1 651 000016fc L187_LF2: 652 000016fc 805f0000 lb r31,(r2) 653 00001700 33e100ff andi r1,r31,#0x00ff 654 00001704 64210000 snei r1,r1,#0 655 00001708 1420ffd0 bnez r1,L183_LF2 656 0000170c 54000000 nop; not filled. 657 00001710 20010000 addi r1,r0,#0 658 00001714 L186_LF2: 659 00001714 8fa20000 lw r2,0(r29) 660 00001718 8fa30004 lw r3,4(r29) 661 0000171c 8fdffff8 lw r31,-8(r30) 662 00001720 001ee820 add r29,r0,r30 663 00001724 8fdefffc lw r30,-4(r30) 664 00001728 4be00000 jr r31 665 0000172c 54000000 nop 666 00001730 .endproc _dindex 667 00001730 .align 2 668 00001730 .proc _ditoa 669 00001730 .global _ditoa 670 00001730 _ditoa: 671 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 672 00001730 afbefffc sw -4(r29),r30; push fp 673 00001734 001df020 add r30,r0,r29; fp = sp 674 00001738 afbffff8 sw -8(r29),r31; push ret addr 675 0000173c 2fbd0020 subui r29,r29,#32; alloc local storage 676 00001740 afa20000 sw 0(r29),r2 677 00001744 afa30004 sw 4(r29),r3 678 00001748 afa40008 sw 8(r29),r4 679 0000174c afa5000c sw 12(r29),r5 680 00001750 afa60010 sw 16(r29),r6 681 00001754 8fc30000 lw r3,(r30) 682 00001758 8fc40004 lw r4,4(r30) 683 0000175c 68610000 slti r1,r3,#0 684 00001760 10200010 beqz r1,L203_LF2 685 00001764 54000000 nop; not filled. 686 00001768 2006002d addi r6,r0,(#0x2d)&0xff 687 0000176c 08000014 j L216_LF2 688 00001770 54000000 nop; not filled. 689 00001774 L203_LF2: 690 00001774 64610000 snei r1,r3,#0 691 00001778 14200018 bnez r1,L205_LF2 692 0000177c 54000000 nop; not filled. 693 00001780 20060030 addi r6,r0,(#0x30)&0xff 694 00001784 L216_LF2: 695 00001784 a0860000 sb (r4),r6 696 00001788 20840001 addi r4,r4,#1 697 0000178c 0800007c j L204_LF2 698 00001790 54000000 nop; not filled. 699 00001794 L205_LF2: 700 00001794 201f0001 addi r31,r0,#1 701 00001798 03e3082c sle r1,r31,r3 702 0000179c 1020001c beqz r1,L208_LF2 703 000017a0 54000000 nop; not filled. 704 000017a4 L209_LF2: 705 000017a4 53e10002 slli r1,r31,#0x2 706 000017a8 003f0820 add r1,r1,r31 707 000017ac 503f0001 slli r31,r1,#0x1 708 000017b0 03e3082c sle r1,r31,r3 709 000017b4 1420ffec bnez r1,L209_LF2 710 000017b8 54000000 nop; not filled. 711 000017bc L208_LF2: 712 000017bc 2005000a addi r5,r0,#10 713 000017c0 L212_LF2: 714 000017c0 03e00035 movi2fp f0,r31 715 000017c4 00a00835 movi2fp f1,r5 716 000017c8 0401000f div f0,f0,f1 717 000017cc 0000f834 movfp2i r31,f0 718 000017d0 00600035 movi2fp f0,r3 719 000017d4 03e00835 movi2fp f1,r31 720 000017d8 0401000f div f0,f0,f1 721 000017dc 00001034 movfp2i r2,f0 722 000017e0 20410030 addi r1,r2,#48 723 000017e4 a0810000 sb (r4),r1 724 000017e8 20840001 addi r4,r4,#1 725 000017ec 00400035 movi2fp f0,r2 726 000017f0 03e00835 movi2fp f1,r31 727 000017f4 0401000e mult f0,f0,f1 728 000017f8 00000834 movfp2i r1,f0 729 000017fc 00611822 sub r3,r3,r1 730 00001800 6fe10001 sgti r1,r31,#1 731 00001804 1420ffb8 bnez r1,L212_LF2 732 00001808 54000000 nop; not filled. 733 0000180c L204_LF2: 734 0000180c 20060000 addi r6,r0,(#0x0)&0xff 735 00001810 a0860000 sb (r4),r6 736 00001814 8fa20000 lw r2,0(r29) 737 00001818 8fa30004 lw r3,4(r29) 738 0000181c 8fa40008 lw r4,8(r29) 739 00001820 8fa5000c lw r5,12(r29) 740 00001824 8fa60010 lw r6,16(r29) 741 00001828 8fdffff8 lw r31,-8(r30) 742 0000182c 001ee820 add r29,r0,r30 743 00001830 8fdefffc lw r30,-4(r30) 744 00001834 4be00000 jr r31 745 00001838 54000000 nop 746 0000183c .endproc _ditoa 747 0000183c .align 2 748 0000183c .proc _dstrtol 749 0000183c .global _dstrtol 750 0000183c _dstrtol: 751 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 752 0000183c afbefffc sw -4(r29),r30; push fp 753 00001840 001df020 add r30,r0,r29; fp = sp 754 00001844 afbffff8 sw -8(r29),r31; push ret addr 755 00001848 2fbd0020 subui r29,r29,#32; alloc local storage 756 0000184c afa20000 sw 0(r29),r2 757 00001850 afa30004 sw 4(r29),r3 758 00001854 afa40008 sw 8(r29),r4 759 00001858 afa5000c sw 12(r29),r5 760 0000185c afa60010 sw 16(r29),r6 761 00001860 8fc20000 lw r2,(r30) 762 00001864 8fc50004 lw r5,4(r30) 763 00001868 8fc40008 lw r4,8(r30) 764 0000186c 20030000 addi r3,r0,#0 765 00001870 08000008 j L247_LF2 766 00001874 54000000 nop; not filled. 767 00001878 L220_LF2: 768 00001878 20420001 addi r2,r2,#1 769 0000187c L247_LF2: 770 0000187c 805f0000 lb r31,(r2) 771 00001880 33e100ff andi r1,r31,#0x00ff 772 00001884 60210020 seqi r1,r1,#32 773 00001888 1420ffec bnez r1,L220_LF2 774 0000188c 54000000 nop; not filled. 775 00001890 23e1fff7 addi r1,r31,#-9 776 00001894 302100ff andi r1,r1,#0x00ff 777 00001898 70210001 sleui r1,r1,#1 778 0000189c 1420ffd8 bnez r1,L220_LF2 779 000018a0 54000000 nop; not filled. 780 000018a4 64a10000 snei r1,r5,#0 781 000018a8 10200008 beqz r1,L222_LF2 782 000018ac 54000000 nop; not filled. 783 000018b0 aca20000 sw (r5),r2 784 000018b4 L222_LF2: 785 000018b4 905f0000 lbu r31,(r2) 786 000018b8 67e10000 snei r1,r31,#0 787 000018bc 10200090 beqz r1,L248_LF2 788 000018c0 54000000 nop; not filled. 789 000018c4 63e1002d seqi r1,r31,#45 790 000018c8 10200014 beqz r1,L224_LF2 791 000018cc 54000000 nop; not filled. 792 000018d0 2006ffff addi r6,r0,#-1 793 000018d4 20420001 addi r2,r2,#1 794 000018d8 08000008 j L225_LF2 795 000018dc 54000000 nop; not filled. 796 000018e0 L224_LF2: 797 000018e0 20060001 addi r6,r0,#1 798 000018e4 L225_LF2: 799 000018e4 64810000 snei r1,r4,#0 800 000018e8 14200054 bnez r1,L226_LF2 801 000018ec 54000000 nop; not filled. 802 000018f0 90410000 lbu r1,(r2) 803 000018f4 60210030 seqi r1,r1,#48 804 000018f8 10200040 beqz r1,L227_LF2 805 000018fc 54000000 nop; not filled. 806 00001900 20420001 addi r2,r2,#1 807 00001904 905f0000 lbu r31,(r2) 808 00001908 63e10078 seqi r1,r31,#120 809 0000190c 14200010 bnez r1,L229_LF2 810 00001910 54000000 nop; not filled. 811 00001914 63e10058 seqi r1,r31,#88 812 00001918 10200014 beqz r1,L228_LF2 813 0000191c 54000000 nop; not filled. 814 00001920 L229_LF2: 815 00001920 20040010 addi r4,r0,#16 816 00001924 20420001 addi r2,r2,#1 817 00001928 08000014 j L226_LF2 818 0000192c 54000000 nop; not filled. 819 00001930 L228_LF2: 820 00001930 20040008 addi r4,r0,#8 821 00001934 08000008 j L226_LF2 822 00001938 54000000 nop; not filled. 823 0000193c L227_LF2: 824 0000193c 2004000a addi r4,r0,#10 825 00001940 L226_LF2: 826 00001940 2081ffff addi r1,r4,#-1 827 00001944 6c21000f sgtui r1,r1,#15 828 00001948 10200010 beqz r1,L233_LF2 829 0000194c 54000000 nop; not filled. 830 00001950 L248_LF2: 831 00001950 00030820 add r1,r0,r3 832 00001954 080000c4 j L245_LF2 833 00001958 54000000 nop; not filled. 834 0000195c L233_LF2: 835 0000195c 805f0000 lb r31,(r2) 836 00001960 23e1ffd0 addi r1,r31,#-48 837 00001964 302100ff andi r1,r1,#0x00ff 838 00001968 70210009 sleui r1,r1,#9 839 0000196c 10200014 beqz r1,L236_LF2 840 00001970 54000000 nop; not filled. 841 00001974 33e100ff andi r1,r31,#0x00ff 842 00001978 2021ffd0 addi r1,r1,#-48 843 0000197c 08000050 j L237_LF2 844 00001980 54000000 nop; not filled. 845 00001984 L236_LF2: 846 00001984 23e1ff9f addi r1,r31,#-97 847 00001988 302100ff andi r1,r1,#0x00ff 848 0000198c 70210019 sleui r1,r1,#25 849 00001990 10200014 beqz r1,L238_LF2 850 00001994 54000000 nop; not filled. 851 00001998 33e100ff andi r1,r31,#0x00ff 852 0000199c 2021ffa9 addi r1,r1,#-87 853 000019a0 0800002c j L237_LF2 854 000019a4 54000000 nop; not filled. 855 000019a8 L238_LF2: 856 000019a8 23e1ffbf addi r1,r31,#-65 857 000019ac 302100ff andi r1,r1,#0x00ff 858 000019b0 70210019 sleui r1,r1,#25 859 000019b4 10200014 beqz r1,L240_LF2 860 000019b8 54000000 nop; not filled. 861 000019bc 33e100ff andi r1,r31,#0x00ff 862 000019c0 2021ffc9 addi r1,r1,#-55 863 000019c4 08000008 j L237_LF2 864 000019c8 54000000 nop; not filled. 865 000019cc L240_LF2: 866 000019cc 200103e8 addi r1,r0,#1000 867 000019d0 L237_LF2: 868 000019d0 0024f82a slt r31,r1,r4 869 000019d4 13e00024 beqz r31,L246_LF2 870 000019d8 54000000 nop; not filled. 871 000019dc 00600035 movi2fp f0,r3 872 000019e0 00800835 movi2fp f1,r4 873 000019e4 0401000e mult f0,f0,f1 874 000019e8 00001834 movfp2i r3,f0 875 000019ec 00611820 add r3,r3,r1 876 000019f0 20420001 addi r2,r2,#1 877 000019f4 17e0ff64 bnez r31,L233_LF2 878 000019f8 54000000 nop; not filled. 879 000019fc L246_LF2: 880 000019fc 64a10000 snei r1,r5,#0 881 00001a00 10200008 beqz r1,L244_LF2 882 00001a04 54000000 nop; not filled. 883 00001a08 aca20000 sw (r5),r2 884 00001a0c L244_LF2: 885 00001a0c 00600035 movi2fp f0,r3 886 00001a10 00c00835 movi2fp f1,r6 887 00001a14 0401000e mult f0,f0,f1 888 00001a18 00000834 movfp2i r1,f0 889 00001a1c L245_LF2: 890 00001a1c 8fa20000 lw r2,0(r29) 891 00001a20 8fa30004 lw r3,4(r29) 892 00001a24 8fa40008 lw r4,8(r29) 893 00001a28 8fa5000c lw r5,12(r29) 894 00001a2c 8fa60010 lw r6,16(r29) 895 00001a30 8fdffff8 lw r31,-8(r30) 896 00001a34 001ee820 add r29,r0,r30 897 00001a38 8fdefffc lw r30,-4(r30) 898 00001a3c 4be00000 jr r31 899 00001a40 54000000 nop 900 00001a44 .endproc _dstrtol 901 00001a44 .align 2 902 00001a44 .proc _bcopy 903 00001a44 .global _bcopy 904 00001a44 _bcopy: 905 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 906 00001a44 afbefffc sw -4(r29),r30; push fp 907 00001a48 001df020 add r30,r0,r29; fp = sp 908 00001a4c afbffff8 sw -8(r29),r31; push ret addr 909 00001a50 2fbd0018 subui r29,r29,#24; alloc local storage 910 00001a54 afa20000 sw 0(r29),r2 911 00001a58 afa30004 sw 4(r29),r3 912 00001a5c afa40008 sw 8(r29),r4 913 00001a60 8fc30000 lw r3,(r30) 914 00001a64 8fc20004 lw r2,4(r30) 915 00001a68 8fdf0008 lw r31,8(r30) 916 00001a6c 08000014 j L259_LF2 917 00001a70 54000000 nop; not filled. 918 00001a74 L257_LF2: 919 00001a74 80640000 lb r4,(r3) 920 00001a78 a0440000 sb (r2),r4 921 00001a7c 20630001 addi r3,r3,#1 922 00001a80 20420001 addi r2,r2,#1 923 00001a84 L259_LF2: 924 00001a84 001f0820 add r1,r0,r31 925 00001a88 23ffffff addi r31,r31,#-1 926 00001a8c 6c210000 sgti r1,r1,#0 927 00001a90 1420ffe0 bnez r1,L257_LF2 928 00001a94 54000000 nop; not filled. 929 00001a98 8fa20000 lw r2,0(r29) 930 00001a9c 8fa30004 lw r3,4(r29) 931 00001aa0 8fa40008 lw r4,8(r29) 932 00001aa4 8fdffff8 lw r31,-8(r30) 933 00001aa8 001ee820 add r29,r0,r30 934 00001aac 8fdefffc lw r30,-4(r30) 935 00001ab0 4be00000 jr r31 936 00001ab4 54000000 nop 937 00001ab8 .endproc _bcopy 938 00001ab8 .align 2 939 00001ab8 .proc _bzero 940 00001ab8 .global _bzero 941 00001ab8 _bzero: 942 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 943 00001ab8 afbefffc sw -4(r29),r30; push fp 944 00001abc 001df020 add r30,r0,r29; fp = sp 945 00001ac0 afbffff8 sw -8(r29),r31; push ret addr 946 00001ac4 2fbd0010 subui r29,r29,#16; alloc local storage 947 00001ac8 afa20000 sw 0(r29),r2 948 00001acc afa30004 sw 4(r29),r3 949 00001ad0 8fc20000 lw r2,(r30) 950 00001ad4 8fdf0004 lw r31,4(r30) 951 00001ad8 08000010 j L270_LF2 952 00001adc 54000000 nop; not filled. 953 00001ae0 L268_LF2: 954 00001ae0 20030000 addi r3,r0,(#0x0)&0xff 955 00001ae4 a0430000 sb (r2),r3 956 00001ae8 20420001 addi r2,r2,#1 957 00001aec L270_LF2: 958 00001aec 001f0820 add r1,r0,r31 959 00001af0 23ffffff addi r31,r31,#-1 960 00001af4 6c210000 sgti r1,r1,#0 961 00001af8 1420ffe4 bnez r1,L268_LF2 962 00001afc 54000000 nop; not filled. 963 00001b00 8fa20000 lw r2,0(r29) 964 00001b04 8fa30004 lw r3,4(r29) 965 00001b08 8fdffff8 lw r31,-8(r30) 966 00001b0c 001ee820 add r29,r0,r30 967 00001b10 8fdefffc lw r30,-4(r30) 968 00001b14 4be00000 jr r31 969 00001b18 54000000 nop 970 00001b1c .endproc _bzero 971 ;;; Ethan L. Miller, 1999. Released to the public domain 972 ;;; 973 ;;; Most of the traps are called in files from libtraps. 976 00001b1c .align 2 977 00001b1c .proc _exit 978 00001b1c .global _exit 979 00001b1c _exit: 980 00001b1c 44000300 trap #0x300 981 00001b20 4be00000 jr r31 982 00001b24 54000000 nop 983 00001b28 .endproc _exit 985 ; for the benefit of gcc. 986 00001b28 .proc ___main 987 00001b28 .global ___main 988 00001b28 ___main: 989 00001b28 4be00000 jr r31 990 00001b2c 54000000 nop 991 00001b30 .endproc ___main 992 00001b30 .text 993 00001b30 .global _etext 994 00001b30 _etext: 995 00001b30 .align 3 996 00001b30 .data 997 00002019 .global _edata 998 00002019 _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/#Makefile#

# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c \ OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog1 userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o $(CC) -mtraps -O3 dlxos.o trap_random.o $(OBJS) osend.o -o os.dlx osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog: userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -L userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog1: userprog1.o usertraps.o misc.o $(CC) -mtraps -O3 userprog1.o usertraps.o misc.o -o userprog1.dlx $(AS) -L userprog1.lst userprog1.dlx mv userprog1.dlx.obj ../execs userprog2: userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -L userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend

home/bshapir/cs314/project4/option1/lab4_1/src/dlxos.o

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

home/bshapir/cs314/project4/option1/lab4_1/src/userprog1.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 27 ; Text size: 2864 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\n\nIn Userprog1, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal ___main nop; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16_LF0: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16_LF0 nop; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#24576 add r2,r31,r4 L21_LF0: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/synch.working.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // Lock // Condition // // Semaphores are the only "native" synchronization primitive. // Condition variables and locks are implemented using semaphores. // #ifndef _synch_h_ #define _synch_h_ #include "queue.h" typedef struct Sem { Queue waiting; int count; } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); typedef struct Lock { Sem mutex; // Overall mutex for the Lock. Sem pri; // Semaphore on which "high-priority" processes wait int npri; // Number of high-priority processes waiting } Lock; typedef struct Cond { Lock *condLock; Sem condSem; // Semaphore on which condition variables wait int nwaiters; // Number of processes waiting for this condition } Cond; extern void LockInit (Lock *); extern void LockAcquire (Lock *); extern void LockRelease (Lock *); extern void CondInit (Cond *, Lock *); extern void CondWait (Cond *); extern void CondSignal (Cond *); extern void CondBroadcast (Cond *); #endif //_synch_h_

home/bshapir/cs314/project4/option1/lab4_1/src/osend.o

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

home/bshapir/cs314/project4/option1/lab4_1/src/userprog1.o

; Compiled by GCC .data .align 2 LC0: .ascii "\n\nIn Userprog1, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal ___main nop ; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16 nop ; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#24576 add r2,r31,r4 L21: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

home/bshapir/cs314/project4/option1/lab4_1/src/Makefile.depend

filesys.o: filesys.c dlxos.h misc.h process.h memory.h queue.h \ filesys.h memory.o: memory.c dlxos.h misc.h memory.h process.h queue.h misc.o: misc.c misc.h process.o: process.c dlxos.h misc.h memory.h process.h queue.h synch.h \ filesys.h queue.o: queue.c dlxos.h misc.h queue.h synch.o: synch.c dlxos.h misc.h process.h memory.h queue.h synch.h traps.o: traps.c dlx.h dlxos.h misc.h traps.h process.h memory.h \ queue.h sysproc.o: sysproc.c process.h dlxos.h misc.h memory.h queue.h synch.h

home/bshapir/cs314/project4/option1/lab4_1/src/userprog.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 116 4 ; Text size: 3060 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a546573 .ascii "\nTesting case %d\n\000" 12 00002004 74696e67 12 00002008 20636173 12 0000200c 65202564 12 00002010 0a00 13 00002012 .align 2 14 00002014 LC1_LF0: 15 00002014 0a557361 .ascii "\nUsage: \000" 15 00002018 67653a20 15 0000201c 00 16 0000201d .align 2 17 00002020 LC2_LF0: 18 00002020 205b6361 .ascii " [case id]\n\n\000" 18 00002024 73652069 18 00002028 645d0a0a 18 0000202c 00 19 0000202d .align 2 20 00002030 LC3_LF0: 21 00002030 75736572 .ascii "userprog1.dlx.obj\000" 21 00002034 70726f67 21 00002038 312e646c 21 0000203c 782e6f62 21 00002040 6a00 22 00002042 .align 2 23 00002044 LC4_LF0: 24 00002044 75736572 .ascii "userprog2.dlx.obj\000" 24 00002048 70726f67 24 0000204c 322e646c 24 00002050 782e6f62 24 00002054 6a00 25 00002056 .align 2 26 00002058 LC5_LF0: 27 00002058 54657374 .ascii "Test case %d not supported\n\000" 27 0000205c 20636173 27 00002060 65202564 27 00002064 206e6f74 27 00002068 20737570 27 0000206c 706f7274 27 00002070 65640a00 28 00002074 .text 29 00001000 .align 2 30 00001000 .proc _main 31 00001000 .global _main 32 00001000 _main: 33 ; Function 'main'; 0 bytes of locals, 0 regs to save. 34 00001000 afbefffc sw -4(r29),r30; push fp 35 00001004 001df020 add r30,r0,r29; fp = sp 36 00001008 afbffff8 sw -8(r29),r31; push ret addr 37 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 38 00001010 8fc20000 lw r2,(r30) 39 00001014 8fc30004 lw r3,4(r30) 40 00001018 0c000bd0 jal ___main 41 0000101c 54000000 nop; not filled. 42 00001020 60410002 seqi r1,r2,#2 43 00001024 10200050 beqz r1,L14_LF0 44 00001028 54000000 nop; not filled. 45 0000102c 23bdfff0 addi r29,r29,#-16 46 00001030 8c630004 lw r3,4(r3) 47 00001034 afa30000 sw (r29),r3 48 00001038 20040000 addi r4,r0,#0 49 0000103c afa40004 sw 4(r29),r4 50 00001040 2004000a addi r4,r0,#10 51 00001044 afa40008 sw 8(r29),r4 52 00001048 0c0008b4 jal _dstrtol 53 0000104c 54000000 nop; not filled. 54 00001050 00011020 add r2,r0,r1 55 00001054 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 56 00001058 24842000 addui r4,r4,(LC0_LF0)&0xffff 57 0000105c afa40000 sw (r29),r4 58 00001060 afa20004 sw 4(r29),r2 59 00001064 0c000134 jal _Printf 60 00001068 54000000 nop; not filled. 61 0000106c 23bd0010 addi r29,r29,#16 62 00001070 08000048 j L12_LF0 63 00001074 54000000 nop; not filled. 64 00001078 L14_LF0: 65 00001078 23bdfff8 addi r29,r29,#-8 66 0000107c 3c040000 lhi r4,((LC1_LF0)>>16)&0xffff 67 00001080 24842014 addui r4,r4,(LC1_LF0)&0xffff 68 00001084 afa40000 sw (r29),r4 69 00001088 0c000110 jal _Printf 70 0000108c 54000000 nop; not filled. 71 00001090 8c630000 lw r3,(r3) 72 00001094 afa30000 sw (r29),r3 73 00001098 0c000100 jal _Printf 74 0000109c 54000000 nop; not filled. 75 000010a0 3c040000 lhi r4,((LC2_LF0)>>16)&0xffff 76 000010a4 24842020 addui r4,r4,(LC2_LF0)&0xffff 77 000010a8 afa40000 sw (r29),r4 78 000010ac 0c0000ec jal _Printf 79 000010b0 54000000 nop; not filled. 80 000010b4 0c000b28 jal _exit 81 000010b8 54000000 nop; not filled. 82 000010bc L12_LF0: 83 000010bc 60410001 seqi r1,r2,#1 84 000010c0 14200018 bnez r1,L17_LF0 85 000010c4 54000000 nop; not filled. 86 000010c8 60410002 seqi r1,r2,#2 87 000010cc 1020005c beqz r1,L19_LF0 88 000010d0 54000000 nop; not filled. 89 000010d4 0800002c j L18_LF0 90 000010d8 54000000 nop; not filled. 91 000010dc L17_LF0: 92 000010dc 23bdfff8 addi r29,r29,#-8 93 000010e0 3c040000 lhi r4,((LC3_LF0)>>16)&0xffff 94 000010e4 24842030 addui r4,r4,(LC3_LF0)&0xffff 95 000010e8 afa40000 sw (r29),r4 96 000010ec 20040000 addi r4,r0,#0 97 000010f0 afa40004 sw 4(r29),r4 98 000010f4 0c0000bc jal _process_create 99 000010f8 54000000 nop; not filled. 100 000010fc 08000048 j L21_LF0 101 00001100 54000000 nop; not filled. 102 00001104 L18_LF0: 103 00001104 23bdfff8 addi r29,r29,#-8 104 00001108 3c040000 lhi r4,((LC4_LF0)>>16)&0xffff 105 0000110c 24842044 addui r4,r4,(LC4_LF0)&0xffff 106 00001110 afa40000 sw (r29),r4 107 00001114 20040000 addi r4,r0,#0 108 00001118 afa40004 sw 4(r29),r4 109 0000111c 0c000094 jal _process_create 110 00001120 54000000 nop; not filled. 111 00001124 08000020 j L21_LF0 112 00001128 54000000 nop; not filled. 113 0000112c L19_LF0: 114 0000112c 23bdfff8 addi r29,r29,#-8 115 00001130 3c040000 lhi r4,((LC5_LF0)>>16)&0xffff 116 00001134 24842058 addui r4,r4,(LC5_LF0)&0xffff 117 00001138 afa40000 sw (r29),r4 118 0000113c afa20004 sw 4(r29),r2 119 00001140 0c000058 jal _Printf 120 00001144 54000000 nop; not filled. 121 00001148 L21_LF0: 122 00001148 23bd0008 addi r29,r29,#8 123 0000114c 0c000a90 jal _exit 124 00001150 54000000 nop 125 00001154 .endproc _main 126 ;;; 127 ;;; Stub functions for DLX traps. 128 ;;; 129 ;;; Ethan L. Miller, 1999. Released to the public domain. 130 ;;; 131 ;;; The traps such as Open and Close 132 ;;; (note the capital letters) are for use by user programs. The traps 133 ;;; with names such as open and close (lower case) are for use by the OS. 134 ;;; 137 00001154 .align 2 139 ;;; The following are the traps to be used by user-level programs 140 ;;; 142 00001154 .align 2 143 00001154 .proc _Open 144 00001154 .global _Open 145 00001154 _Open: 146 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 147 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 148 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 149 00001154 44000213 trap #0x213 150 00001158 4be00000 jr r31 151 0000115c 54000000 nop 152 00001160 .endproc _Open 154 00001160 .proc _Close 155 00001160 .global _Close 156 00001160 _Close: 157 00001160 44000214 trap #0x214 158 00001164 4be00000 jr r31 159 00001168 54000000 nop 160 0000116c .endproc _Close 162 0000116c .proc _Read 163 0000116c .global _Read 164 0000116c _Read: 165 0000116c 44000210 trap #0x210 166 00001170 4be00000 jr r31 167 00001174 54000000 nop 168 00001178 .endproc _Read 170 00001178 .proc _Write 171 00001178 .global _Write 172 00001178 _Write: 173 00001178 44000211 trap #0x211 174 0000117c 4be00000 jr r31 175 00001180 54000000 nop 176 00001184 .endproc _Write 178 00001184 .proc _Lseek 179 00001184 .global _Lseek 180 00001184 _Lseek: 181 00001184 44000212 trap #0x212 182 00001188 4be00000 jr r31 183 0000118c 54000000 nop 184 00001190 .endproc _Lseek 186 00001190 .proc _Putchar 187 00001190 .global _Putchar 188 00001190 _Putchar: 189 00001190 44000280 trap #0x280 190 00001194 4be00000 jr r31 191 00001198 54000000 nop 192 0000119c .endproc _Putchar 194 0000119c .proc _Printf 195 0000119c .global _Printf 196 0000119c _Printf: 197 0000119c 44000201 trap #0x201 198 000011a0 4be00000 jr r31 199 000011a4 54000000 nop 200 000011a8 .endproc _Printf 202 000011a8 .proc _getpid 203 000011a8 .global _getpid 204 000011a8 _getpid: 205 000011a8 44000431 trap #0x431 206 000011ac 4be00000 jr r31 207 000011b0 54000000 nop 208 000011b4 .endproc _getpid 210 000011b4 .proc _process_create 211 000011b4 .global _process_create 212 000011b4 _process_create: 213 000011b4 44000432 trap #0x432 214 000011b8 4be00000 jr r31 215 000011bc 54000000 nop 216 000011c0 .endproc _process_create 219 000011c0 .proc _sem_create 220 000011c0 .global _sem_create 221 000011c0 _sem_create: 222 000011c0 44000450 trap #0x450 223 000011c4 4be00000 jr r31 224 000011c8 54000000 nop 225 000011cc .endproc _sem_create 227 000011cc .proc _sem_wait 228 000011cc .global _sem_wait 229 000011cc _sem_wait: 230 000011cc 44000451 trap #0x451 231 000011d0 4be00000 jr r31 232 000011d4 54000000 nop 233 000011d8 .endproc _sem_wait 235 000011d8 .proc _sem_signal 236 000011d8 .global _sem_signal 237 000011d8 _sem_signal: 238 000011d8 44000452 trap #0x452 239 000011dc 4be00000 jr r31 240 000011e0 54000000 nop 241 000011e4 .endproc _sem_signal 244 ; Compiled by GCC 246 000011e4 .align 2 247 000011e4 .proc _isspace 248 000011e4 .global _isspace 249 000011e4 _isspace: 250 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 251 000011e4 afbefffc sw -4(r29),r30; push fp 252 000011e8 001df020 add r30,r0,r29; fp = sp 253 000011ec afbffff8 sw -8(r29),r31; push ret addr 254 000011f0 2fbd0010 subui r29,r29,#16; alloc local storage 255 000011f4 afa20000 sw 0(r29),r2 256 000011f8 83c20003 lb r2,3(r30) 257 000011fc 201f0000 addi r31,r0,#0 258 00001200 304100ff andi r1,r2,#0x00ff 259 00001204 60210020 seqi r1,r1,#32 260 00001208 14200018 bnez r1,L6_LF2 261 0000120c 54000000 nop; not filled. 262 00001210 2041fff7 addi r1,r2,#-9 263 00001214 302100ff andi r1,r1,#0x00ff 264 00001218 70210001 sleui r1,r1,#1 265 0000121c 10200008 beqz r1,L5_LF2 266 00001220 54000000 nop; not filled. 267 00001224 L6_LF2: 268 00001224 201f0001 addi r31,r0,#1 269 00001228 L5_LF2: 270 00001228 001f0820 add r1,r0,r31 271 0000122c 8fa20000 lw r2,0(r29) 272 00001230 8fdffff8 lw r31,-8(r30) 273 00001234 001ee820 add r29,r0,r30 274 00001238 8fdefffc lw r30,-4(r30) 275 0000123c 4be00000 jr r31 276 00001240 54000000 nop 277 00001244 .endproc _isspace 278 00001244 .align 2 279 00001244 .proc _isxdigit 280 00001244 .global _isxdigit 281 00001244 _isxdigit: 282 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 283 00001244 afbefffc sw -4(r29),r30; push fp 284 00001248 001df020 add r30,r0,r29; fp = sp 285 0000124c afbffff8 sw -8(r29),r31; push ret addr 286 00001250 2fbd0010 subui r29,r29,#16; alloc local storage 287 00001254 afa20000 sw 0(r29),r2 288 00001258 83df0003 lb r31,3(r30) 289 0000125c 20020000 addi r2,r0,#0 290 00001260 23e1ffd0 addi r1,r31,#-48 291 00001264 302100ff andi r1,r1,#0x00ff 292 00001268 70210009 sleui r1,r1,#9 293 0000126c 14200028 bnez r1,L12_LF2 294 00001270 54000000 nop; not filled. 295 00001274 23e1ff9f addi r1,r31,#-97 296 00001278 302100ff andi r1,r1,#0x00ff 297 0000127c 70210005 sleui r1,r1,#5 298 00001280 14200014 bnez r1,L12_LF2 299 00001284 54000000 nop; not filled. 300 00001288 33e100ff andi r1,r31,#0x00ff 301 0000128c 64210041 snei r1,r1,#65 302 00001290 14200008 bnez r1,L11_LF2 303 00001294 54000000 nop; not filled. 304 00001298 L12_LF2: 305 00001298 20020001 addi r2,r0,#1 306 0000129c L11_LF2: 307 0000129c 00020820 add r1,r0,r2 308 000012a0 8fa20000 lw r2,0(r29) 309 000012a4 8fdffff8 lw r31,-8(r30) 310 000012a8 001ee820 add r29,r0,r30 311 000012ac 8fdefffc lw r30,-4(r30) 312 000012b0 4be00000 jr r31 313 000012b4 54000000 nop 314 000012b8 .endproc _isxdigit 315 000012b8 .align 2 316 000012b8 .proc _dstrcpy 317 000012b8 .global _dstrcpy 318 000012b8 _dstrcpy: 319 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 320 000012b8 afbefffc sw -4(r29),r30; push fp 321 000012bc 001df020 add r30,r0,r29; fp = sp 322 000012c0 afbffff8 sw -8(r29),r31; push ret addr 323 000012c4 2fbd0010 subui r29,r29,#16; alloc local storage 324 000012c8 afa20000 sw 0(r29),r2 325 000012cc afa30004 sw 4(r29),r3 326 000012d0 8fdf0000 lw r31,(r30) 327 000012d4 8fc20004 lw r2,4(r30) 328 000012d8 001f1820 add r3,r0,r31 329 000012dc L19_LF2: 330 000012dc 80410000 lb r1,(r2) 331 000012e0 a3e10000 sb (r31),r1 332 000012e4 20420001 addi r2,r2,#1 333 000012e8 23ff0001 addi r31,r31,#1 334 000012ec 302100ff andi r1,r1,#0x00ff 335 000012f0 64210000 snei r1,r1,#0 336 000012f4 1420ffe4 bnez r1,L19_LF2 337 000012f8 54000000 nop; not filled. 338 000012fc 00030820 add r1,r0,r3 339 00001300 8fa20000 lw r2,0(r29) 340 00001304 8fa30004 lw r3,4(r29) 341 00001308 8fdffff8 lw r31,-8(r30) 342 0000130c 001ee820 add r29,r0,r30 343 00001310 8fdefffc lw r30,-4(r30) 344 00001314 4be00000 jr r31 345 00001318 54000000 nop 346 0000131c .endproc _dstrcpy 347 0000131c .align 2 348 0000131c .proc _dstrncpy 349 0000131c .global _dstrncpy 350 0000131c _dstrncpy: 351 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 352 0000131c afbefffc sw -4(r29),r30; push fp 353 00001320 001df020 add r30,r0,r29; fp = sp 354 00001324 afbffff8 sw -8(r29),r31; push ret addr 355 00001328 2fbd0018 subui r29,r29,#24; alloc local storage 356 0000132c afa20000 sw 0(r29),r2 357 00001330 afa30004 sw 4(r29),r3 358 00001334 afa40008 sw 8(r29),r4 359 00001338 8fc20000 lw r2,(r30) 360 0000133c 8fc30004 lw r3,4(r30) 361 00001340 8fdf0008 lw r31,8(r30) 362 00001344 00022020 add r4,r0,r2 363 00001348 08000024 j L37_LF2 364 0000134c 54000000 nop; not filled. 365 00001350 L34_LF2: 366 00001350 80610000 lb r1,(r3) 367 00001354 a0410000 sb (r2),r1 368 00001358 20630001 addi r3,r3,#1 369 0000135c 20420001 addi r2,r2,#1 370 00001360 302100ff andi r1,r1,#0x00ff 371 00001364 64210000 snei r1,r1,#0 372 00001368 10200018 beqz r1,L32_LF2 373 0000136c 54000000 nop; not filled. 374 00001370 L37_LF2: 375 00001370 001f0820 add r1,r0,r31 376 00001374 23ffffff addi r31,r31,#-1 377 00001378 70210000 slei r1,r1,#0 378 0000137c 1020ffd0 beqz r1,L34_LF2 379 00001380 54000000 nop; not filled. 380 00001384 L32_LF2: 381 00001384 00040820 add r1,r0,r4 382 00001388 8fa20000 lw r2,0(r29) 383 0000138c 8fa30004 lw r3,4(r29) 384 00001390 8fa40008 lw r4,8(r29) 385 00001394 8fdffff8 lw r31,-8(r30) 386 00001398 001ee820 add r29,r0,r30 387 0000139c 8fdefffc lw r30,-4(r30) 388 000013a0 4be00000 jr r31 389 000013a4 54000000 nop 390 000013a8 .endproc _dstrncpy 391 000013a8 .align 2 392 000013a8 .proc _dstrcat 393 000013a8 .global _dstrcat 394 000013a8 _dstrcat: 395 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 396 000013a8 afbefffc sw -4(r29),r30; push fp 397 000013ac 001df020 add r30,r0,r29; fp = sp 398 000013b0 afbffff8 sw -8(r29),r31; push ret addr 399 000013b4 2fbd0010 subui r29,r29,#16; alloc local storage 400 000013b8 afa20000 sw 0(r29),r2 401 000013bc afa30004 sw 4(r29),r3 402 000013c0 8fdf0000 lw r31,(r30) 403 000013c4 001f1820 add r3,r0,r31 404 000013c8 90610000 lbu r1,(r3) 405 000013cc 64210000 snei r1,r1,#0 406 000013d0 10200018 beqz r1,L50_LF2 407 000013d4 54000000 nop; not filled. 408 000013d8 L51_LF2: 409 000013d8 23ff0001 addi r31,r31,#1 410 000013dc 93e10000 lbu r1,(r31) 411 000013e0 64210000 snei r1,r1,#0 412 000013e4 1420fff0 bnez r1,L51_LF2 413 000013e8 54000000 nop; not filled. 414 000013ec L50_LF2: 415 000013ec 001f1020 add r2,r0,r31 416 000013f0 8fdf0004 lw r31,4(r30) 417 000013f4 L54_LF2: 418 000013f4 83e10000 lb r1,(r31) 419 000013f8 a0410000 sb (r2),r1 420 000013fc 23ff0001 addi r31,r31,#1 421 00001400 20420001 addi r2,r2,#1 422 00001404 302100ff andi r1,r1,#0x00ff 423 00001408 64210000 snei r1,r1,#0 424 0000140c 1420ffe4 bnez r1,L54_LF2 425 00001410 54000000 nop; not filled. 426 00001414 00030820 add r1,r0,r3 427 00001418 8fa20000 lw r2,0(r29) 428 0000141c 8fa30004 lw r3,4(r29) 429 00001420 8fdffff8 lw r31,-8(r30) 430 00001424 001ee820 add r29,r0,r30 431 00001428 8fdefffc lw r30,-4(r30) 432 0000142c 4be00000 jr r31 433 00001430 54000000 nop 434 00001434 .endproc _dstrcat 435 00001434 .align 2 436 00001434 .proc _dstrncmp 437 00001434 .global _dstrncmp 438 00001434 _dstrncmp: 439 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 440 00001434 afbefffc sw -4(r29),r30; push fp 441 00001438 001df020 add r30,r0,r29; fp = sp 442 0000143c afbffff8 sw -8(r29),r31; push ret addr 443 00001440 2fbd0018 subui r29,r29,#24; alloc local storage 444 00001444 afa20000 sw 0(r29),r2 445 00001448 afa30004 sw 4(r29),r3 446 0000144c afa40008 sw 8(r29),r4 447 00001450 afa5000c sw 12(r29),r5 448 00001454 8fc30000 lw r3,(r30) 449 00001458 8fc40004 lw r4,4(r30) 450 0000145c 8fc50008 lw r5,8(r30) 451 00001460 20020000 addi r2,r0,#0 452 00001464 0045082a slt r1,r2,r5 453 00001468 1020003c beqz r1,L73_LF2 454 0000146c 54000000 nop; not filled. 455 00001470 L75_LF2: 456 00001470 909f0000 lbu r31,(r4) 457 00001474 67e10000 snei r1,r31,#0 458 00001478 10200038 beqz r1,L86_LF2 459 0000147c 54000000 nop; not filled. 460 00001480 90610000 lbu r1,(r3) 461 00001484 003f0829 sne r1,r1,r31 462 00001488 1420001c bnez r1,L73_LF2 463 0000148c 54000000 nop; not filled. 464 00001490 20630001 addi r3,r3,#1 465 00001494 20840001 addi r4,r4,#1 466 00001498 20420001 addi r2,r2,#1 467 0000149c 0045082a slt r1,r2,r5 468 000014a0 1420ffcc bnez r1,L75_LF2 469 000014a4 54000000 nop; not filled. 470 000014a8 L73_LF2: 471 000014a8 00450828 seq r1,r2,r5 472 000014ac 10200010 beqz r1,L80_LF2 473 000014b0 54000000 nop; not filled. 474 000014b4 L86_LF2: 475 000014b4 20010000 addi r1,r0,#0 476 000014b8 08000028 j L84_LF2 477 000014bc 54000000 nop; not filled. 478 000014c0 L80_LF2: 479 000014c0 907f0000 lbu r31,(r3) 480 000014c4 90830000 lbu r3,(r4) 481 000014c8 03e30822 sub r1,r31,r3 482 000014cc 74210000 sgei r1,r1,#0 483 000014d0 2002ffff addi r2,r0,#-1 484 000014d4 10200008 beqz r1,L82_LF2 485 000014d8 54000000 nop; not filled. 486 000014dc 03e31029 sne r2,r31,r3 487 000014e0 L82_LF2: 488 000014e0 00020820 add r1,r0,r2 489 000014e4 L84_LF2: 490 000014e4 8fa20000 lw r2,0(r29) 491 000014e8 8fa30004 lw r3,4(r29) 492 000014ec 8fa40008 lw r4,8(r29) 493 000014f0 8fa5000c lw r5,12(r29) 494 000014f4 8fdffff8 lw r31,-8(r30) 495 000014f8 001ee820 add r29,r0,r30 496 000014fc 8fdefffc lw r30,-4(r30) 497 00001500 4be00000 jr r31 498 00001504 54000000 nop 499 00001508 .endproc _dstrncmp 500 00001508 .align 2 501 00001508 .proc _dstrlen 502 00001508 .global _dstrlen 503 00001508 _dstrlen: 504 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 505 00001508 afbefffc sw -4(r29),r30; push fp 506 0000150c 001df020 add r30,r0,r29; fp = sp 507 00001510 afbffff8 sw -8(r29),r31; push ret addr 508 00001514 2fbd0010 subui r29,r29,#16; alloc local storage 509 00001518 afa20000 sw 0(r29),r2 510 0000151c 8fdf0000 lw r31,(r30) 511 00001520 20020000 addi r2,r0,#0 512 00001524 08000008 j L97_LF2 513 00001528 54000000 nop; not filled. 514 0000152c L95_LF2: 515 0000152c 20420001 addi r2,r2,#1 516 00001530 L97_LF2: 517 00001530 93e10000 lbu r1,(r31) 518 00001534 23ff0001 addi r31,r31,#1 519 00001538 64210000 snei r1,r1,#0 520 0000153c 1420ffec bnez r1,L95_LF2 521 00001540 54000000 nop; not filled. 522 00001544 00020820 add r1,r0,r2 523 00001548 8fa20000 lw r2,0(r29) 524 0000154c 8fdffff8 lw r31,-8(r30) 525 00001550 001ee820 add r29,r0,r30 526 00001554 8fdefffc lw r30,-4(r30) 527 00001558 4be00000 jr r31 528 0000155c 54000000 nop 529 00001560 .endproc _dstrlen 530 00001560 .align 2 531 00001560 .proc _dstrstr 532 00001560 .global _dstrstr 533 00001560 _dstrstr: 534 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 535 00001560 afbefffc sw -4(r29),r30; push fp 536 00001564 001df020 add r30,r0,r29; fp = sp 537 00001568 afbffff8 sw -8(r29),r31; push ret addr 538 0000156c 2fbd0020 subui r29,r29,#32; alloc local storage 539 00001570 afa20000 sw 0(r29),r2 540 00001574 afa30004 sw 4(r29),r3 541 00001578 afa40008 sw 8(r29),r4 542 0000157c afa5000c sw 12(r29),r5 543 00001580 afa60010 sw 16(r29),r6 544 00001584 afa70014 sw 20(r29),r7 545 00001588 8fc50000 lw r5,(r30) 546 0000158c 8fc70004 lw r7,4(r30) 547 00001590 20030000 addi r3,r0,#0 548 00001594 90e10000 lbu r1,(r7) 549 00001598 20e20001 addi r2,r7,#1 550 0000159c 64210000 snei r1,r1,#0 551 000015a0 1020001c beqz r1,L125_LF2 552 000015a4 54000000 nop; not filled. 553 000015a8 L126_LF2: 554 000015a8 20630001 addi r3,r3,#1 555 000015ac 90410000 lbu r1,(r2) 556 000015b0 20420001 addi r2,r2,#1 557 000015b4 64210000 snei r1,r1,#0 558 000015b8 1420ffec bnez r1,L126_LF2 559 000015bc 54000000 nop; not filled. 560 000015c0 L125_LF2: 561 000015c0 00033020 add r6,r0,r3 562 000015c4 080000ac j L149_LF2 563 000015c8 54000000 nop; not filled. 564 000015cc L130_LF2: 565 000015cc 00051820 add r3,r0,r5 566 000015d0 00072020 add r4,r0,r7 567 000015d4 20020000 addi r2,r0,#0 568 000015d8 0046082a slt r1,r2,r6 569 000015dc 1020003c beqz r1,L134_LF2 570 000015e0 54000000 nop; not filled. 571 000015e4 L136_LF2: 572 000015e4 909f0000 lbu r31,(r4) 573 000015e8 67e10000 snei r1,r31,#0 574 000015ec 10200038 beqz r1,L150_LF2 575 000015f0 54000000 nop; not filled. 576 000015f4 90610000 lbu r1,(r3) 577 000015f8 003f0829 sne r1,r1,r31 578 000015fc 1420001c bnez r1,L134_LF2 579 00001600 54000000 nop; not filled. 580 00001604 20630001 addi r3,r3,#1 581 00001608 20840001 addi r4,r4,#1 582 0000160c 20420001 addi r2,r2,#1 583 00001610 0046082a slt r1,r2,r6 584 00001614 1420ffcc bnez r1,L136_LF2 585 00001618 54000000 nop; not filled. 586 0000161c L134_LF2: 587 0000161c 00460828 seq r1,r2,r6 588 00001620 10200010 beqz r1,L141_LF2 589 00001624 54000000 nop; not filled. 590 00001628 L150_LF2: 591 00001628 20010000 addi r1,r0,#0 592 0000162c 08000028 j L132_LF2 593 00001630 54000000 nop; not filled. 594 00001634 L141_LF2: 595 00001634 90630000 lbu r3,(r3) 596 00001638 90820000 lbu r2,(r4) 597 0000163c 00620822 sub r1,r3,r2 598 00001640 74210000 sgei r1,r1,#0 599 00001644 201fffff addi r31,r0,#-1 600 00001648 10200008 beqz r1,L143_LF2 601 0000164c 54000000 nop; not filled. 602 00001650 0062f829 sne r31,r3,r2 603 00001654 L143_LF2: 604 00001654 001f0820 add r1,r0,r31 605 00001658 L132_LF2: 606 00001658 64210000 snei r1,r1,#0 607 0000165c 14200010 bnez r1,L131_LF2 608 00001660 54000000 nop; not filled. 609 00001664 00050820 add r1,r0,r5 610 00001668 0800001c j L146_LF2 611 0000166c 54000000 nop; not filled. 612 00001670 L131_LF2: 613 00001670 20a50001 addi r5,r5,#1 614 00001674 L149_LF2: 615 00001674 90a10000 lbu r1,(r5) 616 00001678 64210000 snei r1,r1,#0 617 0000167c 1420ff4c bnez r1,L130_LF2 618 00001680 54000000 nop; not filled. 619 00001684 20010000 addi r1,r0,#0 620 00001688 L146_LF2: 621 00001688 8fa20000 lw r2,0(r29) 622 0000168c 8fa30004 lw r3,4(r29) 623 00001690 8fa40008 lw r4,8(r29) 624 00001694 8fa5000c lw r5,12(r29) 625 00001698 8fa60010 lw r6,16(r29) 626 0000169c 8fa70014 lw r7,20(r29) 627 000016a0 8fdffff8 lw r31,-8(r30) 628 000016a4 001ee820 add r29,r0,r30 629 000016a8 8fdefffc lw r30,-4(r30) 630 000016ac 4be00000 jr r31 631 000016b0 54000000 nop 632 000016b4 .endproc _dstrstr 633 000016b4 .align 2 634 000016b4 .proc _dmindex 635 000016b4 .global _dmindex 636 000016b4 _dmindex: 637 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 638 000016b4 afbefffc sw -4(r29),r30; push fp 639 000016b8 001df020 add r30,r0,r29; fp = sp 640 000016bc afbffff8 sw -8(r29),r31; push ret addr 641 000016c0 2fbd0020 subui r29,r29,#32; alloc local storage 642 000016c4 afa20000 sw 0(r29),r2 643 000016c8 afa30004 sw 4(r29),r3 644 000016cc afa40008 sw 8(r29),r4 645 000016d0 afa5000c sw 12(r29),r5 646 000016d4 afa60010 sw 16(r29),r6 647 000016d8 8fc40000 lw r4,(r30) 648 000016dc 8fc60004 lw r6,4(r30) 649 000016e0 90810000 lbu r1,(r4) 650 000016e4 64210000 snei r1,r1,#0 651 000016e8 10200060 beqz r1,L164_LF2 652 000016ec 54000000 nop; not filled. 653 000016f0 00012820 add r5,r0,r1 654 000016f4 L165_LF2: 655 000016f4 00061020 add r2,r0,r6 656 000016f8 80df0000 lb r31,(r6) 657 000016fc 33e100ff andi r1,r31,#0x00ff 658 00001700 64210000 snei r1,r1,#0 659 00001704 1020003c beqz r1,L163_LF2 660 00001708 54000000 nop; not filled. 661 0000170c 90830000 lbu r3,(r4) 662 00001710 L169_LF2: 663 00001710 33e100ff andi r1,r31,#0x00ff 664 00001714 00610828 seq r1,r3,r1 665 00001718 10200010 beqz r1,L168_LF2 666 0000171c 54000000 nop; not filled. 667 00001720 00040820 add r1,r0,r4 668 00001724 08000028 j L173_LF2 669 00001728 54000000 nop; not filled. 670 0000172c L168_LF2: 671 0000172c 20420001 addi r2,r2,#1 672 00001730 805f0000 lb r31,(r2) 673 00001734 33e100ff andi r1,r31,#0x00ff 674 00001738 64210000 snei r1,r1,#0 675 0000173c 1420ffd0 bnez r1,L169_LF2 676 00001740 54000000 nop; not filled. 677 00001744 L163_LF2: 678 00001744 14a0ffac bnez r5,L165_LF2 679 00001748 54000000 nop; not filled. 680 0000174c L164_LF2: 681 0000174c 20010000 addi r1,r0,#0 682 00001750 L173_LF2: 683 00001750 8fa20000 lw r2,0(r29) 684 00001754 8fa30004 lw r3,4(r29) 685 00001758 8fa40008 lw r4,8(r29) 686 0000175c 8fa5000c lw r5,12(r29) 687 00001760 8fa60010 lw r6,16(r29) 688 00001764 8fdffff8 lw r31,-8(r30) 689 00001768 001ee820 add r29,r0,r30 690 0000176c 8fdefffc lw r30,-4(r30) 691 00001770 4be00000 jr r31 692 00001774 54000000 nop 693 00001778 .endproc _dmindex 694 00001778 .align 2 695 00001778 .proc _dindex 696 00001778 .global _dindex 697 00001778 _dindex: 698 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 699 00001778 afbefffc sw -4(r29),r30; push fp 700 0000177c 001df020 add r30,r0,r29; fp = sp 701 00001780 afbffff8 sw -8(r29),r31; push ret addr 702 00001784 2fbd0010 subui r29,r29,#16; alloc local storage 703 00001788 afa20000 sw 0(r29),r2 704 0000178c afa30004 sw 4(r29),r3 705 00001790 8fc20000 lw r2,(r30) 706 00001794 8fc30004 lw r3,4(r30) 707 00001798 08000024 j L187_LF2 708 0000179c 54000000 nop; not filled. 709 000017a0 L183_LF2: 710 000017a0 33e100ff andi r1,r31,#0x00ff 711 000017a4 00230828 seq r1,r1,r3 712 000017a8 10200010 beqz r1,L184_LF2 713 000017ac 54000000 nop; not filled. 714 000017b0 00020820 add r1,r0,r2 715 000017b4 08000020 j L186_LF2 716 000017b8 54000000 nop; not filled. 717 000017bc L184_LF2: 718 000017bc 20420001 addi r2,r2,#1 719 000017c0 L187_LF2: 720 000017c0 805f0000 lb r31,(r2) 721 000017c4 33e100ff andi r1,r31,#0x00ff 722 000017c8 64210000 snei r1,r1,#0 723 000017cc 1420ffd0 bnez r1,L183_LF2 724 000017d0 54000000 nop; not filled. 725 000017d4 20010000 addi r1,r0,#0 726 000017d8 L186_LF2: 727 000017d8 8fa20000 lw r2,0(r29) 728 000017dc 8fa30004 lw r3,4(r29) 729 000017e0 8fdffff8 lw r31,-8(r30) 730 000017e4 001ee820 add r29,r0,r30 731 000017e8 8fdefffc lw r30,-4(r30) 732 000017ec 4be00000 jr r31 733 000017f0 54000000 nop 734 000017f4 .endproc _dindex 735 000017f4 .align 2 736 000017f4 .proc _ditoa 737 000017f4 .global _ditoa 738 000017f4 _ditoa: 739 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 740 000017f4 afbefffc sw -4(r29),r30; push fp 741 000017f8 001df020 add r30,r0,r29; fp = sp 742 000017fc afbffff8 sw -8(r29),r31; push ret addr 743 00001800 2fbd0020 subui r29,r29,#32; alloc local storage 744 00001804 afa20000 sw 0(r29),r2 745 00001808 afa30004 sw 4(r29),r3 746 0000180c afa40008 sw 8(r29),r4 747 00001810 afa5000c sw 12(r29),r5 748 00001814 afa60010 sw 16(r29),r6 749 00001818 8fc30000 lw r3,(r30) 750 0000181c 8fc40004 lw r4,4(r30) 751 00001820 68610000 slti r1,r3,#0 752 00001824 10200010 beqz r1,L203_LF2 753 00001828 54000000 nop; not filled. 754 0000182c 2006002d addi r6,r0,(#0x2d)&0xff 755 00001830 08000014 j L216_LF2 756 00001834 54000000 nop; not filled. 757 00001838 L203_LF2: 758 00001838 64610000 snei r1,r3,#0 759 0000183c 14200018 bnez r1,L205_LF2 760 00001840 54000000 nop; not filled. 761 00001844 20060030 addi r6,r0,(#0x30)&0xff 762 00001848 L216_LF2: 763 00001848 a0860000 sb (r4),r6 764 0000184c 20840001 addi r4,r4,#1 765 00001850 0800007c j L204_LF2 766 00001854 54000000 nop; not filled. 767 00001858 L205_LF2: 768 00001858 201f0001 addi r31,r0,#1 769 0000185c 03e3082c sle r1,r31,r3 770 00001860 1020001c beqz r1,L208_LF2 771 00001864 54000000 nop; not filled. 772 00001868 L209_LF2: 773 00001868 53e10002 slli r1,r31,#0x2 774 0000186c 003f0820 add r1,r1,r31 775 00001870 503f0001 slli r31,r1,#0x1 776 00001874 03e3082c sle r1,r31,r3 777 00001878 1420ffec bnez r1,L209_LF2 778 0000187c 54000000 nop; not filled. 779 00001880 L208_LF2: 780 00001880 2005000a addi r5,r0,#10 781 00001884 L212_LF2: 782 00001884 03e00035 movi2fp f0,r31 783 00001888 00a00835 movi2fp f1,r5 784 0000188c 0401000f div f0,f0,f1 785 00001890 0000f834 movfp2i r31,f0 786 00001894 00600035 movi2fp f0,r3 787 00001898 03e00835 movi2fp f1,r31 788 0000189c 0401000f div f0,f0,f1 789 000018a0 00001034 movfp2i r2,f0 790 000018a4 20410030 addi r1,r2,#48 791 000018a8 a0810000 sb (r4),r1 792 000018ac 20840001 addi r4,r4,#1 793 000018b0 00400035 movi2fp f0,r2 794 000018b4 03e00835 movi2fp f1,r31 795 000018b8 0401000e mult f0,f0,f1 796 000018bc 00000834 movfp2i r1,f0 797 000018c0 00611822 sub r3,r3,r1 798 000018c4 6fe10001 sgti r1,r31,#1 799 000018c8 1420ffb8 bnez r1,L212_LF2 800 000018cc 54000000 nop; not filled. 801 000018d0 L204_LF2: 802 000018d0 20060000 addi r6,r0,(#0x0)&0xff 803 000018d4 a0860000 sb (r4),r6 804 000018d8 8fa20000 lw r2,0(r29) 805 000018dc 8fa30004 lw r3,4(r29) 806 000018e0 8fa40008 lw r4,8(r29) 807 000018e4 8fa5000c lw r5,12(r29) 808 000018e8 8fa60010 lw r6,16(r29) 809 000018ec 8fdffff8 lw r31,-8(r30) 810 000018f0 001ee820 add r29,r0,r30 811 000018f4 8fdefffc lw r30,-4(r30) 812 000018f8 4be00000 jr r31 813 000018fc 54000000 nop 814 00001900 .endproc _ditoa 815 00001900 .align 2 816 00001900 .proc _dstrtol 817 00001900 .global _dstrtol 818 00001900 _dstrtol: 819 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 820 00001900 afbefffc sw -4(r29),r30; push fp 821 00001904 001df020 add r30,r0,r29; fp = sp 822 00001908 afbffff8 sw -8(r29),r31; push ret addr 823 0000190c 2fbd0020 subui r29,r29,#32; alloc local storage 824 00001910 afa20000 sw 0(r29),r2 825 00001914 afa30004 sw 4(r29),r3 826 00001918 afa40008 sw 8(r29),r4 827 0000191c afa5000c sw 12(r29),r5 828 00001920 afa60010 sw 16(r29),r6 829 00001924 8fc20000 lw r2,(r30) 830 00001928 8fc50004 lw r5,4(r30) 831 0000192c 8fc40008 lw r4,8(r30) 832 00001930 20030000 addi r3,r0,#0 833 00001934 08000008 j L247_LF2 834 00001938 54000000 nop; not filled. 835 0000193c L220_LF2: 836 0000193c 20420001 addi r2,r2,#1 837 00001940 L247_LF2: 838 00001940 805f0000 lb r31,(r2) 839 00001944 33e100ff andi r1,r31,#0x00ff 840 00001948 60210020 seqi r1,r1,#32 841 0000194c 1420ffec bnez r1,L220_LF2 842 00001950 54000000 nop; not filled. 843 00001954 23e1fff7 addi r1,r31,#-9 844 00001958 302100ff andi r1,r1,#0x00ff 845 0000195c 70210001 sleui r1,r1,#1 846 00001960 1420ffd8 bnez r1,L220_LF2 847 00001964 54000000 nop; not filled. 848 00001968 64a10000 snei r1,r5,#0 849 0000196c 10200008 beqz r1,L222_LF2 850 00001970 54000000 nop; not filled. 851 00001974 aca20000 sw (r5),r2 852 00001978 L222_LF2: 853 00001978 905f0000 lbu r31,(r2) 854 0000197c 67e10000 snei r1,r31,#0 855 00001980 10200090 beqz r1,L248_LF2 856 00001984 54000000 nop; not filled. 857 00001988 63e1002d seqi r1,r31,#45 858 0000198c 10200014 beqz r1,L224_LF2 859 00001990 54000000 nop; not filled. 860 00001994 2006ffff addi r6,r0,#-1 861 00001998 20420001 addi r2,r2,#1 862 0000199c 08000008 j L225_LF2 863 000019a0 54000000 nop; not filled. 864 000019a4 L224_LF2: 865 000019a4 20060001 addi r6,r0,#1 866 000019a8 L225_LF2: 867 000019a8 64810000 snei r1,r4,#0 868 000019ac 14200054 bnez r1,L226_LF2 869 000019b0 54000000 nop; not filled. 870 000019b4 90410000 lbu r1,(r2) 871 000019b8 60210030 seqi r1,r1,#48 872 000019bc 10200040 beqz r1,L227_LF2 873 000019c0 54000000 nop; not filled. 874 000019c4 20420001 addi r2,r2,#1 875 000019c8 905f0000 lbu r31,(r2) 876 000019cc 63e10078 seqi r1,r31,#120 877 000019d0 14200010 bnez r1,L229_LF2 878 000019d4 54000000 nop; not filled. 879 000019d8 63e10058 seqi r1,r31,#88 880 000019dc 10200014 beqz r1,L228_LF2 881 000019e0 54000000 nop; not filled. 882 000019e4 L229_LF2: 883 000019e4 20040010 addi r4,r0,#16 884 000019e8 20420001 addi r2,r2,#1 885 000019ec 08000014 j L226_LF2 886 000019f0 54000000 nop; not filled. 887 000019f4 L228_LF2: 888 000019f4 20040008 addi r4,r0,#8 889 000019f8 08000008 j L226_LF2 890 000019fc 54000000 nop; not filled. 891 00001a00 L227_LF2: 892 00001a00 2004000a addi r4,r0,#10 893 00001a04 L226_LF2: 894 00001a04 2081ffff addi r1,r4,#-1 895 00001a08 6c21000f sgtui r1,r1,#15 896 00001a0c 10200010 beqz r1,L233_LF2 897 00001a10 54000000 nop; not filled. 898 00001a14 L248_LF2: 899 00001a14 00030820 add r1,r0,r3 900 00001a18 080000c4 j L245_LF2 901 00001a1c 54000000 nop; not filled. 902 00001a20 L233_LF2: 903 00001a20 805f0000 lb r31,(r2) 904 00001a24 23e1ffd0 addi r1,r31,#-48 905 00001a28 302100ff andi r1,r1,#0x00ff 906 00001a2c 70210009 sleui r1,r1,#9 907 00001a30 10200014 beqz r1,L236_LF2 908 00001a34 54000000 nop; not filled. 909 00001a38 33e100ff andi r1,r31,#0x00ff 910 00001a3c 2021ffd0 addi r1,r1,#-48 911 00001a40 08000050 j L237_LF2 912 00001a44 54000000 nop; not filled. 913 00001a48 L236_LF2: 914 00001a48 23e1ff9f addi r1,r31,#-97 915 00001a4c 302100ff andi r1,r1,#0x00ff 916 00001a50 70210019 sleui r1,r1,#25 917 00001a54 10200014 beqz r1,L238_LF2 918 00001a58 54000000 nop; not filled. 919 00001a5c 33e100ff andi r1,r31,#0x00ff 920 00001a60 2021ffa9 addi r1,r1,#-87 921 00001a64 0800002c j L237_LF2 922 00001a68 54000000 nop; not filled. 923 00001a6c L238_LF2: 924 00001a6c 23e1ffbf addi r1,r31,#-65 925 00001a70 302100ff andi r1,r1,#0x00ff 926 00001a74 70210019 sleui r1,r1,#25 927 00001a78 10200014 beqz r1,L240_LF2 928 00001a7c 54000000 nop; not filled. 929 00001a80 33e100ff andi r1,r31,#0x00ff 930 00001a84 2021ffc9 addi r1,r1,#-55 931 00001a88 08000008 j L237_LF2 932 00001a8c 54000000 nop; not filled. 933 00001a90 L240_LF2: 934 00001a90 200103e8 addi r1,r0,#1000 935 00001a94 L237_LF2: 936 00001a94 0024f82a slt r31,r1,r4 937 00001a98 13e00024 beqz r31,L246_LF2 938 00001a9c 54000000 nop; not filled. 939 00001aa0 00600035 movi2fp f0,r3 940 00001aa4 00800835 movi2fp f1,r4 941 00001aa8 0401000e mult f0,f0,f1 942 00001aac 00001834 movfp2i r3,f0 943 00001ab0 00611820 add r3,r3,r1 944 00001ab4 20420001 addi r2,r2,#1 945 00001ab8 17e0ff64 bnez r31,L233_LF2 946 00001abc 54000000 nop; not filled. 947 00001ac0 L246_LF2: 948 00001ac0 64a10000 snei r1,r5,#0 949 00001ac4 10200008 beqz r1,L244_LF2 950 00001ac8 54000000 nop; not filled. 951 00001acc aca20000 sw (r5),r2 952 00001ad0 L244_LF2: 953 00001ad0 00600035 movi2fp f0,r3 954 00001ad4 00c00835 movi2fp f1,r6 955 00001ad8 0401000e mult f0,f0,f1 956 00001adc 00000834 movfp2i r1,f0 957 00001ae0 L245_LF2: 958 00001ae0 8fa20000 lw r2,0(r29) 959 00001ae4 8fa30004 lw r3,4(r29) 960 00001ae8 8fa40008 lw r4,8(r29) 961 00001aec 8fa5000c lw r5,12(r29) 962 00001af0 8fa60010 lw r6,16(r29) 963 00001af4 8fdffff8 lw r31,-8(r30) 964 00001af8 001ee820 add r29,r0,r30 965 00001afc 8fdefffc lw r30,-4(r30) 966 00001b00 4be00000 jr r31 967 00001b04 54000000 nop 968 00001b08 .endproc _dstrtol 969 00001b08 .align 2 970 00001b08 .proc _bcopy 971 00001b08 .global _bcopy 972 00001b08 _bcopy: 973 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 974 00001b08 afbefffc sw -4(r29),r30; push fp 975 00001b0c 001df020 add r30,r0,r29; fp = sp 976 00001b10 afbffff8 sw -8(r29),r31; push ret addr 977 00001b14 2fbd0018 subui r29,r29,#24; alloc local storage 978 00001b18 afa20000 sw 0(r29),r2 979 00001b1c afa30004 sw 4(r29),r3 980 00001b20 afa40008 sw 8(r29),r4 981 00001b24 8fc30000 lw r3,(r30) 982 00001b28 8fc20004 lw r2,4(r30) 983 00001b2c 8fdf0008 lw r31,8(r30) 984 00001b30 08000014 j L259_LF2 985 00001b34 54000000 nop; not filled. 986 00001b38 L257_LF2: 987 00001b38 80640000 lb r4,(r3) 988 00001b3c a0440000 sb (r2),r4 989 00001b40 20630001 addi r3,r3,#1 990 00001b44 20420001 addi r2,r2,#1 991 00001b48 L259_LF2: 992 00001b48 001f0820 add r1,r0,r31 993 00001b4c 23ffffff addi r31,r31,#-1 994 00001b50 6c210000 sgti r1,r1,#0 995 00001b54 1420ffe0 bnez r1,L257_LF2 996 00001b58 54000000 nop; not filled. 997 00001b5c 8fa20000 lw r2,0(r29) 998 00001b60 8fa30004 lw r3,4(r29) 999 00001b64 8fa40008 lw r4,8(r29) 1000 00001b68 8fdffff8 lw r31,-8(r30) 1001 00001b6c 001ee820 add r29,r0,r30 1002 00001b70 8fdefffc lw r30,-4(r30) 1003 00001b74 4be00000 jr r31 1004 00001b78 54000000 nop 1005 00001b7c .endproc _bcopy 1006 00001b7c .align 2 1007 00001b7c .proc _bzero 1008 00001b7c .global _bzero 1009 00001b7c _bzero: 1010 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 1011 00001b7c afbefffc sw -4(r29),r30; push fp 1012 00001b80 001df020 add r30,r0,r29; fp = sp 1013 00001b84 afbffff8 sw -8(r29),r31; push ret addr 1014 00001b88 2fbd0010 subui r29,r29,#16; alloc local storage 1015 00001b8c afa20000 sw 0(r29),r2 1016 00001b90 afa30004 sw 4(r29),r3 1017 00001b94 8fc20000 lw r2,(r30) 1018 00001b98 8fdf0004 lw r31,4(r30) 1019 00001b9c 08000010 j L270_LF2 1020 00001ba0 54000000 nop; not filled. 1021 00001ba4 L268_LF2: 1022 00001ba4 20030000 addi r3,r0,(#0x0)&0xff 1023 00001ba8 a0430000 sb (r2),r3 1024 00001bac 20420001 addi r2,r2,#1 1025 00001bb0 L270_LF2: 1026 00001bb0 001f0820 add r1,r0,r31 1027 00001bb4 23ffffff addi r31,r31,#-1 1028 00001bb8 6c210000 sgti r1,r1,#0 1029 00001bbc 1420ffe4 bnez r1,L268_LF2 1030 00001bc0 54000000 nop; not filled. 1031 00001bc4 8fa20000 lw r2,0(r29) 1032 00001bc8 8fa30004 lw r3,4(r29) 1033 00001bcc 8fdffff8 lw r31,-8(r30) 1034 00001bd0 001ee820 add r29,r0,r30 1035 00001bd4 8fdefffc lw r30,-4(r30) 1036 00001bd8 4be00000 jr r31 1037 00001bdc 54000000 nop 1038 00001be0 .endproc _bzero 1039 ;;; Ethan L. Miller, 1999. Released to the public domain 1040 ;;; 1041 ;;; Most of the traps are called in files from libtraps. 1044 00001be0 .align 2 1045 00001be0 .proc _exit 1046 00001be0 .global _exit 1047 00001be0 _exit: 1048 00001be0 44000300 trap #0x300 1049 00001be4 4be00000 jr r31 1050 00001be8 54000000 nop 1051 00001bec .endproc _exit 1053 ; for the benefit of gcc. 1054 00001bec .proc ___main 1055 00001bec .global ___main 1056 00001bec ___main: 1057 00001bec 4be00000 jr r31 1058 00001bf0 54000000 nop 1059 00001bf4 .endproc ___main 1060 00001bf4 .text 1061 00001bf4 .global _etext 1062 00001bf4 _etext: 1063 00001bf4 .align 3 1064 00001bf8 .data 1065 00002074 .global _edata 1066 00002074 _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/trap_random.s

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

home/bshapir/cs314/project4/option1/lab4_1/src/traps.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler _TrapProcessCreateHandler: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1696 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65 nop ; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73 nop ; not filled. j L68 nop ; not filled. L67: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop ; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L73: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74 nop ; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80 nop ; not filled. L77: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86 nop ; not filled. j L85 nop ; not filled. L74: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop ; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC0)>>16)&0xffff addui r12,r12,(LC0)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L92: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop ; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93 nop ; not filled. L86: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler .align 2 .proc _TrapPrintfHandler _TrapPrintfHandler: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#208 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101 nop ; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101 nop ; not filled. j L96 nop ; not filled. L95: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop ; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L101: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104 nop ; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107 nop ; not filled. addi r3,r3,#1 j L104 nop ; not filled. L107: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109 nop ; not filled. seqi r1,r2,#108 bnez r1,L110 nop ; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116 nop ; not filled. seqi r1,r2,#101 beqz r1,L115 nop ; not filled. L116: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109 nop ; not filled. L115: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110 nop ; not filled. L109: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105 nop ; not filled. L103: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop ; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler .data .align 2 LC1: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2: .ascii "Got a context switch trap!\n\000" .align 2 LC3: .ascii "Got an exit trap!\n\000" .align 2 LC4: .ascii "Got a fork trap!\n\000" .align 2 LC5: .ascii "Got a process sleep trap!\n\000" .align 2 LC6: .ascii "Got a printf trap!\n\000" .align 2 LC7: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9: .ascii "Got a timer interrupt!\n\000" .align 2 LC10: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC12: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC13: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#88 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122 nop ; not filled. L123: addi r29,r29,#-24 lhi r7,((LC1)>>16)&0xffff addui r7,r7,(LC1)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L122: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124 nop ; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126 nop ; not filled. sgtui r1,r2,#1024 bnez r1,L177 nop ; not filled. seqi r1,r2,#530 bnez r1,L158 nop ; not filled. sgtui r1,r2,#530 bnez r1,L178 nop ; not filled. seqi r1,r2,#528 bnez r1,L149 nop ; not filled. sgtui r1,r2,#528 bnez r1,L152 nop ; not filled. seqi r1,r2,#513 beqz r1,L175 nop ; not filled. j L138 nop ; not filled. L178: seqi r1,r2,#532 bnez r1,L146 nop ; not filled. sltui r1,r2,#532 bnez r1,L141 nop ; not filled. seqi r1,r2,#768 beqz r1,L175 nop ; not filled. j L129 nop ; not filled. L177: seqi r1,r2,#1074 bnez r1,L162 nop ; not filled. sgtui r1,r2,#1074 bnez r1,L179 nop ; not filled. seqi r1,r2,#1072 bnez r1,L132 nop ; not filled. sgtui r1,r2,#1072 bnez r1,L161 nop ; not filled. seqi r1,r2,#1040 beqz r1,L175 nop ; not filled. j L135 nop ; not filled. L179: seqi r1,r2,#1105 bnez r1,L167 nop ; not filled. sgtui r1,r2,#1105 bnez r1,L180 nop ; not filled. seqi r1,r2,#1104 beqz r1,L175 nop ; not filled. j L163 nop ; not filled. L180: seqi r1,r2,#1106 bnez r1,L171 nop ; not filled. seqi r1,r2,#1408 beqz r1,L175 nop ; not filled. j L155 nop ; not filled. L126: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184 nop ; not filled. L128: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff j L206 nop ; not filled. L129: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-8 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L130: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L201 nop ; not filled. L132: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L134 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L181 nop ; not filled. L134: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. j L201 nop ; not filled. L135: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L137 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L136 nop ; not filled. L137: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L136: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop ; not filled. jal _ProcessSchedule nop ; not filled. j L201 nop ; not filled. L138: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L140 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L139 nop ; not filled. L140: addi r29,r29,#-8 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L139: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler nop ; not filled. j L201 nop ; not filled. L141: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L142 nop ; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L143 nop ; not filled. L142: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L143: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop ; not filled. addi r29,r29,#-8 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L146: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L149: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L152: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L155: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L158: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L161: jal _GetCurrentPid nop ; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L162: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler nop ; not filled. j L201 nop ; not filled. L163: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L165 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L202 nop ; not filled. L165: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L202: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L167: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L169 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L203 nop ; not filled. L169: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L203: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L171: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L173 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L204 nop ; not filled. L173: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L204: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L175: addi r29,r29,#-8 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff j L205 nop ; not filled. L124: seqi r1,r2,#3 bnez r1,L191 nop ; not filled. sgtui r1,r2,#3 bnez r1,L197 nop ; not filled. seqi r1,r2,#1 bnez r1,L193 nop ; not filled. seqi r1,r2,#2 beqz r1,L195 nop ; not filled. j L192 nop ; not filled. L197: seqi r1,r2,#64 bnez r1,L183 nop ; not filled. sgtui r1,r2,#64 bnez r1,L198 nop ; not filled. seqi r1,r2,#32 beqz r1,L195 nop ; not filled. j L194 nop ; not filled. L198: seqi r1,r2,#72 beqz r1,L195 nop ; not filled. j L186 nop ; not filled. L183: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L185 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184 nop ; not filled. L185: addi r29,r29,#-8 lhi r7,((LC9)>>16)&0xffff addui r7,r7,(LC9)&0xffff L206: sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L184: jal _ProcessSchedule nop ; not filled. j L181 nop ; not filled. L186: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L187: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10)>>16)&0xffff addui r7,r7,(LC10)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L181 nop ; not filled. j L187 nop ; not filled. L191: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L201 nop ; not filled. L192: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L201 nop ; not filled. L193: addi r29,r29,#-16 lhi r7,((LC11)>>16)&0xffff addui r7,r7,(LC11)&0xffff sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#16 j L181 nop ; not filled. L194: jal _PageFaultHandler nop ; not filled. j L181 nop ; not filled. L195: addi r29,r29,#-8 lhi r7,((LC12)>>16)&0xffff addui r7,r7,(LC12)&0xffff L205: sw (r29),r7 sw 4(r29),r2 jal _printf nop ; not filled. jal _exitsim nop ; not filled. L201: addi r29,r29,#8 L181: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199 nop ; not filled. L200: addi r29,r29,#-8 lhi r7,((LC13)>>16)&0xffff addui r7,r7,(LC13)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L199: jal _intrreturn nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt

home/bshapir/cs314/project4/option1/lab4_1/src/filesys.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1: .ascii "dlx:\000" .align 2 LC2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55 nop ; not filled. L56: addi r29,r29,#-16 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L55: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74 nop ; not filled. addi r3,r0,#0 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r2,r0,r6 L61: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59 nop ; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61 nop ; not filled. L59: sgti r1,r3,#31 beqz r1,L64 nop ; not filled. L74: addi r1,r0,#-1 j L73 nop ; not filled. L64: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75 nop ; not filled. L65: addi r8,r0,#0 L75: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67 nop ; not filled. L68: addi r29,r29,#-16 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L67: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs)>>16)&0xffff addui r8,r8,(_fs)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop ; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69 nop ; not filled. lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73 nop ; not filled. L69: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-24 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L71: add r1,r0,r3 L73: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84 nop ; not filled. addi r2,r0,#1 L84: snei r1,r2,#0 beqz r1,L82 nop ; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs)>>16)&0xffff addui r4,r4,(_fs)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86 nop ; not filled. L82: addi r1,r0,#-1 L86: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94 nop ; not filled. addi r2,r0,#1 L94: snei r1,r2,#0 beqz r1,L92 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L91 nop ; not filled. L92: addi r1,r0,#-1 L91: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r2,r0,#1 L103: snei r1,r2,#0 beqz r1,L101 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L100 nop ; not filled. L101: addi r1,r0,#-1 L100: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112 nop ; not filled. addi r2,r0,#1 L112: snei r1,r2,#0 beqz r1,L110 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L109 nop ; not filled. L110: addi r1,r0,#-1 L109: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118 nop ; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs+44)>>16)&0xffff addui r1,r1,(_fs+44)&0xffff j L120 nop ; not filled. L118: addi r29,r29,#-8 lhi r1,((_fs+20)>>16)&0xffff addui r1,r1,(_fs+20)&0xffff L120: sw (r29),r2 lw r1,(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126 nop ; not filled. L127: addi r29,r29,#-16 lhi r6,((LC4)>>16)&0xffff addui r6,r6,(LC4)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L126: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop ; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128 nop ; not filled. addi r1,r0,#1 L128: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff addi r2,r31,#8308 L182: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182 nop ; not filled. lhi r1,((_fs)>>16)&0xffff addui r1,r1,(_fs)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs: .space 48 .align 2 _openfiles: .space 8576

home/bshapir/cs314/project4/option1/lab4_1/src/usertraps.s

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

home/bshapir/cs314/project4/option1/lab4_1/src/misc.o

; Compiled by GCC
.text
.align 2
.proc _isspace
.global _isspace
_isspace:
; Function 'isspace'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r2,3(r30)
addi r31,r0,#0
andi r1,r2,#0x00ff
seqi r1,r1,#32
bnez r1,L6
nop ; not filled.
addi r1,r2,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
beqz r1,L5
nop ; not filled.
L6:
addi r31,r0,#1
L5:
add r1,r0,r31
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isspace
.align 2
.proc _isxdigit
.global _isxdigit
_isxdigit:
; Function 'isxdigit'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r31,3(r30)
addi r2,r0,#0
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
bnez r1,L12
nop ; not filled.
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#5
bnez r1,L12
nop ; not filled.
andi r1,r31,#0x00ff
snei r1,r1,#65
bnez r1,L11
nop ; not filled.
L12:
addi r2,r0,#1
L11:
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isxdigit
.align 2
.proc _dstrcpy
.global _dstrcpy
_dstrcpy:
; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
lw r2,4(r30)
add r3,r0,r31
L19:
lb r1,(r2)
sb (r31),r1
addi r2,r2,#1
addi r31,r31,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L19
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcpy
.align 2
.proc _dstrncpy
.global _dstrncpy
_dstrncpy:
; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r2,(r30)
lw r3,4(r30)
lw r31,8(r30)
add r4,r0,r2
j L37
nop ; not filled.
L34:
lb r1,(r3)
sb (r2),r1
addi r3,r3,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
beqz r1,L32
nop ; not filled.
L37:
add r1,r0,r31
addi r31,r31,#-1
slei r1,r1,#0
beqz r1,L34
nop ; not filled.
L32:
add r1,r0,r4
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncpy
.align 2
.proc _dstrcat
.global _dstrcat
_dstrcat:
; Function 'dstrcat'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
add r3,r0,r31
lbu r1,(r3)
snei r1,r1,#0
beqz r1,L50
nop ; not filled.
L51:
addi r31,r31,#1
lbu r1,(r31)
snei r1,r1,#0
bnez r1,L51
nop ; not filled.
L50:
add r2,r0,r31
lw r31,4(r30)
L54:
lb r1,(r31)
sb (r2),r1
addi r31,r31,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L54
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcat
.align 2
.proc _dstrncmp
.global _dstrncmp
_dstrncmp:
; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
lw r3,(r30)
lw r4,4(r30)
lw r5,8(r30)
addi r2,r0,#0
slt r1,r2,r5
beqz r1,L73
nop ; not filled.
L75:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L86
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L73
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r5
bnez r1,L75
nop ; not filled.
L73:
seq r1,r2,r5
beqz r1,L80
nop ; not filled.
L86:
addi r1,r0,#0
j L84
nop ; not filled.
L80:
lbu r31,(r3)
lbu r3,(r4)
sub r1,r31,r3
sgei r1,r1,#0
addi r2,r0,#-1
beqz r1,L82
nop ; not filled.
sne r2,r31,r3
L82:
add r1,r0,r2
L84:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncmp
.align 2
.proc _dstrlen
.global _dstrlen
_dstrlen:
; Function 'dstrlen'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lw r31,(r30)
addi r2,r0,#0
j L97
nop ; not filled.
L95:
addi r2,r2,#1
L97:
lbu r1,(r31)
addi r31,r31,#1
snei r1,r1,#0
bnez r1,L95
nop ; not filled.
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrlen
.align 2
.proc _dstrstr
.global _dstrstr
_dstrstr:
; Function 'dstrstr'; 0 bytes of locals, 6 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
sw 20(r29),r7
lw r5,(r30)
lw r7,4(r30)
addi r3,r0,#0
lbu r1,(r7)
addi r2,r7,#1
snei r1,r1,#0
beqz r1,L125
nop ; not filled.
L126:
addi r3,r3,#1
lbu r1,(r2)
addi r2,r2,#1
snei r1,r1,#0
bnez r1,L126
nop ; not filled.
L125:
add r6,r0,r3
j L149
nop ; not filled.
L130:
add r3,r0,r5
add r4,r0,r7
addi r2,r0,#0
slt r1,r2,r6
beqz r1,L134
nop ; not filled.
L136:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L150
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L134
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r6
bnez r1,L136
nop ; not filled.
L134:
seq r1,r2,r6
beqz r1,L141
nop ; not filled.
L150:
addi r1,r0,#0
j L132
nop ; not filled.
L141:
lbu r3,(r3)
lbu r2,(r4)
sub r1,r3,r2
sgei r1,r1,#0
addi r31,r0,#-1
beqz r1,L143
nop ; not filled.
sne r31,r3,r2
L143:
add r1,r0,r31
L132:
snei r1,r1,#0
bnez r1,L131
nop ; not filled.
add r1,r0,r5
j L146
nop ; not filled.
L131:
addi r5,r5,#1
L149:
lbu r1,(r5)
snei r1,r1,#0
bnez r1,L130
nop ; not filled.
addi r1,r0,#0
L146:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r7,20(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrstr
.align 2
.proc _dmindex
.global _dmindex
_dmindex:
; Function 'dmindex'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r4,(r30)
lw r6,4(r30)
lbu r1,(r4)
snei r1,r1,#0
beqz r1,L164
nop ; not filled.
add r5,r0,r1
L165:
add r2,r0,r6
lb r31,(r6)
andi r1,r31,#0x00ff
snei r1,r1,#0
beqz r1,L163
nop ; not filled.
lbu r3,(r4)
L169:
andi r1,r31,#0x00ff
seq r1,r3,r1
beqz r1,L168
nop ; not filled.
add r1,r0,r4
j L173
nop ; not filled.
L168:
addi r2,r2,#1
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L169
nop ; not filled.
L163:
bnez r5,L165
nop ; not filled.
L164:
addi r1,r0,#0
L173:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dmindex
.align 2
.proc _dindex
.global _dindex
_dindex:
; Function 'dindex'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r3,4(r30)
j L187
nop ; not filled.
L183:
andi r1,r31,#0x00ff
seq r1,r1,r3
beqz r1,L184
nop ; not filled.
add r1,r0,r2
j L186
nop ; not filled.
L184:
addi r2,r2,#1
L187:
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L183
nop ; not filled.
addi r1,r0,#0
L186:
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dindex
.align 2
.proc _ditoa
.global _ditoa
_ditoa:
; Function 'ditoa'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r3,(r30)
lw r4,4(r30)
slti r1,r3,#0
beqz r1,L203
nop ; not filled.
addi r6,r0,(#0x2d)&0xff
j L216
nop ; not filled.
L203:
snei r1,r3,#0
bnez r1,L205
nop ; not filled.
addi r6,r0,(#0x30)&0xff
L216:
sb (r4),r6
addi r4,r4,#1
j L204
nop ; not filled.
L205:
addi r31,r0,#1
sle r1,r31,r3
beqz r1,L208
nop ; not filled.
L209:
slli r1,r31,#0x2
add r1,r1,r31
slli r31,r1,#0x1
sle r1,r31,r3
bnez r1,L209
nop ; not filled.
L208:
addi r5,r0,#10
L212:
movi2fp f0,r31
movi2fp f1,r5
div f0,f0,f1
movfp2i r31,f0
movi2fp f0,r3
movi2fp f1,r31
div f0,f0,f1
movfp2i r2,f0
addi r1,r2,#48
sb (r4),r1
addi r4,r4,#1
movi2fp f0,r2
movi2fp f1,r31
mult f0,f0,f1
movfp2i r1,f0
sub r3,r3,r1
sgti r1,r31,#1
bnez r1,L212
nop ; not filled.
L204:
addi r6,r0,(#0x0)&0xff
sb (r4),r6
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _ditoa
.align 2
.proc _dstrtol
.global _dstrtol
_dstrtol:
; Function 'dstrtol'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r2,(r30)
lw r5,4(r30)
lw r4,8(r30)
addi r3,r0,#0
j L247
nop ; not filled.
L220:
addi r2,r2,#1
L247:
lb r31,(r2)
andi r1,r31,#0x00ff
seqi r1,r1,#32
bnez r1,L220
nop ; not filled.
addi r1,r31,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
bnez r1,L220
nop ; not filled.
snei r1,r5,#0
beqz r1,L222
nop ; not filled.
sw (r5),r2
L222:
lbu r31,(r2)
snei r1,r31,#0
beqz r1,L248
nop ; not filled.
seqi r1,r31,#45
beqz r1,L224
nop ; not filled.
addi r6,r0,#-1
addi r2,r2,#1
j L225
nop ; not filled.
L224:
addi r6,r0,#1
L225:
snei r1,r4,#0
bnez r1,L226
nop ; not filled.
lbu r1,(r2)
seqi r1,r1,#48
beqz r1,L227
nop ; not filled.
addi r2,r2,#1
lbu r31,(r2)
seqi r1,r31,#120
bnez r1,L229
nop ; not filled.
seqi r1,r31,#88
beqz r1,L228
nop ; not filled.
L229:
addi r4,r0,#16
addi r2,r2,#1
j L226
nop ; not filled.
L228:
addi r4,r0,#8
j L226
nop ; not filled.
L227:
addi r4,r0,#10
L226:
addi r1,r4,#-1
sgtui r1,r1,#15
beqz r1,L233
nop ; not filled.
L248:
add r1,r0,r3
j L245
nop ; not filled.
L233:
lb r31,(r2)
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
beqz r1,L236
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-48
j L237
nop ; not filled.
L236:
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L238
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-87
j L237
nop ; not filled.
L238:
addi r1,r31,#-65
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L240
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-55
j L237
nop ; not filled.
L240:
addi r1,r0,#1000
L237:
slt r31,r1,r4
beqz r31,L246
nop ; not filled.
movi2fp f0,r3
movi2fp f1,r4
mult f0,f0,f1
movfp2i r3,f0
add r3,r3,r1
addi r2,r2,#1
bnez r31,L233
nop ; not filled.
L246:
snei r1,r5,#0
beqz r1,L244
nop ; not filled.
sw (r5),r2
L244:
movi2fp f0,r3
movi2fp f1,r6
mult f0,f0,f1
movfp2i r1,f0
L245:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrtol
.align 2
.proc _bcopy
.global _bcopy
_bcopy:
; Function 'bcopy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r3,(r30)
lw r2,4(r30)
lw r31,8(r30)
j L259
nop ; not filled.
L257:
lb r4,(r3)
sb (r2),r4
addi r3,r3,#1
addi r2,r2,#1
L259:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L257
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bcopy
.align 2
.proc _bzero
.global _bzero
_bzero:
; Function 'bzero'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r31,4(r30)
j L270
nop ; not filled.
L268:
addi r3,r0,(#0x0)&0xff
sb (r2),r3
addi r2,r2,#1
L270:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L268
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bzero

home/bshapir/cs314/project4/option1/lab4_1/src/Makefile

# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c \ OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog1 userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o $(CC) -mtraps -O3 dlxos.o trap_random.o $(OBJS) osend.o -o os.dlx osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog: userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -L userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog1: userprog1.o usertraps.o misc.o $(CC) -mtraps -O3 userprog1.o usertraps.o misc.o -o userprog1.dlx $(AS) -L userprog1.lst userprog1.dlx mv userprog1.dlx.obj ../execs userprog2: userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -L userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend

home/bshapir/cs314/project4/option1/lab4_1/src/sysproc.c

// // sysproc.c // // This file defines system processes run by the OS. It also // includes a routine to initialize system processes. #include "process.h" #include "synch.h" //---------------------------------------------------------------------- // // doSomething // // A useless little function that does some small stuff to test // process switching and the like. // //---------------------------------------------------------------------- static Sem mysems[10]; static void doSomething (int me) { int i; int j; int mygrp = me % 10; char buf[40]; char buf2[40]; if (me < 100) { SemInit (&(mysems[mygrp]), 1); for (i = 1; i <= 6; i++) { dstrcpy (buf, "Process #"); ditoa (i, buf2); dstrcat (buf, buf2); ProcessFork (&doSomething, i * me * 1000 + me, buf, 0); } } SemWait (&mysems[mygrp]); for (i = 0, j = 0; i < (me * 2); i++) { if ((i % 1000) == 0) { printf ("Running process %d (iteration %d)!\n", me, i); } j += (i & 3); } SemSignal (&mysems[mygrp]); } � //---------------------------------------------------------------------- // // chaseTail // // A little function that chases its tail, forking off other // processes before exiting. This can be used to test resource // allocation and reclamation. // //---------------------------------------------------------------------- static void chaseTail (int me) { char *str = "chasetail"; printf ("Chasing tail %d.\n", me); printf ("Open of (%s,0x%x) returns 0x%x.\n", str, me+0x2000, Open (str, me + 0x2000)); if (me < 40) { ProcessFork (&chaseTail, me + 1, "ChaseTail", 0); } } //---------------------------------------------------------------------- // // emptyLoop // // This is an empty loop. It's used to test running code. A similar // loop could be used as the "idle" process. // //---------------------------------------------------------------------- static void emptyLoop (int me) { int i; int limit = me * 50000; i = 0; while (1) { i += 1; if (i > limit) { i = 0; printf ("%d ", me); } } } � //---------------------------------------------------------------------- // // randomStuff // // This routine tests random number usage in DLXOS. // //---------------------------------------------------------------------- static void randomStuff (int seed) { int i,rn; extern int random(),srandom(); srandom (seed); for (i = 0; i < 40; i++) { rn = random (); printf ("Random number %02i is 0x%08x.\n", i, rn); } } //---------------------------------------------------------------------- // // SysprocCreateProcesses // // This is the routine that is called by main to create processes. // It must create at least one process, and there must always be // at least one runnable process. If there isn't, the OS will // exit. // //---------------------------------------------------------------------- void SysprocCreateProcesses () { int i; for (i = 0; i < 10; i++) { SemInit (&mysems[i], 1); } // ProcessFork (&emptyLoop, 1, "Loop1", 0); // ProcessFork (&emptyLoop, 2, "Loop1", 0); // ProcessFork (&emptyLoop, 3, "Loop1", 0); // ProcessFork (&doSomething, 1, "Creator1", 0); // ProcessFork (&doSomething, 2, "Creator2", 0); // ProcessFork (&randomStuff, 1234, "randomStuff", 0); // ProcessFork (&chaseTail, 10, "ChaseTail", 0); }

home/bshapir/cs314/project4/option1/lab4_1/src/process.c

// // process.c // // This file defines routines for dealing with processes. This // includes the "main" routine for the OS, which creates a process // for the initial thread of execution. It also includes // code to create and delete processes, as well as context switch // code. Note, however, that the actual context switching is // done in assembly language elsewhere. #include "dlxos.h" #include "memory.h" #include "process.h" #include "synch.h" #include "filesys.h" float MyFuncRetZero(); // Pointer to the current PCB. This is used by the assembly language // routines for context switches. PCB *currentPCB; // List of free PCBs. static Queue freepcbs; // List of processes that are ready to run (ie, not waiting for something // to happen). static Queue runQueue; // List of processes that are waiting for something to happen. There's no // reason why this must be a single list; there could be many lists for many // different conditions. static Queue waitQueue; // List of processes waiting to be deleted. See below for a description of // the reason that we need a separate queue for processes about to die. static Queue zombieQueue; // Static area for all process control blocks. This is necessary because // we can't use malloc() inside the OS. static PCB pcbs[PROCESS_MAX_PROCS]; // Default value for scheduler quantum. This could be set to any value. // In fact, it could even be dynamic, though that would require modifying // the timer trap handler.... static processQuantum = DLX_PROCESS_QUANTUM; // String listing debugging options to print out. char debugstr[200]; � //---------------------------------------------------------------------- // // ProcessModuleInit // // Initialize the process module. This involves initializing all // of the process control blocks to appropriate values (ie, free // and available). We also need to initialize all of the queues. // //---------------------------------------------------------------------- void ProcessModuleInit () { int i; dbprintf ('p', "Entering ProcessModuleInit\n"); QueueInit (&freepcbs); QueueInit (&runQueue); QueueInit (&waitQueue); QueueInit (&zombieQueue); for (i = 0; i < PROCESS_MAX_PROCS; i++) { dbprintf ('p', "Initializing PCB %d @ 0x%x.\n", i, &(pcbs[i])); pcbs[i].flags = PROCESS_STATUS_FREE; QueueLinkInit (&(pcbs[i].l), (void *)&pcbs[i]); QueueInsertFirst(&freepcbs, &(pcbs[i].l)); } currentPCB = NULL; dbprintf ('p', "Leaving ProcessModuleInit\n"); } � //---------------------------------------------------------------------- // // ProcessSetStatus // // Set the status of a process. // //---------------------------------------------------------------------- void ProcessSetStatus (PCB *pcb, int status) { pcb->flags &= ~PROCESS_STATUS_MASK; pcb->flags |= status; } //---------------------------------------------------------------------- // // ProcessFreeResources // // Free the resources associated with a process. This assumes the // process isn't currently on any queue. // //---------------------------------------------------------------------- void ProcessFreeResources (PCB *pcb) { int i; int npages; QueueInsertLast (&freepcbs, &pcb->l); // Free the process's memory. This is easy with a one-level page // table, but could get more complex with two-level page tables. //------------------------------------------ // You may change the code below //------------------------------------------ npages = pcb->npages; for (i = 0; i < pcb->npages; i++) { MemoryFreePte (pcb->pagetable[i]); } // Free the page allocated for the system stack MemoryFreePage (pcb->sysStackArea / MEMORY_PAGE_SIZE); ProcessSetStatus (pcb, PROCESS_STATUS_FREE); } //---------------------------------------------------------------------- // // ProcessSetResult // // Set the result returned to a process. This is done by storing // the value into the current register save area for r1. When the // context is restored, r1 will contain the return value. This // routine should only be called from a trap. Calling it at other // times (such as an interrupt handler) will cause unpredictable // results. // //---------------------------------------------------------------------- void ProcessSetResult (PCB * pcb, uint32 result) { pcb->currentSavedFrame[PROCESS_STACK_IREG+1] = result; } � //---------------------------------------------------------------------- // // ProcessSchedule // // Schedule the next process to run. If there are no processes to // run, exit. This means that there should be an idle loop process // if you want to allow the system to "run" when there's no real // work to be done. // // NOTE: the scheduler should only be called from a trap or interrupt // handler. This way, interrupts are disabled. Also, it must be // called consistently, and because it might be called from an interrupt // handler (the timer interrupt), it must ALWAYS be called from a trap // or interrupt handler. // // Note that this procedure doesn't actually START the next process. // It only changes the currentPCB and other variables so the next // return from interrupt will restore a different context from that // which was saved. // //---------------------------------------------------------------------- void ProcessSchedule () { PCB *pcb; int i; dbprintf ('p', "Now entering ProcessSchedule (cur=0x%x, %d ready)\n", currentPCB, QueueLength (&runQueue)); // The OS exits if there's no runnable process. This is a feature, not a // bug. An easy solution to allowing no runnable "user" processes is to // have an "idle" process that's simply an infinite loop. if (QueueEmpty (&runQueue)) { printf ("No runnable processes - exiting!\n"); exitsim (); // NEVER RETURNS } // Move the front of the queue to the end, if it is the running process. pcb = (PCB *)((QueueFirst (&runQueue))->object); if (pcb == currentPCB) { QueueRemove (&pcb->l); QueueInsertLast (&runQueue, &pcb->l); } // Now, run the one at the head of the queue. pcb = (PCB *)((QueueFirst (&runQueue))->object); currentPCB = pcb; dbprintf ('p',"About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n", pcb, pcb->flags, pcb->sysStackPtr[PROCESS_STACK_IAR]); // Clean up zombie processes here. This is done at interrupt time // because it can't be done while the process might still be running while (!QueueEmpty (&zombieQueue)) { pcb = (PCB *)(QueueFirst (&zombieQueue)->object); dbprintf ('p', "Freeing zombie PCB 0x%x.\n", pcb); QueueRemove (&pcb->l); ProcessFreeResources (pcb); } // Set the timer so this process gets at most a fixed quantum of time. TimerSet (processQuantum); dbprintf ('p', "Leaving ProcessSchedule (cur=0x%x)\n", currentPCB); } � //---------------------------------------------------------------------- // // ProcessSuspend // // Place a process in suspended animation until it's // awakened by ProcessAwaken. // // NOTE: This must only be called from an interrupt or trap. It // should be immediately followed by ProcessSchedule(). // //---------------------------------------------------------------------- void ProcessSuspend (PCB *suspend) { // Make sure it's already a runnable process. dbprintf ('p', "Suspending PCB 0x%x (%s).\n", suspend, suspend->name); ASSERT (suspend->flags & PROCESS_STATUS_RUNNABLE, "Trying to suspend a non-running process!\n"); ProcessSetStatus (suspend, PROCESS_STATUS_WAITING); QueueRemove (&suspend->l); QueueInsertLast (&waitQueue, &suspend->l); } //---------------------------------------------------------------------- // // ProcessWakeup // // Wake up a process from its slumber. This only involves putting // it on the run queue; it's not guaranteed to be the next one to // run. // // NOTE: This must only be called from an interrupt or trap. It // need not be followed immediately by ProcessSchedule() because // the currently running process is unaffected. // //---------------------------------------------------------------------- void ProcessWakeup (PCB *wakeup) { dbprintf ('p',"Waking up PCB 0x%x.\n", wakeup); // Make sure it's not yet a runnable process. ASSERT (wakeup->flags & PROCESS_STATUS_WAITING, "Trying to wake up a non-sleeping process!\n"); ProcessSetStatus (wakeup, PROCESS_STATUS_RUNNABLE); QueueRemove (&wakeup->l); QueueInsertLast (&runQueue, &wakeup->l); } � //---------------------------------------------------------------------- // // ProcessDestroy // // Destroy a process by setting its status to zombie and putting it // on the zombie queue. The next time the scheduler is called, this // process will be marked as free. We can't necessarily do it now // because we might be the currently running process. // // NOTE: This must only be called from an interrupt or trap. However, // it need not be followed immediately by a ProcessSchedule() because // the process can continue running. // //---------------------------------------------------------------------- void ProcessDestroy (PCB *pcb) { dbprintf('p', "Entering ProcessDestroy for 0x%x.\n", pcb); ProcessSetStatus (pcb, PROCESS_STATUS_ZOMBIE); QueueRemove (&pcb->l); QueueInsertFirst (&zombieQueue, &pcb->l); dbprintf('p', "Leaving ProcessDestroy for 0x%x.\n", pcb); } //---------------------------------------------------------------------- // // ProcessExit // // This routine is called to exit from a system process. It simply // calls an exit trap, which will be caught to exit the process. // //---------------------------------------------------------------------- static void ProcessExit () { exit (); } uint32 get_argument(char *string) { static char *str; static int location=0; int location2; if(string) { str=string; location = 0; } location2 = location; if(str[location]=='\0'||location>=99) return 0; for(;location<100;location++) { if(str[location]=='\0') { location++; break; } } return location2; } � //---------------------------------------------------------------------- // // ProcessFork // // Create a new process and make it runnable. This involves the // following steps: // * Allocate resources for the process (PCB, memory, etc.) // * Initialize the resources // * Place the PCB on the runnable queue // // NOTE: This code has been tested for system processes, but not // for user processes. // //---------------------------------------------------------------------- int ProcessFork (VoidFunc func, uint32 param, char *name, int isUser) { int i, j, fd, n; Link *l; int start, codeS, codeL, dataS, dataL; uint32 *stackframe; int newPage; PCB *pcb; int addr = 0; int intrs; unsigned char buf[100]; uint32 dum[MAX_ARGS+8], count, offset; char *str; intrs = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrs); dbprintf ('p', "Entering ProcessFork args=0x%x 0x%x %s %d\n", func, param, name, isUser); // Get a free PCB for the new process if (QueueEmpty (&freepcbs)) { printf ("FATAL error: no free processes!\n"); exitsim (); // NEVER RETURNS! } l = QueueFirst (&freepcbs); dbprintf ('p', "Got a link @ 0x%x\n", l); QueueRemove (l); pcb = (PCB *)(l->object); // This prevents someone else from grabbing this process ProcessSetStatus (pcb, PROCESS_STATUS_RUNNABLE); // At this point, the PCB is allocated and nobody else can get it. // However, it's not in the run queue, so it won't be run. Thus, we // can turn on interrupts here. dbprintf ('I', "Before restore interrupt value is 0x%x.\n", CurrentIntrs()); RestoreIntrs (intrs); dbprintf ('I', "New interrupt value is 0x%x.\n", CurrentIntrs()); // Copy the process name into the PCB. dstrcpy (pcb->name, name); //---------------------------------------------------------------------- // This section initializes the memory for this process //---------------------------------------------------------------------- // For now, we'll use one user page and a page for the system stack. // For system processes, though, all pages must be contiguous. // Of course, system processes probably need just a single page for // their stack, and don't need any code or data pages allocated for them. //------------------------------------------------------------ // Put your own code here //------------------------------------------------------------ pcb->npages = 1; newPage = MemoryAllocPage (); if (newPage == 0) { printf ("aFATAL: couldn't allocate memory - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->pagetable[0] = MemorySetupPte (newPage); newPage = MemoryAllocPage (); if (newPage == 0) { printf ("bFATAL: couldn't allocate system stack - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->sysStackArea = newPage * MEMORY_PAGE_SIZE; //---------------------------------------------------------------------- // Stacks grow down from the top. The current system stack pointer has // to be set to the bottom of the interrupt stack frame, which is at the // high end (address-wise) of the system stack. stackframe = ((uint32 *)(pcb->sysStackArea + MEMORY_PAGE_SIZE)) - (PROCESS_STACK_FRAME_SIZE + 8); // The system stack pointer is set to the base of the current interrupt // stack frame. pcb->sysStackPtr = stackframe; // The current stack frame pointer is set to the same thing. pcb->currentSavedFrame = stackframe; dbprintf ('p', "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n", pcb, pcb->sysStackArea, pcb->pagetable[0], pcb->npages * MEMORY_PAGE_SIZE); //---------------------------------------------------------------------- // This section sets up the stack frame for the process. This is done // so that the frame looks to the interrupt handler like the process // was "suspended" right before it began execution. The standard // mechanism of swapping in the registers and returning to the place // where it was "interrupted" will then work. //---------------------------------------------------------------------- // The previous stack frame pointer is set to 0, meaning there is no // previous frame. stackframe[PROCESS_STACK_PREV_FRAME] = 0; // Set the base of the level 1 page table. If there's only one page // table level, this is it. For 2-level page tables, put the address // of the level 1 page table here. For 2-level page tables, we'll also // have to build up the necessary tables.... stackframe[PROCESS_STACK_PTBASE] = (uint32)&(pcb->pagetable[0]); //---------------------------------------------- // You may change the code below //---------------------------------------------- // Set the size (maximum number of entries) of the level 1 page table. // In our case, it's just one page, but it could be larger. stackframe[PROCESS_STACK_PTSIZE] = pcb->npages; // Set the number of bits for both the level 1 and level 2 page tables. // This can be changed on a per-process basis if desired. For now, // though, it's fixed. stackframe[PROCESS_STACK_PTBITS] = (MEMORY_L1_PAGE_SIZE_BITS + (MEMORY_L2_PAGE_SIZE_BITS << 16)); if (isUser) { dbprintf ('p', "About to load %s\n", name); fd = ProcessGetCodeInfo (name, &start, &codeS, &codeL, &dataS, &dataL); if (fd < 0) { // Free newpage and pcb so we don't run out... ProcessFreeResources (pcb); return (-1); } dbprintf ('p', "File %s -> start=0x%08x\n", name, start); dbprintf ('p', "File %s -> code @ 0x%08x (size=0x%08x)\n", name, codeS, codeL); dbprintf ('p', "File %s -> data @ 0x%08x (size=0x%08x)\n", name, dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { dbprintf ('p', "Placing %d bytes at vaddr %08x.\n", n, addr - n); // Copy the data to user memory. Note that the user memory needs to // have enough space so that this copy will succeed! MemoryCopySystemToUser (pcb, buf, addr - n, n); } FsClose (fd); stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_USER; // Set the initial stack pointer correctly. Currently, it's just set // to the top of the (single) user address space allocated to this // process. str = (char *)param; stackframe[PROCESS_STACK_IREG+29] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF; // Copy the initial parameter to the top of stack MemoryCopySystemToUser (pcb, (char *)str, (char *)stackframe[PROCESS_STACK_IREG+29], SIZE_ARG_BUFF-32); offset = get_argument((char *)param); dum[2] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; for(count=3;;count++) { offset=get_argument(NULL); dum[count] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; if(offset==0) { break; } } dum[0] = count-2; dum[1] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF - (count-2)*4; MemoryCopySystemToUser (pcb, (char *)dum, (char *)(stackframe[PROCESS_STACK_IREG+29]-count*4), (count)*sizeof(uint32)); stackframe[PROCESS_STACK_IREG+29] -= 4*count; // Set the correct address at which to execute a user process. stackframe[PROCESS_STACK_IAR] = (uint32)start; pcb->flags |= PROCESS_TYPE_USER; } else { // Set r31 to ProcessExit(). This will only be called for a system // process; user processes do an exit() trap. stackframe[PROCESS_STACK_IREG+31] = (uint32)ProcessExit; // Set the stack register to the base of the system stack. stackframe[PROCESS_STACK_IREG+29]=pcb->sysStackArea + MEMORY_PAGE_SIZE-32; // Set the initial parameter properly by placing it on the stack frame // at the location pointed to by the "saved" stack pointer (r29). *((uint32 *)(stackframe[PROCESS_STACK_IREG+29])) = param; // Set up the initial address at which to execute. This is done by // placing the address into the IAR slot of the stack frame. stackframe[PROCESS_STACK_IAR] = (uint32)func; // Set the initial value for the interrupt status register stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_SYS; // Mark this as a system process. pcb->flags |= PROCESS_TYPE_SYSTEM; } // Place the PCB onto the run queue. intrs = DisableIntrs (); QueueInsertLast (&runQueue, l); RestoreIntrs (intrs); // If this is the first process, make it the current one if (currentPCB == NULL) { dbprintf ('p', "Setting currentPCB=0x%x, stackframe=0x%x\n", pcb, pcb->currentSavedFrame); currentPCB = pcb; } dbprintf ('p', "Leaving ProcessFork (%s)\n", name); // Return the process number (found by subtracting the PCB number // from the base of the PCB array). return (pcb - pcbs); } � //---------------------------------------------------------------------- // // getxvalue // // Convert a hex digit into an actual value. // //---------------------------------------------------------------------- static inline int getxvalue (int x) { if ((x >= '0') && (x <= '9')) { return (x - '0'); } else if ((x >= 'a') && (x <= 'f')) { return (x + 10 - 'a'); } else if ((x >= 'A') && (x <= 'F')) { return (x + 10 - 'A'); } else { return (0); } } � //---------------------------------------------------------------------- // // ProcessGetCodeSizes // // Get the code sizes (stack & data) for a file. A file descriptor // for the named file is returned. This descriptor MUST be closed // (presumably by the caller) at some point. // //---------------------------------------------------------------------- int ProcessGetCodeInfo (const char *file, uint32 *startAddr, uint32 *codeStart, uint32 *codeSize, uint32 *dataStart, uint32 *dataSize) { int fd; int totalsize; char buf[100]; char *pos; // Open the file for reading. If it returns a negative number, the open // didn't work. if ((fd = FsOpen (file, FS_MODE_READ)) < 0) { dbprintf ('f', "ProcessGetCodeInfo: open of %s failed (%d).\n", file, fd); return (-1); } dbprintf ('f', "File descriptor is now %d.\n", fd); if ((totalsize = FsRead (fd, buf, sizeof (buf))) != sizeof (buf)) { dbprintf ('f', "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n", totalsize, sizeof (buf), file); FsClose (fd); return (-1); } if (dstrstr (buf, "start:") == NULL) { dbprintf ('f', "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n", file); return (-1); } pos = (char *)dindex (buf, ':') + 1; // Get the start address and overall size *startAddr = dstrtol (pos, &pos, 16); totalsize = dstrtol (pos, &pos, 16); // Get code & data section start & sizes *codeStart = dstrtol (pos, &pos, 16); *codeSize = dstrtol (pos, &pos, 16); *dataStart = dstrtol (pos, &pos, 16); *dataSize = dstrtol (pos, &pos, 16); // Seek to start of first real line FsSeek (fd, 1 + dindex (buf, '\n') - buf, 0); return (fd); } � //---------------------------------------------------------------------- // // ProcessGetFromFile // // Inputs: // addr - points to an integer that contains the address of // the byte past that previously returned. If this is the // first call to this routine, *addr should be set to 0. // fd - File descriptor from which to read data. The file format // is the same as that used by the DLX simulator. // buf - points to a buffer that will receive data from the input // file. Note that the data is NOT 0-terminated, and may // include any number of 0 bytes. // max - maximum length of data to return. The routine collects data // until either the address changes or it has read max bytes. // // Returns the number of bytes actually stored into buf. In addition, // *addr is updated to point to the byte following the last byte in // the buffer. // // Load a file into memory. The file format consists of a // leading address, followed by a colon, followed by the data // to go at that address. If the address is omitted, the data // follows that from the previous line of the file. // //---------------------------------------------------------------------- int ProcessGetFromFile (int fd, unsigned char *buf, uint32 *addr, int max) { char localbuf[204]; int nbytes; int seekpos; unsigned char *pos = buf; char *lpos = localbuf; // Remember our position at the start of the routine so we can adjust // it later. seekpos = FsSeek (fd, 0, FS_SEEK_CUR); // The maximum number of characters we could read is limited to the // maximum buffer space available to the caller * 2 because each 2 // characters in the input file result in a single byte of program // info being read in. max = max * 2; // If the callers maximum is greater than the available buffer space, // limit the buffer space further. if (max > (sizeof(localbuf)-4)) { max = sizeof(localbuf)-4; } if ((nbytes = FsRead (fd, localbuf, max)) <= 0) { return (0); } // 'Z' is unused in load file, so use it to mark the end of the buffer // Back up until just after the last newline in the data we read. dbprintf ('f', "Got %d bytes at offset %d ...", nbytes, seekpos); while (localbuf[--nbytes] != '\n') { } localbuf[nbytes+1] = 'Z'; localbuf[nbytes+2] = '\0'; dbprintf ('f', " terminated at %d.\n", nbytes); dbprintf ('f', "Buffer is '%s'\n", localbuf); nbytes = 0; while (dindex (lpos, 'Z') != NULL) { if (dindex (lpos, ':') == NULL) { break; } if (*lpos != ':') { // If we're going to go to a new address, we break out of the // loop and return what we've got already. if (nbytes > 0) { break; } *addr = dstrtol (lpos, &lpos, 16); dbprintf ('f', "New address is 0x%x.\n", *addr); } if (*lpos != ':') { break; } lpos++; // skip past colon while (1) { while (((*lpos) == ' ') || (*lpos == '\t')) { lpos++; } if (*lpos == '\n') { lpos++; break; } else if (!(isxdigit (*lpos) && isxdigit (*(lpos+1)))) { // Exit loop if at least one digit isn't a hex digit. break; } pos[nbytes++] = (getxvalue(*lpos) * 16) + getxvalue(*(lpos+1)); lpos += 2; (*addr)++; } } // Seek to just past the last line we read. FsSeek (fd, seekpos + lpos - localbuf, FS_SEEK_SET); dbprintf ('f', "Seeking to %d and returning %d bytes!\n", seekpos + lpos - localbuf, nbytes); return (nbytes); } � //---------------------------------------------------------------------- // // main // // This routine is called when the OS starts up. It allocates a // PCB for the first process - the one corresponding to the initial // thread of execution. Note that the stack pointer is already // set correctly by _osinit (assembly language code) to point // to the stack for the 0th process. This stack isn't very big, // though, so it should be replaced by the system stack of the // currently running process. // //---------------------------------------------------------------------- main (int argc, char *argv[]) { int i, j; int n; char buf[120]; char *userprog = (char *)0; static PCB temppcb; uint32 addr; extern void SysprocCreateProcesses (); char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; int base; debugstr[1] = '\0'; MyFuncRetZero(); printf ("Got %d arguments.\n", argc); printf ("Available memory: 0x%x -> 0x%x.\n", lastosaddress, MemoryGetSize ()); printf ("Argument count is %d.\n", argc); for (i = 0; i < argc; i++) { printf ("Argument %d is %s.\n", i, argv[i]); } // *((int *)0xfff00100) = 't'; FsModuleInit (); for (i = 0; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'D': dstrcpy (debugstr, argv[++i]); break; case 'i': n = dstrtol (argv[++i], (void *)0, 0); ditoa (n, buf); printf ("Converted %s to %d=%s\n", argv[i], n, buf); break; case 'f': { int start, codeS, codeL, dataS, dataL, fd, j; int addr = 0; static unsigned char buf[200]; fd = ProcessGetCodeInfo (argv[++i], &start, &codeS, &codeL, &dataS, &dataL); printf ("File %s -> start=0x%08x\n", argv[i], start); printf ("File %s -> code @ 0x%08x (size=0x%08x)\n", argv[i], codeS, codeL); printf ("File %s -> data @ 0x%08x (size=0x%08x)\n", argv[i], dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { for (j = 0; j < n; j += 4) { printf ("%08x: %02x%02x%02x%02x\n", addr + j - n, buf[j], buf[j+1], buf[j+2], buf[j+3]); } } close (fd); break; } case 'u': userprog = argv[++i]; base = i; break; default: printf ("Option %s not recognized.\n", argv[i]); break; } if(userprog) break; } } dbprintf ('i', "About to initialize queues.\n"); QueueModuleInit (); dbprintf ('i', "After initializing queues.\n"); MemoryModuleInit (); dbprintf ('i', "After initializing memory.\n"); ProcessModuleInit (); dbprintf ('i', "After initializing processes.\n"); SynchModuleInit (); dbprintf ('i', "After initializing synchronization tools.\n"); KbdModuleInit (); dbprintf ('i', "After initializing keyboard.\n"); for (i = 0; i < 100; i++) { buf[i] = 'a'; } i = FsOpen ("vm", FS_MODE_WRITE); dbprintf ('i', "VM Descriptor is %d\n", i); FsSeek (i, 0, FS_SEEK_SET); FsWrite (i, buf, 80); FsClose (i); if (userprog != (char *)0) { for(i=base;i<argc&&i-base<11; i++) { param[i-base] = argv[i]; } process_create(param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7], param[8], param[9], param[10], param[11]); // ProcessFork (0, (uint32)"Help Me man!", userprog, 1); } SysprocCreateProcesses (); dbprintf ('i', "Created processes - about to set timer quantum.\n"); TimerSet (processQuantum); dbprintf ('i', "Set timer quantum to %d, about to run first process.\n", processQuantum); intrreturn (); // Should never be called because the scheduler exits when there // are no runnable processes left. exitsim(); // NEVER RETURNS! } float MyFuncRetZero() { return 0; } unsigned GetCurrentPid() { return (unsigned)(currentPCB - pcbs); } unsigned findpid(PCB *pcb) { return (unsigned)(pcb - pcbs); } void process_create(char *name, ...) { char **args; int i, j, k; char allargs[1000]; args = &name; k=0; for(i=0; args[i]!=NULL; i++) { j=0; do { allargs[k] = args[i][j]; j++; k++; } while(args[i][j-1]!='\0'); } allargs[k] = allargs[k+1] = 0; ProcessFork(0, (uint32)allargs, name, 1); } void ProcessKill (PCB *pcb) { // add your code below ProcessSchedule (); } void PageFaultHandler() { // add your code below uint32 *tempstackframe; uint32 faultaddress; // printf ("It does come to PageFaulthandler\n"); tempstackframe = currentPCB->currentSavedFrame ; faultaddress = tempstackframe[PROCESS_STACK_FAULT]; }

home/bshapir/cs314/project4/option1/lab4_1/src/synch.c

// // synch.c // // Routines for synchronization // // #include "dlxos.h" #include "process.h" #include "synch.h" static Sem sems[MAX_SEMS]; //All semaphores in the system extern struct PCB *currentPCB; //---------------------------------------------------------------------- // SynchModuleInit // // Initializes the synchronization primitives: the semaphores //---------------------------------------------------------------------- void SynchModuleInit() { int i; dbprintf ('p', "Entering SynchModuleInit\n"); for(i=0; i<MAX_SEMS; i++) sems[i].inuse = 0; dbprintf ('p', "Leaving SynchModuleInit\n"); } //--------------------------------------------------------------------- // // SemInit // // Initialize a semaphore to a particular value. This just means // initting the process queue and setting the counter. // //---------------------------------------------------------------------- void SemInit (Sem *sem, int count) { QueueInit (&sem->waiting); sem->count = count; } //---------------------------------------------------------------------- // SemCreate // // Grabs a Semaphore, initializes it and returns a handle to this // semaphore. All subsequent accesses to this semaphore should be made // through this handle //---------------------------------------------------------------------- sem_t SemCreate(int count) { sem_t sem; uint32 intrval; // grabbing a semaphore should be an atomic operation intrval = DisableIntrs(); for(sem=0; sem<MAX_SEMS; sem++) { if(sems[sem].inuse==0) { sems[sem].inuse = 1; break; } } RestoreIntrs(intrval); if(sem==MAX_SEMS) return INVALID_SEM; SemInit(&sems[sem], count); return sem; } � //---------------------------------------------------------------------- // // SemWait // // Wait on a semaphore. As described in Section 6.4 of _OSC_, // we decrement the counter and suspend the process if the // semaphore's value is less than 0. To ensure atomicity, // interrupts are disabled for the entire operation. Note that, // if the process is put to sleep, interrupts will be OFF when // it returns from sleep. Thus, we enable interrupts at the end of // the routine. // //---------------------------------------------------------------------- void SemWait (Sem *sem) { Link *l; int intrval; intrval = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrval); dbprintf ('s', "Proc 0x%x waiting on sem 0x%x, count=%d.\n", currentPCB, sem, sem->count); sem->count -= 1; if (sem->count < 0) { l = QueueAllocLink (); QueueLinkInit (l, (void *)currentPCB); dbprintf ('s', "Suspending current proc (0x%x).\n", currentPCB); QueueInsertLast (&sem->waiting, l); ProcessSleep (); } RestoreIntrs (intrval); } int SemHandleWait(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemWait(&sems[sem]); return 0; } return 1; } else { return 1; } } //---------------------------------------------------------------------- // // SemSignal // // Signal on a semaphore. Again, details are in Section 6.4 of // _OSC_. // //---------------------------------------------------------------------- void SemSignal (Sem *sem) { Link *l; int intrs; intrs = DisableIntrs (); dbprintf ('s', "Signalling on sem 0x%x, count=%d.\n", sem, sem->count); sem->count += 1; if (sem->count <= 0) { l = QueueFirst (&sem->waiting); QueueRemove (l); dbprintf ('s', "Waking up PCB 0x%x.\n", l->object); ProcessWakeup ((PCB *)(l->object)); QueueFreeLink (l); } RestoreIntrs (intrs); } int SemHandleSignal(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemSignal(&sems[sem]); return 0; } return 1; } else { return 1; } }

home/bshapir/cs314/project4/option1/lab4_1/src/memory.c

// // memory.c // // Routines for dealing with memory management. static char rcsid[] = "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "memory.h" #include "process.h" #include "queue.h" static uint32 pagestart; static int freemapmax; static int nfreepages; static uint32 freepages[MEMORY_MAX_PAGES/32]; static uint32 negativeone = 0xffffffff; //---------------------------------------------------------------------- // // This silliness is required because the compiler believes that // it can invert a number by subtracting it from zero and subtracting // an additional 1. This works unless you try to negate 0x80000000, // which causes an overflow when subtracted from 0. Simply // trying to do an XOR with 0xffffffff results in the same code // being emitted. // //---------------------------------------------------------------------- static inline uint32 invert (uint32 n) { return (n ^ negativeone); } //---------------------------------------------------------------------- // // MemoryGetSize // // Return the total size of memory in the simulator. This is // available by reading a special location. // //---------------------------------------------------------------------- int MemoryGetSize () { return (*((int *)DLX_MEMSIZE_ADDRESS)); } //---------------------------------------------------------------------- // // MemorySetFreemap // //---------------------------------------------------------------------- inline void MemorySetFreemap (int p, int b) { uint32 wd = p / 32; uint32 bitnum = p % 32; freepages[wd] = (freepages[wd] & invert(1 << bitnum)) | (b << bitnum); dbprintf ('m', "Set freemap entry %d to 0x%x.\n", wd, freepages[wd]); } � //---------------------------------------------------------------------- // // MemoryInitModule // // Initialize the memory module of the operating system. // //---------------------------------------------------------------------- void MemoryModuleInit () { int i; int maxpage = MemoryGetSize () / MEMORY_PAGE_SIZE; int curpage; pagestart = (lastosaddress + MEMORY_PAGE_SIZE - 4) / MEMORY_PAGE_SIZE; freemapmax = (maxpage+31) / 32; dbprintf ('m', "Map has %d entries, memory size is 0x%x.\n", freemapmax, maxpage); dbprintf ('m', "Free pages start with page # 0x%x.\n", pagestart); for (i = 0; i < freemapmax; i++) { // Initially, all pages are considered in use. This is done to make // sure we don't have any partially initialized freemap entries. freepages[i] = 0; } nfreepages = 0; for (curpage = pagestart; curpage < maxpage; curpage++) { nfreepages += 1; MemorySetFreemap (curpage, 1); } dbprintf ('m', "Initialized %d free pages.\n", nfreepages); } � //---------------------------------------------------------------------- // // MemoryAllocPage // // Allocate a page of memory. // //---------------------------------------------------------------------- inline int MemoryAllocPage () { static int mapnum = 0; int bitnum; uint32 v; if (nfreepages == 0) { printf("ERROR AT THIS POINT\n"); return (0); } dbprintf ('m', "Allocating memory, starting with page %d\n", mapnum); while (freepages[mapnum] == 0) { mapnum += 1; if (mapnum >= freemapmax) { mapnum = 0; } } v = freepages[mapnum]; for (bitnum = 0; (v & (1 << bitnum)) == 0; bitnum++) { } freepages[mapnum] &= invert(1 << bitnum); v = (mapnum * 32) + bitnum; dbprintf ('m', "Allocated memory, from map %d, page %d, map=0x%x.\n", mapnum, v, freepages[mapnum]); nfreepages -= 1; return (v); } //---------------------------------------------------------------------- // // MemoryFreePage // // Free a page of memory. // //---------------------------------------------------------------------- void MemoryFreePage(uint32 page) { MemorySetFreemap (page, 1); nfreepages += 1; dbprintf ('m',"Freed page 0x%x, %d remaining.\n", page, nfreepages); } � //---------------------------------------------------------------------- // // MemoryTranslateUserToSystem // // Translate a user address (in the process referenced by pcb) // into an OS (physical) address. This works for simple one-level // page tables, but will have to be modified for two-level page // tables. // //---------------------------------------------------------------------- uint32 MemoryTranslateUserToSystem (PCB *pcb, uint32 addr) { //------------------------------------------- // You need to change the code below //------------------------------------------- int page = addr / MEMORY_PAGE_SIZE; int offset = addr % MEMORY_PAGE_SIZE; if (page > pcb->npages) { return (0); } return ((pcb->pagetable[page] & MEMORY_PTE_MASK) + offset); } � //---------------------------------------------------------------------- // // moveBetweenSpaces // // Copy data between user and system spaces. This is done page by // page by: // * Translating the user address into system space. // * Copying all of the data in that page // * Repeating until all of the data is copied. // A positive direction means the copy goes from system to user // space; negative direction means the copy goes from user to system // space. // // This routine returns the number of bytes copied. Note that this // may be less than the number requested if there were unmapped pages // in the user range. If this happens, the copy stops at the // first unmapped address. // //---------------------------------------------------------------------- static int moveBetweenSpaces (PCB *pcb, unsigned char *s, unsigned char *u, int n, int dir) { unsigned char *curUser; int bytesCopied = 0; int bytesToCopy; while (n > 0) { // Translate current user page to system address. If this fails, return // the number of bytes copied so far. curUser = (unsigned char *)MemoryTranslateUserToSystem (pcb, (uint32)u); if (curUser == (unsigned char *)0) { // Leave the loop if translation fails. break; } // Calculate the number of bytes to copy this time. This is the minimum // of the bytes left on this page and the bytes left to copy. bytesToCopy = MEMORY_PAGE_SIZE - ((uint32)curUser % MEMORY_PAGE_SIZE); if (bytesToCopy > n) { bytesToCopy = n; } // Perform the copy. if (dir >= 0) { bcopy (s, curUser, bytesToCopy); } else { bcopy (curUser, s, bytesToCopy); } // Keep track of bytes copied and adjust addresses appropriately. n -= bytesToCopy; bytesCopied += bytesToCopy; s += bytesToCopy; u += bytesToCopy; } return (bytesCopied); } //---------------------------------------------------------------------- // // These two routines copy data between user and system spaces. // They call a common routine to do the copying; the only difference // between the calls is the actual call to do the copying. Everything // else is identical. // //---------------------------------------------------------------------- int MemoryCopySystemToUser (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, from, to, n, 1)); } int MemoryCopyUserToSystem (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, to, from, n, -1)); } � //---------------------------------------------------------------------- // // MemorySetupPte // // Set up a PTE given a page number. // //---------------------------------------------------------------------- uint32 MemorySetupPte (uint32 page) { return ((page * MEMORY_PAGE_SIZE) | MEMORY_PTE_VALID); } //---------------------------------------------------------------------- // // MemoryFreePte // // Free a page given its PTE. // //---------------------------------------------------------------------- void MemoryFreePte (uint32 pte) { MemoryFreePage ((pte & MEMORY_PTE_MASK) / MEMORY_PAGE_SIZE); } //---------------------------------------------------------------------- // // MemoryPteToPage // // Given a PTE, return the base address for the (virtual) page the // PTE references. // //---------------------------------------------------------------------- uint32 MemoryPteToPage (uint32 pte) { return (pte & MEMORY_PTE_MASK); } � //---------------------------------------------------------------------- // // MemoryGetOperandAddress // // This routine takes an instruction and a pointer to a PCB, and // returns the address that the instruction is trying to use // for its memory operand. If the instruction doesn't access memory, // it returns 0xffffffff. Note that this means it's impossible to // distinguish between a valid access to 0xffffffff and an instruction // without an operand.... // //---------------------------------------------------------------------- uint32 MemoryGetOperandAddress (PCB *pcb, uint32 instr) { static uint32 invalidOps = 0x3404; uint32 opcode = (instr >> 26) & 0x3f; uint32 reg; uint32 addr; uint32 offset; uint32 regValue; if ((opcode<0x20) || (opcode>0x2f) || ((invalidOps >> (opcode-0x20) & 1))) { return (0xffffffff); } reg = (instr >> 21) & 0x1f; offset = instr & 0xffff; if (offset & 0x8000) { offset |= 0xffff0000; } regValue = pcb->currentSavedFrame[PROCESS_STACK_IREG+reg]; addr = regValue + offset; dbprintf ('m', "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n", instr, addr, reg, regValue); return (addr); }

home/bshapir/cs314/project4/option1/lab4_1/src/os.dlx

; Linked by DLX-LD. ; MemSize 86016 ; Data size: 32260 ; Text size: 40952 ; Stack size: 8192 .text 0x1000 .data 0xb000 ;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem_LF0 lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg_LF0; skip over the system part.... intrSystem_LF0: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg_LF0: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6; push CAUSE sw 4(r29),r4; push IAR sw 8(r29),r5; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1),r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1),r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1); 156-340 = -184 lw r1,-296(r1); 44-340 = -296 rfe .endproc _intrreturn ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2; save r2 lw r2,16(r29); Get the new interrupt level andi r2,r2,#0x0f; Mask off interrupt levels movs2i r1,status sw 8(r29),r1; Store the old interrupt values andi r1,r1,#0xfff0; Mask off old interrupt level or r1,r2,r1; OR in new interrupt level movi2s status,r1 lw r1,8(r29); Get back the original interrupt level andi r1,r1,#0x0f; Mask off all but interrupt levels lw r2,12(r29); restore r2 addui r29,r29,#16; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom ; Compiled by GCC .data .align 2 _rcsid_LF2: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF2 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF2: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF2: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1_LF2: .ascii "dlx:\000" .align 2 LC2_LF2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3_LF2: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55_LF2 nop; not filled. L56_LF2: addi r29,r29,#-16 lhi r8,((LC0_LF2)>>16)&0xffff addui r8,r8,(LC0_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L55_LF2: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74_LF2 nop; not filled. addi r3,r0,#0 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r2,r0,r6 L61_LF2: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59_LF2 nop; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61_LF2 nop; not filled. L59_LF2: sgti r1,r3,#31 beqz r1,L64_LF2 nop; not filled. L74_LF2: addi r1,r0,#-1 j L73_LF2 nop; not filled. L64_LF2: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65_LF2 nop; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75_LF2 nop; not filled. L65_LF2: addi r8,r0,#0 L75_LF2: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67_LF2 nop; not filled. L68_LF2: addi r29,r29,#-16 lhi r8,((LC2_LF2)>>16)&0xffff addui r8,r8,(LC2_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L67_LF2: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs_LF2)>>16)&0xffff addui r8,r8,(_fs_LF2)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69_LF2 nop; not filled. lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73_LF2 nop; not filled. L69_LF2: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF2 nop; not filled. L72_LF2: addi r29,r29,#-24 lhi r8,((LC3_LF2)>>16)&0xffff addui r8,r8,(LC3_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L71_LF2: add r1,r0,r3 L73_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84_LF2 nop; not filled. addi r2,r0,#1 L84_LF2: snei r1,r2,#0 beqz r1,L82_LF2 nop; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs_LF2)>>16)&0xffff addui r4,r4,(_fs_LF2)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop; not filled. addi r29,r29,#8 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86_LF2 nop; not filled. L82_LF2: addi r1,r0,#-1 L86_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94_LF2 nop; not filled. addi r2,r0,#1 L94_LF2: snei r1,r2,#0 beqz r1,L92_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L91_LF2 nop; not filled. L92_LF2: addi r1,r0,#-1 L91_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103_LF2 nop; not filled. addi r2,r0,#1 L103_LF2: snei r1,r2,#0 beqz r1,L101_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L100_LF2 nop; not filled. L101_LF2: addi r1,r0,#-1 L100_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112_LF2 nop; not filled. addi r2,r0,#1 L112_LF2: snei r1,r2,#0 beqz r1,L110_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L109_LF2 nop; not filled. L110_LF2: addi r1,r0,#-1 L109_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118_LF2 nop; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs_LF2+44)>>16)&0xffff addui r1,r1,(_fs_LF2+44)&0xffff j L120_LF2 nop; not filled. L118_LF2: addi r29,r29,#-8 lhi r1,((_fs_LF2+20)>>16)&0xffff addui r1,r1,(_fs_LF2+20)&0xffff L120_LF2: sw (r29),r2 lw r1,(r1) jalr r1 nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4_LF2: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126_LF2 nop; not filled. L127_LF2: addi r29,r29,#-16 lhi r6,((LC4_LF2)>>16)&0xffff addui r6,r6,(LC4_LF2)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L126_LF2: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128_LF2 nop; not filled. addi r1,r0,#1 L128_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff addi r2,r31,#8308 L182_LF2: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182_LF2 nop; not filled. lhi r1,((_fs_LF2)>>16)&0xffff addui r1,r1,(_fs_LF2)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs_LF2: .space 48 .align 2 _openfiles_LF2: .space 8576 ; Compiled by GCC .align 2 _rcsid_LF3: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF3 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF3 nop; not filled. L6_LF3: addi r31,r0,#1 L5_LF3: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF3 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF3 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF3 nop; not filled. L12_LF3: addi r2,r0,#1 L11_LF3: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF3 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF3: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone_LF3: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0_LF3: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61_LF3 nop; not filled. addi r2,r3,#31 L61_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF3 nop; not filled. L65_LF3: addi r29,r29,#-16 lhi r6,((LC0_LF3)>>16)&0xffff addui r6,r6,(LC0_LF3)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L64_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1_LF3: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2_LF3: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3_LF3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68_LF3 nop; not filled. addui r2,r2,#65535 L68_LF3: srai r8,r2,#0x10 lhi r3,((_pagestart_LF3)>>16)&0xffff addui r3,r3,(_pagestart_LF3)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69_LF3 nop; not filled. addui r2,r2,#65535 L69_LF3: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax_LF3)>>16)&0xffff addui r3,r3,(_freemapmax_LF3)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70_LF3 nop; not filled. addi r2,r8,#62 L70_LF3: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF3 nop; not filled. L72_LF3: addi r29,r29,#-16 lhi r11,((LC1_LF3)>>16)&0xffff addui r11,r11,(LC1_LF3)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop; not filled. addi r29,r29,#16 L71_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73_LF3 nop; not filled. L74_LF3: addi r29,r29,#-8 lhi r11,((LC2_LF3)>>16)&0xffff addui r11,r11,(LC2_LF3)&0xffff sw (r29),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L73_LF3: addi r2,r0,#0 lhi r4,((_freemapmax_LF3)>>16)&0xffff addui r4,r4,(_freemapmax_LF3)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76_LF3 nop; not filled. lhi r3,((_freepages_LF3)>>16)&0xffff addui r3,r3,(_freepages_LF3)&0xffff L78_LF3: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78_LF3 nop; not filled. L76_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81_LF3 nop; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone_LF3)>>16)&0xffff addui r9,r9,(_negativeone_LF3)&0xffff L83_LF3: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85_LF3 nop; not filled. addi r2,r4,#31 L85_LF3: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages_LF3)>>16)&0xffff addui r11,r11,(_freepages_LF3)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89_LF3 nop; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82_LF3 nop; not filled. L89_LF3: addi r29,r29,#-16 lhi r11,((LC0_LF3)>>16)&0xffff addui r11,r11,(LC0_LF3)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L82_LF3: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83_LF3 nop; not filled. L81_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF3 nop; not filled. L92_LF3: addi r29,r29,#-8 lhi r11,((LC3_LF3)>>16)&0xffff addui r11,r11,(LC3_LF3)&0xffff sw (r29),r11 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L91_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42_LF3: .word 0 .align 2 LC4_LF3: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5_LF3: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6_LF3: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((LC4_LF3)>>16)&0xffff addui r7,r7,(LC4_LF3)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110_LF3 nop; not filled. L111_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF3 nop; not filled. L113_LF3: addi r29,r29,#-8 lhi r7,((LC5_LF3)>>16)&0xffff addui r7,r7,(LC5_LF3)&0xffff sw (r29),r7 lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L112_LF3: lhi r2,((_mapnum42_LF3)>>16)&0xffff addui r2,r2,(_mapnum42_LF3)&0xffff lw r1,(r2) lhi r4,((_freepages_LF3)>>16)&0xffff addui r4,r4,(_freepages_LF3)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115_LF3 nop; not filled. lhi r1,((_freemapmax_LF3)>>16)&0xffff addui r1,r1,(_freemapmax_LF3)&0xffff lw r3,(r1) L116_LF3: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114_LF3 nop; not filled. addi r7,r0,#0 sw (r2),r7 L114_LF3: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116_LF3 nop; not filled. L115_LF3: lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120_LF3 nop; not filled. addi r2,r0,#1 L121_LF3: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121_LF3 nop; not filled. L120_LF3: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42_LF3)>>16)&0xffff addui r5,r5,(_mapnum42_LF3)&0xffff lw r3,(r5) lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125_LF3 nop; not filled. L126_LF3: addi r29,r29,#-16 lhi r7,((LC6_LF3)>>16)&0xffff addui r7,r7,(LC6_LF3)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L125_LF3: lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7_LF3: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129_LF3 nop; not filled. addi r2,r6,#31 L129_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128_LF3 nop; not filled. L133_LF3: addi r29,r29,#-16 lhi r7,((LC0_LF3)>>16)&0xffff addui r7,r7,(LC0_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L128_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134_LF3 nop; not filled. L135_LF3: addi r29,r29,#-16 lhi r7,((LC7_LF3)>>16)&0xffff addui r7,r7,(LC7_LF3)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L134_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139_LF3 nop; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140_LF3 nop; not filled. L139_LF3: addi r1,r0,#0 L140_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L168_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170_LF3 nop; not filled. addi r31,r0,#0 j L169_LF3 nop; not filled. L170_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169_LF3: snei r1,r31,#0 beqz r1,L167_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172_LF3 nop; not filled. add r2,r0,r3 L172_LF3: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168_LF3 nop; not filled. L167_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L192_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194_LF3 nop; not filled. addi r31,r0,#0 j L193_LF3 nop; not filled. L194_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193_LF3: snei r1,r31,#0 beqz r1,L191_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197_LF3 nop; not filled. add r2,r0,r3 L197_LF3: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192_LF3 nop; not filled. L191_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61_LF3: .word 13316 .align 2 LC8_LF3: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214_LF3 nop; not filled. lhi r1,((_invalidOps61_LF3)>>16)&0xffff addui r1,r1,(_invalidOps61_LF3)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213_LF3 nop; not filled. L214_LF3: addi r1,r0,#-1 j L218_LF3 nop; not filled. L213_LF3: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215_LF3 nop; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215_LF3: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216_LF3 nop; not filled. L217_LF3: addi r29,r29,#-24 lhi r7,((LC8_LF3)>>16)&0xffff addui r7,r7,(LC8_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L216_LF3: add r1,r0,r4 L218_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart_LF3: .space 4 .align 2 _freemapmax_LF3: .space 4 .align 2 _nfreepages_LF3: .space 4 .align 2 _freepages_LF3: .space 8192 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF4 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF4 nop; not filled. L6_LF4: addi r31,r0,#1 L5_LF4: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF4 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF4 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF4 nop; not filled. L12_LF4: addi r2,r0,#1 L11_LF4: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF4: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF4 nop; not filled. L34_LF4: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF4 nop; not filled. L37_LF4: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF4 nop; not filled. L32_LF4: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF4 nop; not filled. L51_LF4: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF4 nop; not filled. L50_LF4: add r2,r0,r31 lw r31,4(r30) L54_LF4: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF4 nop; not filled. L75_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF4 nop; not filled. L73_LF4: seq r1,r2,r5 beqz r1,L80_LF4 nop; not filled. L86_LF4: addi r1,r0,#0 j L84_LF4 nop; not filled. L80_LF4: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF4 nop; not filled. sne r2,r31,r3 L82_LF4: add r1,r0,r2 L84_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF4 nop; not filled. L95_LF4: addi r2,r2,#1 L97_LF4: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF4 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF4 nop; not filled. L126_LF4: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF4 nop; not filled. L125_LF4: add r6,r0,r3 j L149_LF4 nop; not filled. L130_LF4: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF4 nop; not filled. L136_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF4 nop; not filled. L134_LF4: seq r1,r2,r6 beqz r1,L141_LF4 nop; not filled. L150_LF4: addi r1,r0,#0 j L132_LF4 nop; not filled. L141_LF4: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF4 nop; not filled. sne r31,r3,r2 L143_LF4: add r1,r0,r31 L132_LF4: snei r1,r1,#0 bnez r1,L131_LF4 nop; not filled. add r1,r0,r5 j L146_LF4 nop; not filled. L131_LF4: addi r5,r5,#1 L149_LF4: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF4 nop; not filled. addi r1,r0,#0 L146_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF4 nop; not filled. add r5,r0,r1 L165_LF4: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF4 nop; not filled. lbu r3,(r4) L169_LF4: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF4 nop; not filled. add r1,r0,r4 j L173_LF4 nop; not filled. L168_LF4: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF4 nop; not filled. L163_LF4: bnez r5,L165_LF4 nop; not filled. L164_LF4: addi r1,r0,#0 L173_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF4 nop; not filled. L183_LF4: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF4 nop; not filled. add r1,r0,r2 j L186_LF4 nop; not filled. L184_LF4: addi r2,r2,#1 L187_LF4: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF4 nop; not filled. addi r1,r0,#0 L186_LF4: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF4 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF4 nop; not filled. L203_LF4: snei r1,r3,#0 bnez r1,L205_LF4 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF4: sb (r4),r6 addi r4,r4,#1 j L204_LF4 nop; not filled. L205_LF4: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF4 nop; not filled. L209_LF4: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF4 nop; not filled. L208_LF4: addi r5,r0,#10 L212_LF4: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF4 nop; not filled. L204_LF4: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF4 nop; not filled. L220_LF4: addi r2,r2,#1 L247_LF4: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF4 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF4 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF4 nop; not filled. sw (r5),r2 L222_LF4: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF4 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF4 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF4 nop; not filled. L224_LF4: addi r6,r0,#1 L225_LF4: snei r1,r4,#0 bnez r1,L226_LF4 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF4 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF4 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF4 nop; not filled. L229_LF4: addi r4,r0,#16 addi r2,r2,#1 j L226_LF4 nop; not filled. L228_LF4: addi r4,r0,#8 j L226_LF4 nop; not filled. L227_LF4: addi r4,r0,#10 L226_LF4: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF4 nop; not filled. L248_LF4: add r1,r0,r3 j L245_LF4 nop; not filled. L233_LF4: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF4 nop; not filled. L236_LF4: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF4 nop; not filled. L238_LF4: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF4 nop; not filled. L240_LF4: addi r1,r0,#1000 L237_LF4: slt r31,r1,r4 beqz r31,L246_LF4 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF4 nop; not filled. L246_LF4: snei r1,r5,#0 beqz r1,L244_LF4 nop; not filled. sw (r5),r2 L244_LF4: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF4 nop; not filled. L257_LF4: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF4 nop; not filled. L268_LF4: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF5 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF5 nop; not filled. L6_LF5: addi r31,r0,#1 L5_LF5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF5 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF5 nop; not filled. L12_LF5: addi r2,r0,#1 L11_LF5: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF5 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF5: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum_LF5: .word 10000 .align 2 LC0_LF5: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1_LF5: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2_LF5: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF5 nop; not filled. L53_LF5: addi r29,r29,#-8 lhi r8,((LC0_LF5)>>16)&0xffff addui r8,r8,(LC0_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L52_LF5: addi r29,r29,#-8 lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff sw (r29),r2 jal _QueueInit nop; not filled. lhi r8,((_runQueue_LF5)>>16)&0xffff addui r8,r8,(_runQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_waitQueue_LF5)>>16)&0xffff addui r8,r8,(_waitQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_zombieQueue_LF5)>>16)&0xffff addui r8,r8,(_zombieQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs_LF5)>>16)&0xffff addui r1,r1,(_pcbs_LF5)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57_LF5: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58_LF5 nop; not filled. L59_LF5: addi r29,r29,#-16 lhi r8,((LC1_LF5)>>16)&0xffff addui r8,r8,(LC1_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L58_LF5: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57_LF5 nop; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF5 nop; not filled. L65_LF5: addi r29,r29,#-8 lhi r8,((LC2_LF5)>>16)&0xffff addui r8,r8,(LC2_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L64_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83_LF5 nop; not filled. add r3,r0,r4 L85_LF5: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85_LF5 nop; not filled. L83_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3_LF5: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4_LF5: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5_LF5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6_LF5: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7_LF5: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF5 nop; not filled. L92_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3_LF5)>>16)&0xffff addui r8,r8,(LC3_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L91_LF5: lhi r5,((_runQueue_LF5)>>16)&0xffff addui r5,r5,(_runQueue_LF5)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94_LF5 nop; not filled. addi r29,r29,#-8 lhi r8,((LC4_LF5)>>16)&0xffff addui r8,r8,(LC4_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L94_LF5: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98_LF5 nop; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100_LF5 nop; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100_LF5: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105_LF5 nop; not filled. L106_LF5: addi r29,r29,#-16 lhi r8,((LC5_LF5)>>16)&0xffff addui r8,r8,(LC5_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L105_LF5: lhi r7,((_zombieQueue_LF5)>>16)&0xffff addui r7,r7,(_zombieQueue_LF5)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs_LF5)>>16)&0xffff addui r5,r5,(_freepcbs_LF5)&0xffff L107_LF5: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108_LF5 nop; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113_LF5 nop; not filled. L114_LF5: addi r29,r29,#-8 lhi r8,((LC6_LF5)>>16)&0xffff addui r8,r8,(LC6_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop; not filled. addi r29,r29,#8 L113_LF5: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116_LF5 nop; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116_LF5: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122_LF5 nop; not filled. add r2,r0,r4 L124_LF5: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124_LF5 nop; not filled. L122_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107_LF5 nop; not filled. L108_LF5: addi r29,r29,#-8 lhi r1,((_processQuantum_LF5)>>16)&0xffff addui r1,r1,(_processQuantum_LF5)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127_LF5 nop; not filled. L128_LF5: addi r29,r29,#-8 lhi r8,((LC7_LF5)>>16)&0xffff addui r8,r8,(LC7_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L127_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8_LF5: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9_LF5: .ascii "%s: %s\n\000" .align 2 LC10_LF5: .ascii "ProcessSuspend\000" .align 2 LC11_LF5: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF5 nop; not filled. L131_LF5: addi r29,r29,#-16 lhi r4,((LC8_LF5)>>16)&0xffff addui r4,r4,(LC8_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L130_LF5: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC10_LF5)>>16)&0xffff addui r1,r1,(LC10_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC11_LF5)>>16)&0xffff addui r4,r4,(LC11_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L133_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue_LF5)>>16)&0xffff addui r2,r2,(_waitQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12_LF5: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13_LF5: .ascii "ProcessWakeup\000" .align 2 LC14_LF5: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141_LF5 nop; not filled. L142_LF5: addi r29,r29,#-8 lhi r4,((LC12_LF5)>>16)&0xffff addui r4,r4,(LC12_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L141_LF5: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC13_LF5)>>16)&0xffff addui r1,r1,(LC13_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC14_LF5)>>16)&0xffff addui r4,r4,(LC14_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L144_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue_LF5)>>16)&0xffff addui r2,r2,(_runQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15_LF5: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16_LF5: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152_LF5 nop; not filled. L153_LF5: addi r29,r29,#-8 lhi r4,((LC15_LF5)>>16)&0xffff addui r4,r4,(LC15_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L152_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue_LF5)>>16)&0xffff addui r2,r2,(_zombieQueue_LF5)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159_LF5 nop; not filled. L160_LF5: addi r29,r29,#-8 lhi r4,((LC16_LF5)>>16)&0xffff addui r4,r4,(LC16_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L159_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52_LF5: .space 4 .align 2 _location53_LF5: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r2 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r5,r0,#0 sw (r1),r5 L173_LF5: lhi r31,((_location53_LF5)>>16)&0xffff addui r31,r31,(_location53_LF5)&0xffff lw r3,(r31) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175_LF5 nop; not filled. sgti r1,r3,#98 beqz r1,L174_LF5 nop; not filled. L175_LF5: addi r1,r0,#0 j L182_LF5 nop; not filled. L183_LF5: addi r1,r31,#1 sw (r2),r1 j L177_LF5 nop; not filled. L174_LF5: slei r1,r3,#99 beqz r1,L177_LF5 nop; not filled. add r4,r0,r2 add r2,r0,r31 L179_LF5: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183_LF5 nop; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179_LF5 nop; not filled. L177_LF5: add r1,r0,r3 L182_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17_LF5: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18_LF5: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19_LF5: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20_LF5: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21_LF5: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22_LF5: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23_LF5: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24_LF5: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25_LF5: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26_LF5: .ascii "About to load %s\n\000" .align 2 LC27_LF5: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28_LF5: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29_LF5: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30_LF5: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31_LF5: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32_LF5: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#728; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF5 nop; not filled. L187_LF5: addi r29,r29,#-8 lhi r13,((LC17_LF5)>>16)&0xffff addui r13,r13,(LC17_LF5)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L186_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188_LF5 nop; not filled. L189_LF5: addi r29,r29,#-24 lhi r13,((LC18_LF5)>>16)&0xffff addui r13,r13,(LC18_LF5)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop; not filled. addi r29,r29,#24 L188_LF5: lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC19_LF5)>>16)&0xffff addui r13,r13,(LC19_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L190_LF5: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194_LF5 nop; not filled. L195_LF5: addi r29,r29,#-8 lhi r13,((LC20_LF5)>>16)&0xffff addui r13,r13,(LC20_LF5)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L194_LF5: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197_LF5 nop; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197_LF5: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199_LF5 nop; not filled. L200_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC21_LF5)>>16)&0xffff addui r13,r13,(LC21_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L199_LF5: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202_LF5 nop; not filled. L203_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC22_LF5)>>16)&0xffff addui r13,r13,(LC22_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L202_LF5: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC23_LF5)>>16)&0xffff addui r13,r13,(LC23_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L204_LF5: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC24_LF5)>>16)&0xffff addui r13,r13,(LC24_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L205_LF5: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206_LF5 nop; not filled. L207_LF5: addi r29,r29,#-24 lhi r13,((LC25_LF5)>>16)&0xffff addui r13,r13,(LC25_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 L206_LF5: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209_LF5 nop; not filled. L210_LF5: addi r29,r29,#-8 lhi r13,((LC26_LF5)>>16)&0xffff addui r13,r13,(LC26_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L209_LF5: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211_LF5 nop; not filled. lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217_LF5 nop; not filled. add r3,r0,r6 L219_LF5: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219_LF5 nop; not filled. L217_LF5: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268_LF5 nop; not filled. L211_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222_LF5 nop; not filled. L223_LF5: addi r29,r29,#-16 lhi r13,((LC27_LF5)>>16)&0xffff addui r13,r13,(LC27_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L222_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224_LF5 nop; not filled. L225_LF5: addi r29,r29,#-16 lhi r13,((LC28_LF5)>>16)&0xffff addui r13,r13,(LC28_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L224_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226_LF5 nop; not filled. L227_LF5: addi r29,r29,#-16 lhi r13,((LC29_LF5)>>16)&0xffff addui r13,r13,(LC29_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L226_LF5: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228_LF5: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231_LF5 nop; not filled. L232_LF5: addi r29,r29,#-16 lhi r13,((LC30_LF5)>>16)&0xffff addui r13,r13,(LC30_LF5)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L231_LF5: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 j L228_LF5 nop; not filled. L229_LF5: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r10 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r13,r0,#0 sw (r1),r13 L234_LF5: lhi r3,((_location53_LF5)>>16)&0xffff addui r3,r3,(_location53_LF5)&0xffff lw r4,(r3) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236_LF5 nop; not filled. sgti r1,r4,#98 beqz r1,L235_LF5 nop; not filled. L236_LF5: addi r3,r0,#0 j L233_LF5 nop; not filled. L269_LF5: addi r1,r2,#1 sw (r3),r1 j L238_LF5 nop; not filled. L235_LF5: slei r1,r4,#99 beqz r1,L238_LF5 nop; not filled. add r5,r0,r2 L240_LF5: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269_LF5 nop; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240_LF5 nop; not filled. L238_LF5: add r3,r0,r4 L233_LF5: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53_LF5)>>16)&0xffff addui r4,r4,(_location53_LF5)&0xffff lhi r11,((_str52_LF5)>>16)&0xffff addui r11,r11,(_str52_LF5)&0xffff add r10,r0,r2 addi r5,r30,#4 L243_LF5: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249_LF5 nop; not filled. sgti r1,r31,#98 beqz r1,L248_LF5 nop; not filled. L249_LF5: addi r3,r0,#0 j L246_LF5 nop; not filled. L270_LF5: addi r1,r3,#1 sw (r4),r1 j L251_LF5 nop; not filled. L248_LF5: slei r1,r31,#99 beqz r1,L251_LF5 nop; not filled. add r2,r0,r3 L253_LF5: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270_LF5 nop; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253_LF5 nop; not filled. L251_LF5: add r3,r0,r31 L246_LF5: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244_LF5 nop; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243_LF5 nop; not filled. L244_LF5: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257_LF5 nop; not filled. L208_LF5: lhi r13,((_ProcessExit_LF5)>>16)&0xffff addui r13,r13,(_ProcessExit_LF5)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257_LF5: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r3,((_runQueue_LF5)>>16)&0xffff addui r3,r3,(_runQueue_LF5)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264_LF5 nop; not filled. L265_LF5: addi r29,r29,#-16 lhi r13,((LC31_LF5)>>16)&0xffff addui r13,r13,(LC31_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L264_LF5: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266_LF5 nop; not filled. L267_LF5: addi r29,r29,#-8 lhi r13,((LC32_LF5)>>16)&0xffff addui r13,r13,(LC32_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L266_LF5: lhi r13,((_pcbs_LF5)>>16)&0xffff addui r13,r13,(_pcbs_LF5)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33_LF5: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34_LF5: .ascii "File descriptor is now %d.\n\000" .align 2 LC35_LF5: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36_LF5: .ascii "start:\000" .align 2 LC37_LF5: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#168; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L281_LF5: addi r29,r29,#-16 lhi r12,((LC33_LF5)>>16)&0xffff addui r12,r12,(LC33_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 j L288_LF5 nop; not filled. L279_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282_LF5 nop; not filled. L283_LF5: addi r29,r29,#-8 lhi r12,((LC34_LF5)>>16)&0xffff addui r12,r12,(LC34_LF5)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L282_LF5: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285_LF5 nop; not filled. L286_LF5: addi r29,r29,#-16 lhi r12,((LC35_LF5)>>16)&0xffff addui r12,r12,(LC35_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L285_LF5: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278_LF5 nop; not filled. L284_LF5: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36_LF5)>>16)&0xffff addui r1,r1,(LC36_LF5)&0xffff sw 4(r29),r1 jal _dstrstr nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L289_LF5: addi r29,r29,#-8 lhi r12,((LC37_LF5)>>16)&0xffff addui r12,r12,(LC37_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L288_LF5: addi r1,r0,#-1 j L278_LF5 nop; not filled. L287_LF5: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. add r1,r0,r3 addi r29,r29,#16 L278_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38_LF5: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39_LF5: .ascii " terminated at %d.\n\000" .align 2 LC40_LF5: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41_LF5: .ascii "New address is 0x%x.\n\000" .align 2 LC42_LF5: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#272; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292_LF5 nop; not filled. addi r2,r0,#200 L292_LF5: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293_LF5 nop; not filled. addi r1,r0,#0 j L347_LF5 nop; not filled. L293_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294_LF5 nop; not filled. L295_LF5: addi r29,r29,#-16 lhi r12,((LC38_LF5)>>16)&0xffff addui r12,r12,(LC38_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop; not filled. addi r29,r29,#16 L294_LF5: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350_LF5 nop; not filled. L296_LF5: addi r2,r2,#-1 addi r5,r5,#-1 L350_LF5: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296_LF5 nop; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300_LF5 nop; not filled. L301_LF5: addi r29,r29,#-8 lhi r12,((LC39_LF5)>>16)&0xffff addui r12,r12,(LC39_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop; not filled. addi r29,r29,#8 L300_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302_LF5 nop; not filled. L303_LF5: addi r29,r29,#-8 lhi r12,((LC40_LF5)>>16)&0xffff addui r12,r12,(LC40_LF5)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L302_LF5: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304_LF5: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349_LF5 nop; not filled. sgti r1,r5,#0 bnez r1,L305_LF5 nop; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308_LF5 nop; not filled. L311_LF5: addi r29,r29,#-8 lhi r12,((LC41_LF5)>>16)&0xffff addui r12,r12,(LC41_LF5)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L308_LF5: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305_LF5 nop; not filled. L349_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315_LF5: lw r1,-220(r30) j L351_LF5 nop; not filled. L318_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351_LF5: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318_LF5 nop; not filled. seqi r1,r31,#9 bnez r1,L318_LF5 nop; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320_LF5 nop; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304_LF5 nop; not filled. L320_LF5: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326_LF5 nop; not filled. snei r1,r3,#65 bnez r1,L325_LF5 nop; not filled. L326_LF5: addi r2,r0,#1 L325_LF5: snei r1,r2,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329_LF5 nop; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329_LF5 nop; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328_LF5 nop; not filled. L329_LF5: addi r3,r0,#1 L328_LF5: snei r1,r3,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331_LF5 nop; not filled. add r4,r0,r31 j L330_LF5 nop; not filled. L331_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333_LF5 nop; not filled. addi r4,r2,#-87 j L330_LF5 nop; not filled. L333_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330_LF5 nop; not filled. addi r4,r3,#-55 L330_LF5: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338_LF5 nop; not filled. add r2,r0,r31 j L337_LF5 nop; not filled. L338_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340_LF5 nop; not filled. addi r2,r2,#-87 j L337_LF5 nop; not filled. L340_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337_LF5 nop; not filled. addi r2,r3,#-55 L337_LF5: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315_LF5 nop; not filled. L305_LF5: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345_LF5 nop; not filled. L346_LF5: addi r29,r29,#-16 lhi r12,((LC42_LF5)>>16)&0xffff addui r12,r12,(LC42_LF5)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L345_LF5: add r1,r0,r5 L347_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64_LF5: .space 120 .align 2 LC43_LF5: .ascii "Got %d arguments.\n\000" .align 2 LC44_LF5: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC45_LF5: .ascii "Argument count is %d.\n\000" .align 2 LC46_LF5: .ascii "Argument %d is %s.\n\000" .align 2 LC47_LF5: .ascii "Converted %s to %d=%s\n\000" _buf65_LF5: .space 200 .align 2 LC48_LF5: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC49_LF5: .ascii "Option %s not recognized.\n\000" .align 2 LC50_LF5: .ascii "About to initialize queues.\n\000" .align 2 LC51_LF5: .ascii "After initializing queues.\n\000" .align 2 LC52_LF5: .ascii "After initializing memory.\n\000" .align 2 LC53_LF5: .ascii "After initializing processes.\n\000" .align 2 LC54_LF5: .ascii "After initializing synchronization tools.\n\000" .align 2 LC55_LF5: .ascii "After initializing keyboard.\n\000" .align 2 LC56_LF5: .ascii "vm\000" .align 2 LC57_LF5: .ascii "VM Descriptor is %d\n\000" .align 2 LC58_LF5: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC59_LF5: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#200; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb 1(r1),r21 jal _MyFuncRetZero nop; not filled. addi r29,r29,#-8 lhi r21,((LC43_LF5)>>16)&0xffff addui r21,r21,(LC43_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. jal _MemoryGetSize nop; not filled. addi r29,r29,#-8 lhi r21,((LC44_LF5)>>16)&0xffff addui r21,r21,(LC44_LF5)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop; not filled. lhi r21,((LC45_LF5)>>16)&0xffff addui r21,r21,(LC45_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354_LF5 nop; not filled. add r2,r0,r20 L356_LF5: addi r29,r29,#-16 lhi r21,((LC46_LF5)>>16)&0xffff addui r21,r21,(LC46_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356_LF5 nop; not filled. L354_LF5: jal _FsModuleInit nop; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359_LF5 nop; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65_LF5)>>16)&0xffff addui r15,r15,(_buf65_LF5)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361_LF5: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360_LF5 nop; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366_LF5 nop; not filled. sgti r1,r2,#102 bnez r1,L378_LF5 nop; not filled. seqi r1,r2,#68 beqz r1,L376_LF5 nop; not filled. j L364_LF5 nop; not filled. L378_LF5: seqi r1,r2,#105 bnez r1,L365_LF5 nop; not filled. seqi r1,r2,#117 beqz r1,L376_LF5 nop; not filled. j L375_LF5 nop; not filled. L364_LF5: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop; not filled. j L411_LF5 nop; not filled. L365_LF5: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop; not filled. lhi r21,((LC47_LF5)>>16)&0xffff addui r21,r21,(LC47_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 j L363_LF5 nop; not filled. L366_LF5: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r10,r0,r1 lhi r21,((LC27_LF5)>>16)&0xffff addui r21,r21,(LC27_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop; not filled. lhi r21,((LC28_LF5)>>16)&0xffff addui r21,r21,(LC28_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop; not filled. lhi r21,((LC29_LF5)>>16)&0xffff addui r21,r21,(LC29_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop; not filled. addi r29,r29,#24 lhi r11,((_buf65_LF5+3)>>16)&0xffff addui r11,r11,(_buf65_LF5+3)&0xffff L367_LF5: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65_LF5)>>16)&0xffff addui r21,r21,(_buf65_LF5)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368_LF5 nop; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367_LF5 nop; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373_LF5: addi r29,r29,#-24 lhi r21,((LC48_LF5)>>16)&0xffff addui r21,r21,(LC48_LF5)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373_LF5 nop; not filled. j L367_LF5 nop; not filled. L368_LF5: addi r29,r29,#-8 sw (r29),r10 jal _close nop; not filled. j L411_LF5 nop; not filled. L375_LF5: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363_LF5 nop; not filled. L376_LF5: addi r29,r29,#-8 lhi r21,((LC49_LF5)>>16)&0xffff addui r21,r21,(LC49_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop; not filled. L411_LF5: addi r29,r29,#8 L363_LF5: snei r1,r16,#0 bnez r1,L359_LF5 nop; not filled. L360_LF5: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361_LF5 nop; not filled. L359_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381_LF5 nop; not filled. L382_LF5: addi r29,r29,#-8 lhi r21,((LC50_LF5)>>16)&0xffff addui r21,r21,(LC50_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L381_LF5: jal _QueueModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383_LF5 nop; not filled. L384_LF5: addi r29,r29,#-8 lhi r21,((LC51_LF5)>>16)&0xffff addui r21,r21,(LC51_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L383_LF5: jal _MemoryModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385_LF5 nop; not filled. L386_LF5: addi r29,r29,#-8 lhi r21,((LC52_LF5)>>16)&0xffff addui r21,r21,(LC52_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L385_LF5: jal _ProcessModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387_LF5 nop; not filled. L388_LF5: addi r29,r29,#-8 lhi r21,((LC53_LF5)>>16)&0xffff addui r21,r21,(LC53_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L387_LF5: jal _SynchModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389_LF5 nop; not filled. L390_LF5: addi r29,r29,#-8 lhi r21,((LC54_LF5)>>16)&0xffff addui r21,r21,(LC54_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L389_LF5: jal _KbdModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391_LF5 nop; not filled. L392_LF5: addi r29,r29,#-8 lhi r21,((LC55_LF5)>>16)&0xffff addui r21,r21,(LC55_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L391_LF5: addi r2,r30,#-128 addi r3,r30,#-29 L396_LF5: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396_LF5 nop; not filled. addi r29,r29,#-8 lhi r21,((LC56_LF5)>>16)&0xffff addui r21,r21,(LC56_LF5)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398_LF5 nop; not filled. L399_LF5: addi r29,r29,#-8 lhi r21,((LC57_LF5)>>16)&0xffff addui r21,r21,(LC57_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L398_LF5: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop; not filled. sw (r29),r9 jal _FsClose nop; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400_LF5 nop; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402_LF5 nop; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406_LF5: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402_LF5 nop; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406_LF5 nop; not filled. L402_LF5: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop; not filled. addi r29,r29,#48 L400_LF5: jal _SysprocCreateProcesses nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407_LF5 nop; not filled. L408_LF5: addi r29,r29,#-8 lhi r21,((LC58_LF5)>>16)&0xffff addui r21,r21,(LC58_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L407_LF5: addi r29,r29,#-8 lhi r3,((_processQuantum_LF5)>>16)&0xffff addui r3,r3,(_processQuantum_LF5)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409_LF5 nop; not filled. L410_LF5: addi r29,r29,#-8 lhi r21,((LC59_LF5)>>16)&0xffff addui r21,r21,(LC59_LF5)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L409_LF5: jal _intrreturn nop; not filled. jal _exitsim nop; not filled. jal _exit nop .endproc _main .data .align 2 LC61_LF5: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,((LC61_LF5)>>16)&0xffff addui r1,r1,(LC61_LF5)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1032; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420_LF5 nop; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422_LF5: addi r2,r0,#0 add r3,r4,r5 L423_LF5: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423_LF5 nop; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422_LF5 nop; not filled. L420_LF5: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _ProcessSchedule nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs_LF5: .space 12 .align 2 _runQueue_LF5: .space 12 .align 2 _waitQueue_LF5: .space 12 .align 2 _zombieQueue_LF5: .space 12 .align 2 _pcbs_LF5: .space 3840 .text .align 2 .proc _ProcessExit_LF5 _ProcessExit_LF5: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _exit nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit_LF5 ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF6 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF6 nop; not filled. L6_LF6: addi r31,r0,#1 L5_LF6: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF6 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF6 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF6 nop; not filled. L12_LF6: addi r2,r0,#1 L11_LF6: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF6 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF6: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF6: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool_LF6)>>16)&0xffff addui r2,r2,(_linkpool_LF6)&0xffff L63_LF6: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF6 nop; not filled. L65_LF6: addi r29,r29,#-8 lhi r5,((LC0_LF6)>>16)&0xffff addui r5,r5,(LC0_LF6)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L64_LF6: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63_LF6 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1_LF6: .ascii "%s: %s\n\000" .align 2 LC2_LF6: .ascii "QueueFreeLink\000" .align 2 LC3_LF6: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC2_LF6)>>16)&0xffff addui r1,r1,(LC2_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC3_LF6)>>16)&0xffff addui r4,r4,(LC3_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L77_LF6: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4_LF6: .ascii "QueueAllocLink\000" .align 2 LC5_LF6: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92_LF6 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97_LF6 nop; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97_LF6: addi r4,r0,#0 sw (r3),r4 j L98_LF6 nop; not filled. L92_LF6: addi r3,r0,#0 L98_LF6: snei r1,r3,#0 bnez r1,L100_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC4_LF6)>>16)&0xffff addui r1,r1,(LC4_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC5_LF6)>>16)&0xffff addui r4,r4,(LC5_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L100_LF6: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool_LF6: .space 6400 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF7 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF7 nop; not filled. L6_LF7: addi r31,r0,#1 L5_LF7: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF7 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF7 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF7 nop; not filled. L12_LF7: addi r2,r0,#1 L11_LF7: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF7 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF7: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF7: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1_LF7: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF7 nop; not filled. L53_LF7: addi r29,r29,#-8 lhi r3,((LC0_LF7)>>16)&0xffff addui r3,r3,(LC0_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L52_LF7: lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff addi r2,r31,#620 L57_LF7: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57_LF7 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59_LF7 nop; not filled. L60_LF7: addi r29,r29,#-8 lhi r3,((LC1_LF7)>>16)&0xffff addui r3,r3,(LC1_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L59_LF7: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff L79_LF7: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86_LF7 nop; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79_LF7 nop; not filled. L77_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83_LF7 nop; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems_LF7)>>16)&0xffff addui r5,r5,(_sems_LF7)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85_LF7 nop; not filled. L86_LF7: addi r5,r0,#1 sw 16(r31),r5 j L77_LF7 nop; not filled. L83_LF7: addi r1,r0,#-1 L85_LF7: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2_LF7: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3_LF7: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4_LF7: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89_LF7 nop; not filled. L90_LF7: addi r29,r29,#-8 lhi r7,((LC2_LF7)>>16)&0xffff addui r7,r7,(LC2_LF7)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L89_LF7: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF7 nop; not filled. L92_LF7: addi r29,r29,#-16 lhi r7,((LC3_LF7)>>16)&0xffff addui r7,r7,(LC3_LF7)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 L91_LF7: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93_LF7 nop; not filled. jal _QueueAllocLink nop; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95_LF7 nop; not filled. L96_LF7: addi r29,r29,#-8 lhi r7,((LC4_LF7)>>16)&0xffff addui r7,r7,(LC4_LF7)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L95_LF7: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop; not filled. L93_LF7: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105_LF7 nop; not filled. L107_LF7: addi r1,r0,#1 j L105_LF7 nop; not filled. L106_LF7: addi r1,r0,#1 L105_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5_LF7: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6_LF7: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF7 nop; not filled. L113_LF7: addi r29,r29,#-16 lhi r5,((LC5_LF7)>>16)&0xffff addui r5,r5,(LC5_LF7)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L112_LF7: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114_LF7 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117_LF7 nop; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117_LF7: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118_LF7 nop; not filled. L119_LF7: addi r29,r29,#-8 lhi r5,((LC6_LF7)>>16)&0xffff addui r5,r5,(LC6_LF7)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L118_LF7: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop; not filled. sw (r29),r3 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 L114_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125_LF7 nop; not filled. L127_LF7: addi r1,r0,#1 j L125_LF7 nop; not filled. L126_LF7: addi r1,r0,#1 L125_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems_LF7: .space 640 ; Compiled by GCC .align 2 _rcsid_LF8: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF8 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF8 nop; not filled. L6_LF8: addi r31,r0,#1 L5_LF8: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF8 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF8 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF8 nop; not filled. L12_LF8: addi r2,r0,#1 L11_LF8: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF8 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF8: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0_LF8: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler_LF8 _TrapProcessCreateHandler_LF8: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1696; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65_LF8: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65_LF8 nop; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68_LF8: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73_LF8 nop; not filled. j L68_LF8 nop; not filled. L67_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop; not filled. addi r29,r29,#16 L73_LF8: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74_LF8 nop; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85_LF8: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86_LF8 nop; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80_LF8: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80_LF8 nop; not filled. L77_LF8: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86_LF8 nop; not filled. j L85_LF8 nop; not filled. L74_LF8: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93_LF8: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92_LF8 nop; not filled. addi r29,r29,#-8 lhi r12,((LC0_LF8)>>16)&0xffff addui r12,r12,(LC0_LF8)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L92_LF8: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93_LF8 nop; not filled. L86_LF8: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler_LF8 .align 2 .proc _TrapPrintfHandler_LF8 _TrapPrintfHandler_LF8: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#208; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96_LF8: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101_LF8 nop; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101_LF8 nop; not filled. j L96_LF8 nop; not filled. L95_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop; not filled. addi r29,r29,#16 L101_LF8: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103_LF8 nop; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105_LF8: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104_LF8 nop; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107_LF8 nop; not filled. addi r3,r3,#1 j L104_LF8 nop; not filled. L107_LF8: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110_LF8: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109_LF8 nop; not filled. seqi r1,r2,#108 bnez r1,L110_LF8 nop; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116_LF8 nop; not filled. seqi r1,r2,#101 beqz r1,L115_LF8 nop; not filled. L116_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109_LF8 nop; not filled. L115_LF8: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110_LF8 nop; not filled. L109_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104_LF8: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105_LF8 nop; not filled. L103_LF8: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler_LF8 .data .align 2 LC1_LF8: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2_LF8: .ascii "Got a context switch trap!\n\000" .align 2 LC3_LF8: .ascii "Got an exit trap!\n\000" .align 2 LC4_LF8: .ascii "Got a fork trap!\n\000" .align 2 LC5_LF8: .ascii "Got a process sleep trap!\n\000" .align 2 LC6_LF8: .ascii "Got a printf trap!\n\000" .align 2 LC7_LF8: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8_LF8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9_LF8: .ascii "Got a timer interrupt!\n\000" .align 2 LC10_LF8: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11_LF8: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC12_LF8: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC13_LF8: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#88; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122_LF8 nop; not filled. L123_LF8: addi r29,r29,#-24 lhi r7,((LC1_LF8)>>16)&0xffff addui r7,r7,(LC1_LF8)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L122_LF8: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124_LF8 nop; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126_LF8 nop; not filled. sgtui r1,r2,#1024 bnez r1,L177_LF8 nop; not filled. seqi r1,r2,#530 bnez r1,L158_LF8 nop; not filled. sgtui r1,r2,#530 bnez r1,L178_LF8 nop; not filled. seqi r1,r2,#528 bnez r1,L149_LF8 nop; not filled. sgtui r1,r2,#528 bnez r1,L152_LF8 nop; not filled. seqi r1,r2,#513 beqz r1,L175_LF8 nop; not filled. j L138_LF8 nop; not filled. L178_LF8: seqi r1,r2,#532 bnez r1,L146_LF8 nop; not filled. sltui r1,r2,#532 bnez r1,L141_LF8 nop; not filled. seqi r1,r2,#768 beqz r1,L175_LF8 nop; not filled. j L129_LF8 nop; not filled. L177_LF8: seqi r1,r2,#1074 bnez r1,L162_LF8 nop; not filled. sgtui r1,r2,#1074 bnez r1,L179_LF8 nop; not filled. seqi r1,r2,#1072 bnez r1,L132_LF8 nop; not filled. sgtui r1,r2,#1072 bnez r1,L161_LF8 nop; not filled. seqi r1,r2,#1040 beqz r1,L175_LF8 nop; not filled. j L135_LF8 nop; not filled. L179_LF8: seqi r1,r2,#1105 bnez r1,L167_LF8 nop; not filled. sgtui r1,r2,#1105 bnez r1,L180_LF8 nop; not filled. seqi r1,r2,#1104 beqz r1,L175_LF8 nop; not filled. j L163_LF8 nop; not filled. L180_LF8: seqi r1,r2,#1106 bnez r1,L171_LF8 nop; not filled. seqi r1,r2,#1408 beqz r1,L175_LF8 nop; not filled. j L155_LF8 nop; not filled. L126_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184_LF8 nop; not filled. L128_LF8: addi r29,r29,#-8 lhi r7,((LC2_LF8)>>16)&0xffff addui r7,r7,(LC2_LF8)&0xffff j L206_LF8 nop; not filled. L129_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF8 nop; not filled. L131_LF8: addi r29,r29,#-8 lhi r7,((LC3_LF8)>>16)&0xffff addui r7,r7,(LC3_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L130_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L201_LF8 nop; not filled. L132_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L134_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L181_LF8 nop; not filled. L134_LF8: addi r29,r29,#-8 lhi r7,((LC4_LF8)>>16)&0xffff addui r7,r7,(LC4_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. j L201_LF8 nop; not filled. L135_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L137_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L136_LF8 nop; not filled. L137_LF8: addi r29,r29,#-8 lhi r7,((LC5_LF8)>>16)&0xffff addui r7,r7,(LC5_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L136_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop; not filled. jal _ProcessSchedule nop; not filled. j L201_LF8 nop; not filled. L138_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L140_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L139_LF8 nop; not filled. L140_LF8: addi r29,r29,#-8 lhi r7,((LC6_LF8)>>16)&0xffff addui r7,r7,(LC6_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L139_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler_LF8 nop; not filled. j L201_LF8 nop; not filled. L141_LF8: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L142_LF8 nop; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L143_LF8 nop; not filled. L142_LF8: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L143_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop; not filled. addi r29,r29,#-8 lhi r7,((LC7_LF8)>>16)&0xffff addui r7,r7,(LC7_LF8)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L146_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L149_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L152_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L155_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L158_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L161_LF8: jal _GetCurrentPid nop; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L162_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler_LF8 nop; not filled. j L201_LF8 nop; not filled. L163_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L165_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L202_LF8 nop; not filled. L165_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L202_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L167_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L169_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L203_LF8 nop; not filled. L169_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L203_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L171_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L173_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L204_LF8 nop; not filled. L173_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L204_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L175_LF8: addi r29,r29,#-8 lhi r7,((LC8_LF8)>>16)&0xffff addui r7,r7,(LC8_LF8)&0xffff j L205_LF8 nop; not filled. L124_LF8: seqi r1,r2,#3 bnez r1,L191_LF8 nop; not filled. sgtui r1,r2,#3 bnez r1,L197_LF8 nop; not filled. seqi r1,r2,#1 bnez r1,L193_LF8 nop; not filled. seqi r1,r2,#2 beqz r1,L195_LF8 nop; not filled. j L192_LF8 nop; not filled. L197_LF8: seqi r1,r2,#64 bnez r1,L183_LF8 nop; not filled. sgtui r1,r2,#64 bnez r1,L198_LF8 nop; not filled. seqi r1,r2,#32 beqz r1,L195_LF8 nop; not filled. j L194_LF8 nop; not filled. L198_LF8: seqi r1,r2,#72 beqz r1,L195_LF8 nop; not filled. j L186_LF8 nop; not filled. L183_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L185_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184_LF8 nop; not filled. L185_LF8: addi r29,r29,#-8 lhi r7,((LC9_LF8)>>16)&0xffff addui r7,r7,(LC9_LF8)&0xffff L206_LF8: sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L184_LF8: jal _ProcessSchedule nop; not filled. j L181_LF8 nop; not filled. L186_LF8: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L187_LF8: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10_LF8)>>16)&0xffff addui r7,r7,(LC10_LF8)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L181_LF8 nop; not filled. j L187_LF8 nop; not filled. L191_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L201_LF8 nop; not filled. L192_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L201_LF8 nop; not filled. L193_LF8: addi r29,r29,#-16 lhi r7,((LC11_LF8)>>16)&0xffff addui r7,r7,(LC11_LF8)&0xffff sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#16 j L181_LF8 nop; not filled. L194_LF8: jal _PageFaultHandler nop; not filled. j L181_LF8 nop; not filled. L195_LF8: addi r29,r29,#-8 lhi r7,((LC12_LF8)>>16)&0xffff addui r7,r7,(LC12_LF8)&0xffff L205_LF8: sw (r29),r7 sw 4(r29),r2 jal _printf nop; not filled. jal _exitsim nop; not filled. L201_LF8: addi r29,r29,#8 L181_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199_LF8 nop; not filled. L200_LF8: addi r29,r29,#-8 lhi r7,((LC13_LF8)>>16)&0xffff addui r7,r7,(LC13_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L199_LF8: jal _intrreturn nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF9 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF9 nop; not filled. L6_LF9: addi r31,r0,#1 L5_LF9: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF9 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF9 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF9 nop; not filled. L12_LF9: addi r2,r0,#1 L11_LF9: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF9 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF9: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF9: .ascii "Process #\000" .align 2 LC1_LF9: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething_LF9 _doSomething_LF9: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#120; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52_LF9 nop; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56_LF9: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0_LF9)>>16)&0xffff addui r8,r8,(LC0_LF9)&0xffff sw 4(r29),r8 jal _dstrcpy nop; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop; not filled. addi r29,r29,#-8 lhi r8,((_doSomething_LF9)>>16)&0xffff addui r8,r8,(_doSomething_LF9)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56_LF9 nop; not filled. L52_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59_LF9 nop; not filled. addi r5,r0,#1000 add r4,r0,r2 L61_LF9: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62_LF9 nop; not filled. addi r29,r29,#-16 lhi r8,((LC1_LF9)>>16)&0xffff addui r8,r8,(LC1_LF9)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 L62_LF9: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61_LF9 nop; not filled. L59_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething_LF9 .data .align 2 LC2_LF9: .ascii "chasetail\000" .align 2 LC3_LF9: .ascii "Chasing tail %d.\n\000" .align 2 LC4_LF9: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5_LF9: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail_LF9 _chaseTail_LF9: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2_LF9)>>16)&0xffff addui r3,r3,(LC2_LF9)&0xffff addi r29,r29,#-8 lhi r5,((LC3_LF9)>>16)&0xffff addui r5,r5,(LC3_LF9)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop; not filled. addi r29,r29,#-8 lhi r5,((LC4_LF9)>>16)&0xffff addui r5,r5,(LC4_LF9)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67_LF9 nop; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail_LF9)>>16)&0xffff addui r5,r5,(_chaseTail_LF9)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5_LF9)>>16)&0xffff addui r5,r5,(LC5_LF9)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop; not filled. addi r29,r29,#16 L67_LF9: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail_LF9 .data .align 2 LC6_LF9: .ascii "%d \000" .align 2 LC7_LF9: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems_LF9)>>16)&0xffff addui r2,r2,(_mysems_LF9)&0xffff addi r3,r2,#180 L90_LF9: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90_LF9 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems_LF9: .space 200 ;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8 ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .text .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two sets of traps here. The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 .proc _open .global _open _open: trap #0x2013 jr r31 nop .endproc _open .proc _close .global _close _close: trap #0x2014 jr r31 nop .endproc _close .proc _read .global _read _read: trap #0x2010 jr r31 nop .endproc _read .proc _write .global _write _write: trap #0x2011 jr r31 nop .endproc _write .proc _lseek .global _lseek _lseek: trap #0x2012 jr r31 nop .endproc _lseek ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two exit traps. The first, _exitsim, actually exits the ;;; simulator. The second, _exit, simply calls a regular trap in the ;;; DLX simulator, and would be suitable for a user program that wants ;;; to signal the OS that it's exiting. ;;; ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and ;;; programs run without an OS - should call exitsim() rather than just ;;; falling through to exit. ;;; .align 2 .proc _exitsim .global _exitsim _exitsim: trap #0x2f00 jr r31 nop .endproc _exitsim .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .proc _printf .global _printf _printf: trap #0x2001 jr r31 nop .endproc _printf .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/misc.h

// // Routines used by the entire operating system. // #ifndef _misc_h_ #define _misc_h_ extern char* dstrcpy(char*, const char*); extern char* dstrncpy(char*, const char*, int n); extern const char *dstrstr (const char *, const char *); extern int dstrlen (const char *); extern int dstrncmp (const char *, const char *, int); extern int dstrtol(char*, char**, int); extern const char* dindex(const char*, int); extern const char* dmindex(const char*, const char *); inline int isspace (char c) { return ((c == ' ') || (c == '\t') || (c == '\n')); } inline int isxdigit (char c) { return (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) || ((c >= 'A') && (c <= 'A'))); } #endif // !_misc_h_

home/bshapir/cs314/project4/option1/lab4_1/src/errors

home/bshapir/cs314/project4/option1/lab4_1/src/userprog2.o

; Compiled by GCC .data .align 2 LC0: .ascii "\n in Userprog2, Sum : %d\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal ___main nop ; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#12 bnez r1,L16 nop ; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#32768 or r2,r31,r4 L21: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

home/bshapir/cs314/project4/option1/lab4_1/src/userprog.c

#include "lab4.h" main(int argc, char *argv[]) { int TestcaseId=0; switch(argc) { case 2: TestcaseId=dstrtol(argv[1],NULL,10); Printf("\nTesting case %d\n",TestcaseId); break; default: Printf("\nUsage: "); Printf(argv[0]); Printf(" [case id]\n\n"); exit(); } switch(TestcaseId) { case 1: process_create("userprog1.dlx.obj",NULL); break; case 2: process_create("userprog2.dlx.obj",NULL); break; default: Printf("Test case %d not supported\n", TestcaseId); break; } }

home/bshapir/cs314/project4/option1/lab4_1/src/traps.h

// // dlxtraps.h // // Traps used by the DLX simulator. These traps have to be handled by the // operating system. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: traps.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _dlxtraps_h_ #define _dlxtraps_h_ #define TRAP_ILLEGALINST 0x1 // Illegal instruction #define TRAP_ADDRESS 0x2 // Bad address #define TRAP_ACCESS 0x3 // Attempted to access illegal memory #define TRAP_OVERFLOW 0x4 // Math overflow #define TRAP_DIV0 0x5 // Divide by 0 #define TRAP_PRIVILEGE 0x6 // Instruction must be executed as sys #define TRAP_FORMAT 0x7 // Instruction is malformed #define TRAP_PAGEFAULT 0x20 #define TRAP_TLBFAULT 0x30 #define TRAP_TIMER 0x40 // timer interrupt #define TRAP_KBD 0x48 // keyboard interrupt // This bit is set in CAUSE if the interrupt was a trap instruction #define TRAP_TRAP_INSTR 0x08000000 // The following traps are all defined in the basic traps library. To // call TRAP_READ, use a Read() call from a user-level program. This applies // to every trap except EXIT, which is called via exit() [no uppercase]. #define TRAP_PRINTF 0x201 #define TRAP_READ 0x210 #define TRAP_WRITE 0x211 #define TRAP_LSEEK 0x212 #define TRAP_SEEK TRAP_LSEEK // SEEK and LSEEK are synonyms #define TRAP_OPEN 0x213 #define TRAP_CLOSE 0x214 #define TRAP_DELETE 0x580 #define TRAP_EXIT 0x300 // Following are user-defined traps. Traps should be in the range // 0x400 - 0xfff #define TRAP_CONTEXT_SWITCH 0x400 //#define TRAP_SEM_WAIT 0x401 //#define TRAP_SEM_SIGNAL 0x402 #define TRAP_PROCESS_SLEEP 0x410 #define TRAP_PROCESS_WAKEUP 0x420 #define TRAP_PROCESS_FORK 0x430 #define TRAP_PROCESS_GETPID 0x431 #define TRAP_PROCESS_CREATE 0x432 #define TRAP_SEM_CREATE 0x450 #define TRAP_SEM_WAIT 0x451 #define TRAP_SEM_SIGNAL 0x452 // The following are special I/O addresses for DLX. #define DLX_TIMER_ADDRESS 0xfff00010 #define DLX_KBD_PUTCHAR 0xfff00100 #define DLX_KBD_NCHARSOUT 0xfff00120 #define DLX_KBD_GETCHAR 0xfff00180 #define DLX_KBD_NCHARSIN 0xfff001a0 #define DLX_KBD_INTR 0xfff001c0 #define TRAP_STACK_SIZE 0x800 // interrupt stack is 2K words #endif /* _dlxtraps_h_ */

home/bshapir/cs314/project4/option1/lab4_1/src/filesys.h

// // filesys.h // // Includes for the file system. Includes the definition of the file // system interface structure. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: filesys.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _filesys_h_ #define _filesys_h_ #define FS_FS_BUILTIN 1 #define FS_FS_DLXOS 2 #define FS_MODE_READ 0x1 #define FS_MODE_WRITE 0x2 #define FS_MODE_RW (FS_MODE_READ | FS_MODE_WRITE) // If this flag is set, a new file is created if no file already exists. // This flag only works with the DLX file system. #define FS_MODE_CREATE 0x4 // IMPORTANT: These must match the underlying UNIX seek parameters. // These values are correct for Linux and should work elsewhere, but // be careful.... #define FS_SEEK_SET 0 #define FS_SEEK_CUR 1 #define FS_SEEK_END 2 #define FS_BUFFER_SIZE 256 #define FS_MAX_OPEN_FILES 32 typedef struct Fs { int (*Open)(int, const char *, int); int (*Read)(int, char *, int); int (*Write)(int, char *, int); int (*Seek)(int, int, int); int (*Close)(int); int (*Delete)(const char *); } Fs; typedef struct FsUnixInfo { int fd; // Unix file descriptor } FsUnixInfo; typedef struct FsDlxInfo { int curpos; // What's our current position in the file? } FsDlxInfo; typedef struct FsOpenFile { int fs; // which file system is this file in? int flags; char buffer[FS_BUFFER_SIZE]; union { FsUnixInfo Unix; FsDlxInfo Dlx; } u; } FsOpenFile; extern int FsOpen (const char *, int); extern int FsRead (int, char *, int); extern int FsWrite (int, char *, int); extern int FsSeek (int, int, int); extern int FsClose (int); extern int FsDelete (const char *); #endif // _filesys_h_

home/bshapir/cs314/project4/option1/lab4_1/src/dlxsim.cc

home/bshapir/cs314/project4/option1/lab4_1/src/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  Copyright (c) 1999 by Ethan L. Miller
//  University of Maryland Baltimore County
//

static   char  rcsid []   =   "$Id: dlxsim.cc,v 1.2 2000/09/20 22:16:34 elm Exp elm $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   "dlx.h"

extern   int  errno ;
char     debug [ 100 ];

//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu   ( int  msize )
{
   int        i ;
   struct  timeval t ;

  flags  =   0 ;
  usElapsed  =   0.0 ;
  instrsExecuted  =   0.0 ;
  usPerInst  =   1.0 ;
   for   ( =   0 ;  i  <   32 ;  i ++ )   {
    sreg [ i ]   =   0 ;
    ireg [ i ]   =   0 ;
    freg [ i ]   =   0 ;
   }
   SetStatusBit   ( DLX_STATUS_PAGE_TABLE );
   SetStatusBit   ( DLX_STATUS_SYSMODE );
   EnableInterrupts   ();
  timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
  memSize  =  msize ;
  memory  =   new  uint32 [ msize / sizeof ( uint32 )];
  basicBlockStart  =   1 ;    // basic block can never start at address 1!
   // Initialize the keyboard I/O stuff.
  kbdbufferedchars  =   0 ;
  kbdrpos  =  kbdwpos  =   0 ;
  kbdcounter  =   0 ;
   SetupRawIo   ();
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   ( double ) t . tv_sec  +   (( double ) t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
Cpu :: TraceFile   ( char   * name )
{
   if   (( name  ==  NULL )   ||   ( ! strcmp  ( name ,   "-" )))   {
    tracefp  =  stdout ;
     return   ( 1 );
   }   else   if   (( tracefp  =  fopen  ( name ,   "w" ))   ==  NULL )   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Instruction parsing functions
//
//  These functions take an instruction and return the relevant fields.
//
//----------------------------------------------------------------------
inline
void
Cpu :: GetRFields   ( uint32 inst ,  uint32 &  src1 ,  uint32 &  src2 ,  uint32 &  dst )
{
  src1  =   ( inst  >>  DLX_RFMT_SRC1_SHIFT )   &  DLX_REG_MASK ;
  src2  =   ( inst  >>  DLX_RFMT_SRC2_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_RFMT_DST_SHIFT )   &  DLX_REG_MASK ;
}

inline
void
Cpu :: GetIFields   ( uint32 inst ,  uint32 &  src ,  uint32 &  imm ,  uint32 &  dst )
{
  src  =   ( inst  >>  DLX_IFMT_SRC_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_IFMT_DST_SHIFT )   &  DLX_REG_MASK ;
  imm  =   ( inst  >>  DLX_IFMT_IMM_SHIFT )   &   0xffff ;
}

inline
void
Cpu :: GetJFields   ( uint32 inst ,  uint32 &  jaddr )
{
  jaddr  =  inst  &   0x1ffffff ;
   if   ( jaddr  &   0x1000000 )   {
    jaddr  |=   0xfe000000 ;
   }
}

inline
void
Cpu :: SignExtend16   ( uint32 &  v )
{
   if   ( &   0x8000 )   {
    v  |=   0xffff0000 ;
   }
}

inline
void
Cpu :: SignExtend8   ( uint32 &  v )
{
   if   ( &   0x80 )   {
    v  |=   0xffffff00 ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Jump
//
//  Jump to a particular location after dealing with the delay
//  slot.  Checks to ensure that the jump address could be valid
//  (ie, is on a word boundary).  It doesn't check to ensure that
//  the jump destination is valid; that's done on the first instruction
//  fetch to follow.
//
//----------------------------------------------------------------------
inline
int
Cpu :: Jump   ( uint32 jmpDst )
{
   if   (( jmpDst  &   0x3 )   ==   0 )   {
    DBPRINTF  ( 'j' ,   "Jump from 0x%x to 0x%x.\n" ,  PC (),  jmpDst );
     OutputBasicBlock   ( jmpDst );
     SetPC   ( jmpDst );
   }   else   {
     CauseException   ( DLX_EXC_ADDRESS );
   }
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Instruction functions
//
//  These functions implement individual instructions.  They return
//  the number of instructions executed, which will either be 1 if the
//  instruction completed successfully or 0 if the instruction caused
//  an exception.
//
//  Since the instructions are pretty simple (and similar), they won't
//  be documented extensively except for the more complex ones.
//----------------------------------------------------------------------

//----------------------------------------------------------------------
//
//  Generic ALU R-R instructions
//
//----------------------------------------------------------------------
static
int
InstAdd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSub   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate arithmetic functions
//
//----------------------------------------------------------------------
static
int
InstAddi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSubi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for addui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for subui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R logical functions
//
//----------------------------------------------------------------------

static
int
InstAnd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstOr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstXor   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstSll   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  v2 );
   return   ( 1 );
}

static
int
InstSra   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  result  =  v1  >>  v2 ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  v2 )   -   1 )   <<   ( 32   -  v2 );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrl   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  v2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate logical functions
//
//----------------------------------------------------------------------
static
int
InstAndi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  imm );
   return   ( 1 );
}

static
int
InstOri   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  imm );
   return   ( 1 );
}

static
int
InstXori   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  imm );
   return   ( 1 );
}

static
int
InstSlli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  imm );
   return   ( 1 );
}

static
int
InstSrai   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  result  =  v1  >>  imm ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  imm )   -   1 )   <<   ( 32   -  imm );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  imm );
   return   ( 1 );
}

static
int
InstLhi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  dst ,  imm ;

  cpu -> GetIFields   ( inst ,  src ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  imm  <<   16 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R set instructions
//
//----------------------------------------------------------------------
static
int
InstSeq   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSne   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSgt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSle   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSge   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate set instructions
//
//----------------------------------------------------------------------
static
int
InstSeqi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSnei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Load instructions
//
//----------------------------------------------------------------------
static
int
InstLw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  DBPRINTF  ( 'l' ,   "Loading word 0x%08x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lw" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  DBPRINTF  ( 'l' , "Loading signed half 0x%04x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lh" ,  dst ,  addr ,  val );
  cpu -> SignExtend16   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLhu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xffff ;
  DBPRINTF  ( 'l' , "Loading unsigned half 0x%04x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lhu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading signed byte 0x%02x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lb" ,  dst ,  addr ,  val );
  cpu -> SignExtend8   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLbu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading unsigned byte 0x%02x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lbu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Store instructions
//
//----------------------------------------------------------------------
static
int
InstSh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   // ReadWord checks for misaligned accesses.
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffe ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xffff );
  val  &=   ~ ( 0xffff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing half 0x%04x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sh" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xff );
  val  &=   ~ ( 0xff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing byte 0x%02x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sb" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetIreg   ( dst );
  DBPRINTF  ( 's' , "Storing word 0x%08x to location 0x%x.\n" ,  val ,  addr );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sw" ,  dst ,  addr ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  FP load/store instructions
//
//----------------------------------------------------------------------
static
int
InstLf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> PutFreg   ( dst ,  val );
  cpu -> TraceAccess ( "lf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstLd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
   if   (( dst  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   if   ( !  cpu -> ReadWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  cpu -> PutFreg   ( dst ,  val1 );
  cpu -> PutFreg   ( dst + 1 , val2 );
#else
  cpu -> PutFreg   ( dst , val2 );
  cpu -> PutFreg   ( dst + 1 ,  val1 );
#endif
  DBPRINTF  ( 'f' , "Read double %lf from address %08x\n" ,  cpu -> GetFregD   ( dst ),
        addr );
  cpu -> TraceAccess ( "ld0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "ld1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

static
int
InstSf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetFreg   ( dst );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstSd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> TestWriteWord   ( addr + 4 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  val1  =  cpu -> GetFreg   ( dst );
  val2  =  cpu -> GetFreg   ( dst + 1 );
#else
  val1  =  cpu -> GetFreg   ( dst + 1 );
  val2  =  cpu -> GetFreg   ( dst );
#endif
   if   ( !  cpu -> WriteWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   // Should never fail, since write was tested earlier
   if   ( !  cpu -> WriteWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sd0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "sd1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous FP move instructions
//
//----------------------------------------------------------------------
static
int
InstMovf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   (( dst  &   0x1 )   ||   ( src1  &   0x1 ))   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
  cpu -> PutFreg   ( dst + 1 ,  cpu -> GetFreg   ( src1 + 1 ));
   return   ( 1 );
}

static
int
InstMovfp2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovi2fp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Unconditional jumps & subroutine calls
//
//----------------------------------------------------------------------
static
int
InstJmp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

static
int
InstJal   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
  DBPRINTF  ( 'j' ,   "jal from 0x%x to 0x%x.\n" ,  cpu -> PC (),
        cpu -> PC ()   +   ( int ) joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJalr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

//----------------------------------------------------------------------
//
//  Conditional branches
//
//----------------------------------------------------------------------
static
int
InstBeqz   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   ==   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBnez   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   !=   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( !  cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Integer multiply and divide (done by FP unit).  Note that
//  multiplication overflows are NOT caught, and results are
//  unpredictable (may depend on machine on which simulator is
//  run).
//
//----------------------------------------------------------------------
static
int
InstMult   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   *   ( int ) cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstMultu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   *  cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstDiv   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   /   ( int ) denom );
   }
   return   ( 1 );
}

static
int
InstDivu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  trap
//
//  NOTE: different from the description in the DLX handbook.
//
//  The trap in DLX is unvectored; it's up to the interrupt handler
//  to do the vectoring.  However, the cause register is loaded with
//  the trap argument with the top 5 bits set to 00001.  This makes
//  it easy to identify traps and to vector them properly.
//
//  The trap instruction is also a way to access services from the
//  underlying machine.  In particular, we can do such things as
//  file access and printing.  Note that character access is handled
//  separately.
//----------------------------------------------------------------------
static
int
InstTrap   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    trapVector ;

  cpu -> GetJFields   ( inst ,  trapVector );
  trapVector  &=   0x0fffffff ;
  DBPRINTF  ( 't' , "Got a trap, inst=%08x, vector=%x\n" ,  inst ,  trapVector );
   if   (( trapVector  ==  DLX_TRAP_EXIT )   &&   !  cpu -> IgnoreExit ())   {
    cpu -> Exit   ();
   }
   if   ( trapVector  <   0x2000 )   {
     // Increment the PC so the address in the IAR is that of the
     // following instruction.
    cpu -> SetPC   ( cpu -> PC () + 4 );
    cpu -> CauseException   ( trapVector  |   0x08000000 );
   }   else   {
    cpu -> OutputBasicBlock   ( cpu -> PC () + 4 );
     if   ( cpu -> Flags ()   &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
      fprintf  ( cpu -> TraceFp (),   "T %x %x\n" ,  trapVector ,  cpu -> PC ());
     }
     // Handle simulator services here.  This isn't so performance
     // critical, so we can use a switch statement.
     // Parameters are passed on the stack.
     // Return values go into r1
     switch   ( trapVector )   {
     case  DLX_TRAP_EXITSIM :
      cpu -> Exit   ();
       break ;
     case  DLX_TRAP_PRINTF :
      cpu -> Printf   ();
       break ;
     case  DLX_TRAP_OPEN :
      cpu -> Open   ();
       break ;
     case  DLX_TRAP_READ :
      cpu -> Read   ();
       break ;
     case  DLX_TRAP_WRITE :
      cpu -> Write   ();
       break ;
     case  DLX_TRAP_LSEEK :
      cpu -> Seek   ();
       break ;
     case  DLX_TRAP_CLOSE :
      cpu -> Close   ();
       break ;
     case  DLX_TRAP_RANDOM :
      cpu -> Random   ();
       break ;
     case  DLX_TRAP_SRANDOM :
      cpu -> Srandom   ();
       break ;
     case  DLX_TRAP_TIMERGET :
      cpu -> Timerget ();
       break ;
     }
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  rfe
//
//  When returning from an exception, jump to the IAR.  To avoid
//  illegal addresses, mask off the low two bits.  Also, turn
//  interrupts on.
//----------------------------------------------------------------------
static
int
InstRfe   ( uint32 inst ,   Cpu   * cpu )
{
   return   ( cpu -> DoRfe   ( inst ));
}

int
Cpu :: DoRfe   ( uint32 inst )
{
  uint32    iar ;
  uint32    isr ;

   if   ( UserMode   ())   {
     CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  iar  =   GetSreg   ( DLX_SREG_IAR )   &   ~ 0x3 ;
   OutputBasicBlock   ( iar );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "R %x %x\n" ,  PC () - 4 ,  iar );
   }
  isr  =   GetSreg   ( DLX_SREG_ISR );
   PutSreg   ( DLX_SREG_STATUS ,  isr );
   SetPC   ( iar );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous instructions
//
//----------------------------------------------------------------------
static
int
InstMovi2s   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving integer reg %d (0x%x) to special reg %d.\n" ,
        src1 ,  cpu -> GetIreg ( src1 ),  dst );
  cpu -> PutSreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovs2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving special reg %d (0x%x) to integer reg %d.\n" ,
        src1 ,  cpu -> GetSreg ( src1 ),  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetSreg   ( src1 ));
   return   ( 1 );
}

static
int
InstIllegal   ( uint32 inst ,   Cpu   * cpu )
{
  cpu -> CauseException   ( DLX_EXC_ILLEGALINST );
   return   ( 1 );
}

static
int
InstNop   ( uint32 ,   Cpu   * cpu )
{
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Single precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   +  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstSubf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   -  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstMultf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   *  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstDivf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   float  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregF   ( src2 );
   if   ( denom  ==   ( float ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Single precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   ==  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   !=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}
static
int
InstLtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   +  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstSubd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   -  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstMultd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   *  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstDivd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   double     denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregD   ( src2 );
   if   ( denom  ==   ( double ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregD   ( dst ,  cpu -> GetFregD ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   ==  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   !=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Conversion instructions
//
//----------------------------------------------------------------------
static
int
InstCvtf2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtf2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'f' , "Converting f%d (%08x) to DFP (%lf) in f%d\n" ,
        src1 ,  cpu -> GetFreg ( src1 ),   ( double ) cpu -> GetFreg ( src1 ),  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  RR Instruction Table
//
//----------------------------------------------------------------------
Instruction   Cpu :: rrrInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x02 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x03 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x04 ,  DLX_FMT_RFMT ,   InstSll },
   { 0x05 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x06 ,  DLX_FMT_RFMT ,   InstSrl },
   { 0x07 ,  DLX_FMT_RFMT ,   InstSra },
   { 0x08 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x09 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0c ,  DLX_FMT_RFMT ,   InstIllegal },          // ALU TRAP instruction
   { 0x0d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x10 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x11 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x12 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x13 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x14 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x15 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x16 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x17 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x18 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x19 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_RFMT ,   InstAdd },
   { 0x21 ,  DLX_FMT_RFMT ,   InstAddu },
   { 0x22 ,  DLX_FMT_RFMT ,   InstSub },
   { 0x23 ,  DLX_FMT_RFMT ,   InstSubu },
   { 0x24 ,  DLX_FMT_RFMT ,   InstAnd },
   { 0x25 ,  DLX_FMT_RFMT ,   InstOr },
   { 0x26 ,  DLX_FMT_RFMT ,   InstXor },
   { 0x27 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x28 ,  DLX_FMT_RFMT ,   InstSeq },
   { 0x29 ,  DLX_FMT_RFMT ,   InstSne },
   { 0x2a ,  DLX_FMT_RFMT ,   InstSlt },
   { 0x2b ,  DLX_FMT_RFMT ,   InstSgt },
   { 0x2c ,  DLX_FMT_RFMT ,   InstSle },
   { 0x2d ,  DLX_FMT_RFMT ,   InstSge },
   { 0x2e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x2f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x30 ,  DLX_FMT_RFMT ,   InstMovi2s },
   { 0x31 ,  DLX_FMT_RFMT ,   InstMovs2i },
   { 0x32 ,  DLX_FMT_RFMT ,   InstMovf },
   { 0x33 ,  DLX_FMT_RFMT ,   InstMovd },
   { 0x34 ,  DLX_FMT_RFMT ,   InstMovfp2i },
   { 0x35 ,  DLX_FMT_RFMT ,   InstMovi2fp },
   { 0x36 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of "regular" instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: regInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },          // R-format instructions
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },          // FP instructions
   { 0x02 ,  DLX_FMT_JFMT ,   InstJmp },
   { 0x03 ,  DLX_FMT_JFMT ,   InstJal },
   { 0x04 ,  DLX_FMT_IFMT ,   InstBeqz },
   { 0x05 ,  DLX_FMT_IFMT ,   InstBnez },
   { 0x06 ,  DLX_FMT_IFMT ,   InstBfpt },
   { 0x07 ,  DLX_FMT_IFMT ,   InstBfpf },
   { 0x08 ,  DLX_FMT_IFMT ,   InstAddi },
   { 0x09 ,  DLX_FMT_IFMT ,   InstAddui },
   { 0x0a ,  DLX_FMT_IFMT ,   InstSubi },
   { 0x0b ,  DLX_FMT_IFMT ,   InstSubui },
   { 0x0c ,  DLX_FMT_IFMT ,   InstAndi },
   { 0x0d ,  DLX_FMT_IFMT ,   InstOri },
   { 0x0e ,  DLX_FMT_IFMT ,   InstXori },
   { 0x0f ,  DLX_FMT_IFMT ,   InstLhi },
   { 0x10 ,  DLX_FMT_JFMT ,   InstRfe },
   { 0x11 ,  DLX_FMT_JFMT ,   InstTrap },
   { 0x12 ,  DLX_FMT_JFMT ,   InstJr },
   { 0x13 ,  DLX_FMT_JFMT ,   InstJalr },
   { 0x14 ,  DLX_FMT_IFMT ,   InstSlli },
   { 0x15 ,  DLX_FMT_IFMT ,   InstNop },
   { 0x16 ,  DLX_FMT_IFMT ,   InstSrli },
   { 0x17 ,  DLX_FMT_IFMT ,   InstSrai },
   { 0x18 ,  DLX_FMT_IFMT ,   InstSeqi },
   { 0x19 ,  DLX_FMT_IFMT ,   InstSnei },
   { 0x1a ,  DLX_FMT_IFMT ,   InstSlti },
   { 0x1b ,  DLX_FMT_IFMT ,   InstSgti },
   { 0x1c ,  DLX_FMT_IFMT ,   InstSlei },
   { 0x1d ,  DLX_FMT_IFMT ,   InstSgei },
   { 0x1e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_IFMT ,   InstLb },
   { 0x21 ,  DLX_FMT_IFMT ,   InstLh },
   { 0x22 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x23 ,  DLX_FMT_IFMT ,   InstLw },
   { 0x24 ,  DLX_FMT_IFMT ,   InstLbu },
   { 0x25 ,  DLX_FMT_IFMT ,   InstLhu },
   { 0x26 ,  DLX_FMT_IFMT ,   InstLf },
   { 0x27 ,  DLX_FMT_IFMT ,   InstLd },
   { 0x28 ,  DLX_FMT_IFMT ,   InstSb },
   { 0x29 ,  DLX_FMT_IFMT ,   InstSh },
   { 0x2a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2b ,  DLX_FMT_IFMT ,   InstSw },
   { 0x2c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2e ,  DLX_FMT_IFMT ,   InstSf },
   { 0x2f ,  DLX_FMT_IFMT ,   InstSd },
   { 0x30 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x31 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x32 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x33 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x34 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x35 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x36 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_IFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of FP instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: fpInstrs [ 32 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstAddf },
   { 0x01 ,  DLX_FMT_RFMT ,   InstSubf },
   { 0x02 ,  DLX_FMT_RFMT ,   InstMultf },
   { 0x03 ,  DLX_FMT_RFMT ,   InstDivf },
   { 0x04 ,  DLX_FMT_RFMT ,   InstAddd },
   { 0x05 ,  DLX_FMT_RFMT ,   InstSubd },
   { 0x06 ,  DLX_FMT_RFMT ,   InstMultd },
   { 0x07 ,  DLX_FMT_RFMT ,   InstDivd },
   { 0x08 ,  DLX_FMT_RFMT ,   InstCvtf2d },
   { 0x09 ,  DLX_FMT_RFMT ,   InstCvtf2i },
   { 0x0a ,  DLX_FMT_RFMT ,   InstCvtd2f },
   { 0x0b ,  DLX_FMT_RFMT ,   InstCvtd2i },
   { 0x0c ,  DLX_FMT_RFMT ,   InstCvti2f },
   { 0x0d ,  DLX_FMT_RFMT ,   InstCvti2d },
   { 0x0e ,  DLX_FMT_RFMT ,   InstMult },
   { 0x0f ,  DLX_FMT_RFMT ,   InstDiv },
   { 0x10 ,  DLX_FMT_RFMT ,   InstEqf },
   { 0x11 ,  DLX_FMT_RFMT ,   InstNef },
   { 0x12 ,  DLX_FMT_RFMT ,   InstLtf },
   { 0x13 ,  DLX_FMT_RFMT ,   InstGtf },
   { 0x14 ,  DLX_FMT_RFMT ,   InstLef },
   { 0x15 ,  DLX_FMT_RFMT ,   InstGef },
   { 0x16 ,  DLX_FMT_RFMT ,   InstMultu },
   { 0x17 ,  DLX_FMT_RFMT ,   InstDivu },
   { 0x18 ,  DLX_FMT_RFMT ,   InstEqd },
   { 0x19 ,  DLX_FMT_RFMT ,   InstNed },
   { 0x1a ,  DLX_FMT_RFMT ,   InstLtd },
   { 0x1b ,  DLX_FMT_RFMT ,   InstGtd },
   { 0x1c ,  DLX_FMT_RFMT ,   InstLed },
   { 0x1d ,  DLX_FMT_RFMT ,   InstGed },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int
Cpu :: CauseException   ( int  excType )
{
  uint32    ivec ;

  DBPRINTF  ( 't' , "Exception being done (cause=0x%x @ pc=0x%x).\n" , excType ,
        PC () - 4 );
  ivec  =   GetSreg   ( DLX_SREG_INTRVEC );
   OutputBasicBlock   ( ivec );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "X %x %x\n" , excType ,  PC () - 4 );
   }
   PutSreg ( DLX_SREG_CAUSE ,  excType );
   // PC has already been incremented, so decrement it first.  If this
   // is a trap or interrupt, the PC will have already been incremented
   // (if necessary) so the IAR points to the next instruction to
   // execute.
   PutSreg ( DLX_SREG_IAR ,  PC () - 4 );
   // Save the current status register
   PutSreg ( DLX_SREG_ISR ,   GetSreg   ( DLX_SREG_STATUS ));
   // Save the current value of register 31.  This is necessary to give
   // the interrupt handler a temporary register that can be used to
   // switch to a system stack (rather than user stack)
   PutSreg ( DLX_SREG_IR31 ,   GetIreg   ( 31 ));
   // Set the next instruction to be run to be the interrupt vector.
   SetPC   ( ivec );
   // Set the status register to be system mode
   PutSreg ( DLX_SREG_STATUS ,   GetSreg   ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
   // Turn off interrupts
   DisableInterrupts   ();
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
int
Cpu :: VaddrToPaddr   ( uint32 vaddr ,  uint32 &  paddr ,  uint32 op ,  uint32 pteflags )
{
  uint32    pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
  uint32    pteaddr ;
  uint32    offsetinpage ,  entrynum ;
  uint32    pagemask ;

   if   (( vaddr  &   0x3 )   !=   0 )   {
     CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   if   ( StatusBit   ( DLX_STATUS_PAGE_TABLE ))   {
     // Translate if in user mode or if in system mode and the appropriate
     // translation bit is set in the status register.
     if   ( UserMode   ()   ||
     (( op  ==  DLX_MEM_READ )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_RD ))   ||
     (( op  ==  DLX_MEM_WRITE )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_WR )))   {
      DBPRINTF  ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
      pt1base  =   GetSreg   ( DLX_SREG_PGTBL_BASE );
      pt1pagebits  =   GetSreg   ( DLX_SREG_PGTBL_BITS );
      pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
      pt1pagebits  &=   0xffff ;
      pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
      offsetinpage  =  vaddr  &  pagemask ;
       // Mask off the low bits
      vaddr  &=   ~ pagemask ;
       if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
       GetSreg   ( DLX_SREG_PGTBL_SIZE ))   {
    DBPRINTF  ( 'm' ,   "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
          pt1pagebits ,  pt2pagebits ,   GetSreg ( DLX_SREG_PGTBL_SIZE ),
          entrynum );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
      pteaddr  =  pt1base  +   4   *  entrynum ;
      paddr  =   Memory   ( pteaddr );
       // If the L2 page size is the same as the L1 page size, there's
       // no L2 page table!
       if   ( pt1pagebits  !=  pt2pagebits )   {
    pt2base  =  paddr ;
     if   ( pt2base  ==   0 )   {
      DBPRINTF  ( 'm' ,   "No L2 table at entry %d! (base = 0x%x)\n" ,
            entrynum ,  pt1base );
       CauseException   ( DLX_EXC_PAGEFAULT );
       return   ( 0 );
     }
    pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                  (( 1   <<   ( pt1pagebits - pt2pagebits )) - 1 ));
    paddr  =   Memory   ( pteaddr );
       }
      DBPRINTF  ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
       if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
    DBPRINTF  ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
     PutSreg   ( DLX_SREG_FAULT_ADDR ,  vaddr );
     CauseException   ( DLX_EXC_PAGEFAULT );
     return   ( 0 );
       }
       if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     SetMemory   ( pteaddr ,
           paddr  |   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
       }
      paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
      paddr  |=  offsetinpage ;
      DBPRINTF  ( 'm' ,
         "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
        vaddr  |  offsetinpage ,  paddr ,
         Memory   ( paddr ),
        pt1base ,  pt1pagebits ,  entrynum );
       return   ( 1 );
     }   else   {
       // For system references, physical address is the same
       // as virtual address.
      paddr  =  vaddr ;
       if   (( vaddr  <=  memSize )   ||   (( vaddr  >=  DLX_IO_BASE )   &&
                  ( vaddr  <=   ( DLX_IO_BASE + DLX_IO_SIZE ))))   {
     return   ( 1 );
       }   else   {
    DBPRINTF  ( 't' , "Illegal system address: 0x%x.\n" ,  vaddr );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
     }
   }   else   if   ( StatusBit   ( DLX_STATUS_TLB ))   {
     // DLX_STATUS_TLB
     return   ( 1 );
   }   else   {
    paddr  =  vaddr ;
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
Cpu :: ReadWord   ( uint32 vaddr ,  uint32  & val ,  uint32 op )
{
  uint32    paddr ;

  DBPRINTF  ( 'l' , "Trying to read virtual address: 0x%x.\n" ,  vaddr );
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
    val  =   Memory ( paddr );
   }   else   {
    DBPRINTF  ( 'l' , "Trying to load special address: 0x%x.\n" ,  paddr );
     switch   ( paddr )   {
     case  DLX_KBD_NCHARSIN :
      val  =   KbdNumInChars   ();
       break ;
     case  DLX_KBD_NCHARSOUT :
      val  =   KbdNumOutChars   ();
       break ;
     case  DLX_KBD_GETCHAR :
      val  =   KbdGetChar   ();
       break ;
     case  DLX_DISK_STATUS :
       break ;
     case  DLX_GETMEMSIZE :
      val  =  memSize ;
       break ;
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: WriteWord   ( uint32 vaddr ,  uint32 val )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
             DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
     SetMemory ( paddr ,  val );
   }   else   {
     switch   ( paddr )   {
     case  DLX_KBD_PUTCHAR :
       KbdPutChar   ( val );
       break ;
     case  DLX_KBD_INTR :
       if   ( val  ==   0 )   {
    flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
       }   else   {
    flags  |=  DLX_FLAG_KBD_INTERRUPT ;
       }
       break ;
     case  DLX_TIMER_SETTIMER :
      DBPRINTF  ( 'o' , "Setting timer to %d us.\n" ,  val );
       SetTimer   ( val );
       break ;
#if   0
     case  DLX_DISK_REQUEST :
      diskReq  =  val ;
       StartDiskIo   ();
       break ;
     case  DLX_DISK_BLOCK :
      diskBlock  =  val ;
       break ;
     case  DLX_DISK_ADDR :
      diskAddr  =  val ;
       break ;
#endif
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: TestWriteWord   ( uint32 vaddr )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void
Cpu :: Open   ()
{
  uint32    name ;
   char   nameBuf [ 100 ];
   char    * tp ;
   int        accessType ;
   int        i ;

  name  =   GetParam ( 0 );
  accessType  =   GetParam ( 1 );
  DBPRINTF  ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * ) memory  +  name ,
        accessType );
   switch   ( accessType )   {
   case   1 :
    tp  =   "r" ;
     break ;
   case   2 :
    tp  =   "w" ;
     break ;
   case   3 :
    tp  =   "r+" ;
     break ;
   default :
     SetResult   ( 0xffffffff );
     return ;
     break ;
   }
   for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
     if   ( fp [ i ]   ==  NULL )   {
       if   ( ! CheckAddr   ( name ))   {
     SetResult   ( 0xffffffff );
     return ;
       }
      strncpy  ( nameBuf ,   ( char   * ) memory  +  name ,   98 );
       // If fopen fails, it returns NULL, so it looks like no open
       // was done.
      fp [ i ]   =  fopen  ( nameBuf ,  tp );
       break ;
     }
   }
   if   ( >=  DLX_MAX_FILES )   {
    i  =   - 1 ;
   }   else   if   ( fp [ i ]   ==  NULL )   {
    i  =   - errno ;
   }
  DBPRINTF  ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
   SetResult   ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void
Cpu :: Read   ()
{
   FileIo   ( DLX_FILE_READ );
}

void
Cpu :: Write   ()
{
   FileIo   ( DLX_FILE_WRITE );
}

void
Cpu :: FileIo   ( int  kind )
{
   int        fd ;
  uint32    buf ;
   int        size ;
   int        n ;

  fd  =   GetParam   ( 0 );
  buf  =   GetParam   ( 1 );
  size  =   GetParam   ( 2 );
  DBPRINTF  ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
         ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,
        fd ,  size ,  buf );
   if   ( !   CheckAddr   ( buf )   ||   ( !   CheckFd   ( fd )))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   ( kind  ==  DLX_FILE_WRITE )   {
    n  =  fwrite  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }   else   {
    n  =  fread  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }
   if   ( >   0 )   {
     SetResult   ( n );
   }   else   if   ( feof  ( fp [ fd ]))   {
     SetResult   ( 0 );
   }   else   {
     SetResult   ( - errno );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void
Cpu :: Seek   ()
{
   int        fd ;
   int        offset ;
   int        whence ;
   int        rv ;

  fd  =   GetParam ( 0 );
  offset  =   GetParam ( 1 );
  whence  =   GetParam ( 2 );
   if   ( !   CheckFd   ( fd ))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   (( rv  =  fseek  ( fp [ fd ],  offset ,  whence ))   <   0 )   {
     SetResult   ( rv );
   }   else   {
     SetResult   ( ftell  ( fp [ fd ]));
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void
Cpu :: Close   ()
{
   int        fd ;
  uint32    retval ;

  fd  =   GetParam ( 0 );
   if   ( ! CheckFd   ( fd ))   {
    retval  =   0xffffffff ;
   }   else   {
    retval  =  fclose  ( fp [ fd ]);
   }
  DBPRINTF  ( 'F' ,   "Closing file %d.\n" ,  fd );
  fp [ fd ]   =  NULL ;
   SetResult   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void
Cpu :: Random   ()
{
   int        n ;

  n  =  random  ();
   SetResult   ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void
Cpu :: Srandom   ()
{
  uint32    seed ;

  seed  =   GetParam   ( 0 );
  srandom  ( seed );
   SetResult   ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32
Cpu :: GetParam   ( int  p )
{
  uint32    stackPtr ;

  stackPtr  =   GetIreg   ( 29 );
   return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void
Cpu :: SetResult   ( uint32 r )
{
   PutIreg   ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void
Cpu :: Printf   ()
{
  uint32    fmtaddr ;
   char    * c ;
  uint32    args [ 10 ];
   int        nargs  =   0 ;

  fmtaddr  =   GetParam ( 0 );
   // 
   for   ( =  fmtaddr  +   ( char   * ) memory ;   * !=   '\0' ;  c ++ )   {
     if   ( * ==   '%' )   {
       // if this is a %%, skip past second %
       if   ( * ( c + 1 )   ==   '%' )   {
    c ++ ;
     continue ;
       }
       // Get the current argument off the stack
      args [ nargs ]   =   GetParam ( nargs + 1 );
      DBPRINTF  ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
        args [ nargs ],  args [ nargs ]);
       while   ( 1 )   {
    c ++ ;
     if   ( * ==   's' )   {
       // If it's a string, the address is relative to the
       // start of emulated memory.
      args [ nargs ]   +=   ( uint32 ) memory ;
       break ;
     }   else   if   ( * ==   'l' )   {
       continue ;
     }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
       // If it's a floating point number, it'll be passed as
       // a double, so grab the second word also.
      nargs  +=   1 ;
      args [ nargs ]   =   GetParam ( nargs + 1 );
       break ;
     }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
       // If it's another formatting character, it's not
       // a string, but we can leave the loop anyway.
       break ;
     }
       }
      nargs  +=   1 ;
     }
   }
  printf  ( fmtaddr  +   ( char   * ) memory ,
      args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
      args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
  fflush  ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void
Cpu :: Exit   ()
{
   struct  timeval    t ;

  printf  ( "Exiting at program request.\n" );
  printf  ( "Instructions executed: %.0lf\n" ,  instrsExecuted );
  printf  ( "Time simulated: %.03lf secs\n" ,  usElapsed  /   1e6 );
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   (( double ) t . tv_sec  +   (( double ) t . tv_usec ) * 1e-6 )   -  realElapsed ;
  printf  ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
  printf  ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
      instrsExecuted  *   1e-6   /  realElapsed );
  exit  ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int
Cpu :: ExecOne   ()
{
  uint32    curInst ;
  uint32    tmpPc ;
  uint32    curOp ;
  uint32    retval ;
  uint32    funcCode ;         // subcode for RRR & FP ops

  usElapsed  +=  usPerInst ;
  instrsExecuted  +=   1.0 ;
   // Increment PC before checking for interrupts because CauseException
   // will subtract 4 off the PC before placing the value into the IAR.
   // By incrementing here, we ensure that the current instruction is
   // the one whose address goes into the IAR.
   SetPC   ( PC ()   +   4 );
   // Check for an input character.  If we got one and interrupts are
   // enabled, do an interrupt.
   if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
    kbdcounter  =   0 ;
     if   ( GetCharIfAvail   ()   &&   ( IntrLevel   ()   <   8 ))   {
      DBPRINTF  ( 't' , "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
        PC () - 4 ,  usElapsed );
       CauseException   ( DLX_EXC_KBD );
       return   ( 0 );
     }
   }
   if   ( IntrLevel ()   <   8 )   {
     if   ( timerInterrupt  <  usElapsed )   {
      DBPRINTF  ( 't' ,   "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
        PC () - 4 ,  usElapsed ,  timerInterrupt );
      timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
       CauseException   ( DLX_EXC_TIMER );
       return   ( 0 );
     }
   }
   if   ( !   ReadWord   ( PC () - 4 ,  curInst ,  DLX_MEM_INSTR ))   {
    DBPRINTF  ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC () - 4 );
     return   ( 0 );
   }
  curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
  DBPRINTF  ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
         ( int ) instrsExecuted  %   1000000 ,
        curInst ,  PC ()   -   4 ,  curOp ,
         ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &  DLX_ALU_FUNC_CODE_MASK );
   switch   ( curOp )   {
   case   0x00 :          // ALU and other R-R operations
    funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
        DLX_ALU_FUNC_CODE_MASK );
    retval  =   ( rrrInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   case   0x01 :          // FP operations
    funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
        DLX_FPU_FUNC_CODE_MASK );
    retval  =   ( fpInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   default :
    retval  =   ( regInstrs [ curOp ]. handler )( curInst ,   this );
     break ;
   }
   return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format consists of a
//  leading address, followed by a colon, followed by the data
//  to go at that address.  If the address is omitted, the data
//  follows that from the previous line of the file.
//
//----------------------------------------------------------------------
static
inline
int
getxvalue  ( int  x )
{
   if   (( >=   '0' )   &&   ( <=   '9' ))   {
     return   ( -   '0' );
   }   else   if   (( >=   'a' )   &&   ( <=   'f' ))   {
     return   ( +   10   -   'a' );
   }   else   if   (( >=   'A' )   &&   ( <=   'F' ))   {
     return   ( +   10   -   'A' );
   }   else   {
     return   ( 0 );
   }
}

int
Cpu :: LoadMemory   ( const   char   * file ,  uint32 &  startAt )
{
  FILE   * fp ;
   char   buffer [ 200 ];
   char    * pos ;
   int        nread  =   0 ;
  uint32    addr  =   0 ;
  uint32    val ;
   int        count ;

   if   (( fp  =  fopen  ( file ,   "r" ))   ==  NULL )   {
     return   ( 0 );
   }
   if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
     return   ( 0 );
   }
   // Read in the "start" line
   if   ( strstr  ( buffer ,   "start:" )   ==  NULL )   {
     return   ( 0 );
   }
  pos  =  index  ( buffer ,   ':' )   +   1 ;
  startAt  =  strtol  ( pos ,  NULL ,   16 );
   while   ( 1 )   {
    pos  =  buffer ;
     if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
       return   ( nread );
     }
     if   ( index  ( buffer ,   ':' )   ==  NULL )   {
       continue ;
     }
     if   ( * pos  !=   ':' )   {
      addr  =  strtol  ( pos ,   & pos ,   16 );
     }
     if   ( * pos  !=   ':' )   {
      fprintf  ( stderr ,   "Error reading data file near:\n%s\n" ,  buffer );
       return   ( nread );
     }
    pos ++ ;    // skip past colon
     while   ( 1 )   {
       while   ( isspace  ( * pos ))   {
    pos ++ ;
       }
       // Exit loop if at least one digit isn't a hex digit.
       if   ( ! ( isxdigit  ( * pos )   &&  isxdigit  ( * ( pos + 1 ))))   {
     break ;
       }
      val  =   ( getxvalue ( * pos )   *   16 )   +  getxvalue ( * ( pos + 1 ));
       * ((( unsigned   char   * ) memory )   +  addr )   =  val ;
      pos  +=   2 ;
      addr ++ ;
      nread ++ ;
     }
   }
}

//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void
Cpu :: SetTimer   ( uint32 usecs )
{
  timerInterrupt  =  usElapsed  +   ( double ) usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::Timerget
//
//  return Simulated time(in milliseconds) 
//
//----------------------------------------------------------------------
uint32 
Cpu :: Timerget ()
{
    unsigned   int  result ;
   result  =   ( unsigned   int )( usElapsed / 1e3 );
    SetResult   ( result );
}
//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32
Cpu :: KbdGetChar   ()
{
  uint32    v ;

   if   ( kbdbufferedchars  ==   0 )   {
     return   ( 0 );
   }
  v  =  kbdbuffer [ kbdrpos ++ ];
  kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
  kbdbufferedchars -- ;
   return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void
Cpu :: IgnoreExit   ( int  ignore )
{
  flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
   if   ( ignore )   {
    flags  |=  DLX_FLAG_IGNORE_EXIT ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void
Cpu :: OutputBasicBlockActual   ()
{
   int        i ,  ninstrs ;

  ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
   // Print out the basic block information here
   if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
    fprintf  ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
   }
   if   ( flags  &  DLX_TRACE_MEMORY )   {
     for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
      fprintf  ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,  accesses [ i ]. reg ,
           accesses [ i ]. addr , accesses [ i ]. value );
     }
   }
  naccesses  =   0 ;
}

home/bshapir/cs314/project4/option1/lab4_1/src/os.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 86016 3 ; Data size: 32260 4 ; Text size: 40952 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0xb000 8 ;;; 9 ;;; Initialization code for programs running in the DLX simulator. 10 ;;; Copyright (c) 1999 by Ethan Miller 11 ;;; 12 ;;; 14 0000b000 .text 15 00001000 .align 2 17 ;;;---------------------------------------------------------------------- 18 ;;; osinit 19 ;;; 20 ;;; This is the first function called by the simulator, even before main. 21 ;;; Since it's called BEFORE any "real" routines, we can use any registers 22 ;;; we want as long as we don't mess up the stack or frame pointers. 23 ;;; 24 ;;; This routine loads the interrupt vector to point to the interrupt 25 ;;; handler later in this file. It should never return, because _main 26 ;;; should call exitsim() or exit() rather than returning here. 27 ;;; 28 ;;; After initialization is done, this routine jumps to _main to start the 29 ;;; C code portion of the operating system. 30 ;;;---------------------------------------------------------------------- 31 00001000 .proc _osinit 32 00001000 .global _osinit 33 00001000 _osinit: 34 ;; Set up the interrupt handler 35 00001000 3c010000 lhi r1,(_intrhandler>>16)&0xffff 36 00001004 24211010 addui r1,r1,_intrhandler&0xffff 37 00001008 00204030 movi2s intrvec,r1 38 ;; Never returns because exitsim is called first 39 0000100c 08005e34 j _main 40 00001010 .endproc _osinit 42 ;;;---------------------------------------------------------------------- 43 ;;; intrhandler 44 ;;; 45 ;;; Called when an interrupt or trap is received by the CPU. It stores the 46 ;;; current register set on the system stack. It then pushes the parameters 47 ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE 48 ;;; registers along with the original stack pointer. The C interrupt 49 ;;; handler can then copy arguments from the original stack, performing 50 ;;; user -> system translations if necessary. 51 ;;; 52 ;;;---------------------------------------------------------------------- 53 00001010 .proc _intrhandler 54 00001010 .global _intrhandler 55 00001010 _intrhandler: 56 ;; We can use r31 as scratch space because its value was saved in 57 ;; ir31. However, we must save the "real" value of r31 on the 58 ;; stack. 60 ;; Always store the registers on the system stack. This way, we don't 61 ;; have to worry about translating things from user -> system. We 62 ;; use r31 as the base register because its value was saved in ir31. 64 ;; If this was a user process, load r29 with the current system 65 ;; stack pointer. If it was a system process, just use the 66 ;; current stack pointer. 67 00001010 0060f831 movs2i r31,isr 68 00001014 33ff0040 andi r31,r31,0x40 69 00001018 17e0001c bnez r31,intrSystem_LF0 70 0000101c 3c1f0000 lhi r31,(_currentPCB>>16)&0xffff 71 00001020 27fffe28 addui r31,r31,_currentPCB&0xffff 72 00001024 8fff0000 lw r31,(r31) 73 00001028 8fff0004 lw r31,4(r31) 74 ;; Save the original (user) stack pointer 75 0000102c affdff48 sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 76 ;; Copy the system stack pointer into r29 (current stack pointer) 77 00001030 37fd0000 ori r29,r31,0 78 00001034 10000004 beqz r0,intrSaveReg_LF0; skip over the system part.... 79 00001038 intrSystem_LF0: 80 ;; Use the stack pointer we're already using 81 ;; Save r29 because we won't save it later 82 00001038 afbdff48 sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 83 0000103c intrSaveReg_LF0: 84 ;; Adjust stack pointer for all the stuff we're going to push. This 85 ;; is a bit more space than we need currently, but it leaves room 86 ;; for more stuff if needed. 87 0000103c 2fbd0154 subui r29,r29,#340 88 ;; Push all the stuff onto the stack 89 00001040 afa1002c sw 44(r29),r1 90 00001044 afa20030 sw 48(r29),r2 91 00001048 afa30034 sw 52(r29),r3 92 0000104c afa40038 sw 56(r29),r4 93 00001050 afa5003c sw 60(r29),r5 94 00001054 afa60040 sw 64(r29),r6 95 00001058 afa70044 sw 68(r29),r7 96 0000105c afa80048 sw 72(r29),r8 97 00001060 afa9004c sw 76(r29),r9 98 00001064 afaa0050 sw 80(r29),r10 99 00001068 afab0054 sw 84(r29),r11 100 0000106c afac0058 sw 88(r29),r12 101 00001070 afad005c sw 92(r29),r13 102 00001074 afae0060 sw 96(r29),r14 103 00001078 afaf0064 sw 100(r29),r15 104 0000107c afb00068 sw 104(r29),r16 105 00001080 afb1006c sw 108(r29),r17 106 00001084 afb20070 sw 112(r29),r18 107 00001088 afb30074 sw 116(r29),r19 108 0000108c afb40078 sw 120(r29),r20 109 00001090 afb5007c sw 124(r29),r21 110 00001094 afb60080 sw 128(r29),r22 111 00001098 afb70084 sw 132(r29),r23 112 0000109c afb80088 sw 136(r29),r24 113 000010a0 afb9008c sw 140(r29),r25 114 000010a4 afba0090 sw 144(r29),r26 115 000010a8 afbb0094 sw 148(r29),r27 116 000010ac afbc0098 sw 152(r29),r28 117 ;; Skip r29 - stored earlier! 118 000010b0 afbe00a0 sw 160(r29),r30 119 ;; Load the value of r31 from the special register and then save it 120 000010b4 00401831 movs2i r3,ir31 121 000010b8 afa300a4 sw 164(r29),r3 122 ;; Store the floating-point registers 123 000010bc bfa000a8 sd 168(r29),f0 124 000010c0 bfa200b0 sd 176(r29),f2 125 000010c4 bfa400b8 sd 184(r29),f4 126 000010c8 bfa600c0 sd 192(r29),f6 127 000010cc bfa800c8 sd 200(r29),f8 128 000010d0 bfaa00d0 sd 208(r29),f10 129 000010d4 bfac00d8 sd 216(r29),f12 130 000010d8 bfae00e0 sd 224(r29),f14 131 000010dc bfb000e8 sd 232(r29),f16 132 000010e0 bfb200f0 sd 240(r29),f18 133 000010e4 bfb400f8 sd 248(r29),f20 134 000010e8 bfb60100 sd 256(r29),f22 135 000010ec bfb80108 sd 264(r29),f24 136 000010f0 bfba0110 sd 272(r29),f26 137 000010f4 bfbc0118 sd 280(r29),f28 138 000010f8 bfbe0120 sd 288(r29),f30 139 ;; NOTE: we don't save the interrupt vector register because it 140 ;; doesn't change from process to process. 141 ;; NOTE: we don't save the status register because most of the flags 142 ;; are the same from process to process if they're in the interrupt 143 ;; handler. Of course, we DO save the ISR. 144 000010fc 00802031 movs2i r4,iar 145 00001100 afa40128 sw 296(r29),r4 146 00001104 00602831 movs2i r5,isr 147 00001108 afa5012c sw 300(r29),r5 148 0000110c 00c03031 movs2i r6,cause 149 00001110 afa60130 sw 304(r29),r6 150 00001114 01201831 movs2i r3,fault 151 00001118 afa30134 sw 308(r29),r3 152 0000111c 01801831 movs2i r3,ptbase 153 00001120 afa30138 sw 312(r29),r3 154 00001124 01a01831 movs2i r3,ptsize 155 00001128 afa3013c sw 316(r29),r3 156 0000112c 01c01831 movs2i r3,ptbits 157 00001130 afa30140 sw 320(r29),r3 159 ;; Push the interrupt information onto the stack 160 00001134 afa60000 sw 0(r29),r6; push CAUSE 161 00001138 afa40004 sw 4(r29),r4; push IAR 162 0000113c afa50008 sw 8(r29),r5; push ISR 163 ;; Get the original stack pointer 164 00001140 8fa1009c lw r1,156(r29) 165 00001144 afa1000c sw 12(r29),r1 166 ;; Save the previous interrupt stack frame address in the current frame 167 00001148 3c010000 lhi r1,(_currentPCB>>16)&0xffff 168 0000114c 2421fe28 addui r1,r1,_currentPCB&0xffff 169 00001150 8c210000 lw r1,(r1) 170 00001154 8c220000 lw r2,0(r1) 171 00001158 afa20028 sw 40(r29),r2 172 ;; Save this frame address in the PCB. This is used so the OS can 173 ;; easily access the current interrupt save frame 174 0000115c ac3d0000 sw 0(r1),r29 175 ;; Call the "real" interrupt handler. This will possibly switch 176 ;; contexts. This call never returns; instead, a separate routine 177 ;; (_intrreturn) is called to return from interrupts after restoring 178 ;; the current context. 179 00001160 08008908 j _dointerrupt 180 00001164 54000000 nop 181 00001168 .endproc _intrhandler 183 ;;;---------------------------------------------------------------------- 184 ;;; intrreturn 185 ;;; 186 ;;; Return from an interrupt or trap. This restores all of the previously 187 ;;; saved registers and then returns to where the program left off. The 188 ;;; current contents of the registers are destroyed. This routine uses 189 ;;; the saved interrupt frame pointer, so the stack pointer need not 190 ;;; be correct. Note, though, that the register contents from the previous 191 ;;; process must have previously been saved - in other words, call this 192 ;;; routine from a trap or interrupt handler. 193 ;;;---------------------------------------------------------------------- 194 00001168 .proc _intrreturn 195 00001168 .global _intrreturn 196 00001168 _intrreturn: 197 ;; Disable interrupts - this routine must be atomic, and interrupts 198 ;; may not be currently disabled. Don't worry about saving registers 199 ;; because we're about to reload them anyway. 200 00001168 0c009674 jal _DisableIntrs 201 ;; Get our interrupt stack frame location and load it into the stack 202 ;; pointer. 203 0000116c 3c010000 lhi r1,(_currentPCB>>16)&0xffff 204 00001170 2421fe28 addui r1,r1,_currentPCB&0xffff 205 00001174 8c210000 lw r1,0(r1) 206 00001178 8c3d0000 lw r29,0(r1) 207 ;; Get the previous interrupt stack frame location and make it the 208 ;; current interrupt save frame. 209 0000117c 8fa20028 lw r2,40(r29) 210 00001180 ac220000 sw 0(r1),r2 212 ;; Reload the registers for the new process. We don't have to 213 ;; load in the exact opposite order as long as we're careful to 214 ;; get the right values back in. 215 00001184 8fa30128 lw r3,296(r29) 216 00001188 00602030 movi2s iar,r3 217 0000118c 8fa3012c lw r3,300(r29) 218 00001190 00601830 movi2s isr,r3 219 00001194 8fa30130 lw r3,304(r29) 220 00001198 00603030 movi2s cause,r3 221 0000119c 8fa30134 lw r3,308(r29) 222 000011a0 00604830 movi2s fault,r3 223 000011a4 8fa30138 lw r3,312(r29) 224 000011a8 00606030 movi2s ptbase,r3 225 000011ac 8fa3013c lw r3,316(r29) 226 000011b0 00606830 movi2s ptsize,r3 227 000011b4 8fa30140 lw r3,320(r29) 228 000011b8 00607030 movi2s ptbits,r3 230 ;; Reload the floating point registers 231 000011bc 9fa000a8 ld f0,168(r29) 232 000011c0 9fa200b0 ld f2,176(r29) 233 000011c4 9fa400b8 ld f4,184(r29) 234 000011c8 9fa600c0 ld f6,192(r29) 235 000011cc 9fa800c8 ld f8,200(r29) 236 000011d0 9faa00d0 ld f10,208(r29) 237 000011d4 9fac00d8 ld f12,216(r29) 238 000011d8 9fae00e0 ld f14,224(r29) 239 000011dc 9fb000e8 ld f16,232(r29) 240 000011e0 9fb200f0 ld f18,240(r29) 241 000011e4 9fb400f8 ld f20,248(r29) 242 000011e8 9fb60100 ld f22,256(r29) 243 000011ec 9fb80108 ld f24,264(r29) 244 000011f0 9fba0110 ld f26,272(r29) 245 000011f4 9fbc0118 ld f28,280(r29) 246 000011f8 9fbe0120 ld f30,288(r29) 248 ;; Reload the integer registers. We don't reload r0 because it's 249 ;; always 0. We won't reload r29 here because we're using it as 250 ;; the stack pointer. The same goes for r1, which we'll use as 251 ;; scratch so we can store r29. 252 ;; Skip r1 - restored later 253 000011fc 8fa20030 lw r2,48(r29) 254 00001200 8fa30034 lw r3,52(r29) 255 00001204 8fa40038 lw r4,56(r29) 256 00001208 8fa5003c lw r5,60(r29) 257 0000120c 8fa60040 lw r6,64(r29) 258 00001210 8fa70044 lw r7,68(r29) 259 00001214 8fa80048 lw r8,72(r29) 260 00001218 8fa9004c lw r9,76(r29) 261 0000121c 8faa0050 lw r10,80(r29) 262 00001220 8fab0054 lw r11,84(r29) 263 00001224 8fac0058 lw r12,88(r29) 264 00001228 8fad005c lw r13,92(r29) 265 0000122c 8fae0060 lw r14,96(r29) 266 00001230 8faf0064 lw r15,100(r29) 267 00001234 8fb00068 lw r16,104(r29) 268 00001238 8fb1006c lw r17,108(r29) 269 0000123c 8fb20070 lw r18,112(r29) 270 00001240 8fb30074 lw r19,116(r29) 271 00001244 8fb40078 lw r20,120(r29) 272 00001248 8fb5007c lw r21,124(r29) 273 0000124c 8fb60080 lw r22,128(r29) 274 00001250 8fb70084 lw r23,132(r29) 275 00001254 8fb80088 lw r24,136(r29) 276 00001258 8fb9008c lw r25,140(r29) 277 0000125c 8fba0090 lw r26,144(r29) 278 00001260 8fbb0094 lw r27,148(r29) 279 00001264 8fbc0098 lw r28,152(r29) 280 ;; Skip r29 - restored later 281 00001268 8fbe00a0 lw r30,160(r29) 282 0000126c 8fbf00a4 lw r31,164(r29) 284 00001270 27bd0154 addui r29,r29,#340 285 ;; Save the current value of the stack pointer after adjusting it 286 ;; Note that this will "destroy" the stack values below this interrupt 287 ;; stack frame. This is exactly what we want! 288 00001274 ac3d0004 sw 4(r1),r29 289 00001278 37a10000 ori r1,r29,#0 290 0000127c 8c3dff48 lw r29,-184(r1); 156-340 = -184 291 00001280 8c21fed8 lw r1,-296(r1); 44-340 = -296 292 00001284 40000000 rfe 293 00001288 .endproc _intrreturn 295 ;;;---------------------------------------------------------------------- 296 ;;; SetIntrs 297 ;;; 298 ;;; This routine sets the interrupt level to the value passed (0 -> all 299 ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the 300 ;;; former value for the interrupt flags. 301 ;;;---------------------------------------------------------------------- 302 00001288 .proc _SetIntrs 303 00001288 .global _SetIntrs 304 00001288 _SetIntrs: 305 00001288 2fbd0010 subui r29,r29,#16 306 0000128c afa2000c sw 12(r29),r2; save r2 307 00001290 8fa20010 lw r2,16(r29); Get the new interrupt level 308 00001294 3042000f andi r2,r2,#0x0f; Mask off interrupt levels 309 00001298 00a00831 movs2i r1,status 310 0000129c afa10008 sw 8(r29),r1; Store the old interrupt values 311 000012a0 3021fff0 andi r1,r1,#0xfff0; Mask off old interrupt level 312 000012a4 00410825 or r1,r2,r1; OR in new interrupt level 313 000012a8 00202830 movi2s status,r1 314 000012ac 8fa10008 lw r1,8(r29); Get back the original interrupt level 315 000012b0 3021000f andi r1,r1,#0x0f; Mask off all but interrupt levels 316 000012b4 8fa2000c lw r2,12(r29); restore r2 317 000012b8 27bd0010 addui r29,r29,#16; restore stack pointer 318 000012bc 4be00000 jr r31 319 000012c0 54000000 nop 320 000012c4 .endproc _SetIntrs 322 000012c4 .proc _CurrentIntrs 323 000012c4 .global _CurrentIntrs 324 000012c4 _CurrentIntrs: 325 000012c4 00a00831 movs2i r1,status 326 000012c8 3021000f andi r1,r1,#0xf 327 000012cc 4be00000 jr r31 328 000012d0 54000000 nop 329 000012d4 .endproc _CurrentIntrs 330 ;;;---------------------------------------------------------------------- 331 ;;; _ProcessSleep 332 ;;; 333 ;;; If a context switch from elsewhere in the kernel is desired, take a 334 ;;; trap and call this routine from the trap handler. 335 ;;;---------------------------------------------------------------------- 336 000012d4 .proc _ProcessSleep 337 000012d4 .global _ProcessSleep 338 000012d4 _ProcessSleep: 339 000012d4 44000410 trap #0x410; This is a process sleep trap 340 000012d8 54000000 nop 341 000012dc 4be00000 jr r31 342 000012e0 54000000 nop 343 000012e4 .endproc _ProcessSleep 344 ; 345 ; Stub functions for DLX traps. 346 ; 347 ; Aaron Sawdey 1996; released to the Public Domain. 348 ; 350 000012e4 .align 2 351 000012e4 .proc _random 352 000012e4 .global _random 353 000012e4 _random: 354 000012e4 44002020 trap #0x2020 355 000012e8 4be00000 jr r31 356 000012ec 54000000 nop 357 000012f0 .endproc _random 359 000012f0 .proc _srandom 360 000012f0 .global _srandom 361 000012f0 _srandom: 362 000012f0 44002021 trap #0x2021 363 000012f4 4be00000 jr r31 364 000012f8 54000000 nop 365 000012fc .endproc _srandom 367 ; Compiled by GCC 368 000012fc .data 369 0000b000 .align 2 370 0000b000 _rcsid_LF2: 371 0000b000 3a206669 .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 371 0000b004 6c657379 371 0000b008 732e632c 371 0000b00c 7620312e 371 0000b010 31203230 371 0000b014 30302f30 371 0000b018 392f3230 371 0000b01c 2030313a 371 0000b020 35303a31 371 0000b024 3920656c 371 0000b028 6d204578 371 0000b02c 7020656c 371 0000b030 6d203030 371 0000b034 30 372 0000b035 .text 373 000012fc .align 2 374 000012fc .proc _isspace 375 000012fc .global _isspace 376 000012fc _isspace: 377 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 378 000012fc afbefffc sw -4(r29),r30; push fp 379 00001300 001df020 add r30,r0,r29; fp = sp 380 00001304 afbffff8 sw -8(r29),r31; push ret addr 381 00001308 2fbd0010 subui r29,r29,#16; alloc local storage 382 0000130c afa20000 sw 0(r29),r2 383 00001310 83c20003 lb r2,3(r30) 384 00001314 201f0000 addi r31,r0,#0 385 00001318 304100ff andi r1,r2,#0x00ff 386 0000131c 60210020 seqi r1,r1,#32 387 00001320 14200018 bnez r1,L6_LF2 388 00001324 54000000 nop; not filled. 389 00001328 2041fff7 addi r1,r2,#-9 390 0000132c 302100ff andi r1,r1,#0x00ff 391 00001330 70210001 sleui r1,r1,#1 392 00001334 10200008 beqz r1,L5_LF2 393 00001338 54000000 nop; not filled. 394 0000133c L6_LF2: 395 0000133c 201f0001 addi r31,r0,#1 396 00001340 L5_LF2: 397 00001340 001f0820 add r1,r0,r31 398 00001344 8fa20000 lw r2,0(r29) 399 00001348 8fdffff8 lw r31,-8(r30) 400 0000134c 001ee820 add r29,r0,r30 401 00001350 8fdefffc lw r30,-4(r30) 402 00001354 4be00000 jr r31 403 00001358 54000000 nop 404 0000135c .endproc _isspace 405 0000135c .align 2 406 0000135c .proc _isxdigit 407 0000135c .global _isxdigit 408 0000135c _isxdigit: 409 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 410 0000135c afbefffc sw -4(r29),r30; push fp 411 00001360 001df020 add r30,r0,r29; fp = sp 412 00001364 afbffff8 sw -8(r29),r31; push ret addr 413 00001368 2fbd0010 subui r29,r29,#16; alloc local storage 414 0000136c afa20000 sw 0(r29),r2 415 00001370 83df0003 lb r31,3(r30) 416 00001374 20020000 addi r2,r0,#0 417 00001378 23e1ffd0 addi r1,r31,#-48 418 0000137c 302100ff andi r1,r1,#0x00ff 419 00001380 70210009 sleui r1,r1,#9 420 00001384 14200028 bnez r1,L12_LF2 421 00001388 54000000 nop; not filled. 422 0000138c 23e1ff9f addi r1,r31,#-97 423 00001390 302100ff andi r1,r1,#0x00ff 424 00001394 70210005 sleui r1,r1,#5 425 00001398 14200014 bnez r1,L12_LF2 426 0000139c 54000000 nop; not filled. 427 000013a0 33e100ff andi r1,r31,#0x00ff 428 000013a4 64210041 snei r1,r1,#65 429 000013a8 14200008 bnez r1,L11_LF2 430 000013ac 54000000 nop; not filled. 431 000013b0 L12_LF2: 432 000013b0 20020001 addi r2,r0,#1 433 000013b4 L11_LF2: 434 000013b4 00020820 add r1,r0,r2 435 000013b8 8fa20000 lw r2,0(r29) 436 000013bc 8fdffff8 lw r31,-8(r30) 437 000013c0 001ee820 add r29,r0,r30 438 000013c4 8fdefffc lw r30,-4(r30) 439 000013c8 4be00000 jr r31 440 000013cc 54000000 nop 441 000013d0 .endproc _isxdigit 442 000013d0 .align 2 443 000013d0 .proc _DisableIntrs 444 000013d0 .global _DisableIntrs 445 000013d0 _DisableIntrs: 446 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 447 000013d0 afbefffc sw -4(r29),r30; push fp 448 000013d4 001df020 add r30,r0,r29; fp = sp 449 000013d8 afbffff8 sw -8(r29),r31; push ret addr 450 000013dc 2fbd0010 subui r29,r29,#16; alloc local storage 451 000013e0 afa20000 sw 0(r29),r2 452 000013e4 23bdfff8 addi r29,r29,#-8 453 000013e8 2002000f addi r2,r0,#15 454 000013ec afa20000 sw (r29),r2 455 000013f0 0ffffe94 jal _SetIntrs 456 000013f4 54000000 nop; not filled. 457 000013f8 23bd0008 addi r29,r29,#8 458 000013fc 8fa20000 lw r2,0(r29) 459 00001400 8fdffff8 lw r31,-8(r30) 460 00001404 001ee820 add r29,r0,r30 461 00001408 8fdefffc lw r30,-4(r30) 462 0000140c 4be00000 jr r31 463 00001410 54000000 nop 464 00001414 .endproc _DisableIntrs 465 00001414 .align 2 466 00001414 .proc _EnableIntrs 467 00001414 .global _EnableIntrs 468 00001414 _EnableIntrs: 469 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 470 00001414 afbefffc sw -4(r29),r30; push fp 471 00001418 001df020 add r30,r0,r29; fp = sp 472 0000141c afbffff8 sw -8(r29),r31; push ret addr 473 00001420 2fbd0010 subui r29,r29,#16; alloc local storage 474 00001424 afa20000 sw 0(r29),r2 475 00001428 23bdfff8 addi r29,r29,#-8 476 0000142c 20020000 addi r2,r0,#0 477 00001430 afa20000 sw (r29),r2 478 00001434 0ffffe50 jal _SetIntrs 479 00001438 54000000 nop; not filled. 480 0000143c 23bd0008 addi r29,r29,#8 481 00001440 8fa20000 lw r2,0(r29) 482 00001444 8fdffff8 lw r31,-8(r30) 483 00001448 001ee820 add r29,r0,r30 484 0000144c 8fdefffc lw r30,-4(r30) 485 00001450 4be00000 jr r31 486 00001454 54000000 nop 487 00001458 .endproc _EnableIntrs 488 00001458 .align 2 489 00001458 .proc _RestoreIntrs 490 00001458 .global _RestoreIntrs 491 00001458 _RestoreIntrs: 492 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 493 00001458 afbefffc sw -4(r29),r30; push fp 494 0000145c 001df020 add r30,r0,r29; fp = sp 495 00001460 afbffff8 sw -8(r29),r31; push ret addr 496 00001464 2fbd0010 subui r29,r29,#16; alloc local storage 497 00001468 afa20000 sw 0(r29),r2 498 0000146c 23bdfff8 addi r29,r29,#-8 499 00001470 8fc20000 lw r2,(r30) 500 00001474 afa20000 sw (r29),r2 501 00001478 0ffffe0c jal _SetIntrs 502 0000147c 54000000 nop; not filled. 503 00001480 23bd0008 addi r29,r29,#8 504 00001484 8fa20000 lw r2,0(r29) 505 00001488 8fdffff8 lw r31,-8(r30) 506 0000148c 001ee820 add r29,r0,r30 507 00001490 8fdefffc lw r30,-4(r30) 508 00001494 4be00000 jr r31 509 00001498 54000000 nop 510 0000149c .endproc _RestoreIntrs 511 0000149c .align 2 512 0000149c .proc _QueueLinkInit 513 0000149c .global _QueueLinkInit 514 0000149c _QueueLinkInit: 515 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 516 0000149c afbefffc sw -4(r29),r30; push fp 517 000014a0 001df020 add r30,r0,r29; fp = sp 518 000014a4 afbffff8 sw -8(r29),r31; push ret addr 519 000014a8 2fbd0010 subui r29,r29,#16; alloc local storage 520 000014ac afa20000 sw 0(r29),r2 521 000014b0 8fc10000 lw r1,(r30) 522 000014b4 8fc20004 lw r2,4(r30) 523 000014b8 201f0000 addi r31,r0,#0 524 000014bc ac3f0000 sw (r1),r31 525 000014c0 ac22000c sw 12(r1),r2 526 000014c4 8fa20000 lw r2,0(r29) 527 000014c8 8fdffff8 lw r31,-8(r30) 528 000014cc 001ee820 add r29,r0,r30 529 000014d0 8fdefffc lw r30,-4(r30) 530 000014d4 4be00000 jr r31 531 000014d8 54000000 nop 532 000014dc .endproc _QueueLinkInit 533 000014dc .align 2 534 000014dc .proc _QueueNext 535 000014dc .global _QueueNext 536 000014dc _QueueNext: 537 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 538 000014dc afbefffc sw -4(r29),r30; push fp 539 000014e0 001df020 add r30,r0,r29; fp = sp 540 000014e4 afbffff8 sw -8(r29),r31; push ret addr 541 000014e8 2fbd0008 subui r29,r29,#8; alloc local storage 542 000014ec 8fc10000 lw r1,(r30) 543 000014f0 8c210000 lw r1,(r1) 544 000014f4 8fdffff8 lw r31,-8(r30) 545 000014f8 001ee820 add r29,r0,r30 546 000014fc 8fdefffc lw r30,-4(r30) 547 00001500 4be00000 jr r31 548 00001504 54000000 nop 549 00001508 .endproc _QueueNext 550 00001508 .align 2 551 00001508 .proc _QueuePrev 552 00001508 .global _QueuePrev 553 00001508 _QueuePrev: 554 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 555 00001508 afbefffc sw -4(r29),r30; push fp 556 0000150c 001df020 add r30,r0,r29; fp = sp 557 00001510 afbffff8 sw -8(r29),r31; push ret addr 558 00001514 2fbd0008 subui r29,r29,#8; alloc local storage 559 00001518 8fc10000 lw r1,(r30) 560 0000151c 8c210004 lw r1,4(r1) 561 00001520 8fdffff8 lw r31,-8(r30) 562 00001524 001ee820 add r29,r0,r30 563 00001528 8fdefffc lw r30,-4(r30) 564 0000152c 4be00000 jr r31 565 00001530 54000000 nop 566 00001534 .endproc _QueuePrev 567 00001534 .align 2 568 00001534 .proc _QueueFirst 569 00001534 .global _QueueFirst 570 00001534 _QueueFirst: 571 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 572 00001534 afbefffc sw -4(r29),r30; push fp 573 00001538 001df020 add r30,r0,r29; fp = sp 574 0000153c afbffff8 sw -8(r29),r31; push ret addr 575 00001540 2fbd0008 subui r29,r29,#8; alloc local storage 576 00001544 8fc10000 lw r1,(r30) 577 00001548 8c210000 lw r1,(r1) 578 0000154c 8fdffff8 lw r31,-8(r30) 579 00001550 001ee820 add r29,r0,r30 580 00001554 8fdefffc lw r30,-4(r30) 581 00001558 4be00000 jr r31 582 0000155c 54000000 nop 583 00001560 .endproc _QueueFirst 584 00001560 .align 2 585 00001560 .proc _QueueLast 586 00001560 .global _QueueLast 587 00001560 _QueueLast: 588 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 589 00001560 afbefffc sw -4(r29),r30; push fp 590 00001564 001df020 add r30,r0,r29; fp = sp 591 00001568 afbffff8 sw -8(r29),r31; push ret addr 592 0000156c 2fbd0008 subui r29,r29,#8; alloc local storage 593 00001570 8fc10000 lw r1,(r30) 594 00001574 8c210004 lw r1,4(r1) 595 00001578 8fdffff8 lw r31,-8(r30) 596 0000157c 001ee820 add r29,r0,r30 597 00001580 8fdefffc lw r30,-4(r30) 598 00001584 4be00000 jr r31 599 00001588 54000000 nop 600 0000158c .endproc _QueueLast 601 0000158c .align 2 602 0000158c .proc _QueueInsertAfter 603 0000158c .global _QueueInsertAfter 604 0000158c _QueueInsertAfter: 605 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 606 0000158c afbefffc sw -4(r29),r30; push fp 607 00001590 001df020 add r30,r0,r29; fp = sp 608 00001594 afbffff8 sw -8(r29),r31; push ret addr 609 00001598 2fbd0010 subui r29,r29,#16; alloc local storage 610 0000159c afa20000 sw 0(r29),r2 611 000015a0 afa30004 sw 4(r29),r3 612 000015a4 8fc30000 lw r3,(r30) 613 000015a8 8fc20004 lw r2,4(r30) 614 000015ac 8fc10008 lw r1,8(r30) 615 000015b0 ac230008 sw 8(r1),r3 616 000015b4 ac220004 sw 4(r1),r2 617 000015b8 8c5f0000 lw r31,(r2) 618 000015bc ac3f0000 sw (r1),r31 619 000015c0 ac410000 sw (r2),r1 620 000015c4 8c220000 lw r2,(r1) 621 000015c8 ac410004 sw 4(r2),r1 622 000015cc 8c610008 lw r1,8(r3) 623 000015d0 20210001 addi r1,r1,#1 624 000015d4 ac610008 sw 8(r3),r1 625 000015d8 8fa20000 lw r2,0(r29) 626 000015dc 8fa30004 lw r3,4(r29) 627 000015e0 8fdffff8 lw r31,-8(r30) 628 000015e4 001ee820 add r29,r0,r30 629 000015e8 8fdefffc lw r30,-4(r30) 630 000015ec 4be00000 jr r31 631 000015f0 54000000 nop 632 000015f4 .endproc _QueueInsertAfter 633 000015f4 .align 2 634 000015f4 .proc _QueueInsertFirst 635 000015f4 .global _QueueInsertFirst 636 000015f4 _QueueInsertFirst: 637 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 638 000015f4 afbefffc sw -4(r29),r30; push fp 639 000015f8 001df020 add r30,r0,r29; fp = sp 640 000015fc afbffff8 sw -8(r29),r31; push ret addr 641 00001600 2fbd0010 subui r29,r29,#16; alloc local storage 642 00001604 afa20000 sw 0(r29),r2 643 00001608 afa30004 sw 4(r29),r3 644 0000160c 8fc30000 lw r3,(r30) 645 00001610 8fc10004 lw r1,4(r30) 646 00001614 ac230008 sw 8(r1),r3 647 00001618 ac230004 sw 4(r1),r3 648 0000161c 8c7f0000 lw r31,(r3) 649 00001620 ac3f0000 sw (r1),r31 650 00001624 ac610000 sw (r3),r1 651 00001628 8c220000 lw r2,(r1) 652 0000162c ac410004 sw 4(r2),r1 653 00001630 8c610008 lw r1,8(r3) 654 00001634 20210001 addi r1,r1,#1 655 00001638 ac610008 sw 8(r3),r1 656 0000163c 8fa20000 lw r2,0(r29) 657 00001640 8fa30004 lw r3,4(r29) 658 00001644 8fdffff8 lw r31,-8(r30) 659 00001648 001ee820 add r29,r0,r30 660 0000164c 8fdefffc lw r30,-4(r30) 661 00001650 4be00000 jr r31 662 00001654 54000000 nop 663 00001658 .endproc _QueueInsertFirst 664 00001658 .align 2 665 00001658 .proc _QueueInsertLast 666 00001658 .global _QueueInsertLast 667 00001658 _QueueInsertLast: 668 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 669 00001658 afbefffc sw -4(r29),r30; push fp 670 0000165c 001df020 add r30,r0,r29; fp = sp 671 00001660 afbffff8 sw -8(r29),r31; push ret addr 672 00001664 2fbd0010 subui r29,r29,#16; alloc local storage 673 00001668 afa20000 sw 0(r29),r2 674 0000166c afa30004 sw 4(r29),r3 675 00001670 8fc30000 lw r3,(r30) 676 00001674 8fc10004 lw r1,4(r30) 677 00001678 8c620004 lw r2,4(r3) 678 0000167c ac230008 sw 8(r1),r3 679 00001680 ac220004 sw 4(r1),r2 680 00001684 8c5f0000 lw r31,(r2) 681 00001688 ac3f0000 sw (r1),r31 682 0000168c ac410000 sw (r2),r1 683 00001690 8c220000 lw r2,(r1) 684 00001694 ac410004 sw 4(r2),r1 685 00001698 8c610008 lw r1,8(r3) 686 0000169c 20210001 addi r1,r1,#1 687 000016a0 ac610008 sw 8(r3),r1 688 000016a4 8fa20000 lw r2,0(r29) 689 000016a8 8fa30004 lw r3,4(r29) 690 000016ac 8fdffff8 lw r31,-8(r30) 691 000016b0 001ee820 add r29,r0,r30 692 000016b4 8fdefffc lw r30,-4(r30) 693 000016b8 4be00000 jr r31 694 000016bc 54000000 nop 695 000016c0 .endproc _QueueInsertLast 696 000016c0 .align 2 697 000016c0 .proc _QueueRemove 698 000016c0 .global _QueueRemove 699 000016c0 _QueueRemove: 700 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 701 000016c0 afbefffc sw -4(r29),r30; push fp 702 000016c4 001df020 add r30,r0,r29; fp = sp 703 000016c8 afbffff8 sw -8(r29),r31; push ret addr 704 000016cc 2fbd0010 subui r29,r29,#16; alloc local storage 705 000016d0 afa20000 sw 0(r29),r2 706 000016d4 afa30004 sw 4(r29),r3 707 000016d8 8fdf0000 lw r31,(r30) 708 000016dc 8fe10008 lw r1,8(r31) 709 000016e0 8c210008 lw r1,8(r1) 710 000016e4 6c210000 sgti r1,r1,#0 711 000016e8 1020002c beqz r1,L44_LF2 712 000016ec 54000000 nop; not filled. 713 000016f0 8fe10004 lw r1,4(r31) 714 000016f4 8fe30000 lw r3,(r31) 715 000016f8 ac230000 sw (r1),r3 716 000016fc 8fe10000 lw r1,(r31) 717 00001700 8fe30004 lw r3,4(r31) 718 00001704 ac230004 sw 4(r1),r3 719 00001708 8fe20008 lw r2,8(r31) 720 0000170c 8c410008 lw r1,8(r2) 721 00001710 2021ffff addi r1,r1,#-1 722 00001714 ac410008 sw 8(r2),r1 723 00001718 L44_LF2: 724 00001718 20030000 addi r3,r0,#0 725 0000171c afe30000 sw (r31),r3 726 00001720 8fa20000 lw r2,0(r29) 727 00001724 8fa30004 lw r3,4(r29) 728 00001728 8fdffff8 lw r31,-8(r30) 729 0000172c 001ee820 add r29,r0,r30 730 00001730 8fdefffc lw r30,-4(r30) 731 00001734 4be00000 jr r31 732 00001738 54000000 nop 733 0000173c .endproc _QueueRemove 734 0000173c .align 2 735 0000173c .proc _QueueLength 736 0000173c .global _QueueLength 737 0000173c _QueueLength: 738 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 739 0000173c afbefffc sw -4(r29),r30; push fp 740 00001740 001df020 add r30,r0,r29; fp = sp 741 00001744 afbffff8 sw -8(r29),r31; push ret addr 742 00001748 2fbd0008 subui r29,r29,#8; alloc local storage 743 0000174c 8fc10000 lw r1,(r30) 744 00001750 8c210008 lw r1,8(r1) 745 00001754 8fdffff8 lw r31,-8(r30) 746 00001758 001ee820 add r29,r0,r30 747 0000175c 8fdefffc lw r30,-4(r30) 748 00001760 4be00000 jr r31 749 00001764 54000000 nop 750 00001768 .endproc _QueueLength 751 00001768 .align 2 752 00001768 .proc _QueueEmpty 753 00001768 .global _QueueEmpty 754 00001768 _QueueEmpty: 755 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 756 00001768 afbefffc sw -4(r29),r30; push fp 757 0000176c 001df020 add r30,r0,r29; fp = sp 758 00001770 afbffff8 sw -8(r29),r31; push ret addr 759 00001774 2fbd0008 subui r29,r29,#8; alloc local storage 760 00001778 8fc10000 lw r1,(r30) 761 0000177c 8c210008 lw r1,8(r1) 762 00001780 60210000 seqi r1,r1,#0 763 00001784 8fdffff8 lw r31,-8(r30) 764 00001788 001ee820 add r29,r0,r30 765 0000178c 8fdefffc lw r30,-4(r30) 766 00001790 4be00000 jr r31 767 00001794 54000000 nop 768 00001798 .endproc _QueueEmpty 769 00001798 .data 770 0000b035 .align 2 771 0000b038 LC0_LF2: 772 0000b038 41747465 .ascii "Attepmting to open %s mode=%d.\n\000" 772 0000b03c 706d7469 772 0000b040 6e672074 772 0000b044 6f206f70 772 0000b048 656e2025 772 0000b04c 73206d6f 772 0000b050 64653d25 772 0000b054 642e0a00 773 0000b058 .align 2 774 0000b058 LC1_LF2: 775 0000b058 646c783a .ascii "dlx:\000" 775 0000b05c 00 776 0000b05d .align 2 777 0000b060 LC2_LF2: 778 0000b060 46696c65 .ascii "File %s opening in file system %d.\n\000" 778 0000b064 20257320 778 0000b068 6f70656e 778 0000b06c 696e6720 778 0000b070 696e2066 778 0000b074 696c6520 778 0000b078 73797374 778 0000b07c 656d2025 778 0000b080 642e0a00 779 0000b084 .align 2 780 0000b084 LC3_LF2: 781 0000b084 4f70656e .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" 781 0000b088 65642025 781 0000b08c 7320696e 781 0000b090 20465320 781 0000b094 25642c20 781 0000b098 6d6f6465 781 0000b09c 3d256420 781 0000b0a0 736c6f74 781 0000b0a4 3d25642e 781 0000b0a8 0a00 782 0000b0aa .text 783 00001798 .align 2 784 00001798 .proc _FsOpen 785 00001798 .global _FsOpen 786 00001798 _FsOpen: 787 ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. 788 00001798 afbefffc sw -4(r29),r30; push fp 789 0000179c 001df020 add r30,r0,r29; fp = sp 790 000017a0 afbffff8 sw -8(r29),r31; push ret addr 791 000017a4 2fbd0028 subui r29,r29,#40; alloc local storage 792 000017a8 afa20000 sw 0(r29),r2 793 000017ac afa30004 sw 4(r29),r3 794 000017b0 afa40008 sw 8(r29),r4 795 000017b4 afa5000c sw 12(r29),r5 796 000017b8 afa60010 sw 16(r29),r6 797 000017bc afa70014 sw 20(r29),r7 798 000017c0 afa80018 sw 24(r29),r8 799 000017c4 8fc40000 lw r4,(r30) 800 000017c8 8fc50004 lw r5,4(r30) 801 000017cc 23bdfff8 addi r29,r29,#-8 802 000017d0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 803 000017d4 2442fd60 addui r2,r2,(_debugstr)&0xffff 804 000017d8 afa20000 sw (r29),r2 805 000017dc 20080066 addi r8,r0,#102 806 000017e0 afa80004 sw 4(r29),r8 807 000017e4 0c00264c jal _dindex 808 000017e8 54000000 nop; not filled. 809 000017ec 23bd0008 addi r29,r29,#8 810 000017f0 64210000 snei r1,r1,#0 811 000017f4 1420002c bnez r1,L56_LF2 812 000017f8 54000000 nop; not filled. 813 000017fc 23bdfff8 addi r29,r29,#-8 814 00001800 afa20000 sw (r29),r2 815 00001804 2008002b addi r8,r0,#43 816 00001808 afa80004 sw 4(r29),r8 817 0000180c 0c002624 jal _dindex 818 00001810 54000000 nop; not filled. 819 00001814 23bd0008 addi r29,r29,#8 820 00001818 64210000 snei r1,r1,#0 821 0000181c 10200028 beqz r1,L55_LF2 822 00001820 54000000 nop; not filled. 823 00001824 L56_LF2: 824 00001824 23bdfff0 addi r29,r29,#-16 825 00001828 3c080000 lhi r8,((LC0_LF2)>>16)&0xffff 826 0000182c 2508b038 addui r8,r8,(LC0_LF2)&0xffff 827 00001830 afa80000 sw (r29),r8 828 00001834 afa40004 sw 4(r29),r4 829 00001838 afa50008 sw 8(r29),r5 830 0000183c 0c0097ac jal _printf 831 00001840 54000000 nop; not filled. 832 00001844 23bd0010 addi r29,r29,#16 833 00001848 L55_LF2: 834 00001848 30a50003 andi r5,r5,#3 835 0000184c 64a10000 snei r1,r5,#0 836 00001850 10200044 beqz r1,L74_LF2 837 00001854 54000000 nop; not filled. 838 00001858 20030000 addi r3,r0,#0 839 0000185c 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 840 00001860 24c6b110 addui r6,r6,(_openfiles_LF2)&0xffff 841 00001864 00061020 add r2,r0,r6 842 00001868 L61_LF2: 843 00001868 8c410004 lw r1,4(r2) 844 0000186c 64210000 snei r1,r1,#0 845 00001870 10200018 beqz r1,L59_LF2 846 00001874 54000000 nop; not filled. 847 00001878 2042010c addi r2,r2,#268 848 0000187c 20630001 addi r3,r3,#1 849 00001880 7061001f slei r1,r3,#31 850 00001884 1420ffe0 bnez r1,L61_LF2 851 00001888 54000000 nop; not filled. 852 0000188c L59_LF2: 853 0000188c 6c61001f sgti r1,r3,#31 854 00001890 10200010 beqz r1,L64_LF2 855 00001894 54000000 nop; not filled. 856 00001898 L74_LF2: 857 00001898 2001ffff addi r1,r0,#-1 858 0000189c 08000224 j L73_LF2 859 000018a0 54000000 nop; not filled. 860 000018a4 L64_LF2: 861 000018a4 50610004 slli r1,r3,#0x4 862 000018a8 00230820 add r1,r1,r3 863 000018ac 50210002 slli r1,r1,#0x2 864 000018b0 00230822 sub r1,r1,r3 865 000018b4 50210002 slli r1,r1,#0x2 866 000018b8 00261020 add r2,r1,r6 867 000018bc ac450004 sw 4(r2),r5 868 000018c0 23bdfff0 addi r29,r29,#-16 869 000018c4 afa40000 sw (r29),r4 870 000018c8 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 871 000018cc 2421b058 addui r1,r1,(LC1_LF2)&0xffff 872 000018d0 afa10004 sw 4(r29),r1 873 000018d4 20080004 addi r8,r0,#4 874 000018d8 afa80008 sw 8(r29),r8 875 000018dc 0c002210 jal _dstrncmp 876 000018e0 54000000 nop; not filled. 877 000018e4 23bd0010 addi r29,r29,#16 878 000018e8 64210000 snei r1,r1,#0 879 000018ec 14200014 bnez r1,L65_LF2 880 000018f0 54000000 nop; not filled. 881 000018f4 20840004 addi r4,r4,#4 882 000018f8 20080001 addi r8,r0,#1 883 000018fc 08000008 j L75_LF2 884 00001900 54000000 nop; not filled. 885 00001904 L65_LF2: 886 00001904 20080000 addi r8,r0,#0 887 00001908 L75_LF2: 888 00001908 ac480000 sw (r2),r8 889 0000190c 23bdfff8 addi r29,r29,#-8 890 00001910 3c020000 lhi r2,((_debugstr)>>16)&0xffff 891 00001914 2442fd60 addui r2,r2,(_debugstr)&0xffff 892 00001918 afa20000 sw (r29),r2 893 0000191c 20080066 addi r8,r0,#102 894 00001920 afa80004 sw 4(r29),r8 895 00001924 0c00250c jal _dindex 896 00001928 54000000 nop; not filled. 897 0000192c 23bd0008 addi r29,r29,#8 898 00001930 64210000 snei r1,r1,#0 899 00001934 1420002c bnez r1,L68_LF2 900 00001938 54000000 nop; not filled. 901 0000193c 23bdfff8 addi r29,r29,#-8 902 00001940 afa20000 sw (r29),r2 903 00001944 2008002b addi r8,r0,#43 904 00001948 afa80004 sw 4(r29),r8 905 0000194c 0c0024e4 jal _dindex 906 00001950 54000000 nop; not filled. 907 00001954 23bd0008 addi r29,r29,#8 908 00001958 64210000 snei r1,r1,#0 909 0000195c 1020004c beqz r1,L67_LF2 910 00001960 54000000 nop; not filled. 911 00001964 L68_LF2: 912 00001964 23bdfff0 addi r29,r29,#-16 913 00001968 3c080000 lhi r8,((LC2_LF2)>>16)&0xffff 914 0000196c 2508b060 addui r8,r8,(LC2_LF2)&0xffff 915 00001970 afa80000 sw (r29),r8 916 00001974 afa40004 sw 4(r29),r4 917 00001978 50610004 slli r1,r3,#0x4 918 0000197c 00230820 add r1,r1,r3 919 00001980 50210002 slli r1,r1,#0x2 920 00001984 00230822 sub r1,r1,r3 921 00001988 50210002 slli r1,r1,#0x2 922 0000198c 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 923 00001990 2508b110 addui r8,r8,(_openfiles_LF2)&0xffff 924 00001994 00280820 add r1,r1,r8 925 00001998 8c210000 lw r1,(r1) 926 0000199c afa10008 sw 8(r29),r1 927 000019a0 0c009648 jal _printf 928 000019a4 54000000 nop; not filled. 929 000019a8 23bd0010 addi r29,r29,#16 930 000019ac L67_LF2: 931 000019ac 23bdfff0 addi r29,r29,#-16 932 000019b0 50610004 slli r1,r3,#0x4 933 000019b4 00230820 add r1,r1,r3 934 000019b8 50210002 slli r1,r1,#0x2 935 000019bc 00230822 sub r1,r1,r3 936 000019c0 50260002 slli r6,r1,#0x2 937 000019c4 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 938 000019c8 2508b110 addui r8,r8,(_openfiles_LF2)&0xffff 939 000019cc 00c83820 add r7,r6,r8 940 000019d0 8ce20000 lw r2,(r7) 941 000019d4 50410001 slli r1,r2,#0x1 942 000019d8 00220820 add r1,r1,r2 943 000019dc 50210003 slli r1,r1,#0x3 944 000019e0 3c080000 lhi r8,((_fs_LF2)>>16)&0xffff 945 000019e4 2508b0e0 addui r8,r8,(_fs_LF2)&0xffff 946 000019e8 00280820 add r1,r1,r8 947 000019ec afa30000 sw (r29),r3 948 000019f0 afa40004 sw 4(r29),r4 949 000019f4 afa50008 sw 8(r29),r5 950 000019f8 8c210000 lw r1,(r1) 951 000019fc 4c200000 jalr r1 952 00001a00 54000000 nop; not filled. 953 00001a04 00011020 add r2,r0,r1 954 00001a08 23bd0010 addi r29,r29,#16 955 00001a0c 68410000 slti r1,r2,#0 956 00001a10 10200024 beqz r1,L69_LF2 957 00001a14 54000000 nop; not filled. 958 00001a18 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 959 00001a1c 2508b110 addui r8,r8,(_openfiles_LF2)&0xffff 960 00001a20 00c80820 add r1,r6,r8 961 00001a24 20080000 addi r8,r0,#0 962 00001a28 ac280004 sw 4(r1),r8 963 00001a2c 00020820 add r1,r0,r2 964 00001a30 08000090 j L73_LF2 965 00001a34 54000000 nop; not filled. 966 00001a38 L69_LF2: 967 00001a38 23bdfff8 addi r29,r29,#-8 968 00001a3c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 969 00001a40 2442fd60 addui r2,r2,(_debugstr)&0xffff 970 00001a44 afa20000 sw (r29),r2 971 00001a48 20080066 addi r8,r0,#102 972 00001a4c afa80004 sw 4(r29),r8 973 00001a50 0c0023e0 jal _dindex 974 00001a54 54000000 nop; not filled. 975 00001a58 23bd0008 addi r29,r29,#8 976 00001a5c 64210000 snei r1,r1,#0 977 00001a60 1420002c bnez r1,L72_LF2 978 00001a64 54000000 nop; not filled. 979 00001a68 23bdfff8 addi r29,r29,#-8 980 00001a6c afa20000 sw (r29),r2 981 00001a70 2008002b addi r8,r0,#43 982 00001a74 afa80004 sw 4(r29),r8 983 00001a78 0c0023b8 jal _dindex 984 00001a7c 54000000 nop; not filled. 985 00001a80 23bd0008 addi r29,r29,#8 986 00001a84 64210000 snei r1,r1,#0 987 00001a88 10200034 beqz r1,L71_LF2 988 00001a8c 54000000 nop; not filled. 989 00001a90 L72_LF2: 990 00001a90 23bdffe8 addi r29,r29,#-24 991 00001a94 3c080000 lhi r8,((LC3_LF2)>>16)&0xffff 992 00001a98 2508b084 addui r8,r8,(LC3_LF2)&0xffff 993 00001a9c afa80000 sw (r29),r8 994 00001aa0 afa40004 sw 4(r29),r4 995 00001aa4 8ce70000 lw r7,(r7) 996 00001aa8 afa70008 sw 8(r29),r7 997 00001aac afa5000c sw 12(r29),r5 998 00001ab0 afa30010 sw 16(r29),r3 999 00001ab4 0c009534 jal _printf 1000 00001ab8 54000000 nop; not filled. 1001 00001abc 23bd0018 addi r29,r29,#24 1002 00001ac0 L71_LF2: 1003 00001ac0 00030820 add r1,r0,r3 1004 00001ac4 L73_LF2: 1005 00001ac4 8fa20000 lw r2,0(r29) 1006 00001ac8 8fa30004 lw r3,4(r29) 1007 00001acc 8fa40008 lw r4,8(r29) 1008 00001ad0 8fa5000c lw r5,12(r29) 1009 00001ad4 8fa60010 lw r6,16(r29) 1010 00001ad8 8fa70014 lw r7,20(r29) 1011 00001adc 8fa80018 lw r8,24(r29) 1012 00001ae0 8fdffff8 lw r31,-8(r30) 1013 00001ae4 001ee820 add r29,r0,r30 1014 00001ae8 8fdefffc lw r30,-4(r30) 1015 00001aec 4be00000 jr r31 1016 00001af0 54000000 nop 1017 00001af4 .endproc _FsOpen 1018 00001af4 .align 2 1019 00001af4 .proc _FsClose 1020 00001af4 .global _FsClose 1021 00001af4 _FsClose: 1022 ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. 1023 00001af4 afbefffc sw -4(r29),r30; push fp 1024 00001af8 001df020 add r30,r0,r29; fp = sp 1025 00001afc afbffff8 sw -8(r29),r31; push ret addr 1026 00001b00 2fbd0018 subui r29,r29,#24; alloc local storage 1027 00001b04 afa20000 sw 0(r29),r2 1028 00001b08 afa30004 sw 4(r29),r3 1029 00001b0c afa40008 sw 8(r29),r4 1030 00001b10 8fdf0000 lw r31,(r30) 1031 00001b14 20020000 addi r2,r0,#0 1032 00001b18 23e1ffff addi r1,r31,#-1 1033 00001b1c 7021001e sleui r1,r1,#30 1034 00001b20 10200038 beqz r1,L84_LF2 1035 00001b24 54000000 nop; not filled. 1036 00001b28 53e10004 slli r1,r31,#0x4 1037 00001b2c 003f0820 add r1,r1,r31 1038 00001b30 50210002 slli r1,r1,#0x2 1039 00001b34 003f0822 sub r1,r1,r31 1040 00001b38 50210002 slli r1,r1,#0x2 1041 00001b3c 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1042 00001b40 2484b110 addui r4,r4,(_openfiles_LF2)&0xffff 1043 00001b44 00240820 add r1,r1,r4 1044 00001b48 8c210004 lw r1,4(r1) 1045 00001b4c 64210000 snei r1,r1,#0 1046 00001b50 10200008 beqz r1,L84_LF2 1047 00001b54 54000000 nop; not filled. 1048 00001b58 20020001 addi r2,r0,#1 1049 00001b5c L84_LF2: 1050 00001b5c 64410000 snei r1,r2,#0 1051 00001b60 10200074 beqz r1,L82_LF2 1052 00001b64 54000000 nop; not filled. 1053 00001b68 23bdfff8 addi r29,r29,#-8 1054 00001b6c 53e10004 slli r1,r31,#0x4 1055 00001b70 003f0820 add r1,r1,r31 1056 00001b74 50210002 slli r1,r1,#0x2 1057 00001b78 003f0822 sub r1,r1,r31 1058 00001b7c 50230002 slli r3,r1,#0x2 1059 00001b80 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1060 00001b84 2484b110 addui r4,r4,(_openfiles_LF2)&0xffff 1061 00001b88 00640820 add r1,r3,r4 1062 00001b8c 8c220000 lw r2,(r1) 1063 00001b90 50410001 slli r1,r2,#0x1 1064 00001b94 00220820 add r1,r1,r2 1065 00001b98 50210003 slli r1,r1,#0x3 1066 00001b9c 3c040000 lhi r4,((_fs_LF2)>>16)&0xffff 1067 00001ba0 2484b0e0 addui r4,r4,(_fs_LF2)&0xffff 1068 00001ba4 00240820 add r1,r1,r4 1069 00001ba8 afbf0000 sw (r29),r31 1070 00001bac 8c210010 lw r1,16(r1) 1071 00001bb0 4c200000 jalr r1 1072 00001bb4 54000000 nop; not filled. 1073 00001bb8 23bd0008 addi r29,r29,#8 1074 00001bbc 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1075 00001bc0 2484b110 addui r4,r4,(_openfiles_LF2)&0xffff 1076 00001bc4 00641020 add r2,r3,r4 1077 00001bc8 20040000 addi r4,r0,#0 1078 00001bcc ac440004 sw 4(r2),r4 1079 00001bd0 08000008 j L86_LF2 1080 00001bd4 54000000 nop; not filled. 1081 00001bd8 L82_LF2: 1082 00001bd8 2001ffff addi r1,r0,#-1 1083 00001bdc L86_LF2: 1084 00001bdc 8fa20000 lw r2,0(r29) 1085 00001be0 8fa30004 lw r3,4(r29) 1086 00001be4 8fa40008 lw r4,8(r29) 1087 00001be8 8fdffff8 lw r31,-8(r30) 1088 00001bec 001ee820 add r29,r0,r30 1089 00001bf0 8fdefffc lw r30,-4(r30) 1090 00001bf4 4be00000 jr r31 1091 00001bf8 54000000 nop 1092 00001bfc .endproc _FsClose 1093 00001bfc .align 2 1094 00001bfc .proc _FsRead 1095 00001bfc .global _FsRead 1096 00001bfc _FsRead: 1097 ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. 1098 00001bfc afbefffc sw -4(r29),r30; push fp 1099 00001c00 001df020 add r30,r0,r29; fp = sp 1100 00001c04 afbffff8 sw -8(r29),r31; push ret addr 1101 00001c08 2fbd0010 subui r29,r29,#16; alloc local storage 1102 00001c0c afa20000 sw 0(r29),r2 1103 00001c10 afa30004 sw 4(r29),r3 1104 00001c14 8fdf0000 lw r31,(r30) 1105 00001c18 20020000 addi r2,r0,#0 1106 00001c1c 23e1ffff addi r1,r31,#-1 1107 00001c20 7021001e sleui r1,r1,#30 1108 00001c24 10200038 beqz r1,L94_LF2 1109 00001c28 54000000 nop; not filled. 1110 00001c2c 53e10004 slli r1,r31,#0x4 1111 00001c30 003f0820 add r1,r1,r31 1112 00001c34 50210002 slli r1,r1,#0x2 1113 00001c38 003f0822 sub r1,r1,r31 1114 00001c3c 50210002 slli r1,r1,#0x2 1115 00001c40 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1116 00001c44 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1117 00001c48 00230820 add r1,r1,r3 1118 00001c4c 8c210004 lw r1,4(r1) 1119 00001c50 64210000 snei r1,r1,#0 1120 00001c54 10200008 beqz r1,L94_LF2 1121 00001c58 54000000 nop; not filled. 1122 00001c5c 20020001 addi r2,r0,#1 1123 00001c60 L94_LF2: 1124 00001c60 64410000 snei r1,r2,#0 1125 00001c64 10200070 beqz r1,L92_LF2 1126 00001c68 54000000 nop; not filled. 1127 00001c6c 23bdfff0 addi r29,r29,#-16 1128 00001c70 53e10004 slli r1,r31,#0x4 1129 00001c74 003f0820 add r1,r1,r31 1130 00001c78 50210002 slli r1,r1,#0x2 1131 00001c7c 003f0822 sub r1,r1,r31 1132 00001c80 50210002 slli r1,r1,#0x2 1133 00001c84 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1134 00001c88 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1135 00001c8c 00230820 add r1,r1,r3 1136 00001c90 8c220000 lw r2,(r1) 1137 00001c94 50410001 slli r1,r2,#0x1 1138 00001c98 00220820 add r1,r1,r2 1139 00001c9c 50210003 slli r1,r1,#0x3 1140 00001ca0 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1141 00001ca4 2463b0e0 addui r3,r3,(_fs_LF2)&0xffff 1142 00001ca8 00230820 add r1,r1,r3 1143 00001cac afbf0000 sw (r29),r31 1144 00001cb0 8fc30004 lw r3,4(r30) 1145 00001cb4 afa30004 sw 4(r29),r3 1146 00001cb8 8fc30008 lw r3,8(r30) 1147 00001cbc afa30008 sw 8(r29),r3 1148 00001cc0 8c210004 lw r1,4(r1) 1149 00001cc4 4c200000 jalr r1 1150 00001cc8 54000000 nop; not filled. 1151 00001ccc 23bd0010 addi r29,r29,#16 1152 00001cd0 08000008 j L91_LF2 1153 00001cd4 54000000 nop; not filled. 1154 00001cd8 L92_LF2: 1155 00001cd8 2001ffff addi r1,r0,#-1 1156 00001cdc L91_LF2: 1157 00001cdc 8fa20000 lw r2,0(r29) 1158 00001ce0 8fa30004 lw r3,4(r29) 1159 00001ce4 8fdffff8 lw r31,-8(r30) 1160 00001ce8 001ee820 add r29,r0,r30 1161 00001cec 8fdefffc lw r30,-4(r30) 1162 00001cf0 4be00000 jr r31 1163 00001cf4 54000000 nop 1164 00001cf8 .endproc _FsRead 1165 00001cf8 .align 2 1166 00001cf8 .proc _FsWrite 1167 00001cf8 .global _FsWrite 1168 00001cf8 _FsWrite: 1169 ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. 1170 00001cf8 afbefffc sw -4(r29),r30; push fp 1171 00001cfc 001df020 add r30,r0,r29; fp = sp 1172 00001d00 afbffff8 sw -8(r29),r31; push ret addr 1173 00001d04 2fbd0010 subui r29,r29,#16; alloc local storage 1174 00001d08 afa20000 sw 0(r29),r2 1175 00001d0c afa30004 sw 4(r29),r3 1176 00001d10 8fdf0000 lw r31,(r30) 1177 00001d14 20020000 addi r2,r0,#0 1178 00001d18 23e1ffff addi r1,r31,#-1 1179 00001d1c 7021001e sleui r1,r1,#30 1180 00001d20 10200038 beqz r1,L103_LF2 1181 00001d24 54000000 nop; not filled. 1182 00001d28 53e10004 slli r1,r31,#0x4 1183 00001d2c 003f0820 add r1,r1,r31 1184 00001d30 50210002 slli r1,r1,#0x2 1185 00001d34 003f0822 sub r1,r1,r31 1186 00001d38 50210002 slli r1,r1,#0x2 1187 00001d3c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1188 00001d40 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1189 00001d44 00230820 add r1,r1,r3 1190 00001d48 8c210004 lw r1,4(r1) 1191 00001d4c 64210000 snei r1,r1,#0 1192 00001d50 10200008 beqz r1,L103_LF2 1193 00001d54 54000000 nop; not filled. 1194 00001d58 20020001 addi r2,r0,#1 1195 00001d5c L103_LF2: 1196 00001d5c 64410000 snei r1,r2,#0 1197 00001d60 10200070 beqz r1,L101_LF2 1198 00001d64 54000000 nop; not filled. 1199 00001d68 23bdfff0 addi r29,r29,#-16 1200 00001d6c 53e10004 slli r1,r31,#0x4 1201 00001d70 003f0820 add r1,r1,r31 1202 00001d74 50210002 slli r1,r1,#0x2 1203 00001d78 003f0822 sub r1,r1,r31 1204 00001d7c 50210002 slli r1,r1,#0x2 1205 00001d80 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1206 00001d84 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1207 00001d88 00230820 add r1,r1,r3 1208 00001d8c 8c220000 lw r2,(r1) 1209 00001d90 50410001 slli r1,r2,#0x1 1210 00001d94 00220820 add r1,r1,r2 1211 00001d98 50210003 slli r1,r1,#0x3 1212 00001d9c 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1213 00001da0 2463b0e0 addui r3,r3,(_fs_LF2)&0xffff 1214 00001da4 00230820 add r1,r1,r3 1215 00001da8 afbf0000 sw (r29),r31 1216 00001dac 8fc30004 lw r3,4(r30) 1217 00001db0 afa30004 sw 4(r29),r3 1218 00001db4 8fc30008 lw r3,8(r30) 1219 00001db8 afa30008 sw 8(r29),r3 1220 00001dbc 8c210008 lw r1,8(r1) 1221 00001dc0 4c200000 jalr r1 1222 00001dc4 54000000 nop; not filled. 1223 00001dc8 23bd0010 addi r29,r29,#16 1224 00001dcc 08000008 j L100_LF2 1225 00001dd0 54000000 nop; not filled. 1226 00001dd4 L101_LF2: 1227 00001dd4 2001ffff addi r1,r0,#-1 1228 00001dd8 L100_LF2: 1229 00001dd8 8fa20000 lw r2,0(r29) 1230 00001ddc 8fa30004 lw r3,4(r29) 1231 00001de0 8fdffff8 lw r31,-8(r30) 1232 00001de4 001ee820 add r29,r0,r30 1233 00001de8 8fdefffc lw r30,-4(r30) 1234 00001dec 4be00000 jr r31 1235 00001df0 54000000 nop 1236 00001df4 .endproc _FsWrite 1237 00001df4 .align 2 1238 00001df4 .proc _FsSeek 1239 00001df4 .global _FsSeek 1240 00001df4 _FsSeek: 1241 ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. 1242 00001df4 afbefffc sw -4(r29),r30; push fp 1243 00001df8 001df020 add r30,r0,r29; fp = sp 1244 00001dfc afbffff8 sw -8(r29),r31; push ret addr 1245 00001e00 2fbd0010 subui r29,r29,#16; alloc local storage 1246 00001e04 afa20000 sw 0(r29),r2 1247 00001e08 afa30004 sw 4(r29),r3 1248 00001e0c 8fdf0000 lw r31,(r30) 1249 00001e10 20020000 addi r2,r0,#0 1250 00001e14 23e1ffff addi r1,r31,#-1 1251 00001e18 7021001e sleui r1,r1,#30 1252 00001e1c 10200038 beqz r1,L112_LF2 1253 00001e20 54000000 nop; not filled. 1254 00001e24 53e10004 slli r1,r31,#0x4 1255 00001e28 003f0820 add r1,r1,r31 1256 00001e2c 50210002 slli r1,r1,#0x2 1257 00001e30 003f0822 sub r1,r1,r31 1258 00001e34 50210002 slli r1,r1,#0x2 1259 00001e38 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1260 00001e3c 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1261 00001e40 00230820 add r1,r1,r3 1262 00001e44 8c210004 lw r1,4(r1) 1263 00001e48 64210000 snei r1,r1,#0 1264 00001e4c 10200008 beqz r1,L112_LF2 1265 00001e50 54000000 nop; not filled. 1266 00001e54 20020001 addi r2,r0,#1 1267 00001e58 L112_LF2: 1268 00001e58 64410000 snei r1,r2,#0 1269 00001e5c 10200070 beqz r1,L110_LF2 1270 00001e60 54000000 nop; not filled. 1271 00001e64 23bdfff0 addi r29,r29,#-16 1272 00001e68 53e10004 slli r1,r31,#0x4 1273 00001e6c 003f0820 add r1,r1,r31 1274 00001e70 50210002 slli r1,r1,#0x2 1275 00001e74 003f0822 sub r1,r1,r31 1276 00001e78 50210002 slli r1,r1,#0x2 1277 00001e7c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1278 00001e80 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1279 00001e84 00230820 add r1,r1,r3 1280 00001e88 8c220000 lw r2,(r1) 1281 00001e8c 50410001 slli r1,r2,#0x1 1282 00001e90 00220820 add r1,r1,r2 1283 00001e94 50210003 slli r1,r1,#0x3 1284 00001e98 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1285 00001e9c 2463b0e0 addui r3,r3,(_fs_LF2)&0xffff 1286 00001ea0 00230820 add r1,r1,r3 1287 00001ea4 afbf0000 sw (r29),r31 1288 00001ea8 8fc30004 lw r3,4(r30) 1289 00001eac afa30004 sw 4(r29),r3 1290 00001eb0 8fc30008 lw r3,8(r30) 1291 00001eb4 afa30008 sw 8(r29),r3 1292 00001eb8 8c21000c lw r1,12(r1) 1293 00001ebc 4c200000 jalr r1 1294 00001ec0 54000000 nop; not filled. 1295 00001ec4 23bd0010 addi r29,r29,#16 1296 00001ec8 08000008 j L109_LF2 1297 00001ecc 54000000 nop; not filled. 1298 00001ed0 L110_LF2: 1299 00001ed0 2001ffff addi r1,r0,#-1 1300 00001ed4 L109_LF2: 1301 00001ed4 8fa20000 lw r2,0(r29) 1302 00001ed8 8fa30004 lw r3,4(r29) 1303 00001edc 8fdffff8 lw r31,-8(r30) 1304 00001ee0 001ee820 add r29,r0,r30 1305 00001ee4 8fdefffc lw r30,-4(r30) 1306 00001ee8 4be00000 jr r31 1307 00001eec 54000000 nop 1308 00001ef0 .endproc _FsSeek 1309 00001ef0 .align 2 1310 00001ef0 .proc _FsDelete 1311 00001ef0 .global _FsDelete 1312 00001ef0 _FsDelete: 1313 ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. 1314 00001ef0 afbefffc sw -4(r29),r30; push fp 1315 00001ef4 001df020 add r30,r0,r29; fp = sp 1316 00001ef8 afbffff8 sw -8(r29),r31; push ret addr 1317 00001efc 2fbd0010 subui r29,r29,#16; alloc local storage 1318 00001f00 afa20000 sw 0(r29),r2 1319 00001f04 afa30004 sw 4(r29),r3 1320 00001f08 8fc20000 lw r2,(r30) 1321 00001f0c 23bdfff0 addi r29,r29,#-16 1322 00001f10 afa20000 sw (r29),r2 1323 00001f14 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 1324 00001f18 2421b058 addui r1,r1,(LC1_LF2)&0xffff 1325 00001f1c afa10004 sw 4(r29),r1 1326 00001f20 20030004 addi r3,r0,#4 1327 00001f24 afa30008 sw 8(r29),r3 1328 00001f28 0c001bc4 jal _dstrncmp 1329 00001f2c 54000000 nop; not filled. 1330 00001f30 23bd0010 addi r29,r29,#16 1331 00001f34 64210000 snei r1,r1,#0 1332 00001f38 1420001c bnez r1,L118_LF2 1333 00001f3c 54000000 nop; not filled. 1334 00001f40 20420004 addi r2,r2,#4 1335 00001f44 23bdfff8 addi r29,r29,#-8 1336 00001f48 3c010000 lhi r1,((_fs_LF2+44)>>16)&0xffff 1337 00001f4c 2421b10c addui r1,r1,(_fs_LF2+44)&0xffff 1338 00001f50 08000010 j L120_LF2 1339 00001f54 54000000 nop; not filled. 1340 00001f58 L118_LF2: 1341 00001f58 23bdfff8 addi r29,r29,#-8 1342 00001f5c 3c010000 lhi r1,((_fs_LF2+20)>>16)&0xffff 1343 00001f60 2421b0f4 addui r1,r1,(_fs_LF2+20)&0xffff 1344 00001f64 L120_LF2: 1345 00001f64 afa20000 sw (r29),r2 1346 00001f68 8c210000 lw r1,(r1) 1347 00001f6c 4c200000 jalr r1 1348 00001f70 54000000 nop; not filled. 1349 00001f74 23bd0008 addi r29,r29,#8 1350 00001f78 8fa20000 lw r2,0(r29) 1351 00001f7c 8fa30004 lw r3,4(r29) 1352 00001f80 8fdffff8 lw r31,-8(r30) 1353 00001f84 001ee820 add r29,r0,r30 1354 00001f88 8fdefffc lw r30,-4(r30) 1355 00001f8c 4be00000 jr r31 1356 00001f90 54000000 nop 1357 00001f94 .endproc _FsDelete 1358 00001f94 .data 1359 0000b0aa .align 2 1360 0000b0ac LC4_LF2: 1361 0000b0ac 41747465 .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" 1361 0000b0b0 6d707469 1361 0000b0b4 6e672074 1361 0000b0b8 6f206f70 1361 0000b0bc 656e2066 1361 0000b0c0 696c6520 1361 0000b0c4 25732069 1361 0000b0c8 6e746f20 1361 0000b0cc 64657363 1361 0000b0d0 2025642c 1361 0000b0d4 206d6f64 1361 0000b0d8 65202564 1361 0000b0dc 2e0a00 1362 0000b0df .text 1363 00001f94 .align 2 1364 00001f94 .proc _FsUnixOpen 1365 00001f94 .global _FsUnixOpen 1366 00001f94 _FsUnixOpen: 1367 ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. 1368 00001f94 afbefffc sw -4(r29),r30; push fp 1369 00001f98 001df020 add r30,r0,r29; fp = sp 1370 00001f9c afbffff8 sw -8(r29),r31; push ret addr 1371 00001fa0 2fbd0020 subui r29,r29,#32; alloc local storage 1372 00001fa4 afa20000 sw 0(r29),r2 1373 00001fa8 afa30004 sw 4(r29),r3 1374 00001fac afa40008 sw 8(r29),r4 1375 00001fb0 afa5000c sw 12(r29),r5 1376 00001fb4 afa60010 sw 16(r29),r6 1377 00001fb8 8fc40000 lw r4,(r30) 1378 00001fbc 8fc30004 lw r3,4(r30) 1379 00001fc0 8fc50008 lw r5,8(r30) 1380 00001fc4 23bdfff8 addi r29,r29,#-8 1381 00001fc8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 1382 00001fcc 2442fd60 addui r2,r2,(_debugstr)&0xffff 1383 00001fd0 afa20000 sw (r29),r2 1384 00001fd4 20060066 addi r6,r0,#102 1385 00001fd8 afa60004 sw 4(r29),r6 1386 00001fdc 0c001e54 jal _dindex 1387 00001fe0 54000000 nop; not filled. 1388 00001fe4 23bd0008 addi r29,r29,#8 1389 00001fe8 64210000 snei r1,r1,#0 1390 00001fec 1420002c bnez r1,L127_LF2 1391 00001ff0 54000000 nop; not filled. 1392 00001ff4 23bdfff8 addi r29,r29,#-8 1393 00001ff8 afa20000 sw (r29),r2 1394 00001ffc 2006002b addi r6,r0,#43 1395 00002000 afa60004 sw 4(r29),r6 1396 00002004 0c001e2c jal _dindex 1397 00002008 54000000 nop; not filled. 1398 0000200c 23bd0008 addi r29,r29,#8 1399 00002010 64210000 snei r1,r1,#0 1400 00002014 1020002c beqz r1,L126_LF2 1401 00002018 54000000 nop; not filled. 1402 0000201c L127_LF2: 1403 0000201c 23bdfff0 addi r29,r29,#-16 1404 00002020 3c060000 lhi r6,((LC4_LF2)>>16)&0xffff 1405 00002024 24c6b0ac addui r6,r6,(LC4_LF2)&0xffff 1406 00002028 afa60000 sw (r29),r6 1407 0000202c afa30004 sw 4(r29),r3 1408 00002030 afa40008 sw 8(r29),r4 1409 00002034 afa5000c sw 12(r29),r5 1410 00002038 0c008fb0 jal _printf 1411 0000203c 54000000 nop; not filled. 1412 00002040 23bd0010 addi r29,r29,#16 1413 00002044 L126_LF2: 1414 00002044 23bdfff8 addi r29,r29,#-8 1415 00002048 afa30000 sw (r29),r3 1416 0000204c afa50004 sw 4(r29),r5 1417 00002050 0c008f08 jal _open 1418 00002054 54000000 nop; not filled. 1419 00002058 00011820 add r3,r0,r1 1420 0000205c 50810004 slli r1,r4,#0x4 1421 00002060 00240820 add r1,r1,r4 1422 00002064 50210002 slli r1,r1,#0x2 1423 00002068 00240822 sub r1,r1,r4 1424 0000206c 50210002 slli r1,r1,#0x2 1425 00002070 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 1426 00002074 24c6b110 addui r6,r6,(_openfiles_LF2)&0xffff 1427 00002078 00260820 add r1,r1,r6 1428 0000207c ac230108 sw 264(r1),r3 1429 00002080 23bd0008 addi r29,r29,#8 1430 00002084 68620000 slti r2,r3,#0 1431 00002088 00030820 add r1,r0,r3 1432 0000208c 14400008 bnez r2,L128_LF2 1433 00002090 54000000 nop; not filled. 1434 00002094 20010001 addi r1,r0,#1 1435 00002098 L128_LF2: 1436 00002098 8fa20000 lw r2,0(r29) 1437 0000209c 8fa30004 lw r3,4(r29) 1438 000020a0 8fa40008 lw r4,8(r29) 1439 000020a4 8fa5000c lw r5,12(r29) 1440 000020a8 8fa60010 lw r6,16(r29) 1441 000020ac 8fdffff8 lw r31,-8(r30) 1442 000020b0 001ee820 add r29,r0,r30 1443 000020b4 8fdefffc lw r30,-4(r30) 1444 000020b8 4be00000 jr r31 1445 000020bc 54000000 nop 1446 000020c0 .endproc _FsUnixOpen 1447 000020c0 .align 2 1448 000020c0 .proc _FsUnixRead 1449 000020c0 .global _FsUnixRead 1450 000020c0 _FsUnixRead: 1451 ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. 1452 000020c0 afbefffc sw -4(r29),r30; push fp 1453 000020c4 001df020 add r30,r0,r29; fp = sp 1454 000020c8 afbffff8 sw -8(r29),r31; push ret addr 1455 000020cc 2fbd0018 subui r29,r29,#24; alloc local storage 1456 000020d0 afa20000 sw 0(r29),r2 1457 000020d4 afa30004 sw 4(r29),r3 1458 000020d8 afa40008 sw 8(r29),r4 1459 000020dc afa5000c sw 12(r29),r5 1460 000020e0 8fc20000 lw r2,(r30) 1461 000020e4 8fc30004 lw r3,4(r30) 1462 000020e8 8fc40008 lw r4,8(r30) 1463 000020ec 23bdfff0 addi r29,r29,#-16 1464 000020f0 50410004 slli r1,r2,#0x4 1465 000020f4 00220820 add r1,r1,r2 1466 000020f8 50210002 slli r1,r1,#0x2 1467 000020fc 00220822 sub r1,r1,r2 1468 00002100 50210002 slli r1,r1,#0x2 1469 00002104 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1470 00002108 24a5b110 addui r5,r5,(_openfiles_LF2)&0xffff 1471 0000210c 00250820 add r1,r1,r5 1472 00002110 8c210108 lw r1,264(r1) 1473 00002114 afa10000 sw (r29),r1 1474 00002118 afa30004 sw 4(r29),r3 1475 0000211c afa40008 sw 8(r29),r4 1476 00002120 0c008e50 jal _read 1477 00002124 54000000 nop; not filled. 1478 00002128 23bd0010 addi r29,r29,#16 1479 0000212c 8fa20000 lw r2,0(r29) 1480 00002130 8fa30004 lw r3,4(r29) 1481 00002134 8fa40008 lw r4,8(r29) 1482 00002138 8fa5000c lw r5,12(r29) 1483 0000213c 8fdffff8 lw r31,-8(r30) 1484 00002140 001ee820 add r29,r0,r30 1485 00002144 8fdefffc lw r30,-4(r30) 1486 00002148 4be00000 jr r31 1487 0000214c 54000000 nop 1488 00002150 .endproc _FsUnixRead 1489 00002150 .align 2 1490 00002150 .proc _FsUnixWrite 1491 00002150 .global _FsUnixWrite 1492 00002150 _FsUnixWrite: 1493 ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. 1494 00002150 afbefffc sw -4(r29),r30; push fp 1495 00002154 001df020 add r30,r0,r29; fp = sp 1496 00002158 afbffff8 sw -8(r29),r31; push ret addr 1497 0000215c 2fbd0018 subui r29,r29,#24; alloc local storage 1498 00002160 afa20000 sw 0(r29),r2 1499 00002164 afa30004 sw 4(r29),r3 1500 00002168 afa40008 sw 8(r29),r4 1501 0000216c afa5000c sw 12(r29),r5 1502 00002170 8fc20000 lw r2,(r30) 1503 00002174 8fc30004 lw r3,4(r30) 1504 00002178 8fc40008 lw r4,8(r30) 1505 0000217c 23bdfff0 addi r29,r29,#-16 1506 00002180 50410004 slli r1,r2,#0x4 1507 00002184 00220820 add r1,r1,r2 1508 00002188 50210002 slli r1,r1,#0x2 1509 0000218c 00220822 sub r1,r1,r2 1510 00002190 50210002 slli r1,r1,#0x2 1511 00002194 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1512 00002198 24a5b110 addui r5,r5,(_openfiles_LF2)&0xffff 1513 0000219c 00250820 add r1,r1,r5 1514 000021a0 8c210108 lw r1,264(r1) 1515 000021a4 afa10000 sw (r29),r1 1516 000021a8 afa30004 sw 4(r29),r3 1517 000021ac afa40008 sw 8(r29),r4 1518 000021b0 0c008dcc jal _write 1519 000021b4 54000000 nop; not filled. 1520 000021b8 23bd0010 addi r29,r29,#16 1521 000021bc 8fa20000 lw r2,0(r29) 1522 000021c0 8fa30004 lw r3,4(r29) 1523 000021c4 8fa40008 lw r4,8(r29) 1524 000021c8 8fa5000c lw r5,12(r29) 1525 000021cc 8fdffff8 lw r31,-8(r30) 1526 000021d0 001ee820 add r29,r0,r30 1527 000021d4 8fdefffc lw r30,-4(r30) 1528 000021d8 4be00000 jr r31 1529 000021dc 54000000 nop 1530 000021e0 .endproc _FsUnixWrite 1531 000021e0 .align 2 1532 000021e0 .proc _FsUnixSeek 1533 000021e0 .global _FsUnixSeek 1534 000021e0 _FsUnixSeek: 1535 ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. 1536 000021e0 afbefffc sw -4(r29),r30; push fp 1537 000021e4 001df020 add r30,r0,r29; fp = sp 1538 000021e8 afbffff8 sw -8(r29),r31; push ret addr 1539 000021ec 2fbd0018 subui r29,r29,#24; alloc local storage 1540 000021f0 afa20000 sw 0(r29),r2 1541 000021f4 afa30004 sw 4(r29),r3 1542 000021f8 afa40008 sw 8(r29),r4 1543 000021fc afa5000c sw 12(r29),r5 1544 00002200 8fc20000 lw r2,(r30) 1545 00002204 8fc30004 lw r3,4(r30) 1546 00002208 8fc40008 lw r4,8(r30) 1547 0000220c 23bdfff0 addi r29,r29,#-16 1548 00002210 50410004 slli r1,r2,#0x4 1549 00002214 00220820 add r1,r1,r2 1550 00002218 50210002 slli r1,r1,#0x2 1551 0000221c 00220822 sub r1,r1,r2 1552 00002220 50210002 slli r1,r1,#0x2 1553 00002224 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1554 00002228 24a5b110 addui r5,r5,(_openfiles_LF2)&0xffff 1555 0000222c 00250820 add r1,r1,r5 1556 00002230 8c210108 lw r1,264(r1) 1557 00002234 afa10000 sw (r29),r1 1558 00002238 afa30004 sw 4(r29),r3 1559 0000223c afa40008 sw 8(r29),r4 1560 00002240 0c008d48 jal _lseek 1561 00002244 54000000 nop; not filled. 1562 00002248 23bd0010 addi r29,r29,#16 1563 0000224c 8fa20000 lw r2,0(r29) 1564 00002250 8fa30004 lw r3,4(r29) 1565 00002254 8fa40008 lw r4,8(r29) 1566 00002258 8fa5000c lw r5,12(r29) 1567 0000225c 8fdffff8 lw r31,-8(r30) 1568 00002260 001ee820 add r29,r0,r30 1569 00002264 8fdefffc lw r30,-4(r30) 1570 00002268 4be00000 jr r31 1571 0000226c 54000000 nop 1572 00002270 .endproc _FsUnixSeek 1573 00002270 .align 2 1574 00002270 .proc _FsUnixClose 1575 00002270 .global _FsUnixClose 1576 00002270 _FsUnixClose: 1577 ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. 1578 00002270 afbefffc sw -4(r29),r30; push fp 1579 00002274 001df020 add r30,r0,r29; fp = sp 1580 00002278 afbffff8 sw -8(r29),r31; push ret addr 1581 0000227c 2fbd0010 subui r29,r29,#16; alloc local storage 1582 00002280 afa20000 sw 0(r29),r2 1583 00002284 afa30004 sw 4(r29),r3 1584 00002288 8fc20000 lw r2,(r30) 1585 0000228c 23bdfff8 addi r29,r29,#-8 1586 00002290 50410004 slli r1,r2,#0x4 1587 00002294 00220820 add r1,r1,r2 1588 00002298 50210002 slli r1,r1,#0x2 1589 0000229c 00220822 sub r1,r1,r2 1590 000022a0 50210002 slli r1,r1,#0x2 1591 000022a4 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1592 000022a8 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1593 000022ac 00230820 add r1,r1,r3 1594 000022b0 8c210108 lw r1,264(r1) 1595 000022b4 afa10000 sw (r29),r1 1596 000022b8 0c008cac jal _close 1597 000022bc 54000000 nop; not filled. 1598 000022c0 23bd0008 addi r29,r29,#8 1599 000022c4 8fa20000 lw r2,0(r29) 1600 000022c8 8fa30004 lw r3,4(r29) 1601 000022cc 8fdffff8 lw r31,-8(r30) 1602 000022d0 001ee820 add r29,r0,r30 1603 000022d4 8fdefffc lw r30,-4(r30) 1604 000022d8 4be00000 jr r31 1605 000022dc 54000000 nop 1606 000022e0 .endproc _FsUnixClose 1607 000022e0 .align 2 1608 000022e0 .proc _FsUnixDelete 1609 000022e0 .global _FsUnixDelete 1610 000022e0 _FsUnixDelete: 1611 ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. 1612 000022e0 afbefffc sw -4(r29),r30; push fp 1613 000022e4 001df020 add r30,r0,r29; fp = sp 1614 000022e8 afbffff8 sw -8(r29),r31; push ret addr 1615 000022ec 2fbd0008 subui r29,r29,#8; alloc local storage 1616 000022f0 2001ffff addi r1,r0,#-1 1617 000022f4 8fdffff8 lw r31,-8(r30) 1618 000022f8 001ee820 add r29,r0,r30 1619 000022fc 8fdefffc lw r30,-4(r30) 1620 00002300 4be00000 jr r31 1621 00002304 54000000 nop 1622 00002308 .endproc _FsUnixDelete 1623 00002308 .align 2 1624 00002308 .proc _FsDlxIo 1625 00002308 .global _FsDlxIo 1626 00002308 _FsDlxIo: 1627 ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. 1628 00002308 afbefffc sw -4(r29),r30; push fp 1629 0000230c 001df020 add r30,r0,r29; fp = sp 1630 00002310 afbffff8 sw -8(r29),r31; push ret addr 1631 00002314 2fbd0008 subui r29,r29,#8; alloc local storage 1632 00002318 20010001 addi r1,r0,#1 1633 0000231c 8fdffff8 lw r31,-8(r30) 1634 00002320 001ee820 add r29,r0,r30 1635 00002324 8fdefffc lw r30,-4(r30) 1636 00002328 4be00000 jr r31 1637 0000232c 54000000 nop 1638 00002330 .endproc _FsDlxIo 1639 00002330 .align 2 1640 00002330 .proc _FsDlxRead 1641 00002330 .global _FsDlxRead 1642 00002330 _FsDlxRead: 1643 ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. 1644 00002330 afbefffc sw -4(r29),r30; push fp 1645 00002334 001df020 add r30,r0,r29; fp = sp 1646 00002338 afbffff8 sw -8(r29),r31; push ret addr 1647 0000233c 2fbd0008 subui r29,r29,#8; alloc local storage 1648 00002340 20010001 addi r1,r0,#1 1649 00002344 8fdffff8 lw r31,-8(r30) 1650 00002348 001ee820 add r29,r0,r30 1651 0000234c 8fdefffc lw r30,-4(r30) 1652 00002350 4be00000 jr r31 1653 00002354 54000000 nop 1654 00002358 .endproc _FsDlxRead 1655 00002358 .align 2 1656 00002358 .proc _FsDlxWrite 1657 00002358 .global _FsDlxWrite 1658 00002358 _FsDlxWrite: 1659 ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. 1660 00002358 afbefffc sw -4(r29),r30; push fp 1661 0000235c 001df020 add r30,r0,r29; fp = sp 1662 00002360 afbffff8 sw -8(r29),r31; push ret addr 1663 00002364 2fbd0008 subui r29,r29,#8; alloc local storage 1664 00002368 20010001 addi r1,r0,#1 1665 0000236c 8fdffff8 lw r31,-8(r30) 1666 00002370 001ee820 add r29,r0,r30 1667 00002374 8fdefffc lw r30,-4(r30) 1668 00002378 4be00000 jr r31 1669 0000237c 54000000 nop 1670 00002380 .endproc _FsDlxWrite 1671 00002380 .align 2 1672 00002380 .proc _FsDlxOpen 1673 00002380 .global _FsDlxOpen 1674 00002380 _FsDlxOpen: 1675 ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. 1676 00002380 afbefffc sw -4(r29),r30; push fp 1677 00002384 001df020 add r30,r0,r29; fp = sp 1678 00002388 afbffff8 sw -8(r29),r31; push ret addr 1679 0000238c 2fbd0010 subui r29,r29,#16; alloc local storage 1680 00002390 afa20000 sw 0(r29),r2 1681 00002394 8fc10000 lw r1,(r30) 1682 00002398 50220004 slli r2,r1,#0x4 1683 0000239c 00411020 add r2,r2,r1 1684 000023a0 50420002 slli r2,r2,#0x2 1685 000023a4 00410822 sub r1,r2,r1 1686 000023a8 50210002 slli r1,r1,#0x2 1687 000023ac 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1688 000023b0 27ffb110 addui r31,r31,(_openfiles_LF2)&0xffff 1689 000023b4 003f0820 add r1,r1,r31 1690 000023b8 201f0000 addi r31,r0,#0 1691 000023bc ac3f0108 sw 264(r1),r31 1692 000023c0 20010001 addi r1,r0,#1 1693 000023c4 8fa20000 lw r2,0(r29) 1694 000023c8 8fdffff8 lw r31,-8(r30) 1695 000023cc 001ee820 add r29,r0,r30 1696 000023d0 8fdefffc lw r30,-4(r30) 1697 000023d4 4be00000 jr r31 1698 000023d8 54000000 nop 1699 000023dc .endproc _FsDlxOpen 1700 000023dc .align 2 1701 000023dc .proc _FsDlxSeek 1702 000023dc .global _FsDlxSeek 1703 000023dc _FsDlxSeek: 1704 ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. 1705 000023dc afbefffc sw -4(r29),r30; push fp 1706 000023e0 001df020 add r30,r0,r29; fp = sp 1707 000023e4 afbffff8 sw -8(r29),r31; push ret addr 1708 000023e8 2fbd0010 subui r29,r29,#16; alloc local storage 1709 000023ec afa20000 sw 0(r29),r2 1710 000023f0 8fc10000 lw r1,(r30) 1711 000023f4 50220004 slli r2,r1,#0x4 1712 000023f8 00411020 add r2,r2,r1 1713 000023fc 50420002 slli r2,r2,#0x2 1714 00002400 00410822 sub r1,r2,r1 1715 00002404 50210002 slli r1,r1,#0x2 1716 00002408 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1717 0000240c 27ffb110 addui r31,r31,(_openfiles_LF2)&0xffff 1718 00002410 003f0820 add r1,r1,r31 1719 00002414 8c210108 lw r1,264(r1) 1720 00002418 8fa20000 lw r2,0(r29) 1721 0000241c 8fdffff8 lw r31,-8(r30) 1722 00002420 001ee820 add r29,r0,r30 1723 00002424 8fdefffc lw r30,-4(r30) 1724 00002428 4be00000 jr r31 1725 0000242c 54000000 nop 1726 00002430 .endproc _FsDlxSeek 1727 00002430 .align 2 1728 00002430 .proc _FsDlxClose 1729 00002430 .global _FsDlxClose 1730 00002430 _FsDlxClose: 1731 ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. 1732 00002430 afbefffc sw -4(r29),r30; push fp 1733 00002434 001df020 add r30,r0,r29; fp = sp 1734 00002438 afbffff8 sw -8(r29),r31; push ret addr 1735 0000243c 2fbd0008 subui r29,r29,#8; alloc local storage 1736 00002440 20010001 addi r1,r0,#1 1737 00002444 8fdffff8 lw r31,-8(r30) 1738 00002448 001ee820 add r29,r0,r30 1739 0000244c 8fdefffc lw r30,-4(r30) 1740 00002450 4be00000 jr r31 1741 00002454 54000000 nop 1742 00002458 .endproc _FsDlxClose 1743 00002458 .align 2 1744 00002458 .proc _FsDlxDelete 1745 00002458 .global _FsDlxDelete 1746 00002458 _FsDlxDelete: 1747 ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. 1748 00002458 afbefffc sw -4(r29),r30; push fp 1749 0000245c 001df020 add r30,r0,r29; fp = sp 1750 00002460 afbffff8 sw -8(r29),r31; push ret addr 1751 00002464 2fbd0008 subui r29,r29,#8; alloc local storage 1752 00002468 20010001 addi r1,r0,#1 1753 0000246c 8fdffff8 lw r31,-8(r30) 1754 00002470 001ee820 add r29,r0,r30 1755 00002474 8fdefffc lw r30,-4(r30) 1756 00002478 4be00000 jr r31 1757 0000247c 54000000 nop 1758 00002480 .endproc _FsDlxDelete 1759 00002480 .align 2 1760 00002480 .proc _FsModuleInit 1761 00002480 .global _FsModuleInit 1762 00002480 _FsModuleInit: 1763 ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. 1764 00002480 afbefffc sw -4(r29),r30; push fp 1765 00002484 001df020 add r30,r0,r29; fp = sp 1766 00002488 afbffff8 sw -8(r29),r31; push ret addr 1767 0000248c 2fbd0010 subui r29,r29,#16; alloc local storage 1768 00002490 afa20000 sw 0(r29),r2 1769 00002494 afa30004 sw 4(r29),r3 1770 00002498 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1771 0000249c 27ffb110 addui r31,r31,(_openfiles_LF2)&0xffff 1772 000024a0 23e22074 addi r2,r31,#8308 1773 000024a4 L182_LF2: 1774 000024a4 20030000 addi r3,r0,#0 1775 000024a8 afe30004 sw 4(r31),r3 1776 000024ac 23ff010c addi r31,r31,#268 1777 000024b0 03e2082c sle r1,r31,r2 1778 000024b4 1420ffec bnez r1,L182_LF2 1779 000024b8 54000000 nop; not filled. 1780 000024bc 3c010000 lhi r1,((_fs_LF2)>>16)&0xffff 1781 000024c0 2421b0e0 addui r1,r1,(_fs_LF2)&0xffff 1782 000024c4 3c030000 lhi r3,((_FsUnixOpen)>>16)&0xffff 1783 000024c8 24631f94 addui r3,r3,(_FsUnixOpen)&0xffff 1784 000024cc ac230000 sw (r1),r3 1785 000024d0 3c030000 lhi r3,((_FsUnixClose)>>16)&0xffff 1786 000024d4 24632270 addui r3,r3,(_FsUnixClose)&0xffff 1787 000024d8 ac230010 sw 16(r1),r3 1788 000024dc 3c030000 lhi r3,((_FsUnixRead)>>16)&0xffff 1789 000024e0 246320c0 addui r3,r3,(_FsUnixRead)&0xffff 1790 000024e4 ac230004 sw 4(r1),r3 1791 000024e8 3c030000 lhi r3,((_FsUnixWrite)>>16)&0xffff 1792 000024ec 24632150 addui r3,r3,(_FsUnixWrite)&0xffff 1793 000024f0 ac230008 sw 8(r1),r3 1794 000024f4 3c030000 lhi r3,((_FsUnixSeek)>>16)&0xffff 1795 000024f8 246321e0 addui r3,r3,(_FsUnixSeek)&0xffff 1796 000024fc ac23000c sw 12(r1),r3 1797 00002500 3c030000 lhi r3,((_FsUnixDelete)>>16)&0xffff 1798 00002504 246322e0 addui r3,r3,(_FsUnixDelete)&0xffff 1799 00002508 ac230014 sw 20(r1),r3 1800 0000250c 3c030000 lhi r3,((_FsDlxOpen)>>16)&0xffff 1801 00002510 24632380 addui r3,r3,(_FsDlxOpen)&0xffff 1802 00002514 ac230018 sw 24(r1),r3 1803 00002518 3c030000 lhi r3,((_FsDlxClose)>>16)&0xffff 1804 0000251c 24632430 addui r3,r3,(_FsDlxClose)&0xffff 1805 00002520 ac230028 sw 40(r1),r3 1806 00002524 3c030000 lhi r3,((_FsDlxRead)>>16)&0xffff 1807 00002528 24632330 addui r3,r3,(_FsDlxRead)&0xffff 1808 0000252c ac23001c sw 28(r1),r3 1809 00002530 3c030000 lhi r3,((_FsDlxWrite)>>16)&0xffff 1810 00002534 24632358 addui r3,r3,(_FsDlxWrite)&0xffff 1811 00002538 ac230020 sw 32(r1),r3 1812 0000253c 3c030000 lhi r3,((_FsDlxSeek)>>16)&0xffff 1813 00002540 246323dc addui r3,r3,(_FsDlxSeek)&0xffff 1814 00002544 ac230024 sw 36(r1),r3 1815 00002548 3c030000 lhi r3,((_FsDlxDelete)>>16)&0xffff 1816 0000254c 24632458 addui r3,r3,(_FsDlxDelete)&0xffff 1817 00002550 ac23002c sw 44(r1),r3 1818 00002554 8fa20000 lw r2,0(r29) 1819 00002558 8fa30004 lw r3,4(r29) 1820 0000255c 8fdffff8 lw r31,-8(r30) 1821 00002560 001ee820 add r29,r0,r30 1822 00002564 8fdefffc lw r30,-4(r30) 1823 00002568 4be00000 jr r31 1824 0000256c 54000000 nop 1825 00002570 .endproc _FsModuleInit 1826 00002570 .data 1827 0000b0df .align 2 1828 0000b0e0 _fs_LF2: 1829 0000b0e0 .space 48 1830 0000b110 .align 2 1831 0000b110 _openfiles_LF2: 1832 0000b110 .space 8576 1833 ; Compiled by GCC 1835 0000d290 .align 2 1836 0000d290 _rcsid_LF3: 1837 0000d290 3a206d65 .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 1837 0000d294 6d6f7279 1837 0000d298 2e632c76 1837 0000d29c 20312e31 1837 0000d2a0 20323030 1837 0000d2a4 302f3039 1837 0000d2a8 2f323020 1837 0000d2ac 30313a35 1837 0000d2b0 303a3139 1837 0000d2b4 20656c6d 1837 0000d2b8 20457870 1837 0000d2bc 20656c6d 1837 0000d2c0 20303030 1838 0000d2c4 .text 1839 00002570 .align 2 1840 00002570 .proc _isspace 1841 00002570 .global _isspace 1842 00002570 _isspace: 1843 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 1844 00002570 afbefffc sw -4(r29),r30; push fp 1845 00002574 001df020 add r30,r0,r29; fp = sp 1846 00002578 afbffff8 sw -8(r29),r31; push ret addr 1847 0000257c 2fbd0010 subui r29,r29,#16; alloc local storage 1848 00002580 afa20000 sw 0(r29),r2 1849 00002584 83c20003 lb r2,3(r30) 1850 00002588 201f0000 addi r31,r0,#0 1851 0000258c 304100ff andi r1,r2,#0x00ff 1852 00002590 60210020 seqi r1,r1,#32 1853 00002594 14200018 bnez r1,L6_LF3 1854 00002598 54000000 nop; not filled. 1855 0000259c 2041fff7 addi r1,r2,#-9 1856 000025a0 302100ff andi r1,r1,#0x00ff 1857 000025a4 70210001 sleui r1,r1,#1 1858 000025a8 10200008 beqz r1,L5_LF3 1859 000025ac 54000000 nop; not filled. 1860 000025b0 L6_LF3: 1861 000025b0 201f0001 addi r31,r0,#1 1862 000025b4 L5_LF3: 1863 000025b4 001f0820 add r1,r0,r31 1864 000025b8 8fa20000 lw r2,0(r29) 1865 000025bc 8fdffff8 lw r31,-8(r30) 1866 000025c0 001ee820 add r29,r0,r30 1867 000025c4 8fdefffc lw r30,-4(r30) 1868 000025c8 4be00000 jr r31 1869 000025cc 54000000 nop 1870 000025d0 .endproc _isspace 1871 000025d0 .align 2 1872 000025d0 .proc _isxdigit 1873 000025d0 .global _isxdigit 1874 000025d0 _isxdigit: 1875 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 1876 000025d0 afbefffc sw -4(r29),r30; push fp 1877 000025d4 001df020 add r30,r0,r29; fp = sp 1878 000025d8 afbffff8 sw -8(r29),r31; push ret addr 1879 000025dc 2fbd0010 subui r29,r29,#16; alloc local storage 1880 000025e0 afa20000 sw 0(r29),r2 1881 000025e4 83df0003 lb r31,3(r30) 1882 000025e8 20020000 addi r2,r0,#0 1883 000025ec 23e1ffd0 addi r1,r31,#-48 1884 000025f0 302100ff andi r1,r1,#0x00ff 1885 000025f4 70210009 sleui r1,r1,#9 1886 000025f8 14200028 bnez r1,L12_LF3 1887 000025fc 54000000 nop; not filled. 1888 00002600 23e1ff9f addi r1,r31,#-97 1889 00002604 302100ff andi r1,r1,#0x00ff 1890 00002608 70210005 sleui r1,r1,#5 1891 0000260c 14200014 bnez r1,L12_LF3 1892 00002610 54000000 nop; not filled. 1893 00002614 33e100ff andi r1,r31,#0x00ff 1894 00002618 64210041 snei r1,r1,#65 1895 0000261c 14200008 bnez r1,L11_LF3 1896 00002620 54000000 nop; not filled. 1897 00002624 L12_LF3: 1898 00002624 20020001 addi r2,r0,#1 1899 00002628 L11_LF3: 1900 00002628 00020820 add r1,r0,r2 1901 0000262c 8fa20000 lw r2,0(r29) 1902 00002630 8fdffff8 lw r31,-8(r30) 1903 00002634 001ee820 add r29,r0,r30 1904 00002638 8fdefffc lw r30,-4(r30) 1905 0000263c 4be00000 jr r31 1906 00002640 54000000 nop 1907 00002644 .endproc _isxdigit 1908 00002644 .align 2 1909 00002644 .proc _DisableIntrs 1910 00002644 .global _DisableIntrs 1911 00002644 _DisableIntrs: 1912 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 1913 00002644 afbefffc sw -4(r29),r30; push fp 1914 00002648 001df020 add r30,r0,r29; fp = sp 1915 0000264c afbffff8 sw -8(r29),r31; push ret addr 1916 00002650 2fbd0010 subui r29,r29,#16; alloc local storage 1917 00002654 afa20000 sw 0(r29),r2 1918 00002658 23bdfff8 addi r29,r29,#-8 1919 0000265c 2002000f addi r2,r0,#15 1920 00002660 afa20000 sw (r29),r2 1921 00002664 0fffec20 jal _SetIntrs 1922 00002668 54000000 nop; not filled. 1923 0000266c 23bd0008 addi r29,r29,#8 1924 00002670 8fa20000 lw r2,0(r29) 1925 00002674 8fdffff8 lw r31,-8(r30) 1926 00002678 001ee820 add r29,r0,r30 1927 0000267c 8fdefffc lw r30,-4(r30) 1928 00002680 4be00000 jr r31 1929 00002684 54000000 nop 1930 00002688 .endproc _DisableIntrs 1931 00002688 .align 2 1932 00002688 .proc _EnableIntrs 1933 00002688 .global _EnableIntrs 1934 00002688 _EnableIntrs: 1935 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 1936 00002688 afbefffc sw -4(r29),r30; push fp 1937 0000268c 001df020 add r30,r0,r29; fp = sp 1938 00002690 afbffff8 sw -8(r29),r31; push ret addr 1939 00002694 2fbd0010 subui r29,r29,#16; alloc local storage 1940 00002698 afa20000 sw 0(r29),r2 1941 0000269c 23bdfff8 addi r29,r29,#-8 1942 000026a0 20020000 addi r2,r0,#0 1943 000026a4 afa20000 sw (r29),r2 1944 000026a8 0fffebdc jal _SetIntrs 1945 000026ac 54000000 nop; not filled. 1946 000026b0 23bd0008 addi r29,r29,#8 1947 000026b4 8fa20000 lw r2,0(r29) 1948 000026b8 8fdffff8 lw r31,-8(r30) 1949 000026bc 001ee820 add r29,r0,r30 1950 000026c0 8fdefffc lw r30,-4(r30) 1951 000026c4 4be00000 jr r31 1952 000026c8 54000000 nop 1953 000026cc .endproc _EnableIntrs 1954 000026cc .align 2 1955 000026cc .proc _RestoreIntrs 1956 000026cc .global _RestoreIntrs 1957 000026cc _RestoreIntrs: 1958 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 1959 000026cc afbefffc sw -4(r29),r30; push fp 1960 000026d0 001df020 add r30,r0,r29; fp = sp 1961 000026d4 afbffff8 sw -8(r29),r31; push ret addr 1962 000026d8 2fbd0010 subui r29,r29,#16; alloc local storage 1963 000026dc afa20000 sw 0(r29),r2 1964 000026e0 23bdfff8 addi r29,r29,#-8 1965 000026e4 8fc20000 lw r2,(r30) 1966 000026e8 afa20000 sw (r29),r2 1967 000026ec 0fffeb98 jal _SetIntrs 1968 000026f0 54000000 nop; not filled. 1969 000026f4 23bd0008 addi r29,r29,#8 1970 000026f8 8fa20000 lw r2,0(r29) 1971 000026fc 8fdffff8 lw r31,-8(r30) 1972 00002700 001ee820 add r29,r0,r30 1973 00002704 8fdefffc lw r30,-4(r30) 1974 00002708 4be00000 jr r31 1975 0000270c 54000000 nop 1976 00002710 .endproc _RestoreIntrs 1977 00002710 .align 2 1978 00002710 .proc _QueueLinkInit 1979 00002710 .global _QueueLinkInit 1980 00002710 _QueueLinkInit: 1981 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 1982 00002710 afbefffc sw -4(r29),r30; push fp 1983 00002714 001df020 add r30,r0,r29; fp = sp 1984 00002718 afbffff8 sw -8(r29),r31; push ret addr 1985 0000271c 2fbd0010 subui r29,r29,#16; alloc local storage 1986 00002720 afa20000 sw 0(r29),r2 1987 00002724 8fc10000 lw r1,(r30) 1988 00002728 8fc20004 lw r2,4(r30) 1989 0000272c 201f0000 addi r31,r0,#0 1990 00002730 ac3f0000 sw (r1),r31 1991 00002734 ac22000c sw 12(r1),r2 1992 00002738 8fa20000 lw r2,0(r29) 1993 0000273c 8fdffff8 lw r31,-8(r30) 1994 00002740 001ee820 add r29,r0,r30 1995 00002744 8fdefffc lw r30,-4(r30) 1996 00002748 4be00000 jr r31 1997 0000274c 54000000 nop 1998 00002750 .endproc _QueueLinkInit 1999 00002750 .align 2 2000 00002750 .proc _QueueNext 2001 00002750 .global _QueueNext 2002 00002750 _QueueNext: 2003 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 2004 00002750 afbefffc sw -4(r29),r30; push fp 2005 00002754 001df020 add r30,r0,r29; fp = sp 2006 00002758 afbffff8 sw -8(r29),r31; push ret addr 2007 0000275c 2fbd0008 subui r29,r29,#8; alloc local storage 2008 00002760 8fc10000 lw r1,(r30) 2009 00002764 8c210000 lw r1,(r1) 2010 00002768 8fdffff8 lw r31,-8(r30) 2011 0000276c 001ee820 add r29,r0,r30 2012 00002770 8fdefffc lw r30,-4(r30) 2013 00002774 4be00000 jr r31 2014 00002778 54000000 nop 2015 0000277c .endproc _QueueNext 2016 0000277c .align 2 2017 0000277c .proc _QueuePrev 2018 0000277c .global _QueuePrev 2019 0000277c _QueuePrev: 2020 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 2021 0000277c afbefffc sw -4(r29),r30; push fp 2022 00002780 001df020 add r30,r0,r29; fp = sp 2023 00002784 afbffff8 sw -8(r29),r31; push ret addr 2024 00002788 2fbd0008 subui r29,r29,#8; alloc local storage 2025 0000278c 8fc10000 lw r1,(r30) 2026 00002790 8c210004 lw r1,4(r1) 2027 00002794 8fdffff8 lw r31,-8(r30) 2028 00002798 001ee820 add r29,r0,r30 2029 0000279c 8fdefffc lw r30,-4(r30) 2030 000027a0 4be00000 jr r31 2031 000027a4 54000000 nop 2032 000027a8 .endproc _QueuePrev 2033 000027a8 .align 2 2034 000027a8 .proc _QueueFirst 2035 000027a8 .global _QueueFirst 2036 000027a8 _QueueFirst: 2037 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 2038 000027a8 afbefffc sw -4(r29),r30; push fp 2039 000027ac 001df020 add r30,r0,r29; fp = sp 2040 000027b0 afbffff8 sw -8(r29),r31; push ret addr 2041 000027b4 2fbd0008 subui r29,r29,#8; alloc local storage 2042 000027b8 8fc10000 lw r1,(r30) 2043 000027bc 8c210000 lw r1,(r1) 2044 000027c0 8fdffff8 lw r31,-8(r30) 2045 000027c4 001ee820 add r29,r0,r30 2046 000027c8 8fdefffc lw r30,-4(r30) 2047 000027cc 4be00000 jr r31 2048 000027d0 54000000 nop 2049 000027d4 .endproc _QueueFirst 2050 000027d4 .align 2 2051 000027d4 .proc _QueueLast 2052 000027d4 .global _QueueLast 2053 000027d4 _QueueLast: 2054 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 2055 000027d4 afbefffc sw -4(r29),r30; push fp 2056 000027d8 001df020 add r30,r0,r29; fp = sp 2057 000027dc afbffff8 sw -8(r29),r31; push ret addr 2058 000027e0 2fbd0008 subui r29,r29,#8; alloc local storage 2059 000027e4 8fc10000 lw r1,(r30) 2060 000027e8 8c210004 lw r1,4(r1) 2061 000027ec 8fdffff8 lw r31,-8(r30) 2062 000027f0 001ee820 add r29,r0,r30 2063 000027f4 8fdefffc lw r30,-4(r30) 2064 000027f8 4be00000 jr r31 2065 000027fc 54000000 nop 2066 00002800 .endproc _QueueLast 2067 00002800 .align 2 2068 00002800 .proc _QueueInsertAfter 2069 00002800 .global _QueueInsertAfter 2070 00002800 _QueueInsertAfter: 2071 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 2072 00002800 afbefffc sw -4(r29),r30; push fp 2073 00002804 001df020 add r30,r0,r29; fp = sp 2074 00002808 afbffff8 sw -8(r29),r31; push ret addr 2075 0000280c 2fbd0010 subui r29,r29,#16; alloc local storage 2076 00002810 afa20000 sw 0(r29),r2 2077 00002814 afa30004 sw 4(r29),r3 2078 00002818 8fc30000 lw r3,(r30) 2079 0000281c 8fc20004 lw r2,4(r30) 2080 00002820 8fc10008 lw r1,8(r30) 2081 00002824 ac230008 sw 8(r1),r3 2082 00002828 ac220004 sw 4(r1),r2 2083 0000282c 8c5f0000 lw r31,(r2) 2084 00002830 ac3f0000 sw (r1),r31 2085 00002834 ac410000 sw (r2),r1 2086 00002838 8c220000 lw r2,(r1) 2087 0000283c ac410004 sw 4(r2),r1 2088 00002840 8c610008 lw r1,8(r3) 2089 00002844 20210001 addi r1,r1,#1 2090 00002848 ac610008 sw 8(r3),r1 2091 0000284c 8fa20000 lw r2,0(r29) 2092 00002850 8fa30004 lw r3,4(r29) 2093 00002854 8fdffff8 lw r31,-8(r30) 2094 00002858 001ee820 add r29,r0,r30 2095 0000285c 8fdefffc lw r30,-4(r30) 2096 00002860 4be00000 jr r31 2097 00002864 54000000 nop 2098 00002868 .endproc _QueueInsertAfter 2099 00002868 .align 2 2100 00002868 .proc _QueueInsertFirst 2101 00002868 .global _QueueInsertFirst 2102 00002868 _QueueInsertFirst: 2103 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 2104 00002868 afbefffc sw -4(r29),r30; push fp 2105 0000286c 001df020 add r30,r0,r29; fp = sp 2106 00002870 afbffff8 sw -8(r29),r31; push ret addr 2107 00002874 2fbd0010 subui r29,r29,#16; alloc local storage 2108 00002878 afa20000 sw 0(r29),r2 2109 0000287c afa30004 sw 4(r29),r3 2110 00002880 8fc30000 lw r3,(r30) 2111 00002884 8fc10004 lw r1,4(r30) 2112 00002888 ac230008 sw 8(r1),r3 2113 0000288c ac230004 sw 4(r1),r3 2114 00002890 8c7f0000 lw r31,(r3) 2115 00002894 ac3f0000 sw (r1),r31 2116 00002898 ac610000 sw (r3),r1 2117 0000289c 8c220000 lw r2,(r1) 2118 000028a0 ac410004 sw 4(r2),r1 2119 000028a4 8c610008 lw r1,8(r3) 2120 000028a8 20210001 addi r1,r1,#1 2121 000028ac ac610008 sw 8(r3),r1 2122 000028b0 8fa20000 lw r2,0(r29) 2123 000028b4 8fa30004 lw r3,4(r29) 2124 000028b8 8fdffff8 lw r31,-8(r30) 2125 000028bc 001ee820 add r29,r0,r30 2126 000028c0 8fdefffc lw r30,-4(r30) 2127 000028c4 4be00000 jr r31 2128 000028c8 54000000 nop 2129 000028cc .endproc _QueueInsertFirst 2130 000028cc .align 2 2131 000028cc .proc _QueueInsertLast 2132 000028cc .global _QueueInsertLast 2133 000028cc _QueueInsertLast: 2134 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 2135 000028cc afbefffc sw -4(r29),r30; push fp 2136 000028d0 001df020 add r30,r0,r29; fp = sp 2137 000028d4 afbffff8 sw -8(r29),r31; push ret addr 2138 000028d8 2fbd0010 subui r29,r29,#16; alloc local storage 2139 000028dc afa20000 sw 0(r29),r2 2140 000028e0 afa30004 sw 4(r29),r3 2141 000028e4 8fc30000 lw r3,(r30) 2142 000028e8 8fc10004 lw r1,4(r30) 2143 000028ec 8c620004 lw r2,4(r3) 2144 000028f0 ac230008 sw 8(r1),r3 2145 000028f4 ac220004 sw 4(r1),r2 2146 000028f8 8c5f0000 lw r31,(r2) 2147 000028fc ac3f0000 sw (r1),r31 2148 00002900 ac410000 sw (r2),r1 2149 00002904 8c220000 lw r2,(r1) 2150 00002908 ac410004 sw 4(r2),r1 2151 0000290c 8c610008 lw r1,8(r3) 2152 00002910 20210001 addi r1,r1,#1 2153 00002914 ac610008 sw 8(r3),r1 2154 00002918 8fa20000 lw r2,0(r29) 2155 0000291c 8fa30004 lw r3,4(r29) 2156 00002920 8fdffff8 lw r31,-8(r30) 2157 00002924 001ee820 add r29,r0,r30 2158 00002928 8fdefffc lw r30,-4(r30) 2159 0000292c 4be00000 jr r31 2160 00002930 54000000 nop 2161 00002934 .endproc _QueueInsertLast 2162 00002934 .align 2 2163 00002934 .proc _QueueRemove 2164 00002934 .global _QueueRemove 2165 00002934 _QueueRemove: 2166 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 2167 00002934 afbefffc sw -4(r29),r30; push fp 2168 00002938 001df020 add r30,r0,r29; fp = sp 2169 0000293c afbffff8 sw -8(r29),r31; push ret addr 2170 00002940 2fbd0010 subui r29,r29,#16; alloc local storage 2171 00002944 afa20000 sw 0(r29),r2 2172 00002948 afa30004 sw 4(r29),r3 2173 0000294c 8fdf0000 lw r31,(r30) 2174 00002950 8fe10008 lw r1,8(r31) 2175 00002954 8c210008 lw r1,8(r1) 2176 00002958 6c210000 sgti r1,r1,#0 2177 0000295c 1020002c beqz r1,L44_LF3 2178 00002960 54000000 nop; not filled. 2179 00002964 8fe10004 lw r1,4(r31) 2180 00002968 8fe30000 lw r3,(r31) 2181 0000296c ac230000 sw (r1),r3 2182 00002970 8fe10000 lw r1,(r31) 2183 00002974 8fe30004 lw r3,4(r31) 2184 00002978 ac230004 sw 4(r1),r3 2185 0000297c 8fe20008 lw r2,8(r31) 2186 00002980 8c410008 lw r1,8(r2) 2187 00002984 2021ffff addi r1,r1,#-1 2188 00002988 ac410008 sw 8(r2),r1 2189 0000298c L44_LF3: 2190 0000298c 20030000 addi r3,r0,#0 2191 00002990 afe30000 sw (r31),r3 2192 00002994 8fa20000 lw r2,0(r29) 2193 00002998 8fa30004 lw r3,4(r29) 2194 0000299c 8fdffff8 lw r31,-8(r30) 2195 000029a0 001ee820 add r29,r0,r30 2196 000029a4 8fdefffc lw r30,-4(r30) 2197 000029a8 4be00000 jr r31 2198 000029ac 54000000 nop 2199 000029b0 .endproc _QueueRemove 2200 000029b0 .align 2 2201 000029b0 .proc _QueueLength 2202 000029b0 .global _QueueLength 2203 000029b0 _QueueLength: 2204 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 2205 000029b0 afbefffc sw -4(r29),r30; push fp 2206 000029b4 001df020 add r30,r0,r29; fp = sp 2207 000029b8 afbffff8 sw -8(r29),r31; push ret addr 2208 000029bc 2fbd0008 subui r29,r29,#8; alloc local storage 2209 000029c0 8fc10000 lw r1,(r30) 2210 000029c4 8c210008 lw r1,8(r1) 2211 000029c8 8fdffff8 lw r31,-8(r30) 2212 000029cc 001ee820 add r29,r0,r30 2213 000029d0 8fdefffc lw r30,-4(r30) 2214 000029d4 4be00000 jr r31 2215 000029d8 54000000 nop 2216 000029dc .endproc _QueueLength 2217 000029dc .align 2 2218 000029dc .proc _QueueEmpty 2219 000029dc .global _QueueEmpty 2220 000029dc _QueueEmpty: 2221 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 2222 000029dc afbefffc sw -4(r29),r30; push fp 2223 000029e0 001df020 add r30,r0,r29; fp = sp 2224 000029e4 afbffff8 sw -8(r29),r31; push ret addr 2225 000029e8 2fbd0008 subui r29,r29,#8; alloc local storage 2226 000029ec 8fc10000 lw r1,(r30) 2227 000029f0 8c210008 lw r1,8(r1) 2228 000029f4 60210000 seqi r1,r1,#0 2229 000029f8 8fdffff8 lw r31,-8(r30) 2230 000029fc 001ee820 add r29,r0,r30 2231 00002a00 8fdefffc lw r30,-4(r30) 2232 00002a04 4be00000 jr r31 2233 00002a08 54000000 nop 2234 00002a0c .endproc _QueueEmpty 2235 00002a0c .data 2236 0000d2c4 .align 2 2237 0000d2c4 _negativeone_LF3: 2238 0000d2c4 ffffffff .word -1 2239 0000d2c8 .text 2240 00002a0c .align 2 2241 00002a0c .proc _MemoryGetSize 2242 00002a0c .global _MemoryGetSize 2243 00002a0c _MemoryGetSize: 2244 ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. 2245 00002a0c afbefffc sw -4(r29),r30; push fp 2246 00002a10 001df020 add r30,r0,r29; fp = sp 2247 00002a14 afbffff8 sw -8(r29),r31; push ret addr 2248 00002a18 2fbd0008 subui r29,r29,#8; alloc local storage 2249 00002a1c 3c01ffff lhi r1,#-1 2250 00002a20 24210000 addui r1,r1,#0 2251 00002a24 8c210000 lw r1,(r1) 2252 00002a28 8fdffff8 lw r31,-8(r30) 2253 00002a2c 001ee820 add r29,r0,r30 2254 00002a30 8fdefffc lw r30,-4(r30) 2255 00002a34 4be00000 jr r31 2256 00002a38 54000000 nop 2257 00002a3c .endproc _MemoryGetSize 2258 00002a3c .data 2259 0000d2c8 .align 2 2260 0000d2c8 LC0_LF3: 2261 0000d2c8 53657420 .ascii "Set freemap entry %d to 0x%x.\n\000" 2261 0000d2cc 66726565 2261 0000d2d0 6d617020 2261 0000d2d4 656e7472 2261 0000d2d8 79202564 2261 0000d2dc 20746f20 2261 0000d2e0 30782578 2261 0000d2e4 2e0a00 2262 0000d2e7 .text 2263 00002a3c .align 2 2264 00002a3c .proc _MemorySetFreemap 2265 00002a3c .global _MemorySetFreemap 2266 00002a3c _MemorySetFreemap: 2267 ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. 2268 00002a3c afbefffc sw -4(r29),r30; push fp 2269 00002a40 001df020 add r30,r0,r29; fp = sp 2270 00002a44 afbffff8 sw -8(r29),r31; push ret addr 2271 00002a48 2fbd0020 subui r29,r29,#32; alloc local storage 2272 00002a4c afa20000 sw 0(r29),r2 2273 00002a50 afa30004 sw 4(r29),r3 2274 00002a54 afa40008 sw 8(r29),r4 2275 00002a58 afa5000c sw 12(r29),r5 2276 00002a5c afa60010 sw 16(r29),r6 2277 00002a60 8fc30000 lw r3,(r30) 2278 00002a64 8fdf0004 lw r31,4(r30) 2279 00002a68 00031020 add r2,r0,r3 2280 00002a6c 74610000 sgei r1,r3,#0 2281 00002a70 14200008 bnez r1,L61_LF3 2282 00002a74 54000000 nop; not filled. 2283 00002a78 2062001f addi r2,r3,#31 2284 00002a7c L61_LF3: 2285 00002a7c 5c450005 srai r5,r2,#0x5 2286 00002a80 50a10005 slli r1,r5,#0x5 2287 00002a84 00611822 sub r3,r3,r1 2288 00002a88 20010001 addi r1,r0,#1 2289 00002a8c 00231004 sll r2,r1,r3 2290 00002a90 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2291 00002a94 2421d2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2292 00002a98 8c210000 lw r1,(r1) 2293 00002a9c 00411026 xor r2,r2,r1 2294 00002aa0 50a10002 slli r1,r5,#0x2 2295 00002aa4 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2296 00002aa8 24c6d438 addui r6,r6,(_freepages_LF3)&0xffff 2297 00002aac 00262020 add r4,r1,r6 2298 00002ab0 8c810000 lw r1,(r4) 2299 00002ab4 00221024 and r2,r1,r2 2300 00002ab8 03e30804 sll r1,r31,r3 2301 00002abc 00410825 or r1,r2,r1 2302 00002ac0 ac810000 sw (r4),r1 2303 00002ac4 23bdfff8 addi r29,r29,#-8 2304 00002ac8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2305 00002acc 2442fd60 addui r2,r2,(_debugstr)&0xffff 2306 00002ad0 afa20000 sw (r29),r2 2307 00002ad4 2006006d addi r6,r0,#109 2308 00002ad8 afa60004 sw 4(r29),r6 2309 00002adc 0c001354 jal _dindex 2310 00002ae0 54000000 nop; not filled. 2311 00002ae4 23bd0008 addi r29,r29,#8 2312 00002ae8 64210000 snei r1,r1,#0 2313 00002aec 1420002c bnez r1,L65_LF3 2314 00002af0 54000000 nop; not filled. 2315 00002af4 23bdfff8 addi r29,r29,#-8 2316 00002af8 afa20000 sw (r29),r2 2317 00002afc 2006002b addi r6,r0,#43 2318 00002b00 afa60004 sw 4(r29),r6 2319 00002b04 0c00132c jal _dindex 2320 00002b08 54000000 nop; not filled. 2321 00002b0c 23bd0008 addi r29,r29,#8 2322 00002b10 64210000 snei r1,r1,#0 2323 00002b14 1020002c beqz r1,L64_LF3 2324 00002b18 54000000 nop; not filled. 2325 00002b1c L65_LF3: 2326 00002b1c 23bdfff0 addi r29,r29,#-16 2327 00002b20 3c060000 lhi r6,((LC0_LF3)>>16)&0xffff 2328 00002b24 24c6d2c8 addui r6,r6,(LC0_LF3)&0xffff 2329 00002b28 afa60000 sw (r29),r6 2330 00002b2c afa50004 sw 4(r29),r5 2331 00002b30 8c840000 lw r4,(r4) 2332 00002b34 afa40008 sw 8(r29),r4 2333 00002b38 0c0084b0 jal _printf 2334 00002b3c 54000000 nop; not filled. 2335 00002b40 23bd0010 addi r29,r29,#16 2336 00002b44 L64_LF3: 2337 00002b44 8fa20000 lw r2,0(r29) 2338 00002b48 8fa30004 lw r3,4(r29) 2339 00002b4c 8fa40008 lw r4,8(r29) 2340 00002b50 8fa5000c lw r5,12(r29) 2341 00002b54 8fa60010 lw r6,16(r29) 2342 00002b58 8fdffff8 lw r31,-8(r30) 2343 00002b5c 001ee820 add r29,r0,r30 2344 00002b60 8fdefffc lw r30,-4(r30) 2345 00002b64 4be00000 jr r31 2346 00002b68 54000000 nop 2347 00002b6c .endproc _MemorySetFreemap 2348 00002b6c .data 2349 0000d2e7 .align 2 2350 0000d2e8 LC1_LF3: 2351 0000d2e8 4d617020 .ascii "Map has %d entries, memory size is 0x%x.\n\000" 2351 0000d2ec 68617320 2351 0000d2f0 25642065 2351 0000d2f4 6e747269 2351 0000d2f8 65732c20 2351 0000d2fc 6d656d6f 2351 0000d300 72792073 2351 0000d304 697a6520 2351 0000d308 69732030 2351 0000d30c 7825782e 2351 0000d310 0a00 2352 0000d312 .align 2 2353 0000d314 LC2_LF3: 2354 0000d314 46726565 .ascii "Free pages start with page # 0x%x.\n\000" 2354 0000d318 20706167 2354 0000d31c 65732073 2354 0000d320 74617274 2354 0000d324 20776974 2354 0000d328 68207061 2354 0000d32c 67652023 2354 0000d330 20307825 2354 0000d334 782e0a00 2355 0000d338 .align 2 2356 0000d338 LC3_LF3: 2357 0000d338 496e6974 .ascii "Initialized %d free pages.\n\000" 2357 0000d33c 69616c69 2357 0000d340 7a656420 2357 0000d344 25642066 2357 0000d348 72656520 2357 0000d34c 70616765 2357 0000d350 732e0a00 2358 0000d354 .text 2359 00002b6c .align 2 2360 00002b6c .proc _MemoryModuleInit 2361 00002b6c .global _MemoryModuleInit 2362 00002b6c _MemoryModuleInit: 2363 ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. 2364 00002b6c afbefffc sw -4(r29),r30; push fp 2365 00002b70 001df020 add r30,r0,r29; fp = sp 2366 00002b74 afbffff8 sw -8(r29),r31; push ret addr 2367 00002b78 2fbd0030 subui r29,r29,#48; alloc local storage 2368 00002b7c afa20000 sw 0(r29),r2 2369 00002b80 afa30004 sw 4(r29),r3 2370 00002b84 afa40008 sw 8(r29),r4 2371 00002b88 afa5000c sw 12(r29),r5 2372 00002b8c afa60010 sw 16(r29),r6 2373 00002b90 afa70014 sw 20(r29),r7 2374 00002b94 afa80018 sw 24(r29),r8 2375 00002b98 afa9001c sw 28(r29),r9 2376 00002b9c afaa0020 sw 32(r29),r10 2377 00002ba0 afab0024 sw 36(r29),r11 2378 00002ba4 3c01ffff lhi r1,#-1 2379 00002ba8 24210000 addui r1,r1,#0 2380 00002bac 8c220000 lw r2,(r1) 2381 00002bb0 74410000 sgei r1,r2,#0 2382 00002bb4 14200008 bnez r1,L68_LF3 2383 00002bb8 54000000 nop; not filled. 2384 00002bbc 2442ffff addui r2,r2,#65535 2385 00002bc0 L68_LF3: 2386 00002bc0 5c480010 srai r8,r2,#0x10 2387 00002bc4 3c030000 lhi r3,((_pagestart_LF3)>>16)&0xffff 2388 00002bc8 2463d42c addui r3,r3,(_pagestart_LF3)&0xffff 2389 00002bcc 3c010001 lhi r1,((_lastosaddress)>>16)&0xffff 2390 00002bd0 24212df8 addui r1,r1,(_lastosaddress)&0xffff 2391 00002bd4 8c210000 lw r1,(r1) 2392 00002bd8 2422fffc addui r2,r1,#65532 2393 00002bdc 74410000 sgei r1,r2,#0 2394 00002be0 14200008 bnez r1,L69_LF3 2395 00002be4 54000000 nop; not filled. 2396 00002be8 2442ffff addui r2,r2,#65535 2397 00002bec L69_LF3: 2398 00002bec 5c410010 srai r1,r2,#0x10 2399 00002bf0 ac610000 sw (r3),r1 2400 00002bf4 3c030000 lhi r3,((_freemapmax_LF3)>>16)&0xffff 2401 00002bf8 2463d430 addui r3,r3,(_freemapmax_LF3)&0xffff 2402 00002bfc 2102001f addi r2,r8,#31 2403 00002c00 74410000 sgei r1,r2,#0 2404 00002c04 14200008 bnez r1,L70_LF3 2405 00002c08 54000000 nop; not filled. 2406 00002c0c 2102003e addi r2,r8,#62 2407 00002c10 L70_LF3: 2408 00002c10 5c410005 srai r1,r2,#0x5 2409 00002c14 ac610000 sw (r3),r1 2410 00002c18 23bdfff8 addi r29,r29,#-8 2411 00002c1c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2412 00002c20 2442fd60 addui r2,r2,(_debugstr)&0xffff 2413 00002c24 afa20000 sw (r29),r2 2414 00002c28 200b006d addi r11,r0,#109 2415 00002c2c afab0004 sw 4(r29),r11 2416 00002c30 0c001200 jal _dindex 2417 00002c34 54000000 nop; not filled. 2418 00002c38 23bd0008 addi r29,r29,#8 2419 00002c3c 64210000 snei r1,r1,#0 2420 00002c40 1420002c bnez r1,L72_LF3 2421 00002c44 54000000 nop; not filled. 2422 00002c48 23bdfff8 addi r29,r29,#-8 2423 00002c4c afa20000 sw (r29),r2 2424 00002c50 200b002b addi r11,r0,#43 2425 00002c54 afab0004 sw 4(r29),r11 2426 00002c58 0c0011d8 jal _dindex 2427 00002c5c 54000000 nop; not filled. 2428 00002c60 23bd0008 addi r29,r29,#8 2429 00002c64 64210000 snei r1,r1,#0 2430 00002c68 1020002c beqz r1,L71_LF3 2431 00002c6c 54000000 nop; not filled. 2432 00002c70 L72_LF3: 2433 00002c70 23bdfff0 addi r29,r29,#-16 2434 00002c74 3c0b0000 lhi r11,((LC1_LF3)>>16)&0xffff 2435 00002c78 256bd2e8 addui r11,r11,(LC1_LF3)&0xffff 2436 00002c7c afab0000 sw (r29),r11 2437 00002c80 8c610000 lw r1,(r3) 2438 00002c84 afa10004 sw 4(r29),r1 2439 00002c88 afa80008 sw 8(r29),r8 2440 00002c8c 0c00835c jal _printf 2441 00002c90 54000000 nop; not filled. 2442 00002c94 23bd0010 addi r29,r29,#16 2443 00002c98 L71_LF3: 2444 00002c98 23bdfff8 addi r29,r29,#-8 2445 00002c9c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2446 00002ca0 2442fd60 addui r2,r2,(_debugstr)&0xffff 2447 00002ca4 afa20000 sw (r29),r2 2448 00002ca8 200b006d addi r11,r0,#109 2449 00002cac afab0004 sw 4(r29),r11 2450 00002cb0 0c001180 jal _dindex 2451 00002cb4 54000000 nop; not filled. 2452 00002cb8 23bd0008 addi r29,r29,#8 2453 00002cbc 64210000 snei r1,r1,#0 2454 00002cc0 1420002c bnez r1,L74_LF3 2455 00002cc4 54000000 nop; not filled. 2456 00002cc8 23bdfff8 addi r29,r29,#-8 2457 00002ccc afa20000 sw (r29),r2 2458 00002cd0 200b002b addi r11,r0,#43 2459 00002cd4 afab0004 sw 4(r29),r11 2460 00002cd8 0c001158 jal _dindex 2461 00002cdc 54000000 nop; not filled. 2462 00002ce0 23bd0008 addi r29,r29,#8 2463 00002ce4 64210000 snei r1,r1,#0 2464 00002ce8 10200030 beqz r1,L73_LF3 2465 00002cec 54000000 nop; not filled. 2466 00002cf0 L74_LF3: 2467 00002cf0 23bdfff8 addi r29,r29,#-8 2468 00002cf4 3c0b0000 lhi r11,((LC2_LF3)>>16)&0xffff 2469 00002cf8 256bd314 addui r11,r11,(LC2_LF3)&0xffff 2470 00002cfc afab0000 sw (r29),r11 2471 00002d00 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2472 00002d04 2421d42c addui r1,r1,(_pagestart_LF3)&0xffff 2473 00002d08 8c210000 lw r1,(r1) 2474 00002d0c afa10004 sw 4(r29),r1 2475 00002d10 0c0082d8 jal _printf 2476 00002d14 54000000 nop; not filled. 2477 00002d18 23bd0008 addi r29,r29,#8 2478 00002d1c L73_LF3: 2479 00002d1c 20020000 addi r2,r0,#0 2480 00002d20 3c040000 lhi r4,((_freemapmax_LF3)>>16)&0xffff 2481 00002d24 2484d430 addui r4,r4,(_freemapmax_LF3)&0xffff 2482 00002d28 8c810000 lw r1,(r4) 2483 00002d2c 0041082a slt r1,r2,r1 2484 00002d30 1020002c beqz r1,L76_LF3 2485 00002d34 54000000 nop; not filled. 2486 00002d38 3c030000 lhi r3,((_freepages_LF3)>>16)&0xffff 2487 00002d3c 2463d438 addui r3,r3,(_freepages_LF3)&0xffff 2488 00002d40 L78_LF3: 2489 00002d40 200b0000 addi r11,r0,#0 2490 00002d44 ac6b0000 sw (r3),r11 2491 00002d48 20630004 addi r3,r3,#4 2492 00002d4c 20420001 addi r2,r2,#1 2493 00002d50 8c810000 lw r1,(r4) 2494 00002d54 0041082a slt r1,r2,r1 2495 00002d58 1420ffe4 bnez r1,L78_LF3 2496 00002d5c 54000000 nop; not filled. 2497 00002d60 L76_LF3: 2498 00002d60 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2499 00002d64 2442d434 addui r2,r2,(_nfreepages_LF3)&0xffff 2500 00002d68 200b0000 addi r11,r0,#0 2501 00002d6c ac4b0000 sw (r2),r11 2502 00002d70 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2503 00002d74 2421d42c addui r1,r1,(_pagestart_LF3)&0xffff 2504 00002d78 8c240000 lw r4,(r1) 2505 00002d7c 0088082a slt r1,r4,r8 2506 00002d80 10200104 beqz r1,L81_LF3 2507 00002d84 54000000 nop; not filled. 2508 00002d88 00023820 add r7,r0,r2 2509 00002d8c 200a0001 addi r10,r0,#1 2510 00002d90 3c090000 lhi r9,((_negativeone_LF3)>>16)&0xffff 2511 00002d94 2529d2c4 addui r9,r9,(_negativeone_LF3)&0xffff 2512 00002d98 L83_LF3: 2513 00002d98 8ce10000 lw r1,(r7) 2514 00002d9c 20210001 addi r1,r1,#1 2515 00002da0 ace10000 sw (r7),r1 2516 00002da4 00041020 add r2,r0,r4 2517 00002da8 74810000 sgei r1,r4,#0 2518 00002dac 14200008 bnez r1,L85_LF3 2519 00002db0 54000000 nop; not filled. 2520 00002db4 2082001f addi r2,r4,#31 2521 00002db8 L85_LF3: 2522 00002db8 5c460005 srai r6,r2,#0x5 2523 00002dbc 50c10005 slli r1,r6,#0x5 2524 00002dc0 00810822 sub r1,r4,r1 2525 00002dc4 01411804 sll r3,r10,r1 2526 00002dc8 8d210000 lw r1,(r9) 2527 00002dcc 00611026 xor r2,r3,r1 2528 00002dd0 50c10002 slli r1,r6,#0x2 2529 00002dd4 3c0b0000 lhi r11,((_freepages_LF3)>>16)&0xffff 2530 00002dd8 256bd438 addui r11,r11,(_freepages_LF3)&0xffff 2531 00002ddc 002b2820 add r5,r1,r11 2532 00002de0 8ca10000 lw r1,(r5) 2533 00002de4 00220824 and r1,r1,r2 2534 00002de8 00230825 or r1,r1,r3 2535 00002dec aca10000 sw (r5),r1 2536 00002df0 23bdfff8 addi r29,r29,#-8 2537 00002df4 3c0b0000 lhi r11,((_debugstr)>>16)&0xffff 2538 00002df8 256bfd60 addui r11,r11,(_debugstr)&0xffff 2539 00002dfc afab0000 sw (r29),r11 2540 00002e00 200b006d addi r11,r0,#109 2541 00002e04 afab0004 sw 4(r29),r11 2542 00002e08 0c001028 jal _dindex 2543 00002e0c 54000000 nop; not filled. 2544 00002e10 23bd0008 addi r29,r29,#8 2545 00002e14 64210000 snei r1,r1,#0 2546 00002e18 14200034 bnez r1,L89_LF3 2547 00002e1c 54000000 nop; not filled. 2548 00002e20 23bdfff8 addi r29,r29,#-8 2549 00002e24 3c0b0000 lhi r11,((_debugstr)>>16)&0xffff 2550 00002e28 256bfd60 addui r11,r11,(_debugstr)&0xffff 2551 00002e2c afab0000 sw (r29),r11 2552 00002e30 200b002b addi r11,r0,#43 2553 00002e34 afab0004 sw 4(r29),r11 2554 00002e38 0c000ff8 jal _dindex 2555 00002e3c 54000000 nop; not filled. 2556 00002e40 23bd0008 addi r29,r29,#8 2557 00002e44 64210000 snei r1,r1,#0 2558 00002e48 1020002c beqz r1,L82_LF3 2559 00002e4c 54000000 nop; not filled. 2560 00002e50 L89_LF3: 2561 00002e50 23bdfff0 addi r29,r29,#-16 2562 00002e54 3c0b0000 lhi r11,((LC0_LF3)>>16)&0xffff 2563 00002e58 256bd2c8 addui r11,r11,(LC0_LF3)&0xffff 2564 00002e5c afab0000 sw (r29),r11 2565 00002e60 afa60004 sw 4(r29),r6 2566 00002e64 8ca50000 lw r5,(r5) 2567 00002e68 afa50008 sw 8(r29),r5 2568 00002e6c 0c00817c jal _printf 2569 00002e70 54000000 nop; not filled. 2570 00002e74 23bd0010 addi r29,r29,#16 2571 00002e78 L82_LF3: 2572 00002e78 20840001 addi r4,r4,#1 2573 00002e7c 0088082a slt r1,r4,r8 2574 00002e80 1420ff14 bnez r1,L83_LF3 2575 00002e84 54000000 nop; not filled. 2576 00002e88 L81_LF3: 2577 00002e88 23bdfff8 addi r29,r29,#-8 2578 00002e8c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2579 00002e90 2442fd60 addui r2,r2,(_debugstr)&0xffff 2580 00002e94 afa20000 sw (r29),r2 2581 00002e98 200b006d addi r11,r0,#109 2582 00002e9c afab0004 sw 4(r29),r11 2583 00002ea0 0c000f90 jal _dindex 2584 00002ea4 54000000 nop; not filled. 2585 00002ea8 23bd0008 addi r29,r29,#8 2586 00002eac 64210000 snei r1,r1,#0 2587 00002eb0 1420002c bnez r1,L92_LF3 2588 00002eb4 54000000 nop; not filled. 2589 00002eb8 23bdfff8 addi r29,r29,#-8 2590 00002ebc afa20000 sw (r29),r2 2591 00002ec0 200b002b addi r11,r0,#43 2592 00002ec4 afab0004 sw 4(r29),r11 2593 00002ec8 0c000f68 jal _dindex 2594 00002ecc 54000000 nop; not filled. 2595 00002ed0 23bd0008 addi r29,r29,#8 2596 00002ed4 64210000 snei r1,r1,#0 2597 00002ed8 10200030 beqz r1,L91_LF3 2598 00002edc 54000000 nop; not filled. 2599 00002ee0 L92_LF3: 2600 00002ee0 23bdfff8 addi r29,r29,#-8 2601 00002ee4 3c0b0000 lhi r11,((LC3_LF3)>>16)&0xffff 2602 00002ee8 256bd338 addui r11,r11,(LC3_LF3)&0xffff 2603 00002eec afab0000 sw (r29),r11 2604 00002ef0 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2605 00002ef4 2421d434 addui r1,r1,(_nfreepages_LF3)&0xffff 2606 00002ef8 8c210000 lw r1,(r1) 2607 00002efc afa10004 sw 4(r29),r1 2608 00002f00 0c0080e8 jal _printf 2609 00002f04 54000000 nop; not filled. 2610 00002f08 23bd0008 addi r29,r29,#8 2611 00002f0c L91_LF3: 2612 00002f0c 8fa20000 lw r2,0(r29) 2613 00002f10 8fa30004 lw r3,4(r29) 2614 00002f14 8fa40008 lw r4,8(r29) 2615 00002f18 8fa5000c lw r5,12(r29) 2616 00002f1c 8fa60010 lw r6,16(r29) 2617 00002f20 8fa70014 lw r7,20(r29) 2618 00002f24 8fa80018 lw r8,24(r29) 2619 00002f28 8fa9001c lw r9,28(r29) 2620 00002f2c 8faa0020 lw r10,32(r29) 2621 00002f30 8fab0024 lw r11,36(r29) 2622 00002f34 8fdffff8 lw r31,-8(r30) 2623 00002f38 001ee820 add r29,r0,r30 2624 00002f3c 8fdefffc lw r30,-4(r30) 2625 00002f40 4be00000 jr r31 2626 00002f44 54000000 nop 2627 00002f48 .endproc _MemoryModuleInit 2628 00002f48 .data 2629 0000d354 .align 2 2630 0000d354 _mapnum42_LF3: 2631 0000d354 00000000 .word 0 2632 0000d358 .align 2 2633 0000d358 LC4_LF3: 2634 0000d358 4552524f .ascii "ERROR AT THIS POINT\n\000" 2634 0000d35c 52204154 2634 0000d360 20544849 2634 0000d364 5320504f 2634 0000d368 494e540a 2634 0000d36c 00 2635 0000d36d .align 2 2636 0000d370 LC5_LF3: 2637 0000d370 416c6c6f .ascii "Allocating memory, starting with page %d\n\000" 2637 0000d374 63617469 2637 0000d378 6e67206d 2637 0000d37c 656d6f72 2637 0000d380 792c2073 2637 0000d384 74617274 2637 0000d388 696e6720 2637 0000d38c 77697468 2637 0000d390 20706167 2637 0000d394 65202564 2637 0000d398 0a00 2638 0000d39a .align 2 2639 0000d39c LC6_LF3: 2640 0000d39c 416c6c6f .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" 2640 0000d3a0 63617465 2640 0000d3a4 64206d65 2640 0000d3a8 6d6f7279 2640 0000d3ac 2c206672 2640 0000d3b0 6f6d206d 2640 0000d3b4 61702025 2640 0000d3b8 642c2070 2640 0000d3bc 61676520 2640 0000d3c0 25642c20 2640 0000d3c4 6d61703d 2640 0000d3c8 30782578 2640 0000d3cc 2e0a00 2641 0000d3cf .text 2642 00002f48 .align 2 2643 00002f48 .proc _MemoryAllocPage 2644 00002f48 .global _MemoryAllocPage 2645 00002f48 _MemoryAllocPage: 2646 ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. 2647 00002f48 afbefffc sw -4(r29),r30; push fp 2648 00002f4c 001df020 add r30,r0,r29; fp = sp 2649 00002f50 afbffff8 sw -8(r29),r31; push ret addr 2650 00002f54 2fbd0020 subui r29,r29,#32; alloc local storage 2651 00002f58 afa20000 sw 0(r29),r2 2652 00002f5c afa30004 sw 4(r29),r3 2653 00002f60 afa40008 sw 8(r29),r4 2654 00002f64 afa5000c sw 12(r29),r5 2655 00002f68 afa60010 sw 16(r29),r6 2656 00002f6c afa70014 sw 20(r29),r7 2657 00002f70 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2658 00002f74 2421d434 addui r1,r1,(_nfreepages_LF3)&0xffff 2659 00002f78 8c210000 lw r1,(r1) 2660 00002f7c 64210000 snei r1,r1,#0 2661 00002f80 1420002c bnez r1,L111_LF3 2662 00002f84 54000000 nop; not filled. 2663 00002f88 23bdfff8 addi r29,r29,#-8 2664 00002f8c 3c070000 lhi r7,((LC4_LF3)>>16)&0xffff 2665 00002f90 24e7d358 addui r7,r7,(LC4_LF3)&0xffff 2666 00002f94 afa70000 sw (r29),r7 2667 00002f98 0c008050 jal _printf 2668 00002f9c 54000000 nop; not filled. 2669 00002fa0 20010000 addi r1,r0,#0 2670 00002fa4 23bd0008 addi r29,r29,#8 2671 00002fa8 08000238 j L110_LF3 2672 00002fac 54000000 nop; not filled. 2673 00002fb0 L111_LF3: 2674 00002fb0 23bdfff8 addi r29,r29,#-8 2675 00002fb4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2676 00002fb8 2442fd60 addui r2,r2,(_debugstr)&0xffff 2677 00002fbc afa20000 sw (r29),r2 2678 00002fc0 2007006d addi r7,r0,#109 2679 00002fc4 afa70004 sw 4(r29),r7 2680 00002fc8 0c000e68 jal _dindex 2681 00002fcc 54000000 nop; not filled. 2682 00002fd0 23bd0008 addi r29,r29,#8 2683 00002fd4 64210000 snei r1,r1,#0 2684 00002fd8 1420002c bnez r1,L113_LF3 2685 00002fdc 54000000 nop; not filled. 2686 00002fe0 23bdfff8 addi r29,r29,#-8 2687 00002fe4 afa20000 sw (r29),r2 2688 00002fe8 2007002b addi r7,r0,#43 2689 00002fec afa70004 sw 4(r29),r7 2690 00002ff0 0c000e40 jal _dindex 2691 00002ff4 54000000 nop; not filled. 2692 00002ff8 23bd0008 addi r29,r29,#8 2693 00002ffc 64210000 snei r1,r1,#0 2694 00003000 10200030 beqz r1,L112_LF3 2695 00003004 54000000 nop; not filled. 2696 00003008 L113_LF3: 2697 00003008 23bdfff8 addi r29,r29,#-8 2698 0000300c 3c070000 lhi r7,((LC5_LF3)>>16)&0xffff 2699 00003010 24e7d370 addui r7,r7,(LC5_LF3)&0xffff 2700 00003014 afa70000 sw (r29),r7 2701 00003018 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2702 0000301c 2421d354 addui r1,r1,(_mapnum42_LF3)&0xffff 2703 00003020 8c210000 lw r1,(r1) 2704 00003024 afa10004 sw 4(r29),r1 2705 00003028 0c007fc0 jal _printf 2706 0000302c 54000000 nop; not filled. 2707 00003030 23bd0008 addi r29,r29,#8 2708 00003034 L112_LF3: 2709 00003034 3c020000 lhi r2,((_mapnum42_LF3)>>16)&0xffff 2710 00003038 2442d354 addui r2,r2,(_mapnum42_LF3)&0xffff 2711 0000303c 8c410000 lw r1,(r2) 2712 00003040 3c040000 lhi r4,((_freepages_LF3)>>16)&0xffff 2713 00003044 2484d438 addui r4,r4,(_freepages_LF3)&0xffff 2714 00003048 50210002 slli r1,r1,#0x2 2715 0000304c 00240820 add r1,r1,r4 2716 00003050 8c210000 lw r1,(r1) 2717 00003054 64210000 snei r1,r1,#0 2718 00003058 1420004c bnez r1,L115_LF3 2719 0000305c 54000000 nop; not filled. 2720 00003060 3c010000 lhi r1,((_freemapmax_LF3)>>16)&0xffff 2721 00003064 2421d430 addui r1,r1,(_freemapmax_LF3)&0xffff 2722 00003068 8c230000 lw r3,(r1) 2723 0000306c L116_LF3: 2724 0000306c 8c410000 lw r1,(r2) 2725 00003070 20210001 addi r1,r1,#1 2726 00003074 ac410000 sw (r2),r1 2727 00003078 0023082d sge r1,r1,r3 2728 0000307c 1020000c beqz r1,L114_LF3 2729 00003080 54000000 nop; not filled. 2730 00003084 20070000 addi r7,r0,#0 2731 00003088 ac470000 sw (r2),r7 2732 0000308c L114_LF3: 2733 0000308c 8c410000 lw r1,(r2) 2734 00003090 50210002 slli r1,r1,#0x2 2735 00003094 00240820 add r1,r1,r4 2736 00003098 8c210000 lw r1,(r1) 2737 0000309c 64210000 snei r1,r1,#0 2738 000030a0 1020ffc8 beqz r1,L116_LF3 2739 000030a4 54000000 nop; not filled. 2740 000030a8 L115_LF3: 2741 000030a8 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2742 000030ac 2421d354 addui r1,r1,(_mapnum42_LF3)&0xffff 2743 000030b0 8c210000 lw r1,(r1) 2744 000030b4 50210002 slli r1,r1,#0x2 2745 000030b8 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2746 000030bc 24e7d438 addui r7,r7,(_freepages_LF3)&0xffff 2747 000030c0 00270820 add r1,r1,r7 2748 000030c4 8c230000 lw r3,(r1) 2749 000030c8 201f0000 addi r31,r0,#0 2750 000030cc 30610001 andi r1,r3,#1 2751 000030d0 14200020 bnez r1,L120_LF3 2752 000030d4 54000000 nop; not filled. 2753 000030d8 20020001 addi r2,r0,#1 2754 000030dc L121_LF3: 2755 000030dc 23ff0001 addi r31,r31,#1 2756 000030e0 005f0804 sll r1,r2,r31 2757 000030e4 00610824 and r1,r3,r1 2758 000030e8 64210000 snei r1,r1,#0 2759 000030ec 1020ffec beqz r1,L121_LF3 2760 000030f0 54000000 nop; not filled. 2761 000030f4 L120_LF3: 2762 000030f4 20010001 addi r1,r0,#1 2763 000030f8 003f1004 sll r2,r1,r31 2764 000030fc 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2765 00003100 2421d2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2766 00003104 8c210000 lw r1,(r1) 2767 00003108 00412026 xor r4,r2,r1 2768 0000310c 3c050000 lhi r5,((_mapnum42_LF3)>>16)&0xffff 2769 00003110 24a5d354 addui r5,r5,(_mapnum42_LF3)&0xffff 2770 00003114 8ca30000 lw r3,(r5) 2771 00003118 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2772 0000311c 24c6d438 addui r6,r6,(_freepages_LF3)&0xffff 2773 00003120 50610002 slli r1,r3,#0x2 2774 00003124 00261020 add r2,r1,r6 2775 00003128 8c410000 lw r1,(r2) 2776 0000312c 00240824 and r1,r1,r4 2777 00003130 ac410000 sw (r2),r1 2778 00003134 50610005 slli r1,r3,#0x5 2779 00003138 003f1820 add r3,r1,r31 2780 0000313c 23bdfff8 addi r29,r29,#-8 2781 00003140 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2782 00003144 2442fd60 addui r2,r2,(_debugstr)&0xffff 2783 00003148 afa20000 sw (r29),r2 2784 0000314c 2007006d addi r7,r0,#109 2785 00003150 afa70004 sw 4(r29),r7 2786 00003154 0c000cdc jal _dindex 2787 00003158 54000000 nop; not filled. 2788 0000315c 23bd0008 addi r29,r29,#8 2789 00003160 64210000 snei r1,r1,#0 2790 00003164 1420002c bnez r1,L126_LF3 2791 00003168 54000000 nop; not filled. 2792 0000316c 23bdfff8 addi r29,r29,#-8 2793 00003170 afa20000 sw (r29),r2 2794 00003174 2007002b addi r7,r0,#43 2795 00003178 afa70004 sw 4(r29),r7 2796 0000317c 0c000cb4 jal _dindex 2797 00003180 54000000 nop; not filled. 2798 00003184 23bd0008 addi r29,r29,#8 2799 00003188 64210000 snei r1,r1,#0 2800 0000318c 1020003c beqz r1,L125_LF3 2801 00003190 54000000 nop; not filled. 2802 00003194 L126_LF3: 2803 00003194 23bdfff0 addi r29,r29,#-16 2804 00003198 3c070000 lhi r7,((LC6_LF3)>>16)&0xffff 2805 0000319c 24e7d39c addui r7,r7,(LC6_LF3)&0xffff 2806 000031a0 afa70000 sw (r29),r7 2807 000031a4 8ca10000 lw r1,(r5) 2808 000031a8 afa10004 sw 4(r29),r1 2809 000031ac afa30008 sw 8(r29),r3 2810 000031b0 50210002 slli r1,r1,#0x2 2811 000031b4 00260820 add r1,r1,r6 2812 000031b8 8c210000 lw r1,(r1) 2813 000031bc afa1000c sw 12(r29),r1 2814 000031c0 0c007e28 jal _printf 2815 000031c4 54000000 nop; not filled. 2816 000031c8 23bd0010 addi r29,r29,#16 2817 000031cc L125_LF3: 2818 000031cc 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2819 000031d0 2421d434 addui r1,r1,(_nfreepages_LF3)&0xffff 2820 000031d4 8c220000 lw r2,(r1) 2821 000031d8 2042ffff addi r2,r2,#-1 2822 000031dc ac220000 sw (r1),r2 2823 000031e0 00030820 add r1,r0,r3 2824 000031e4 L110_LF3: 2825 000031e4 8fa20000 lw r2,0(r29) 2826 000031e8 8fa30004 lw r3,4(r29) 2827 000031ec 8fa40008 lw r4,8(r29) 2828 000031f0 8fa5000c lw r5,12(r29) 2829 000031f4 8fa60010 lw r6,16(r29) 2830 000031f8 8fa70014 lw r7,20(r29) 2831 000031fc 8fdffff8 lw r31,-8(r30) 2832 00003200 001ee820 add r29,r0,r30 2833 00003204 8fdefffc lw r30,-4(r30) 2834 00003208 4be00000 jr r31 2835 0000320c 54000000 nop 2836 00003210 .endproc _MemoryAllocPage 2837 00003210 .data 2838 0000d3cf .align 2 2839 0000d3d0 LC7_LF3: 2840 0000d3d0 46726565 .ascii "Freed page 0x%x, %d remaining.\n\000" 2840 0000d3d4 64207061 2840 0000d3d8 67652030 2840 0000d3dc 7825782c 2840 0000d3e0 20256420 2840 0000d3e4 72656d61 2840 0000d3e8 696e696e 2840 0000d3ec 672e0a00 2841 0000d3f0 .text 2842 00003210 .align 2 2843 00003210 .proc _MemoryFreePage 2844 00003210 .global _MemoryFreePage 2845 00003210 _MemoryFreePage: 2846 ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. 2847 00003210 afbefffc sw -4(r29),r30; push fp 2848 00003214 001df020 add r30,r0,r29; fp = sp 2849 00003218 afbffff8 sw -8(r29),r31; push ret addr 2850 0000321c 2fbd0020 subui r29,r29,#32; alloc local storage 2851 00003220 afa20000 sw 0(r29),r2 2852 00003224 afa30004 sw 4(r29),r3 2853 00003228 afa40008 sw 8(r29),r4 2854 0000322c afa5000c sw 12(r29),r5 2855 00003230 afa60010 sw 16(r29),r6 2856 00003234 afa70014 sw 20(r29),r7 2857 00003238 8fc60000 lw r6,(r30) 2858 0000323c 20030001 addi r3,r0,#1 2859 00003240 00061020 add r2,r0,r6 2860 00003244 74c10000 sgei r1,r6,#0 2861 00003248 14200008 bnez r1,L129_LF3 2862 0000324c 54000000 nop; not filled. 2863 00003250 20c2001f addi r2,r6,#31 2864 00003254 L129_LF3: 2865 00003254 5c450005 srai r5,r2,#0x5 2866 00003258 50a10005 slli r1,r5,#0x5 2867 0000325c 00c10822 sub r1,r6,r1 2868 00003260 00611804 sll r3,r3,r1 2869 00003264 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2870 00003268 2421d2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2871 0000326c 8c210000 lw r1,(r1) 2872 00003270 00611026 xor r2,r3,r1 2873 00003274 50a10002 slli r1,r5,#0x2 2874 00003278 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2875 0000327c 24e7d438 addui r7,r7,(_freepages_LF3)&0xffff 2876 00003280 00272020 add r4,r1,r7 2877 00003284 8c810000 lw r1,(r4) 2878 00003288 00220824 and r1,r1,r2 2879 0000328c 00230825 or r1,r1,r3 2880 00003290 ac810000 sw (r4),r1 2881 00003294 23bdfff8 addi r29,r29,#-8 2882 00003298 3c070000 lhi r7,((_debugstr)>>16)&0xffff 2883 0000329c 24e7fd60 addui r7,r7,(_debugstr)&0xffff 2884 000032a0 afa70000 sw (r29),r7 2885 000032a4 2007006d addi r7,r0,#109 2886 000032a8 afa70004 sw 4(r29),r7 2887 000032ac 0c000b84 jal _dindex 2888 000032b0 54000000 nop; not filled. 2889 000032b4 23bd0008 addi r29,r29,#8 2890 000032b8 64210000 snei r1,r1,#0 2891 000032bc 14200034 bnez r1,L133_LF3 2892 000032c0 54000000 nop; not filled. 2893 000032c4 23bdfff8 addi r29,r29,#-8 2894 000032c8 3c070000 lhi r7,((_debugstr)>>16)&0xffff 2895 000032cc 24e7fd60 addui r7,r7,(_debugstr)&0xffff 2896 000032d0 afa70000 sw (r29),r7 2897 000032d4 2007002b addi r7,r0,#43 2898 000032d8 afa70004 sw 4(r29),r7 2899 000032dc 0c000b54 jal _dindex 2900 000032e0 54000000 nop; not filled. 2901 000032e4 23bd0008 addi r29,r29,#8 2902 000032e8 64210000 snei r1,r1,#0 2903 000032ec 1020002c beqz r1,L128_LF3 2904 000032f0 54000000 nop; not filled. 2905 000032f4 L133_LF3: 2906 000032f4 23bdfff0 addi r29,r29,#-16 2907 000032f8 3c070000 lhi r7,((LC0_LF3)>>16)&0xffff 2908 000032fc 24e7d2c8 addui r7,r7,(LC0_LF3)&0xffff 2909 00003300 afa70000 sw (r29),r7 2910 00003304 afa50004 sw 4(r29),r5 2911 00003308 8c840000 lw r4,(r4) 2912 0000330c afa40008 sw 8(r29),r4 2913 00003310 0c007cd8 jal _printf 2914 00003314 54000000 nop; not filled. 2915 00003318 23bd0010 addi r29,r29,#16 2916 0000331c L128_LF3: 2917 0000331c 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2918 00003320 2442d434 addui r2,r2,(_nfreepages_LF3)&0xffff 2919 00003324 8c410000 lw r1,(r2) 2920 00003328 20210001 addi r1,r1,#1 2921 0000332c ac410000 sw (r2),r1 2922 00003330 23bdfff8 addi r29,r29,#-8 2923 00003334 3c030000 lhi r3,((_debugstr)>>16)&0xffff 2924 00003338 2463fd60 addui r3,r3,(_debugstr)&0xffff 2925 0000333c afa30000 sw (r29),r3 2926 00003340 2007006d addi r7,r0,#109 2927 00003344 afa70004 sw 4(r29),r7 2928 00003348 0c000ae8 jal _dindex 2929 0000334c 54000000 nop; not filled. 2930 00003350 23bd0008 addi r29,r29,#8 2931 00003354 64210000 snei r1,r1,#0 2932 00003358 1420002c bnez r1,L135_LF3 2933 0000335c 54000000 nop; not filled. 2934 00003360 23bdfff8 addi r29,r29,#-8 2935 00003364 afa30000 sw (r29),r3 2936 00003368 2007002b addi r7,r0,#43 2937 0000336c afa70004 sw 4(r29),r7 2938 00003370 0c000ac0 jal _dindex 2939 00003374 54000000 nop; not filled. 2940 00003378 23bd0008 addi r29,r29,#8 2941 0000337c 64210000 snei r1,r1,#0 2942 00003380 1020002c beqz r1,L134_LF3 2943 00003384 54000000 nop; not filled. 2944 00003388 L135_LF3: 2945 00003388 23bdfff0 addi r29,r29,#-16 2946 0000338c 3c070000 lhi r7,((LC7_LF3)>>16)&0xffff 2947 00003390 24e7d3d0 addui r7,r7,(LC7_LF3)&0xffff 2948 00003394 afa70000 sw (r29),r7 2949 00003398 afa60004 sw 4(r29),r6 2950 0000339c 8c420000 lw r2,(r2) 2951 000033a0 afa20008 sw 8(r29),r2 2952 000033a4 0c007c44 jal _printf 2953 000033a8 54000000 nop; not filled. 2954 000033ac 23bd0010 addi r29,r29,#16 2955 000033b0 L134_LF3: 2956 000033b0 8fa20000 lw r2,0(r29) 2957 000033b4 8fa30004 lw r3,4(r29) 2958 000033b8 8fa40008 lw r4,8(r29) 2959 000033bc 8fa5000c lw r5,12(r29) 2960 000033c0 8fa60010 lw r6,16(r29) 2961 000033c4 8fa70014 lw r7,20(r29) 2962 000033c8 8fdffff8 lw r31,-8(r30) 2963 000033cc 001ee820 add r29,r0,r30 2964 000033d0 8fdefffc lw r30,-4(r30) 2965 000033d4 4be00000 jr r31 2966 000033d8 54000000 nop 2967 000033dc .endproc _MemoryFreePage 2968 000033dc .align 2 2969 000033dc .proc _MemoryTranslateUserToSystem 2970 000033dc .global _MemoryTranslateUserToSystem 2971 000033dc _MemoryTranslateUserToSystem: 2972 ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. 2973 000033dc afbefffc sw -4(r29),r30; push fp 2974 000033e0 001df020 add r30,r0,r29; fp = sp 2975 000033e4 afbffff8 sw -8(r29),r31; push ret addr 2976 000033e8 2fbd0018 subui r29,r29,#24; alloc local storage 2977 000033ec afa20000 sw 0(r29),r2 2978 000033f0 afa30004 sw 4(r29),r3 2979 000033f4 afa40008 sw 8(r29),r4 2980 000033f8 8fc30000 lw r3,(r30) 2981 000033fc 8fc10004 lw r1,4(r30) 2982 00003400 583f0010 srli r31,r1,#0x10 2983 00003404 3022ffff andi r2,r1,#0xffff 2984 00003408 8c610064 lw r1,100(r3) 2985 0000340c 03e1082b sgt r1,r31,r1 2986 00003410 14200024 bnez r1,L139_LF3 2987 00003414 54000000 nop; not filled. 2988 00003418 53e10002 slli r1,r31,#0x2 2989 0000341c 00230820 add r1,r1,r3 2990 00003420 8c210060 lw r1,96(r1) 2991 00003424 2004fff8 addi r4,r0,#-8 2992 00003428 00240824 and r1,r1,r4 2993 0000342c 00220820 add r1,r1,r2 2994 00003430 08000008 j L140_LF3 2995 00003434 54000000 nop; not filled. 2996 00003438 L139_LF3: 2997 00003438 20010000 addi r1,r0,#0 2998 0000343c L140_LF3: 2999 0000343c 8fa20000 lw r2,0(r29) 3000 00003440 8fa30004 lw r3,4(r29) 3001 00003444 8fa40008 lw r4,8(r29) 3002 00003448 8fdffff8 lw r31,-8(r30) 3003 0000344c 001ee820 add r29,r0,r30 3004 00003450 8fdefffc lw r30,-4(r30) 3005 00003454 4be00000 jr r31 3006 00003458 54000000 nop 3007 0000345c .endproc _MemoryTranslateUserToSystem 3008 0000345c .align 2 3009 0000345c .proc _MemoryCopySystemToUser 3010 0000345c .global _MemoryCopySystemToUser 3011 0000345c _MemoryCopySystemToUser: 3012 ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. 3013 0000345c afbefffc sw -4(r29),r30; push fp 3014 00003460 001df020 add r30,r0,r29; fp = sp 3015 00003464 afbffff8 sw -8(r29),r31; push ret addr 3016 00003468 2fbd0028 subui r29,r29,#40; alloc local storage 3017 0000346c afa20000 sw 0(r29),r2 3018 00003470 afa30004 sw 4(r29),r3 3019 00003474 afa40008 sw 8(r29),r4 3020 00003478 afa5000c sw 12(r29),r5 3021 0000347c afa60010 sw 16(r29),r6 3022 00003480 afa70014 sw 20(r29),r7 3023 00003484 afa80018 sw 24(r29),r8 3024 00003488 afa9001c sw 28(r29),r9 3025 0000348c 8fc70000 lw r7,(r30) 3026 00003490 8fc50004 lw r5,4(r30) 3027 00003494 8fc40008 lw r4,8(r30) 3028 00003498 8fc3000c lw r3,12(r30) 3029 0000349c 20060000 addi r6,r0,#0 3030 000034a0 6c610000 sgti r1,r3,#0 3031 000034a4 102000a4 beqz r1,L167_LF3 3032 000034a8 54000000 nop; not filled. 3033 000034ac 3c080001 lhi r8,#1 3034 000034b0 25080000 addui r8,r8,#0 3035 000034b4 L168_LF3: 3036 000034b4 58820010 srli r2,r4,#0x10 3037 000034b8 309fffff andi r31,r4,#0xffff 3038 000034bc 8ce10064 lw r1,100(r7) 3039 000034c0 0041082b sgt r1,r2,r1 3040 000034c4 10200010 beqz r1,L170_LF3 3041 000034c8 54000000 nop; not filled. 3042 000034cc 201f0000 addi r31,r0,#0 3043 000034d0 0800001c j L169_LF3 3044 000034d4 54000000 nop; not filled. 3045 000034d8 L170_LF3: 3046 000034d8 50410002 slli r1,r2,#0x2 3047 000034dc 00270820 add r1,r1,r7 3048 000034e0 8c210060 lw r1,96(r1) 3049 000034e4 2009fff8 addi r9,r0,#-8 3050 000034e8 00290824 and r1,r1,r9 3051 000034ec 003ff820 add r31,r1,r31 3052 000034f0 L169_LF3: 3053 000034f0 67e10000 snei r1,r31,#0 3054 000034f4 10200054 beqz r1,L167_LF3 3055 000034f8 54000000 nop; not filled. 3056 000034fc 33e1ffff andi r1,r31,#65535 3057 00003500 01011022 sub r2,r8,r1 3058 00003504 0043082b sgt r1,r2,r3 3059 00003508 10200008 beqz r1,L172_LF3 3060 0000350c 54000000 nop; not filled. 3061 00003510 00031020 add r2,r0,r3 3062 00003514 L172_LF3: 3063 00003514 23bdfff0 addi r29,r29,#-16 3064 00003518 afa50000 sw (r29),r5 3065 0000351c afbf0004 sw 4(r29),r31 3066 00003520 afa20008 sw 8(r29),r2 3067 00003524 0c000c9c jal _bcopy 3068 00003528 54000000 nop; not filled. 3069 0000352c 23bd0010 addi r29,r29,#16 3070 00003530 00621822 sub r3,r3,r2 3071 00003534 00c23020 add r6,r6,r2 3072 00003538 00a22820 add r5,r5,r2 3073 0000353c 00822020 add r4,r4,r2 3074 00003540 6c610000 sgti r1,r3,#0 3075 00003544 1420ff6c bnez r1,L168_LF3 3076 00003548 54000000 nop; not filled. 3077 0000354c L167_LF3: 3078 0000354c 00060820 add r1,r0,r6 3079 00003550 8fa20000 lw r2,0(r29) 3080 00003554 8fa30004 lw r3,4(r29) 3081 00003558 8fa40008 lw r4,8(r29) 3082 0000355c 8fa5000c lw r5,12(r29) 3083 00003560 8fa60010 lw r6,16(r29) 3084 00003564 8fa70014 lw r7,20(r29) 3085 00003568 8fa80018 lw r8,24(r29) 3086 0000356c 8fa9001c lw r9,28(r29) 3087 00003570 8fdffff8 lw r31,-8(r30) 3088 00003574 001ee820 add r29,r0,r30 3089 00003578 8fdefffc lw r30,-4(r30) 3090 0000357c 4be00000 jr r31 3091 00003580 54000000 nop 3092 00003584 .endproc _MemoryCopySystemToUser 3093 00003584 .align 2 3094 00003584 .proc _MemoryCopyUserToSystem 3095 00003584 .global _MemoryCopyUserToSystem 3096 00003584 _MemoryCopyUserToSystem: 3097 ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. 3098 00003584 afbefffc sw -4(r29),r30; push fp 3099 00003588 001df020 add r30,r0,r29; fp = sp 3100 0000358c afbffff8 sw -8(r29),r31; push ret addr 3101 00003590 2fbd0028 subui r29,r29,#40; alloc local storage 3102 00003594 afa20000 sw 0(r29),r2 3103 00003598 afa30004 sw 4(r29),r3 3104 0000359c afa40008 sw 8(r29),r4 3105 000035a0 afa5000c sw 12(r29),r5 3106 000035a4 afa60010 sw 16(r29),r6 3107 000035a8 afa70014 sw 20(r29),r7 3108 000035ac afa80018 sw 24(r29),r8 3109 000035b0 afa9001c sw 28(r29),r9 3110 000035b4 8fc70000 lw r7,(r30) 3111 000035b8 8fc50008 lw r5,8(r30) 3112 000035bc 8fc40004 lw r4,4(r30) 3113 000035c0 8fc3000c lw r3,12(r30) 3114 000035c4 20060000 addi r6,r0,#0 3115 000035c8 6c610000 sgti r1,r3,#0 3116 000035cc 102000a4 beqz r1,L191_LF3 3117 000035d0 54000000 nop; not filled. 3118 000035d4 3c080001 lhi r8,#1 3119 000035d8 25080000 addui r8,r8,#0 3120 000035dc L192_LF3: 3121 000035dc 58820010 srli r2,r4,#0x10 3122 000035e0 309fffff andi r31,r4,#0xffff 3123 000035e4 8ce10064 lw r1,100(r7) 3124 000035e8 0041082b sgt r1,r2,r1 3125 000035ec 10200010 beqz r1,L194_LF3 3126 000035f0 54000000 nop; not filled. 3127 000035f4 201f0000 addi r31,r0,#0 3128 000035f8 0800001c j L193_LF3 3129 000035fc 54000000 nop; not filled. 3130 00003600 L194_LF3: 3131 00003600 50410002 slli r1,r2,#0x2 3132 00003604 00270820 add r1,r1,r7 3133 00003608 8c210060 lw r1,96(r1) 3134 0000360c 2009fff8 addi r9,r0,#-8 3135 00003610 00290824 and r1,r1,r9 3136 00003614 003ff820 add r31,r1,r31 3137 00003618 L193_LF3: 3138 00003618 67e10000 snei r1,r31,#0 3139 0000361c 10200054 beqz r1,L191_LF3 3140 00003620 54000000 nop; not filled. 3141 00003624 33e1ffff andi r1,r31,#65535 3142 00003628 01011022 sub r2,r8,r1 3143 0000362c 0043082b sgt r1,r2,r3 3144 00003630 10200008 beqz r1,L197_LF3 3145 00003634 54000000 nop; not filled. 3146 00003638 00031020 add r2,r0,r3 3147 0000363c L197_LF3: 3148 0000363c 23bdfff0 addi r29,r29,#-16 3149 00003640 afbf0000 sw (r29),r31 3150 00003644 afa50004 sw 4(r29),r5 3151 00003648 afa20008 sw 8(r29),r2 3152 0000364c 0c000b74 jal _bcopy 3153 00003650 54000000 nop; not filled. 3154 00003654 23bd0010 addi r29,r29,#16 3155 00003658 00621822 sub r3,r3,r2 3156 0000365c 00c23020 add r6,r6,r2 3157 00003660 00a22820 add r5,r5,r2 3158 00003664 00822020 add r4,r4,r2 3159 00003668 6c610000 sgti r1,r3,#0 3160 0000366c 1420ff6c bnez r1,L192_LF3 3161 00003670 54000000 nop; not filled. 3162 00003674 L191_LF3: 3163 00003674 00060820 add r1,r0,r6 3164 00003678 8fa20000 lw r2,0(r29) 3165 0000367c 8fa30004 lw r3,4(r29) 3166 00003680 8fa40008 lw r4,8(r29) 3167 00003684 8fa5000c lw r5,12(r29) 3168 00003688 8fa60010 lw r6,16(r29) 3169 0000368c 8fa70014 lw r7,20(r29) 3170 00003690 8fa80018 lw r8,24(r29) 3171 00003694 8fa9001c lw r9,28(r29) 3172 00003698 8fdffff8 lw r31,-8(r30) 3173 0000369c 001ee820 add r29,r0,r30 3174 000036a0 8fdefffc lw r30,-4(r30) 3175 000036a4 4be00000 jr r31 3176 000036a8 54000000 nop 3177 000036ac .endproc _MemoryCopyUserToSystem 3178 000036ac .align 2 3179 000036ac .proc _MemorySetupPte 3180 000036ac .global _MemorySetupPte 3181 000036ac _MemorySetupPte: 3182 ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. 3183 000036ac afbefffc sw -4(r29),r30; push fp 3184 000036b0 001df020 add r30,r0,r29; fp = sp 3185 000036b4 afbffff8 sw -8(r29),r31; push ret addr 3186 000036b8 2fbd0008 subui r29,r29,#8; alloc local storage 3187 000036bc 8fc10000 lw r1,(r30) 3188 000036c0 50210010 slli r1,r1,#0x10 3189 000036c4 34210001 ori r1,r1,#1 3190 000036c8 8fdffff8 lw r31,-8(r30) 3191 000036cc 001ee820 add r29,r0,r30 3192 000036d0 8fdefffc lw r30,-4(r30) 3193 000036d4 4be00000 jr r31 3194 000036d8 54000000 nop 3195 000036dc .endproc _MemorySetupPte 3196 000036dc .align 2 3197 000036dc .proc _MemoryFreePte 3198 000036dc .global _MemoryFreePte 3199 000036dc _MemoryFreePte: 3200 ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. 3201 000036dc afbefffc sw -4(r29),r30; push fp 3202 000036e0 001df020 add r30,r0,r29; fp = sp 3203 000036e4 afbffff8 sw -8(r29),r31; push ret addr 3204 000036e8 2fbd0008 subui r29,r29,#8; alloc local storage 3205 000036ec 23bdfff8 addi r29,r29,#-8 3206 000036f0 97c10000 lhu r1,(r30) 3207 000036f4 afa10000 sw (r29),r1 3208 000036f8 0ffffb14 jal _MemoryFreePage 3209 000036fc 54000000 nop; not filled. 3210 00003700 23bd0008 addi r29,r29,#8 3211 00003704 8fdffff8 lw r31,-8(r30) 3212 00003708 001ee820 add r29,r0,r30 3213 0000370c 8fdefffc lw r30,-4(r30) 3214 00003710 4be00000 jr r31 3215 00003714 54000000 nop 3216 00003718 .endproc _MemoryFreePte 3217 00003718 .align 2 3218 00003718 .proc _MemoryPteToPage 3219 00003718 .global _MemoryPteToPage 3220 00003718 _MemoryPteToPage: 3221 ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. 3222 00003718 afbefffc sw -4(r29),r30; push fp 3223 0000371c 001df020 add r30,r0,r29; fp = sp 3224 00003720 afbffff8 sw -8(r29),r31; push ret addr 3225 00003724 2fbd0008 subui r29,r29,#8; alloc local storage 3226 00003728 8fc10000 lw r1,(r30) 3227 0000372c 201ffff8 addi r31,r0,#-8 3228 00003730 003f0824 and r1,r1,r31 3229 00003734 8fdffff8 lw r31,-8(r30) 3230 00003738 001ee820 add r29,r0,r30 3231 0000373c 8fdefffc lw r30,-4(r30) 3232 00003740 4be00000 jr r31 3233 00003744 54000000 nop 3234 00003748 .endproc _MemoryPteToPage 3235 00003748 .data 3236 0000d3f0 .align 2 3237 0000d3f0 _invalidOps61_LF3: 3238 0000d3f0 00003404 .word 13316 3239 0000d3f4 .align 2 3240 0000d3f4 LC8_LF3: 3241 0000d3f4 4f706572 .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" 3241 0000d3f8 616e6420 3241 0000d3fc 666f7220 3241 0000d400 696e7374 3241 0000d404 72756374 3241 0000d408 696f6e20 3241 0000d40c 25303878 3241 0000d410 20697320 3241 0000d414 30782578 3241 0000d418 20287265 3241 0000d41c 673d3c25 3241 0000d420 642c3078 3241 0000d424 25783e29 3241 0000d428 0a00 3242 0000d42a .text 3243 00003748 .align 2 3244 00003748 .proc _MemoryGetOperandAddress 3245 00003748 .global _MemoryGetOperandAddress 3246 00003748 _MemoryGetOperandAddress: 3247 ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. 3248 00003748 afbefffc sw -4(r29),r30; push fp 3249 0000374c 001df020 add r30,r0,r29; fp = sp 3250 00003750 afbffff8 sw -8(r29),r31; push ret addr 3251 00003754 2fbd0020 subui r29,r29,#32; alloc local storage 3252 00003758 afa20000 sw 0(r29),r2 3253 0000375c afa30004 sw 4(r29),r3 3254 00003760 afa40008 sw 8(r29),r4 3255 00003764 afa5000c sw 12(r29),r5 3256 00003768 afa60010 sw 16(r29),r6 3257 0000376c afa70014 sw 20(r29),r7 3258 00003770 8fc20000 lw r2,(r30) 3259 00003774 8fc50004 lw r5,4(r30) 3260 00003778 58a1001a srli r1,r5,#0x1a 3261 0000377c 203fffe0 addi r31,r1,#-32 3262 00003780 6fe1000f sgtui r1,r31,#15 3263 00003784 14200020 bnez r1,L214_LF3 3264 00003788 54000000 nop; not filled. 3265 0000378c 3c010000 lhi r1,((_invalidOps61_LF3)>>16)&0xffff 3266 00003790 2421d3f0 addui r1,r1,(_invalidOps61_LF3)&0xffff 3267 00003794 8c210000 lw r1,(r1) 3268 00003798 003f0806 srl r1,r1,r31 3269 0000379c 30210001 andi r1,r1,#1 3270 000037a0 10200010 beqz r1,L213_LF3 3271 000037a4 54000000 nop; not filled. 3272 000037a8 L214_LF3: 3273 000037a8 2001ffff addi r1,r0,#-1 3274 000037ac 080000c4 j L218_LF3 3275 000037b0 54000000 nop; not filled. 3276 000037b4 L213_LF3: 3277 000037b4 58a10015 srli r1,r5,#0x15 3278 000037b8 3026001f andi r6,r1,#31 3279 000037bc 30bfffff andi r31,r5,#0xffff 3280 000037c0 5be1000f srli r1,r31,#0xf 3281 000037c4 10200010 beqz r1,L215_LF3 3282 000037c8 54000000 nop; not filled. 3283 000037cc 3c07ffff lhi r7,#-1 3284 000037d0 24e70000 addui r7,r7,#0 3285 000037d4 03e7f825 or r31,r31,r7 3286 000037d8 L215_LF3: 3287 000037d8 8c420000 lw r2,(r2) 3288 000037dc 50c10002 slli r1,r6,#0x2 3289 000037e0 00220820 add r1,r1,r2 3290 000037e4 8c230028 lw r3,40(r1) 3291 000037e8 007f2020 add r4,r3,r31 3292 000037ec 23bdfff8 addi r29,r29,#-8 3293 000037f0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 3294 000037f4 2442fd60 addui r2,r2,(_debugstr)&0xffff 3295 000037f8 afa20000 sw (r29),r2 3296 000037fc 2007006d addi r7,r0,#109 3297 00003800 afa70004 sw 4(r29),r7 3298 00003804 0c00062c jal _dindex 3299 00003808 54000000 nop; not filled. 3300 0000380c 23bd0008 addi r29,r29,#8 3301 00003810 64210000 snei r1,r1,#0 3302 00003814 1420002c bnez r1,L217_LF3 3303 00003818 54000000 nop; not filled. 3304 0000381c 23bdfff8 addi r29,r29,#-8 3305 00003820 afa20000 sw (r29),r2 3306 00003824 2007002b addi r7,r0,#43 3307 00003828 afa70004 sw 4(r29),r7 3308 0000382c 0c000604 jal _dindex 3309 00003830 54000000 nop; not filled. 3310 00003834 23bd0008 addi r29,r29,#8 3311 00003838 64210000 snei r1,r1,#0 3312 0000383c 10200030 beqz r1,L216_LF3 3313 00003840 54000000 nop; not filled. 3314 00003844 L217_LF3: 3315 00003844 23bdffe8 addi r29,r29,#-24 3316 00003848 3c070000 lhi r7,((LC8_LF3)>>16)&0xffff 3317 0000384c 24e7d3f4 addui r7,r7,(LC8_LF3)&0xffff 3318 00003850 afa70000 sw (r29),r7 3319 00003854 afa50004 sw 4(r29),r5 3320 00003858 afa40008 sw 8(r29),r4 3321 0000385c afa6000c sw 12(r29),r6 3322 00003860 afa30010 sw 16(r29),r3 3323 00003864 0c007784 jal _printf 3324 00003868 54000000 nop; not filled. 3325 0000386c 23bd0018 addi r29,r29,#24 3326 00003870 L216_LF3: 3327 00003870 00040820 add r1,r0,r4 3328 00003874 L218_LF3: 3329 00003874 8fa20000 lw r2,0(r29) 3330 00003878 8fa30004 lw r3,4(r29) 3331 0000387c 8fa40008 lw r4,8(r29) 3332 00003880 8fa5000c lw r5,12(r29) 3333 00003884 8fa60010 lw r6,16(r29) 3334 00003888 8fa70014 lw r7,20(r29) 3335 0000388c 8fdffff8 lw r31,-8(r30) 3336 00003890 001ee820 add r29,r0,r30 3337 00003894 8fdefffc lw r30,-4(r30) 3338 00003898 4be00000 jr r31 3339 0000389c 54000000 nop 3340 000038a0 .endproc _MemoryGetOperandAddress 3341 000038a0 .data 3342 0000d42a .align 2 3343 0000d42c _pagestart_LF3: 3344 0000d42c .space 4 3345 0000d430 .align 2 3346 0000d430 _freemapmax_LF3: 3347 0000d430 .space 4 3348 0000d434 .align 2 3349 0000d434 _nfreepages_LF3: 3350 0000d434 .space 4 3351 0000d438 .align 2 3352 0000d438 _freepages_LF3: 3353 0000d438 .space 8192 3354 ; Compiled by GCC 3355 0000f438 .text 3356 000038a0 .align 2 3357 000038a0 .proc _isspace 3358 000038a0 .global _isspace 3359 000038a0 _isspace: 3360 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 3361 000038a0 afbefffc sw -4(r29),r30; push fp 3362 000038a4 001df020 add r30,r0,r29; fp = sp 3363 000038a8 afbffff8 sw -8(r29),r31; push ret addr 3364 000038ac 2fbd0010 subui r29,r29,#16; alloc local storage 3365 000038b0 afa20000 sw 0(r29),r2 3366 000038b4 83c20003 lb r2,3(r30) 3367 000038b8 201f0000 addi r31,r0,#0 3368 000038bc 304100ff andi r1,r2,#0x00ff 3369 000038c0 60210020 seqi r1,r1,#32 3370 000038c4 14200018 bnez r1,L6_LF4 3371 000038c8 54000000 nop; not filled. 3372 000038cc 2041fff7 addi r1,r2,#-9 3373 000038d0 302100ff andi r1,r1,#0x00ff 3374 000038d4 70210001 sleui r1,r1,#1 3375 000038d8 10200008 beqz r1,L5_LF4 3376 000038dc 54000000 nop; not filled. 3377 000038e0 L6_LF4: 3378 000038e0 201f0001 addi r31,r0,#1 3379 000038e4 L5_LF4: 3380 000038e4 001f0820 add r1,r0,r31 3381 000038e8 8fa20000 lw r2,0(r29) 3382 000038ec 8fdffff8 lw r31,-8(r30) 3383 000038f0 001ee820 add r29,r0,r30 3384 000038f4 8fdefffc lw r30,-4(r30) 3385 000038f8 4be00000 jr r31 3386 000038fc 54000000 nop 3387 00003900 .endproc _isspace 3388 00003900 .align 2 3389 00003900 .proc _isxdigit 3390 00003900 .global _isxdigit 3391 00003900 _isxdigit: 3392 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 3393 00003900 afbefffc sw -4(r29),r30; push fp 3394 00003904 001df020 add r30,r0,r29; fp = sp 3395 00003908 afbffff8 sw -8(r29),r31; push ret addr 3396 0000390c 2fbd0010 subui r29,r29,#16; alloc local storage 3397 00003910 afa20000 sw 0(r29),r2 3398 00003914 83df0003 lb r31,3(r30) 3399 00003918 20020000 addi r2,r0,#0 3400 0000391c 23e1ffd0 addi r1,r31,#-48 3401 00003920 302100ff andi r1,r1,#0x00ff 3402 00003924 70210009 sleui r1,r1,#9 3403 00003928 14200028 bnez r1,L12_LF4 3404 0000392c 54000000 nop; not filled. 3405 00003930 23e1ff9f addi r1,r31,#-97 3406 00003934 302100ff andi r1,r1,#0x00ff 3407 00003938 70210005 sleui r1,r1,#5 3408 0000393c 14200014 bnez r1,L12_LF4 3409 00003940 54000000 nop; not filled. 3410 00003944 33e100ff andi r1,r31,#0x00ff 3411 00003948 64210041 snei r1,r1,#65 3412 0000394c 14200008 bnez r1,L11_LF4 3413 00003950 54000000 nop; not filled. 3414 00003954 L12_LF4: 3415 00003954 20020001 addi r2,r0,#1 3416 00003958 L11_LF4: 3417 00003958 00020820 add r1,r0,r2 3418 0000395c 8fa20000 lw r2,0(r29) 3419 00003960 8fdffff8 lw r31,-8(r30) 3420 00003964 001ee820 add r29,r0,r30 3421 00003968 8fdefffc lw r30,-4(r30) 3422 0000396c 4be00000 jr r31 3423 00003970 54000000 nop 3424 00003974 .endproc _isxdigit 3425 00003974 .align 2 3426 00003974 .proc _dstrcpy 3427 00003974 .global _dstrcpy 3428 00003974 _dstrcpy: 3429 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 3430 00003974 afbefffc sw -4(r29),r30; push fp 3431 00003978 001df020 add r30,r0,r29; fp = sp 3432 0000397c afbffff8 sw -8(r29),r31; push ret addr 3433 00003980 2fbd0010 subui r29,r29,#16; alloc local storage 3434 00003984 afa20000 sw 0(r29),r2 3435 00003988 afa30004 sw 4(r29),r3 3436 0000398c 8fdf0000 lw r31,(r30) 3437 00003990 8fc20004 lw r2,4(r30) 3438 00003994 001f1820 add r3,r0,r31 3439 00003998 L19_LF4: 3440 00003998 80410000 lb r1,(r2) 3441 0000399c a3e10000 sb (r31),r1 3442 000039a0 20420001 addi r2,r2,#1 3443 000039a4 23ff0001 addi r31,r31,#1 3444 000039a8 302100ff andi r1,r1,#0x00ff 3445 000039ac 64210000 snei r1,r1,#0 3446 000039b0 1420ffe4 bnez r1,L19_LF4 3447 000039b4 54000000 nop; not filled. 3448 000039b8 00030820 add r1,r0,r3 3449 000039bc 8fa20000 lw r2,0(r29) 3450 000039c0 8fa30004 lw r3,4(r29) 3451 000039c4 8fdffff8 lw r31,-8(r30) 3452 000039c8 001ee820 add r29,r0,r30 3453 000039cc 8fdefffc lw r30,-4(r30) 3454 000039d0 4be00000 jr r31 3455 000039d4 54000000 nop 3456 000039d8 .endproc _dstrcpy 3457 000039d8 .align 2 3458 000039d8 .proc _dstrncpy 3459 000039d8 .global _dstrncpy 3460 000039d8 _dstrncpy: 3461 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 3462 000039d8 afbefffc sw -4(r29),r30; push fp 3463 000039dc 001df020 add r30,r0,r29; fp = sp 3464 000039e0 afbffff8 sw -8(r29),r31; push ret addr 3465 000039e4 2fbd0018 subui r29,r29,#24; alloc local storage 3466 000039e8 afa20000 sw 0(r29),r2 3467 000039ec afa30004 sw 4(r29),r3 3468 000039f0 afa40008 sw 8(r29),r4 3469 000039f4 8fc20000 lw r2,(r30) 3470 000039f8 8fc30004 lw r3,4(r30) 3471 000039fc 8fdf0008 lw r31,8(r30) 3472 00003a00 00022020 add r4,r0,r2 3473 00003a04 08000024 j L37_LF4 3474 00003a08 54000000 nop; not filled. 3475 00003a0c L34_LF4: 3476 00003a0c 80610000 lb r1,(r3) 3477 00003a10 a0410000 sb (r2),r1 3478 00003a14 20630001 addi r3,r3,#1 3479 00003a18 20420001 addi r2,r2,#1 3480 00003a1c 302100ff andi r1,r1,#0x00ff 3481 00003a20 64210000 snei r1,r1,#0 3482 00003a24 10200018 beqz r1,L32_LF4 3483 00003a28 54000000 nop; not filled. 3484 00003a2c L37_LF4: 3485 00003a2c 001f0820 add r1,r0,r31 3486 00003a30 23ffffff addi r31,r31,#-1 3487 00003a34 70210000 slei r1,r1,#0 3488 00003a38 1020ffd0 beqz r1,L34_LF4 3489 00003a3c 54000000 nop; not filled. 3490 00003a40 L32_LF4: 3491 00003a40 00040820 add r1,r0,r4 3492 00003a44 8fa20000 lw r2,0(r29) 3493 00003a48 8fa30004 lw r3,4(r29) 3494 00003a4c 8fa40008 lw r4,8(r29) 3495 00003a50 8fdffff8 lw r31,-8(r30) 3496 00003a54 001ee820 add r29,r0,r30 3497 00003a58 8fdefffc lw r30,-4(r30) 3498 00003a5c 4be00000 jr r31 3499 00003a60 54000000 nop 3500 00003a64 .endproc _dstrncpy 3501 00003a64 .align 2 3502 00003a64 .proc _dstrcat 3503 00003a64 .global _dstrcat 3504 00003a64 _dstrcat: 3505 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 3506 00003a64 afbefffc sw -4(r29),r30; push fp 3507 00003a68 001df020 add r30,r0,r29; fp = sp 3508 00003a6c afbffff8 sw -8(r29),r31; push ret addr 3509 00003a70 2fbd0010 subui r29,r29,#16; alloc local storage 3510 00003a74 afa20000 sw 0(r29),r2 3511 00003a78 afa30004 sw 4(r29),r3 3512 00003a7c 8fdf0000 lw r31,(r30) 3513 00003a80 001f1820 add r3,r0,r31 3514 00003a84 90610000 lbu r1,(r3) 3515 00003a88 64210000 snei r1,r1,#0 3516 00003a8c 10200018 beqz r1,L50_LF4 3517 00003a90 54000000 nop; not filled. 3518 00003a94 L51_LF4: 3519 00003a94 23ff0001 addi r31,r31,#1 3520 00003a98 93e10000 lbu r1,(r31) 3521 00003a9c 64210000 snei r1,r1,#0 3522 00003aa0 1420fff0 bnez r1,L51_LF4 3523 00003aa4 54000000 nop; not filled. 3524 00003aa8 L50_LF4: 3525 00003aa8 001f1020 add r2,r0,r31 3526 00003aac 8fdf0004 lw r31,4(r30) 3527 00003ab0 L54_LF4: 3528 00003ab0 83e10000 lb r1,(r31) 3529 00003ab4 a0410000 sb (r2),r1 3530 00003ab8 23ff0001 addi r31,r31,#1 3531 00003abc 20420001 addi r2,r2,#1 3532 00003ac0 302100ff andi r1,r1,#0x00ff 3533 00003ac4 64210000 snei r1,r1,#0 3534 00003ac8 1420ffe4 bnez r1,L54_LF4 3535 00003acc 54000000 nop; not filled. 3536 00003ad0 00030820 add r1,r0,r3 3537 00003ad4 8fa20000 lw r2,0(r29) 3538 00003ad8 8fa30004 lw r3,4(r29) 3539 00003adc 8fdffff8 lw r31,-8(r30) 3540 00003ae0 001ee820 add r29,r0,r30 3541 00003ae4 8fdefffc lw r30,-4(r30) 3542 00003ae8 4be00000 jr r31 3543 00003aec 54000000 nop 3544 00003af0 .endproc _dstrcat 3545 00003af0 .align 2 3546 00003af0 .proc _dstrncmp 3547 00003af0 .global _dstrncmp 3548 00003af0 _dstrncmp: 3549 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 3550 00003af0 afbefffc sw -4(r29),r30; push fp 3551 00003af4 001df020 add r30,r0,r29; fp = sp 3552 00003af8 afbffff8 sw -8(r29),r31; push ret addr 3553 00003afc 2fbd0018 subui r29,r29,#24; alloc local storage 3554 00003b00 afa20000 sw 0(r29),r2 3555 00003b04 afa30004 sw 4(r29),r3 3556 00003b08 afa40008 sw 8(r29),r4 3557 00003b0c afa5000c sw 12(r29),r5 3558 00003b10 8fc30000 lw r3,(r30) 3559 00003b14 8fc40004 lw r4,4(r30) 3560 00003b18 8fc50008 lw r5,8(r30) 3561 00003b1c 20020000 addi r2,r0,#0 3562 00003b20 0045082a slt r1,r2,r5 3563 00003b24 1020003c beqz r1,L73_LF4 3564 00003b28 54000000 nop; not filled. 3565 00003b2c L75_LF4: 3566 00003b2c 909f0000 lbu r31,(r4) 3567 00003b30 67e10000 snei r1,r31,#0 3568 00003b34 10200038 beqz r1,L86_LF4 3569 00003b38 54000000 nop; not filled. 3570 00003b3c 90610000 lbu r1,(r3) 3571 00003b40 003f0829 sne r1,r1,r31 3572 00003b44 1420001c bnez r1,L73_LF4 3573 00003b48 54000000 nop; not filled. 3574 00003b4c 20630001 addi r3,r3,#1 3575 00003b50 20840001 addi r4,r4,#1 3576 00003b54 20420001 addi r2,r2,#1 3577 00003b58 0045082a slt r1,r2,r5 3578 00003b5c 1420ffcc bnez r1,L75_LF4 3579 00003b60 54000000 nop; not filled. 3580 00003b64 L73_LF4: 3581 00003b64 00450828 seq r1,r2,r5 3582 00003b68 10200010 beqz r1,L80_LF4 3583 00003b6c 54000000 nop; not filled. 3584 00003b70 L86_LF4: 3585 00003b70 20010000 addi r1,r0,#0 3586 00003b74 08000028 j L84_LF4 3587 00003b78 54000000 nop; not filled. 3588 00003b7c L80_LF4: 3589 00003b7c 907f0000 lbu r31,(r3) 3590 00003b80 90830000 lbu r3,(r4) 3591 00003b84 03e30822 sub r1,r31,r3 3592 00003b88 74210000 sgei r1,r1,#0 3593 00003b8c 2002ffff addi r2,r0,#-1 3594 00003b90 10200008 beqz r1,L82_LF4 3595 00003b94 54000000 nop; not filled. 3596 00003b98 03e31029 sne r2,r31,r3 3597 00003b9c L82_LF4: 3598 00003b9c 00020820 add r1,r0,r2 3599 00003ba0 L84_LF4: 3600 00003ba0 8fa20000 lw r2,0(r29) 3601 00003ba4 8fa30004 lw r3,4(r29) 3602 00003ba8 8fa40008 lw r4,8(r29) 3603 00003bac 8fa5000c lw r5,12(r29) 3604 00003bb0 8fdffff8 lw r31,-8(r30) 3605 00003bb4 001ee820 add r29,r0,r30 3606 00003bb8 8fdefffc lw r30,-4(r30) 3607 00003bbc 4be00000 jr r31 3608 00003bc0 54000000 nop 3609 00003bc4 .endproc _dstrncmp 3610 00003bc4 .align 2 3611 00003bc4 .proc _dstrlen 3612 00003bc4 .global _dstrlen 3613 00003bc4 _dstrlen: 3614 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 3615 00003bc4 afbefffc sw -4(r29),r30; push fp 3616 00003bc8 001df020 add r30,r0,r29; fp = sp 3617 00003bcc afbffff8 sw -8(r29),r31; push ret addr 3618 00003bd0 2fbd0010 subui r29,r29,#16; alloc local storage 3619 00003bd4 afa20000 sw 0(r29),r2 3620 00003bd8 8fdf0000 lw r31,(r30) 3621 00003bdc 20020000 addi r2,r0,#0 3622 00003be0 08000008 j L97_LF4 3623 00003be4 54000000 nop; not filled. 3624 00003be8 L95_LF4: 3625 00003be8 20420001 addi r2,r2,#1 3626 00003bec L97_LF4: 3627 00003bec 93e10000 lbu r1,(r31) 3628 00003bf0 23ff0001 addi r31,r31,#1 3629 00003bf4 64210000 snei r1,r1,#0 3630 00003bf8 1420ffec bnez r1,L95_LF4 3631 00003bfc 54000000 nop; not filled. 3632 00003c00 00020820 add r1,r0,r2 3633 00003c04 8fa20000 lw r2,0(r29) 3634 00003c08 8fdffff8 lw r31,-8(r30) 3635 00003c0c 001ee820 add r29,r0,r30 3636 00003c10 8fdefffc lw r30,-4(r30) 3637 00003c14 4be00000 jr r31 3638 00003c18 54000000 nop 3639 00003c1c .endproc _dstrlen 3640 00003c1c .align 2 3641 00003c1c .proc _dstrstr 3642 00003c1c .global _dstrstr 3643 00003c1c _dstrstr: 3644 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 3645 00003c1c afbefffc sw -4(r29),r30; push fp 3646 00003c20 001df020 add r30,r0,r29; fp = sp 3647 00003c24 afbffff8 sw -8(r29),r31; push ret addr 3648 00003c28 2fbd0020 subui r29,r29,#32; alloc local storage 3649 00003c2c afa20000 sw 0(r29),r2 3650 00003c30 afa30004 sw 4(r29),r3 3651 00003c34 afa40008 sw 8(r29),r4 3652 00003c38 afa5000c sw 12(r29),r5 3653 00003c3c afa60010 sw 16(r29),r6 3654 00003c40 afa70014 sw 20(r29),r7 3655 00003c44 8fc50000 lw r5,(r30) 3656 00003c48 8fc70004 lw r7,4(r30) 3657 00003c4c 20030000 addi r3,r0,#0 3658 00003c50 90e10000 lbu r1,(r7) 3659 00003c54 20e20001 addi r2,r7,#1 3660 00003c58 64210000 snei r1,r1,#0 3661 00003c5c 1020001c beqz r1,L125_LF4 3662 00003c60 54000000 nop; not filled. 3663 00003c64 L126_LF4: 3664 00003c64 20630001 addi r3,r3,#1 3665 00003c68 90410000 lbu r1,(r2) 3666 00003c6c 20420001 addi r2,r2,#1 3667 00003c70 64210000 snei r1,r1,#0 3668 00003c74 1420ffec bnez r1,L126_LF4 3669 00003c78 54000000 nop; not filled. 3670 00003c7c L125_LF4: 3671 00003c7c 00033020 add r6,r0,r3 3672 00003c80 080000ac j L149_LF4 3673 00003c84 54000000 nop; not filled. 3674 00003c88 L130_LF4: 3675 00003c88 00051820 add r3,r0,r5 3676 00003c8c 00072020 add r4,r0,r7 3677 00003c90 20020000 addi r2,r0,#0 3678 00003c94 0046082a slt r1,r2,r6 3679 00003c98 1020003c beqz r1,L134_LF4 3680 00003c9c 54000000 nop; not filled. 3681 00003ca0 L136_LF4: 3682 00003ca0 909f0000 lbu r31,(r4) 3683 00003ca4 67e10000 snei r1,r31,#0 3684 00003ca8 10200038 beqz r1,L150_LF4 3685 00003cac 54000000 nop; not filled. 3686 00003cb0 90610000 lbu r1,(r3) 3687 00003cb4 003f0829 sne r1,r1,r31 3688 00003cb8 1420001c bnez r1,L134_LF4 3689 00003cbc 54000000 nop; not filled. 3690 00003cc0 20630001 addi r3,r3,#1 3691 00003cc4 20840001 addi r4,r4,#1 3692 00003cc8 20420001 addi r2,r2,#1 3693 00003ccc 0046082a slt r1,r2,r6 3694 00003cd0 1420ffcc bnez r1,L136_LF4 3695 00003cd4 54000000 nop; not filled. 3696 00003cd8 L134_LF4: 3697 00003cd8 00460828 seq r1,r2,r6 3698 00003cdc 10200010 beqz r1,L141_LF4 3699 00003ce0 54000000 nop; not filled. 3700 00003ce4 L150_LF4: 3701 00003ce4 20010000 addi r1,r0,#0 3702 00003ce8 08000028 j L132_LF4 3703 00003cec 54000000 nop; not filled. 3704 00003cf0 L141_LF4: 3705 00003cf0 90630000 lbu r3,(r3) 3706 00003cf4 90820000 lbu r2,(r4) 3707 00003cf8 00620822 sub r1,r3,r2 3708 00003cfc 74210000 sgei r1,r1,#0 3709 00003d00 201fffff addi r31,r0,#-1 3710 00003d04 10200008 beqz r1,L143_LF4 3711 00003d08 54000000 nop; not filled. 3712 00003d0c 0062f829 sne r31,r3,r2 3713 00003d10 L143_LF4: 3714 00003d10 001f0820 add r1,r0,r31 3715 00003d14 L132_LF4: 3716 00003d14 64210000 snei r1,r1,#0 3717 00003d18 14200010 bnez r1,L131_LF4 3718 00003d1c 54000000 nop; not filled. 3719 00003d20 00050820 add r1,r0,r5 3720 00003d24 0800001c j L146_LF4 3721 00003d28 54000000 nop; not filled. 3722 00003d2c L131_LF4: 3723 00003d2c 20a50001 addi r5,r5,#1 3724 00003d30 L149_LF4: 3725 00003d30 90a10000 lbu r1,(r5) 3726 00003d34 64210000 snei r1,r1,#0 3727 00003d38 1420ff4c bnez r1,L130_LF4 3728 00003d3c 54000000 nop; not filled. 3729 00003d40 20010000 addi r1,r0,#0 3730 00003d44 L146_LF4: 3731 00003d44 8fa20000 lw r2,0(r29) 3732 00003d48 8fa30004 lw r3,4(r29) 3733 00003d4c 8fa40008 lw r4,8(r29) 3734 00003d50 8fa5000c lw r5,12(r29) 3735 00003d54 8fa60010 lw r6,16(r29) 3736 00003d58 8fa70014 lw r7,20(r29) 3737 00003d5c 8fdffff8 lw r31,-8(r30) 3738 00003d60 001ee820 add r29,r0,r30 3739 00003d64 8fdefffc lw r30,-4(r30) 3740 00003d68 4be00000 jr r31 3741 00003d6c 54000000 nop 3742 00003d70 .endproc _dstrstr 3743 00003d70 .align 2 3744 00003d70 .proc _dmindex 3745 00003d70 .global _dmindex 3746 00003d70 _dmindex: 3747 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 3748 00003d70 afbefffc sw -4(r29),r30; push fp 3749 00003d74 001df020 add r30,r0,r29; fp = sp 3750 00003d78 afbffff8 sw -8(r29),r31; push ret addr 3751 00003d7c 2fbd0020 subui r29,r29,#32; alloc local storage 3752 00003d80 afa20000 sw 0(r29),r2 3753 00003d84 afa30004 sw 4(r29),r3 3754 00003d88 afa40008 sw 8(r29),r4 3755 00003d8c afa5000c sw 12(r29),r5 3756 00003d90 afa60010 sw 16(r29),r6 3757 00003d94 8fc40000 lw r4,(r30) 3758 00003d98 8fc60004 lw r6,4(r30) 3759 00003d9c 90810000 lbu r1,(r4) 3760 00003da0 64210000 snei r1,r1,#0 3761 00003da4 10200060 beqz r1,L164_LF4 3762 00003da8 54000000 nop; not filled. 3763 00003dac 00012820 add r5,r0,r1 3764 00003db0 L165_LF4: 3765 00003db0 00061020 add r2,r0,r6 3766 00003db4 80df0000 lb r31,(r6) 3767 00003db8 33e100ff andi r1,r31,#0x00ff 3768 00003dbc 64210000 snei r1,r1,#0 3769 00003dc0 1020003c beqz r1,L163_LF4 3770 00003dc4 54000000 nop; not filled. 3771 00003dc8 90830000 lbu r3,(r4) 3772 00003dcc L169_LF4: 3773 00003dcc 33e100ff andi r1,r31,#0x00ff 3774 00003dd0 00610828 seq r1,r3,r1 3775 00003dd4 10200010 beqz r1,L168_LF4 3776 00003dd8 54000000 nop; not filled. 3777 00003ddc 00040820 add r1,r0,r4 3778 00003de0 08000028 j L173_LF4 3779 00003de4 54000000 nop; not filled. 3780 00003de8 L168_LF4: 3781 00003de8 20420001 addi r2,r2,#1 3782 00003dec 805f0000 lb r31,(r2) 3783 00003df0 33e100ff andi r1,r31,#0x00ff 3784 00003df4 64210000 snei r1,r1,#0 3785 00003df8 1420ffd0 bnez r1,L169_LF4 3786 00003dfc 54000000 nop; not filled. 3787 00003e00 L163_LF4: 3788 00003e00 14a0ffac bnez r5,L165_LF4 3789 00003e04 54000000 nop; not filled. 3790 00003e08 L164_LF4: 3791 00003e08 20010000 addi r1,r0,#0 3792 00003e0c L173_LF4: 3793 00003e0c 8fa20000 lw r2,0(r29) 3794 00003e10 8fa30004 lw r3,4(r29) 3795 00003e14 8fa40008 lw r4,8(r29) 3796 00003e18 8fa5000c lw r5,12(r29) 3797 00003e1c 8fa60010 lw r6,16(r29) 3798 00003e20 8fdffff8 lw r31,-8(r30) 3799 00003e24 001ee820 add r29,r0,r30 3800 00003e28 8fdefffc lw r30,-4(r30) 3801 00003e2c 4be00000 jr r31 3802 00003e30 54000000 nop 3803 00003e34 .endproc _dmindex 3804 00003e34 .align 2 3805 00003e34 .proc _dindex 3806 00003e34 .global _dindex 3807 00003e34 _dindex: 3808 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 3809 00003e34 afbefffc sw -4(r29),r30; push fp 3810 00003e38 001df020 add r30,r0,r29; fp = sp 3811 00003e3c afbffff8 sw -8(r29),r31; push ret addr 3812 00003e40 2fbd0010 subui r29,r29,#16; alloc local storage 3813 00003e44 afa20000 sw 0(r29),r2 3814 00003e48 afa30004 sw 4(r29),r3 3815 00003e4c 8fc20000 lw r2,(r30) 3816 00003e50 8fc30004 lw r3,4(r30) 3817 00003e54 08000024 j L187_LF4 3818 00003e58 54000000 nop; not filled. 3819 00003e5c L183_LF4: 3820 00003e5c 33e100ff andi r1,r31,#0x00ff 3821 00003e60 00230828 seq r1,r1,r3 3822 00003e64 10200010 beqz r1,L184_LF4 3823 00003e68 54000000 nop; not filled. 3824 00003e6c 00020820 add r1,r0,r2 3825 00003e70 08000020 j L186_LF4 3826 00003e74 54000000 nop; not filled. 3827 00003e78 L184_LF4: 3828 00003e78 20420001 addi r2,r2,#1 3829 00003e7c L187_LF4: 3830 00003e7c 805f0000 lb r31,(r2) 3831 00003e80 33e100ff andi r1,r31,#0x00ff 3832 00003e84 64210000 snei r1,r1,#0 3833 00003e88 1420ffd0 bnez r1,L183_LF4 3834 00003e8c 54000000 nop; not filled. 3835 00003e90 20010000 addi r1,r0,#0 3836 00003e94 L186_LF4: 3837 00003e94 8fa20000 lw r2,0(r29) 3838 00003e98 8fa30004 lw r3,4(r29) 3839 00003e9c 8fdffff8 lw r31,-8(r30) 3840 00003ea0 001ee820 add r29,r0,r30 3841 00003ea4 8fdefffc lw r30,-4(r30) 3842 00003ea8 4be00000 jr r31 3843 00003eac 54000000 nop 3844 00003eb0 .endproc _dindex 3845 00003eb0 .align 2 3846 00003eb0 .proc _ditoa 3847 00003eb0 .global _ditoa 3848 00003eb0 _ditoa: 3849 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 3850 00003eb0 afbefffc sw -4(r29),r30; push fp 3851 00003eb4 001df020 add r30,r0,r29; fp = sp 3852 00003eb8 afbffff8 sw -8(r29),r31; push ret addr 3853 00003ebc 2fbd0020 subui r29,r29,#32; alloc local storage 3854 00003ec0 afa20000 sw 0(r29),r2 3855 00003ec4 afa30004 sw 4(r29),r3 3856 00003ec8 afa40008 sw 8(r29),r4 3857 00003ecc afa5000c sw 12(r29),r5 3858 00003ed0 afa60010 sw 16(r29),r6 3859 00003ed4 8fc30000 lw r3,(r30) 3860 00003ed8 8fc40004 lw r4,4(r30) 3861 00003edc 68610000 slti r1,r3,#0 3862 00003ee0 10200010 beqz r1,L203_LF4 3863 00003ee4 54000000 nop; not filled. 3864 00003ee8 2006002d addi r6,r0,(#0x2d)&0xff 3865 00003eec 08000014 j L216_LF4 3866 00003ef0 54000000 nop; not filled. 3867 00003ef4 L203_LF4: 3868 00003ef4 64610000 snei r1,r3,#0 3869 00003ef8 14200018 bnez r1,L205_LF4 3870 00003efc 54000000 nop; not filled. 3871 00003f00 20060030 addi r6,r0,(#0x30)&0xff 3872 00003f04 L216_LF4: 3873 00003f04 a0860000 sb (r4),r6 3874 00003f08 20840001 addi r4,r4,#1 3875 00003f0c 0800007c j L204_LF4 3876 00003f10 54000000 nop; not filled. 3877 00003f14 L205_LF4: 3878 00003f14 201f0001 addi r31,r0,#1 3879 00003f18 03e3082c sle r1,r31,r3 3880 00003f1c 1020001c beqz r1,L208_LF4 3881 00003f20 54000000 nop; not filled. 3882 00003f24 L209_LF4: 3883 00003f24 53e10002 slli r1,r31,#0x2 3884 00003f28 003f0820 add r1,r1,r31 3885 00003f2c 503f0001 slli r31,r1,#0x1 3886 00003f30 03e3082c sle r1,r31,r3 3887 00003f34 1420ffec bnez r1,L209_LF4 3888 00003f38 54000000 nop; not filled. 3889 00003f3c L208_LF4: 3890 00003f3c 2005000a addi r5,r0,#10 3891 00003f40 L212_LF4: 3892 00003f40 03e00035 movi2fp f0,r31 3893 00003f44 00a00835 movi2fp f1,r5 3894 00003f48 0401000f div f0,f0,f1 3895 00003f4c 0000f834 movfp2i r31,f0 3896 00003f50 00600035 movi2fp f0,r3 3897 00003f54 03e00835 movi2fp f1,r31 3898 00003f58 0401000f div f0,f0,f1 3899 00003f5c 00001034 movfp2i r2,f0 3900 00003f60 20410030 addi r1,r2,#48 3901 00003f64 a0810000 sb (r4),r1 3902 00003f68 20840001 addi r4,r4,#1 3903 00003f6c 00400035 movi2fp f0,r2 3904 00003f70 03e00835 movi2fp f1,r31 3905 00003f74 0401000e mult f0,f0,f1 3906 00003f78 00000834 movfp2i r1,f0 3907 00003f7c 00611822 sub r3,r3,r1 3908 00003f80 6fe10001 sgti r1,r31,#1 3909 00003f84 1420ffb8 bnez r1,L212_LF4 3910 00003f88 54000000 nop; not filled. 3911 00003f8c L204_LF4: 3912 00003f8c 20060000 addi r6,r0,(#0x0)&0xff 3913 00003f90 a0860000 sb (r4),r6 3914 00003f94 8fa20000 lw r2,0(r29) 3915 00003f98 8fa30004 lw r3,4(r29) 3916 00003f9c 8fa40008 lw r4,8(r29) 3917 00003fa0 8fa5000c lw r5,12(r29) 3918 00003fa4 8fa60010 lw r6,16(r29) 3919 00003fa8 8fdffff8 lw r31,-8(r30) 3920 00003fac 001ee820 add r29,r0,r30 3921 00003fb0 8fdefffc lw r30,-4(r30) 3922 00003fb4 4be00000 jr r31 3923 00003fb8 54000000 nop 3924 00003fbc .endproc _ditoa 3925 00003fbc .align 2 3926 00003fbc .proc _dstrtol 3927 00003fbc .global _dstrtol 3928 00003fbc _dstrtol: 3929 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 3930 00003fbc afbefffc sw -4(r29),r30; push fp 3931 00003fc0 001df020 add r30,r0,r29; fp = sp 3932 00003fc4 afbffff8 sw -8(r29),r31; push ret addr 3933 00003fc8 2fbd0020 subui r29,r29,#32; alloc local storage 3934 00003fcc afa20000 sw 0(r29),r2 3935 00003fd0 afa30004 sw 4(r29),r3 3936 00003fd4 afa40008 sw 8(r29),r4 3937 00003fd8 afa5000c sw 12(r29),r5 3938 00003fdc afa60010 sw 16(r29),r6 3939 00003fe0 8fc20000 lw r2,(r30) 3940 00003fe4 8fc50004 lw r5,4(r30) 3941 00003fe8 8fc40008 lw r4,8(r30) 3942 00003fec 20030000 addi r3,r0,#0 3943 00003ff0 08000008 j L247_LF4 3944 00003ff4 54000000 nop; not filled. 3945 00003ff8 L220_LF4: 3946 00003ff8 20420001 addi r2,r2,#1 3947 00003ffc L247_LF4: 3948 00003ffc 805f0000 lb r31,(r2) 3949 00004000 33e100ff andi r1,r31,#0x00ff 3950 00004004 60210020 seqi r1,r1,#32 3951 00004008 1420ffec bnez r1,L220_LF4 3952 0000400c 54000000 nop; not filled. 3953 00004010 23e1fff7 addi r1,r31,#-9 3954 00004014 302100ff andi r1,r1,#0x00ff 3955 00004018 70210001 sleui r1,r1,#1 3956 0000401c 1420ffd8 bnez r1,L220_LF4 3957 00004020 54000000 nop; not filled. 3958 00004024 64a10000 snei r1,r5,#0 3959 00004028 10200008 beqz r1,L222_LF4 3960 0000402c 54000000 nop; not filled. 3961 00004030 aca20000 sw (r5),r2 3962 00004034 L222_LF4: 3963 00004034 905f0000 lbu r31,(r2) 3964 00004038 67e10000 snei r1,r31,#0 3965 0000403c 10200090 beqz r1,L248_LF4 3966 00004040 54000000 nop; not filled. 3967 00004044 63e1002d seqi r1,r31,#45 3968 00004048 10200014 beqz r1,L224_LF4 3969 0000404c 54000000 nop; not filled. 3970 00004050 2006ffff addi r6,r0,#-1 3971 00004054 20420001 addi r2,r2,#1 3972 00004058 08000008 j L225_LF4 3973 0000405c 54000000 nop; not filled. 3974 00004060 L224_LF4: 3975 00004060 20060001 addi r6,r0,#1 3976 00004064 L225_LF4: 3977 00004064 64810000 snei r1,r4,#0 3978 00004068 14200054 bnez r1,L226_LF4 3979 0000406c 54000000 nop; not filled. 3980 00004070 90410000 lbu r1,(r2) 3981 00004074 60210030 seqi r1,r1,#48 3982 00004078 10200040 beqz r1,L227_LF4 3983 0000407c 54000000 nop; not filled. 3984 00004080 20420001 addi r2,r2,#1 3985 00004084 905f0000 lbu r31,(r2) 3986 00004088 63e10078 seqi r1,r31,#120 3987 0000408c 14200010 bnez r1,L229_LF4 3988 00004090 54000000 nop; not filled. 3989 00004094 63e10058 seqi r1,r31,#88 3990 00004098 10200014 beqz r1,L228_LF4 3991 0000409c 54000000 nop; not filled. 3992 000040a0 L229_LF4: 3993 000040a0 20040010 addi r4,r0,#16 3994 000040a4 20420001 addi r2,r2,#1 3995 000040a8 08000014 j L226_LF4 3996 000040ac 54000000 nop; not filled. 3997 000040b0 L228_LF4: 3998 000040b0 20040008 addi r4,r0,#8 3999 000040b4 08000008 j L226_LF4 4000 000040b8 54000000 nop; not filled. 4001 000040bc L227_LF4: 4002 000040bc 2004000a addi r4,r0,#10 4003 000040c0 L226_LF4: 4004 000040c0 2081ffff addi r1,r4,#-1 4005 000040c4 6c21000f sgtui r1,r1,#15 4006 000040c8 10200010 beqz r1,L233_LF4 4007 000040cc 54000000 nop; not filled. 4008 000040d0 L248_LF4: 4009 000040d0 00030820 add r1,r0,r3 4010 000040d4 080000c4 j L245_LF4 4011 000040d8 54000000 nop; not filled. 4012 000040dc L233_LF4: 4013 000040dc 805f0000 lb r31,(r2) 4014 000040e0 23e1ffd0 addi r1,r31,#-48 4015 000040e4 302100ff andi r1,r1,#0x00ff 4016 000040e8 70210009 sleui r1,r1,#9 4017 000040ec 10200014 beqz r1,L236_LF4 4018 000040f0 54000000 nop; not filled. 4019 000040f4 33e100ff andi r1,r31,#0x00ff 4020 000040f8 2021ffd0 addi r1,r1,#-48 4021 000040fc 08000050 j L237_LF4 4022 00004100 54000000 nop; not filled. 4023 00004104 L236_LF4: 4024 00004104 23e1ff9f addi r1,r31,#-97 4025 00004108 302100ff andi r1,r1,#0x00ff 4026 0000410c 70210019 sleui r1,r1,#25 4027 00004110 10200014 beqz r1,L238_LF4 4028 00004114 54000000 nop; not filled. 4029 00004118 33e100ff andi r1,r31,#0x00ff 4030 0000411c 2021ffa9 addi r1,r1,#-87 4031 00004120 0800002c j L237_LF4 4032 00004124 54000000 nop; not filled. 4033 00004128 L238_LF4: 4034 00004128 23e1ffbf addi r1,r31,#-65 4035 0000412c 302100ff andi r1,r1,#0x00ff 4036 00004130 70210019 sleui r1,r1,#25 4037 00004134 10200014 beqz r1,L240_LF4 4038 00004138 54000000 nop; not filled. 4039 0000413c 33e100ff andi r1,r31,#0x00ff 4040 00004140 2021ffc9 addi r1,r1,#-55 4041 00004144 08000008 j L237_LF4 4042 00004148 54000000 nop; not filled. 4043 0000414c L240_LF4: 4044 0000414c 200103e8 addi r1,r0,#1000 4045 00004150 L237_LF4: 4046 00004150 0024f82a slt r31,r1,r4 4047 00004154 13e00024 beqz r31,L246_LF4 4048 00004158 54000000 nop; not filled. 4049 0000415c 00600035 movi2fp f0,r3 4050 00004160 00800835 movi2fp f1,r4 4051 00004164 0401000e mult f0,f0,f1 4052 00004168 00001834 movfp2i r3,f0 4053 0000416c 00611820 add r3,r3,r1 4054 00004170 20420001 addi r2,r2,#1 4055 00004174 17e0ff64 bnez r31,L233_LF4 4056 00004178 54000000 nop; not filled. 4057 0000417c L246_LF4: 4058 0000417c 64a10000 snei r1,r5,#0 4059 00004180 10200008 beqz r1,L244_LF4 4060 00004184 54000000 nop; not filled. 4061 00004188 aca20000 sw (r5),r2 4062 0000418c L244_LF4: 4063 0000418c 00600035 movi2fp f0,r3 4064 00004190 00c00835 movi2fp f1,r6 4065 00004194 0401000e mult f0,f0,f1 4066 00004198 00000834 movfp2i r1,f0 4067 0000419c L245_LF4: 4068 0000419c 8fa20000 lw r2,0(r29) 4069 000041a0 8fa30004 lw r3,4(r29) 4070 000041a4 8fa40008 lw r4,8(r29) 4071 000041a8 8fa5000c lw r5,12(r29) 4072 000041ac 8fa60010 lw r6,16(r29) 4073 000041b0 8fdffff8 lw r31,-8(r30) 4074 000041b4 001ee820 add r29,r0,r30 4075 000041b8 8fdefffc lw r30,-4(r30) 4076 000041bc 4be00000 jr r31 4077 000041c0 54000000 nop 4078 000041c4 .endproc _dstrtol 4079 000041c4 .align 2 4080 000041c4 .proc _bcopy 4081 000041c4 .global _bcopy 4082 000041c4 _bcopy: 4083 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 4084 000041c4 afbefffc sw -4(r29),r30; push fp 4085 000041c8 001df020 add r30,r0,r29; fp = sp 4086 000041cc afbffff8 sw -8(r29),r31; push ret addr 4087 000041d0 2fbd0018 subui r29,r29,#24; alloc local storage 4088 000041d4 afa20000 sw 0(r29),r2 4089 000041d8 afa30004 sw 4(r29),r3 4090 000041dc afa40008 sw 8(r29),r4 4091 000041e0 8fc30000 lw r3,(r30) 4092 000041e4 8fc20004 lw r2,4(r30) 4093 000041e8 8fdf0008 lw r31,8(r30) 4094 000041ec 08000014 j L259_LF4 4095 000041f0 54000000 nop; not filled. 4096 000041f4 L257_LF4: 4097 000041f4 80640000 lb r4,(r3) 4098 000041f8 a0440000 sb (r2),r4 4099 000041fc 20630001 addi r3,r3,#1 4100 00004200 20420001 addi r2,r2,#1 4101 00004204 L259_LF4: 4102 00004204 001f0820 add r1,r0,r31 4103 00004208 23ffffff addi r31,r31,#-1 4104 0000420c 6c210000 sgti r1,r1,#0 4105 00004210 1420ffe0 bnez r1,L257_LF4 4106 00004214 54000000 nop; not filled. 4107 00004218 8fa20000 lw r2,0(r29) 4108 0000421c 8fa30004 lw r3,4(r29) 4109 00004220 8fa40008 lw r4,8(r29) 4110 00004224 8fdffff8 lw r31,-8(r30) 4111 00004228 001ee820 add r29,r0,r30 4112 0000422c 8fdefffc lw r30,-4(r30) 4113 00004230 4be00000 jr r31 4114 00004234 54000000 nop 4115 00004238 .endproc _bcopy 4116 00004238 .align 2 4117 00004238 .proc _bzero 4118 00004238 .global _bzero 4119 00004238 _bzero: 4120 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 4121 00004238 afbefffc sw -4(r29),r30; push fp 4122 0000423c 001df020 add r30,r0,r29; fp = sp 4123 00004240 afbffff8 sw -8(r29),r31; push ret addr 4124 00004244 2fbd0010 subui r29,r29,#16; alloc local storage 4125 00004248 afa20000 sw 0(r29),r2 4126 0000424c afa30004 sw 4(r29),r3 4127 00004250 8fc20000 lw r2,(r30) 4128 00004254 8fdf0004 lw r31,4(r30) 4129 00004258 08000010 j L270_LF4 4130 0000425c 54000000 nop; not filled. 4131 00004260 L268_LF4: 4132 00004260 20030000 addi r3,r0,(#0x0)&0xff 4133 00004264 a0430000 sb (r2),r3 4134 00004268 20420001 addi r2,r2,#1 4135 0000426c L270_LF4: 4136 0000426c 001f0820 add r1,r0,r31 4137 00004270 23ffffff addi r31,r31,#-1 4138 00004274 6c210000 sgti r1,r1,#0 4139 00004278 1420ffe4 bnez r1,L268_LF4 4140 0000427c 54000000 nop; not filled. 4141 00004280 8fa20000 lw r2,0(r29) 4142 00004284 8fa30004 lw r3,4(r29) 4143 00004288 8fdffff8 lw r31,-8(r30) 4144 0000428c 001ee820 add r29,r0,r30 4145 00004290 8fdefffc lw r30,-4(r30) 4146 00004294 4be00000 jr r31 4147 00004298 54000000 nop 4148 0000429c .endproc _bzero 4149 ; Compiled by GCC 4151 0000429c .align 2 4152 0000429c .proc _isspace 4153 0000429c .global _isspace 4154 0000429c _isspace: 4155 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 4156 0000429c afbefffc sw -4(r29),r30; push fp 4157 000042a0 001df020 add r30,r0,r29; fp = sp 4158 000042a4 afbffff8 sw -8(r29),r31; push ret addr 4159 000042a8 2fbd0010 subui r29,r29,#16; alloc local storage 4160 000042ac afa20000 sw 0(r29),r2 4161 000042b0 83c20003 lb r2,3(r30) 4162 000042b4 201f0000 addi r31,r0,#0 4163 000042b8 304100ff andi r1,r2,#0x00ff 4164 000042bc 60210020 seqi r1,r1,#32 4165 000042c0 14200018 bnez r1,L6_LF5 4166 000042c4 54000000 nop; not filled. 4167 000042c8 2041fff7 addi r1,r2,#-9 4168 000042cc 302100ff andi r1,r1,#0x00ff 4169 000042d0 70210001 sleui r1,r1,#1 4170 000042d4 10200008 beqz r1,L5_LF5 4171 000042d8 54000000 nop; not filled. 4172 000042dc L6_LF5: 4173 000042dc 201f0001 addi r31,r0,#1 4174 000042e0 L5_LF5: 4175 000042e0 001f0820 add r1,r0,r31 4176 000042e4 8fa20000 lw r2,0(r29) 4177 000042e8 8fdffff8 lw r31,-8(r30) 4178 000042ec 001ee820 add r29,r0,r30 4179 000042f0 8fdefffc lw r30,-4(r30) 4180 000042f4 4be00000 jr r31 4181 000042f8 54000000 nop 4182 000042fc .endproc _isspace 4183 000042fc .align 2 4184 000042fc .proc _isxdigit 4185 000042fc .global _isxdigit 4186 000042fc _isxdigit: 4187 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 4188 000042fc afbefffc sw -4(r29),r30; push fp 4189 00004300 001df020 add r30,r0,r29; fp = sp 4190 00004304 afbffff8 sw -8(r29),r31; push ret addr 4191 00004308 2fbd0010 subui r29,r29,#16; alloc local storage 4192 0000430c afa20000 sw 0(r29),r2 4193 00004310 83df0003 lb r31,3(r30) 4194 00004314 20020000 addi r2,r0,#0 4195 00004318 23e1ffd0 addi r1,r31,#-48 4196 0000431c 302100ff andi r1,r1,#0x00ff 4197 00004320 70210009 sleui r1,r1,#9 4198 00004324 14200028 bnez r1,L12_LF5 4199 00004328 54000000 nop; not filled. 4200 0000432c 23e1ff9f addi r1,r31,#-97 4201 00004330 302100ff andi r1,r1,#0x00ff 4202 00004334 70210005 sleui r1,r1,#5 4203 00004338 14200014 bnez r1,L12_LF5 4204 0000433c 54000000 nop; not filled. 4205 00004340 33e100ff andi r1,r31,#0x00ff 4206 00004344 64210041 snei r1,r1,#65 4207 00004348 14200008 bnez r1,L11_LF5 4208 0000434c 54000000 nop; not filled. 4209 00004350 L12_LF5: 4210 00004350 20020001 addi r2,r0,#1 4211 00004354 L11_LF5: 4212 00004354 00020820 add r1,r0,r2 4213 00004358 8fa20000 lw r2,0(r29) 4214 0000435c 8fdffff8 lw r31,-8(r30) 4215 00004360 001ee820 add r29,r0,r30 4216 00004364 8fdefffc lw r30,-4(r30) 4217 00004368 4be00000 jr r31 4218 0000436c 54000000 nop 4219 00004370 .endproc _isxdigit 4220 00004370 .align 2 4221 00004370 .proc _DisableIntrs 4222 00004370 .global _DisableIntrs 4223 00004370 _DisableIntrs: 4224 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 4225 00004370 afbefffc sw -4(r29),r30; push fp 4226 00004374 001df020 add r30,r0,r29; fp = sp 4227 00004378 afbffff8 sw -8(r29),r31; push ret addr 4228 0000437c 2fbd0010 subui r29,r29,#16; alloc local storage 4229 00004380 afa20000 sw 0(r29),r2 4230 00004384 23bdfff8 addi r29,r29,#-8 4231 00004388 2002000f addi r2,r0,#15 4232 0000438c afa20000 sw (r29),r2 4233 00004390 0fffcef4 jal _SetIntrs 4234 00004394 54000000 nop; not filled. 4235 00004398 23bd0008 addi r29,r29,#8 4236 0000439c 8fa20000 lw r2,0(r29) 4237 000043a0 8fdffff8 lw r31,-8(r30) 4238 000043a4 001ee820 add r29,r0,r30 4239 000043a8 8fdefffc lw r30,-4(r30) 4240 000043ac 4be00000 jr r31 4241 000043b0 54000000 nop 4242 000043b4 .endproc _DisableIntrs 4243 000043b4 .align 2 4244 000043b4 .proc _EnableIntrs 4245 000043b4 .global _EnableIntrs 4246 000043b4 _EnableIntrs: 4247 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 4248 000043b4 afbefffc sw -4(r29),r30; push fp 4249 000043b8 001df020 add r30,r0,r29; fp = sp 4250 000043bc afbffff8 sw -8(r29),r31; push ret addr 4251 000043c0 2fbd0010 subui r29,r29,#16; alloc local storage 4252 000043c4 afa20000 sw 0(r29),r2 4253 000043c8 23bdfff8 addi r29,r29,#-8 4254 000043cc 20020000 addi r2,r0,#0 4255 000043d0 afa20000 sw (r29),r2 4256 000043d4 0fffceb0 jal _SetIntrs 4257 000043d8 54000000 nop; not filled. 4258 000043dc 23bd0008 addi r29,r29,#8 4259 000043e0 8fa20000 lw r2,0(r29) 4260 000043e4 8fdffff8 lw r31,-8(r30) 4261 000043e8 001ee820 add r29,r0,r30 4262 000043ec 8fdefffc lw r30,-4(r30) 4263 000043f0 4be00000 jr r31 4264 000043f4 54000000 nop 4265 000043f8 .endproc _EnableIntrs 4266 000043f8 .align 2 4267 000043f8 .proc _RestoreIntrs 4268 000043f8 .global _RestoreIntrs 4269 000043f8 _RestoreIntrs: 4270 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 4271 000043f8 afbefffc sw -4(r29),r30; push fp 4272 000043fc 001df020 add r30,r0,r29; fp = sp 4273 00004400 afbffff8 sw -8(r29),r31; push ret addr 4274 00004404 2fbd0010 subui r29,r29,#16; alloc local storage 4275 00004408 afa20000 sw 0(r29),r2 4276 0000440c 23bdfff8 addi r29,r29,#-8 4277 00004410 8fc20000 lw r2,(r30) 4278 00004414 afa20000 sw (r29),r2 4279 00004418 0fffce6c jal _SetIntrs 4280 0000441c 54000000 nop; not filled. 4281 00004420 23bd0008 addi r29,r29,#8 4282 00004424 8fa20000 lw r2,0(r29) 4283 00004428 8fdffff8 lw r31,-8(r30) 4284 0000442c 001ee820 add r29,r0,r30 4285 00004430 8fdefffc lw r30,-4(r30) 4286 00004434 4be00000 jr r31 4287 00004438 54000000 nop 4288 0000443c .endproc _RestoreIntrs 4289 0000443c .align 2 4290 0000443c .proc _QueueLinkInit 4291 0000443c .global _QueueLinkInit 4292 0000443c _QueueLinkInit: 4293 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 4294 0000443c afbefffc sw -4(r29),r30; push fp 4295 00004440 001df020 add r30,r0,r29; fp = sp 4296 00004444 afbffff8 sw -8(r29),r31; push ret addr 4297 00004448 2fbd0010 subui r29,r29,#16; alloc local storage 4298 0000444c afa20000 sw 0(r29),r2 4299 00004450 8fc10000 lw r1,(r30) 4300 00004454 8fc20004 lw r2,4(r30) 4301 00004458 201f0000 addi r31,r0,#0 4302 0000445c ac3f0000 sw (r1),r31 4303 00004460 ac22000c sw 12(r1),r2 4304 00004464 8fa20000 lw r2,0(r29) 4305 00004468 8fdffff8 lw r31,-8(r30) 4306 0000446c 001ee820 add r29,r0,r30 4307 00004470 8fdefffc lw r30,-4(r30) 4308 00004474 4be00000 jr r31 4309 00004478 54000000 nop 4310 0000447c .endproc _QueueLinkInit 4311 0000447c .align 2 4312 0000447c .proc _QueueNext 4313 0000447c .global _QueueNext 4314 0000447c _QueueNext: 4315 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 4316 0000447c afbefffc sw -4(r29),r30; push fp 4317 00004480 001df020 add r30,r0,r29; fp = sp 4318 00004484 afbffff8 sw -8(r29),r31; push ret addr 4319 00004488 2fbd0008 subui r29,r29,#8; alloc local storage 4320 0000448c 8fc10000 lw r1,(r30) 4321 00004490 8c210000 lw r1,(r1) 4322 00004494 8fdffff8 lw r31,-8(r30) 4323 00004498 001ee820 add r29,r0,r30 4324 0000449c 8fdefffc lw r30,-4(r30) 4325 000044a0 4be00000 jr r31 4326 000044a4 54000000 nop 4327 000044a8 .endproc _QueueNext 4328 000044a8 .align 2 4329 000044a8 .proc _QueuePrev 4330 000044a8 .global _QueuePrev 4331 000044a8 _QueuePrev: 4332 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 4333 000044a8 afbefffc sw -4(r29),r30; push fp 4334 000044ac 001df020 add r30,r0,r29; fp = sp 4335 000044b0 afbffff8 sw -8(r29),r31; push ret addr 4336 000044b4 2fbd0008 subui r29,r29,#8; alloc local storage 4337 000044b8 8fc10000 lw r1,(r30) 4338 000044bc 8c210004 lw r1,4(r1) 4339 000044c0 8fdffff8 lw r31,-8(r30) 4340 000044c4 001ee820 add r29,r0,r30 4341 000044c8 8fdefffc lw r30,-4(r30) 4342 000044cc 4be00000 jr r31 4343 000044d0 54000000 nop 4344 000044d4 .endproc _QueuePrev 4345 000044d4 .align 2 4346 000044d4 .proc _QueueFirst 4347 000044d4 .global _QueueFirst 4348 000044d4 _QueueFirst: 4349 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 4350 000044d4 afbefffc sw -4(r29),r30; push fp 4351 000044d8 001df020 add r30,r0,r29; fp = sp 4352 000044dc afbffff8 sw -8(r29),r31; push ret addr 4353 000044e0 2fbd0008 subui r29,r29,#8; alloc local storage 4354 000044e4 8fc10000 lw r1,(r30) 4355 000044e8 8c210000 lw r1,(r1) 4356 000044ec 8fdffff8 lw r31,-8(r30) 4357 000044f0 001ee820 add r29,r0,r30 4358 000044f4 8fdefffc lw r30,-4(r30) 4359 000044f8 4be00000 jr r31 4360 000044fc 54000000 nop 4361 00004500 .endproc _QueueFirst 4362 00004500 .align 2 4363 00004500 .proc _QueueLast 4364 00004500 .global _QueueLast 4365 00004500 _QueueLast: 4366 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 4367 00004500 afbefffc sw -4(r29),r30; push fp 4368 00004504 001df020 add r30,r0,r29; fp = sp 4369 00004508 afbffff8 sw -8(r29),r31; push ret addr 4370 0000450c 2fbd0008 subui r29,r29,#8; alloc local storage 4371 00004510 8fc10000 lw r1,(r30) 4372 00004514 8c210004 lw r1,4(r1) 4373 00004518 8fdffff8 lw r31,-8(r30) 4374 0000451c 001ee820 add r29,r0,r30 4375 00004520 8fdefffc lw r30,-4(r30) 4376 00004524 4be00000 jr r31 4377 00004528 54000000 nop 4378 0000452c .endproc _QueueLast 4379 0000452c .align 2 4380 0000452c .proc _QueueInsertAfter 4381 0000452c .global _QueueInsertAfter 4382 0000452c _QueueInsertAfter: 4383 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 4384 0000452c afbefffc sw -4(r29),r30; push fp 4385 00004530 001df020 add r30,r0,r29; fp = sp 4386 00004534 afbffff8 sw -8(r29),r31; push ret addr 4387 00004538 2fbd0010 subui r29,r29,#16; alloc local storage 4388 0000453c afa20000 sw 0(r29),r2 4389 00004540 afa30004 sw 4(r29),r3 4390 00004544 8fc30000 lw r3,(r30) 4391 00004548 8fc20004 lw r2,4(r30) 4392 0000454c 8fc10008 lw r1,8(r30) 4393 00004550 ac230008 sw 8(r1),r3 4394 00004554 ac220004 sw 4(r1),r2 4395 00004558 8c5f0000 lw r31,(r2) 4396 0000455c ac3f0000 sw (r1),r31 4397 00004560 ac410000 sw (r2),r1 4398 00004564 8c220000 lw r2,(r1) 4399 00004568 ac410004 sw 4(r2),r1 4400 0000456c 8c610008 lw r1,8(r3) 4401 00004570 20210001 addi r1,r1,#1 4402 00004574 ac610008 sw 8(r3),r1 4403 00004578 8fa20000 lw r2,0(r29) 4404 0000457c 8fa30004 lw r3,4(r29) 4405 00004580 8fdffff8 lw r31,-8(r30) 4406 00004584 001ee820 add r29,r0,r30 4407 00004588 8fdefffc lw r30,-4(r30) 4408 0000458c 4be00000 jr r31 4409 00004590 54000000 nop 4410 00004594 .endproc _QueueInsertAfter 4411 00004594 .align 2 4412 00004594 .proc _QueueInsertFirst 4413 00004594 .global _QueueInsertFirst 4414 00004594 _QueueInsertFirst: 4415 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 4416 00004594 afbefffc sw -4(r29),r30; push fp 4417 00004598 001df020 add r30,r0,r29; fp = sp 4418 0000459c afbffff8 sw -8(r29),r31; push ret addr 4419 000045a0 2fbd0010 subui r29,r29,#16; alloc local storage 4420 000045a4 afa20000 sw 0(r29),r2 4421 000045a8 afa30004 sw 4(r29),r3 4422 000045ac 8fc30000 lw r3,(r30) 4423 000045b0 8fc10004 lw r1,4(r30) 4424 000045b4 ac230008 sw 8(r1),r3 4425 000045b8 ac230004 sw 4(r1),r3 4426 000045bc 8c7f0000 lw r31,(r3) 4427 000045c0 ac3f0000 sw (r1),r31 4428 000045c4 ac610000 sw (r3),r1 4429 000045c8 8c220000 lw r2,(r1) 4430 000045cc ac410004 sw 4(r2),r1 4431 000045d0 8c610008 lw r1,8(r3) 4432 000045d4 20210001 addi r1,r1,#1 4433 000045d8 ac610008 sw 8(r3),r1 4434 000045dc 8fa20000 lw r2,0(r29) 4435 000045e0 8fa30004 lw r3,4(r29) 4436 000045e4 8fdffff8 lw r31,-8(r30) 4437 000045e8 001ee820 add r29,r0,r30 4438 000045ec 8fdefffc lw r30,-4(r30) 4439 000045f0 4be00000 jr r31 4440 000045f4 54000000 nop 4441 000045f8 .endproc _QueueInsertFirst 4442 000045f8 .align 2 4443 000045f8 .proc _QueueInsertLast 4444 000045f8 .global _QueueInsertLast 4445 000045f8 _QueueInsertLast: 4446 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 4447 000045f8 afbefffc sw -4(r29),r30; push fp 4448 000045fc 001df020 add r30,r0,r29; fp = sp 4449 00004600 afbffff8 sw -8(r29),r31; push ret addr 4450 00004604 2fbd0010 subui r29,r29,#16; alloc local storage 4451 00004608 afa20000 sw 0(r29),r2 4452 0000460c afa30004 sw 4(r29),r3 4453 00004610 8fc30000 lw r3,(r30) 4454 00004614 8fc10004 lw r1,4(r30) 4455 00004618 8c620004 lw r2,4(r3) 4456 0000461c ac230008 sw 8(r1),r3 4457 00004620 ac220004 sw 4(r1),r2 4458 00004624 8c5f0000 lw r31,(r2) 4459 00004628 ac3f0000 sw (r1),r31 4460 0000462c ac410000 sw (r2),r1 4461 00004630 8c220000 lw r2,(r1) 4462 00004634 ac410004 sw 4(r2),r1 4463 00004638 8c610008 lw r1,8(r3) 4464 0000463c 20210001 addi r1,r1,#1 4465 00004640 ac610008 sw 8(r3),r1 4466 00004644 8fa20000 lw r2,0(r29) 4467 00004648 8fa30004 lw r3,4(r29) 4468 0000464c 8fdffff8 lw r31,-8(r30) 4469 00004650 001ee820 add r29,r0,r30 4470 00004654 8fdefffc lw r30,-4(r30) 4471 00004658 4be00000 jr r31 4472 0000465c 54000000 nop 4473 00004660 .endproc _QueueInsertLast 4474 00004660 .align 2 4475 00004660 .proc _QueueRemove 4476 00004660 .global _QueueRemove 4477 00004660 _QueueRemove: 4478 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 4479 00004660 afbefffc sw -4(r29),r30; push fp 4480 00004664 001df020 add r30,r0,r29; fp = sp 4481 00004668 afbffff8 sw -8(r29),r31; push ret addr 4482 0000466c 2fbd0010 subui r29,r29,#16; alloc local storage 4483 00004670 afa20000 sw 0(r29),r2 4484 00004674 afa30004 sw 4(r29),r3 4485 00004678 8fdf0000 lw r31,(r30) 4486 0000467c 8fe10008 lw r1,8(r31) 4487 00004680 8c210008 lw r1,8(r1) 4488 00004684 6c210000 sgti r1,r1,#0 4489 00004688 1020002c beqz r1,L44_LF5 4490 0000468c 54000000 nop; not filled. 4491 00004690 8fe10004 lw r1,4(r31) 4492 00004694 8fe30000 lw r3,(r31) 4493 00004698 ac230000 sw (r1),r3 4494 0000469c 8fe10000 lw r1,(r31) 4495 000046a0 8fe30004 lw r3,4(r31) 4496 000046a4 ac230004 sw 4(r1),r3 4497 000046a8 8fe20008 lw r2,8(r31) 4498 000046ac 8c410008 lw r1,8(r2) 4499 000046b0 2021ffff addi r1,r1,#-1 4500 000046b4 ac410008 sw 8(r2),r1 4501 000046b8 L44_LF5: 4502 000046b8 20030000 addi r3,r0,#0 4503 000046bc afe30000 sw (r31),r3 4504 000046c0 8fa20000 lw r2,0(r29) 4505 000046c4 8fa30004 lw r3,4(r29) 4506 000046c8 8fdffff8 lw r31,-8(r30) 4507 000046cc 001ee820 add r29,r0,r30 4508 000046d0 8fdefffc lw r30,-4(r30) 4509 000046d4 4be00000 jr r31 4510 000046d8 54000000 nop 4511 000046dc .endproc _QueueRemove 4512 000046dc .align 2 4513 000046dc .proc _QueueLength 4514 000046dc .global _QueueLength 4515 000046dc _QueueLength: 4516 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 4517 000046dc afbefffc sw -4(r29),r30; push fp 4518 000046e0 001df020 add r30,r0,r29; fp = sp 4519 000046e4 afbffff8 sw -8(r29),r31; push ret addr 4520 000046e8 2fbd0008 subui r29,r29,#8; alloc local storage 4521 000046ec 8fc10000 lw r1,(r30) 4522 000046f0 8c210008 lw r1,8(r1) 4523 000046f4 8fdffff8 lw r31,-8(r30) 4524 000046f8 001ee820 add r29,r0,r30 4525 000046fc 8fdefffc lw r30,-4(r30) 4526 00004700 4be00000 jr r31 4527 00004704 54000000 nop 4528 00004708 .endproc _QueueLength 4529 00004708 .align 2 4530 00004708 .proc _QueueEmpty 4531 00004708 .global _QueueEmpty 4532 00004708 _QueueEmpty: 4533 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 4534 00004708 afbefffc sw -4(r29),r30; push fp 4535 0000470c 001df020 add r30,r0,r29; fp = sp 4536 00004710 afbffff8 sw -8(r29),r31; push ret addr 4537 00004714 2fbd0008 subui r29,r29,#8; alloc local storage 4538 00004718 8fc10000 lw r1,(r30) 4539 0000471c 8c210008 lw r1,8(r1) 4540 00004720 60210000 seqi r1,r1,#0 4541 00004724 8fdffff8 lw r31,-8(r30) 4542 00004728 001ee820 add r29,r0,r30 4543 0000472c 8fdefffc lw r30,-4(r30) 4544 00004730 4be00000 jr r31 4545 00004734 54000000 nop 4546 00004738 .endproc _QueueEmpty 4547 00004738 .data 4548 0000f438 .align 2 4549 0000f438 _processQuantum_LF5: 4550 0000f438 00002710 .word 10000 4551 0000f43c .align 2 4552 0000f43c LC0_LF5: 4553 0000f43c 456e7465 .ascii "Entering ProcessModuleInit\n\000" 4553 0000f440 72696e67 4553 0000f444 2050726f 4553 0000f448 63657373 4553 0000f44c 4d6f6475 4553 0000f450 6c65496e 4553 0000f454 69740a00 4554 0000f458 .align 2 4555 0000f458 LC1_LF5: 4556 0000f458 496e6974 .ascii "Initializing PCB %d @ 0x%x.\n\000" 4556 0000f45c 69616c69 4556 0000f460 7a696e67 4556 0000f464 20504342 4556 0000f468 20256420 4556 0000f46c 40203078 4556 0000f470 25782e0a 4556 0000f474 00 4557 0000f475 .align 2 4558 0000f478 LC2_LF5: 4559 0000f478 4c656176 .ascii "Leaving ProcessModuleInit\n\000" 4559 0000f47c 696e6720 4559 0000f480 50726f63 4559 0000f484 6573734d 4559 0000f488 6f64756c 4559 0000f48c 65496e69 4559 0000f490 740a00 4560 0000f493 .text 4561 00004738 .align 2 4562 00004738 .proc _ProcessModuleInit 4563 00004738 .global _ProcessModuleInit 4564 00004738 _ProcessModuleInit: 4565 ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. 4566 00004738 afbefffc sw -4(r29),r30; push fp 4567 0000473c 001df020 add r30,r0,r29; fp = sp 4568 00004740 afbffff8 sw -8(r29),r31; push ret addr 4569 00004744 2fbd0028 subui r29,r29,#40; alloc local storage 4570 00004748 afa20000 sw 0(r29),r2 4571 0000474c afa30004 sw 4(r29),r3 4572 00004750 afa40008 sw 8(r29),r4 4573 00004754 afa5000c sw 12(r29),r5 4574 00004758 afa60010 sw 16(r29),r6 4575 0000475c afa70014 sw 20(r29),r7 4576 00004760 afa80018 sw 24(r29),r8 4577 00004764 23bdfff8 addi r29,r29,#-8 4578 00004768 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4579 0000476c 2442fd60 addui r2,r2,(_debugstr)&0xffff 4580 00004770 afa20000 sw (r29),r2 4581 00004774 20080070 addi r8,r0,#112 4582 00004778 afa80004 sw 4(r29),r8 4583 0000477c 0ffff6b4 jal _dindex 4584 00004780 54000000 nop; not filled. 4585 00004784 23bd0008 addi r29,r29,#8 4586 00004788 64210000 snei r1,r1,#0 4587 0000478c 1420002c bnez r1,L53_LF5 4588 00004790 54000000 nop; not filled. 4589 00004794 23bdfff8 addi r29,r29,#-8 4590 00004798 afa20000 sw (r29),r2 4591 0000479c 2008002b addi r8,r0,#43 4592 000047a0 afa80004 sw 4(r29),r8 4593 000047a4 0ffff68c jal _dindex 4594 000047a8 54000000 nop; not filled. 4595 000047ac 23bd0008 addi r29,r29,#8 4596 000047b0 64210000 snei r1,r1,#0 4597 000047b4 10200020 beqz r1,L52_LF5 4598 000047b8 54000000 nop; not filled. 4599 000047bc L53_LF5: 4600 000047bc 23bdfff8 addi r29,r29,#-8 4601 000047c0 3c080000 lhi r8,((LC0_LF5)>>16)&0xffff 4602 000047c4 2508f43c addui r8,r8,(LC0_LF5)&0xffff 4603 000047c8 afa80000 sw (r29),r8 4604 000047cc 0c00681c jal _printf 4605 000047d0 54000000 nop; not filled. 4606 000047d4 23bd0008 addi r29,r29,#8 4607 000047d8 L52_LF5: 4608 000047d8 23bdfff8 addi r29,r29,#-8 4609 000047dc 3c020000 lhi r2,((_freepcbs_LF5)>>16)&0xffff 4610 000047e0 2442fe2c addui r2,r2,(_freepcbs_LF5)&0xffff 4611 000047e4 afa20000 sw (r29),r2 4612 000047e8 0c0038c4 jal _QueueInit 4613 000047ec 54000000 nop; not filled. 4614 000047f0 3c080000 lhi r8,((_runQueue_LF5)>>16)&0xffff 4615 000047f4 2508fe38 addui r8,r8,(_runQueue_LF5)&0xffff 4616 000047f8 afa80000 sw (r29),r8 4617 000047fc 0c0038b0 jal _QueueInit 4618 00004800 54000000 nop; not filled. 4619 00004804 3c080000 lhi r8,((_waitQueue_LF5)>>16)&0xffff 4620 00004808 2508fe44 addui r8,r8,(_waitQueue_LF5)&0xffff 4621 0000480c afa80000 sw (r29),r8 4622 00004810 0c00389c jal _QueueInit 4623 00004814 54000000 nop; not filled. 4624 00004818 3c080000 lhi r8,((_zombieQueue_LF5)>>16)&0xffff 4625 0000481c 2508fe50 addui r8,r8,(_zombieQueue_LF5)&0xffff 4626 00004820 afa80000 sw (r29),r8 4627 00004824 0c003888 jal _QueueInit 4628 00004828 54000000 nop; not filled. 4629 0000482c 20040000 addi r4,r0,#0 4630 00004830 23bd0008 addi r29,r29,#8 4631 00004834 3c070000 lhi r7,((_debugstr)>>16)&0xffff 4632 00004838 24e7fd60 addui r7,r7,(_debugstr)&0xffff 4633 0000483c 3c010000 lhi r1,((_pcbs_LF5)>>16)&0xffff 4634 00004840 2421fe5c addui r1,r1,(_pcbs_LF5)&0xffff 4635 00004844 00022820 add r5,r0,r2 4636 00004848 20220068 addi r2,r1,#104 4637 0000484c 00011820 add r3,r0,r1 4638 00004850 00033020 add r6,r0,r3 4639 00004854 L57_LF5: 4640 00004854 23bdfff8 addi r29,r29,#-8 4641 00004858 afa70000 sw (r29),r7 4642 0000485c 20080070 addi r8,r0,#112 4643 00004860 afa80004 sw 4(r29),r8 4644 00004864 0ffff5cc jal _dindex 4645 00004868 54000000 nop; not filled. 4646 0000486c 23bd0008 addi r29,r29,#8 4647 00004870 64210000 snei r1,r1,#0 4648 00004874 1420002c bnez r1,L59_LF5 4649 00004878 54000000 nop; not filled. 4650 0000487c 23bdfff8 addi r29,r29,#-8 4651 00004880 afa70000 sw (r29),r7 4652 00004884 2008002b addi r8,r0,#43 4653 00004888 afa80004 sw 4(r29),r8 4654 0000488c 0ffff5a4 jal _dindex 4655 00004890 54000000 nop; not filled. 4656 00004894 23bd0008 addi r29,r29,#8 4657 00004898 64210000 snei r1,r1,#0 4658 0000489c 10200028 beqz r1,L58_LF5 4659 000048a0 54000000 nop; not filled. 4660 000048a4 L59_LF5: 4661 000048a4 23bdfff0 addi r29,r29,#-16 4662 000048a8 3c080000 lhi r8,((LC1_LF5)>>16)&0xffff 4663 000048ac 2508f458 addui r8,r8,(LC1_LF5)&0xffff 4664 000048b0 afa80000 sw (r29),r8 4665 000048b4 afa40004 sw 4(r29),r4 4666 000048b8 afa60008 sw 8(r29),r6 4667 000048bc 0c00672c jal _printf 4668 000048c0 54000000 nop; not filled. 4669 000048c4 23bd0010 addi r29,r29,#16 4670 000048c8 L58_LF5: 4671 000048c8 20080001 addi r8,r0,#1 4672 000048cc ac68000c sw 12(r3),r8 4673 000048d0 20080000 addi r8,r0,#0 4674 000048d4 ac480000 sw (r2),r8 4675 000048d8 ac43000c sw 12(r2),r3 4676 000048dc ac450008 sw 8(r2),r5 4677 000048e0 ac450004 sw 4(r2),r5 4678 000048e4 8ca80000 lw r8,(r5) 4679 000048e8 ac480000 sw (r2),r8 4680 000048ec aca20000 sw (r5),r2 4681 000048f0 8c410000 lw r1,(r2) 4682 000048f4 ac220004 sw 4(r1),r2 4683 000048f8 8ca10008 lw r1,8(r5) 4684 000048fc 20210001 addi r1,r1,#1 4685 00004900 aca10008 sw 8(r5),r1 4686 00004904 20420078 addi r2,r2,#120 4687 00004908 20630078 addi r3,r3,#120 4688 0000490c 20c60078 addi r6,r6,#120 4689 00004910 20840001 addi r4,r4,#1 4690 00004914 7081001f slei r1,r4,#31 4691 00004918 1420ff38 bnez r1,L57_LF5 4692 0000491c 54000000 nop; not filled. 4693 00004920 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4694 00004924 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4695 00004928 20080000 addi r8,r0,#0 4696 0000492c ac280000 sw (r1),r8 4697 00004930 23bdfff8 addi r29,r29,#-8 4698 00004934 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4699 00004938 2442fd60 addui r2,r2,(_debugstr)&0xffff 4700 0000493c afa20000 sw (r29),r2 4701 00004940 20080070 addi r8,r0,#112 4702 00004944 afa80004 sw 4(r29),r8 4703 00004948 0ffff4e8 jal _dindex 4704 0000494c 54000000 nop; not filled. 4705 00004950 23bd0008 addi r29,r29,#8 4706 00004954 64210000 snei r1,r1,#0 4707 00004958 1420002c bnez r1,L65_LF5 4708 0000495c 54000000 nop; not filled. 4709 00004960 23bdfff8 addi r29,r29,#-8 4710 00004964 afa20000 sw (r29),r2 4711 00004968 2008002b addi r8,r0,#43 4712 0000496c afa80004 sw 4(r29),r8 4713 00004970 0ffff4c0 jal _dindex 4714 00004974 54000000 nop; not filled. 4715 00004978 23bd0008 addi r29,r29,#8 4716 0000497c 64210000 snei r1,r1,#0 4717 00004980 10200020 beqz r1,L64_LF5 4718 00004984 54000000 nop; not filled. 4719 00004988 L65_LF5: 4720 00004988 23bdfff8 addi r29,r29,#-8 4721 0000498c 3c080000 lhi r8,((LC2_LF5)>>16)&0xffff 4722 00004990 2508f478 addui r8,r8,(LC2_LF5)&0xffff 4723 00004994 afa80000 sw (r29),r8 4724 00004998 0c006650 jal _printf 4725 0000499c 54000000 nop; not filled. 4726 000049a0 23bd0008 addi r29,r29,#8 4727 000049a4 L64_LF5: 4728 000049a4 8fa20000 lw r2,0(r29) 4729 000049a8 8fa30004 lw r3,4(r29) 4730 000049ac 8fa40008 lw r4,8(r29) 4731 000049b0 8fa5000c lw r5,12(r29) 4732 000049b4 8fa60010 lw r6,16(r29) 4733 000049b8 8fa70014 lw r7,20(r29) 4734 000049bc 8fa80018 lw r8,24(r29) 4735 000049c0 8fdffff8 lw r31,-8(r30) 4736 000049c4 001ee820 add r29,r0,r30 4737 000049c8 8fdefffc lw r30,-4(r30) 4738 000049cc 4be00000 jr r31 4739 000049d0 54000000 nop 4740 000049d4 .endproc _ProcessModuleInit 4741 000049d4 .align 2 4742 000049d4 .proc _ProcessSetStatus 4743 000049d4 .global _ProcessSetStatus 4744 000049d4 _ProcessSetStatus: 4745 ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. 4746 000049d4 afbefffc sw -4(r29),r30; push fp 4747 000049d8 001df020 add r30,r0,r29; fp = sp 4748 000049dc afbffff8 sw -8(r29),r31; push ret addr 4749 000049e0 2fbd0010 subui r29,r29,#16; alloc local storage 4750 000049e4 afa20000 sw 0(r29),r2 4751 000049e8 afa30004 sw 4(r29),r3 4752 000049ec 8fc30000 lw r3,(r30) 4753 000049f0 8fc20004 lw r2,4(r30) 4754 000049f4 8c61000c lw r1,12(r3) 4755 000049f8 201fffc0 addi r31,r0,#-64 4756 000049fc 003f0824 and r1,r1,r31 4757 00004a00 00220825 or r1,r1,r2 4758 00004a04 ac61000c sw 12(r3),r1 4759 00004a08 8fa20000 lw r2,0(r29) 4760 00004a0c 8fa30004 lw r3,4(r29) 4761 00004a10 8fdffff8 lw r31,-8(r30) 4762 00004a14 001ee820 add r29,r0,r30 4763 00004a18 8fdefffc lw r30,-4(r30) 4764 00004a1c 4be00000 jr r31 4765 00004a20 54000000 nop 4766 00004a24 .endproc _ProcessSetStatus 4767 00004a24 .align 2 4768 00004a24 .proc _ProcessFreeResources 4769 00004a24 .global _ProcessFreeResources 4770 00004a24 _ProcessFreeResources: 4771 ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. 4772 00004a24 afbefffc sw -4(r29),r30; push fp 4773 00004a28 001df020 add r30,r0,r29; fp = sp 4774 00004a2c afbffff8 sw -8(r29),r31; push ret addr 4775 00004a30 2fbd0018 subui r29,r29,#24; alloc local storage 4776 00004a34 afa20000 sw 0(r29),r2 4777 00004a38 afa30004 sw 4(r29),r3 4778 00004a3c afa40008 sw 8(r29),r4 4779 00004a40 afa5000c sw 12(r29),r5 4780 00004a44 8fc40000 lw r4,(r30) 4781 00004a48 3c030000 lhi r3,((_freepcbs_LF5)>>16)&0xffff 4782 00004a4c 2463fe2c addui r3,r3,(_freepcbs_LF5)&0xffff 4783 00004a50 20820068 addi r2,r4,#104 4784 00004a54 8c610004 lw r1,4(r3) 4785 00004a58 ac830070 sw 112(r4),r3 4786 00004a5c ac81006c sw 108(r4),r1 4787 00004a60 8c250000 lw r5,(r1) 4788 00004a64 ac450000 sw (r2),r5 4789 00004a68 ac220000 sw (r1),r2 4790 00004a6c 8c410000 lw r1,(r2) 4791 00004a70 ac220004 sw 4(r1),r2 4792 00004a74 8c610008 lw r1,8(r3) 4793 00004a78 20210001 addi r1,r1,#1 4794 00004a7c ac610008 sw 8(r3),r1 4795 00004a80 20020000 addi r2,r0,#0 4796 00004a84 8c810064 lw r1,100(r4) 4797 00004a88 0041082a slt r1,r2,r1 4798 00004a8c 10200038 beqz r1,L83_LF5 4799 00004a90 54000000 nop; not filled. 4800 00004a94 00041820 add r3,r0,r4 4801 00004a98 L85_LF5: 4802 00004a98 23bdfff8 addi r29,r29,#-8 4803 00004a9c 8c650060 lw r5,96(r3) 4804 00004aa0 afa50000 sw (r29),r5 4805 00004aa4 0fffec34 jal _MemoryFreePte 4806 00004aa8 54000000 nop; not filled. 4807 00004aac 23bd0008 addi r29,r29,#8 4808 00004ab0 20630004 addi r3,r3,#4 4809 00004ab4 20420001 addi r2,r2,#1 4810 00004ab8 8c810064 lw r1,100(r4) 4811 00004abc 0041082a slt r1,r2,r1 4812 00004ac0 1420ffd4 bnez r1,L85_LF5 4813 00004ac4 54000000 nop; not filled. 4814 00004ac8 L83_LF5: 4815 00004ac8 23bdfff8 addi r29,r29,#-8 4816 00004acc 94810008 lhu r1,8(r4) 4817 00004ad0 afa10000 sw (r29),r1 4818 00004ad4 0fffe738 jal _MemoryFreePage 4819 00004ad8 54000000 nop; not filled. 4820 00004adc 23bd0008 addi r29,r29,#8 4821 00004ae0 8c81000c lw r1,12(r4) 4822 00004ae4 2005ffc0 addi r5,r0,#-64 4823 00004ae8 00250824 and r1,r1,r5 4824 00004aec 34210001 ori r1,r1,#1 4825 00004af0 ac81000c sw 12(r4),r1 4826 00004af4 8fa20000 lw r2,0(r29) 4827 00004af8 8fa30004 lw r3,4(r29) 4828 00004afc 8fa40008 lw r4,8(r29) 4829 00004b00 8fa5000c lw r5,12(r29) 4830 00004b04 8fdffff8 lw r31,-8(r30) 4831 00004b08 001ee820 add r29,r0,r30 4832 00004b0c 8fdefffc lw r30,-4(r30) 4833 00004b10 4be00000 jr r31 4834 00004b14 54000000 nop 4835 00004b18 .endproc _ProcessFreeResources 4836 00004b18 .align 2 4837 00004b18 .proc _ProcessSetResult 4838 00004b18 .global _ProcessSetResult 4839 00004b18 _ProcessSetResult: 4840 ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. 4841 00004b18 afbefffc sw -4(r29),r30; push fp 4842 00004b1c 001df020 add r30,r0,r29; fp = sp 4843 00004b20 afbffff8 sw -8(r29),r31; push ret addr 4844 00004b24 2fbd0008 subui r29,r29,#8; alloc local storage 4845 00004b28 8fc10000 lw r1,(r30) 4846 00004b2c 8c210000 lw r1,(r1) 4847 00004b30 8fdf0004 lw r31,4(r30) 4848 00004b34 ac3f002c sw 44(r1),r31 4849 00004b38 8fdffff8 lw r31,-8(r30) 4850 00004b3c 001ee820 add r29,r0,r30 4851 00004b40 8fdefffc lw r30,-4(r30) 4852 00004b44 4be00000 jr r31 4853 00004b48 54000000 nop 4854 00004b4c .endproc _ProcessSetResult 4855 00004b4c .data 4856 0000f493 .align 2 4857 0000f494 LC3_LF5: 4858 0000f494 4e6f7720 .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" 4858 0000f498 656e7465 4858 0000f49c 72696e67 4858 0000f4a0 2050726f 4858 0000f4a4 63657373 4858 0000f4a8 53636865 4858 0000f4ac 64756c65 4858 0000f4b0 20286375 4858 0000f4b4 723d3078 4858 0000f4b8 25782c20 4858 0000f4bc 25642072 4858 0000f4c0 65616479 4858 0000f4c4 290a00 4859 0000f4c7 .align 2 4860 0000f4c8 LC4_LF5: 4861 0000f4c8 4e6f2072 .ascii "No runnable processes - exiting!\n\000" 4861 0000f4cc 756e6e61 4861 0000f4d0 626c6520 4861 0000f4d4 70726f63 4861 0000f4d8 65737365 4861 0000f4dc 73202d20 4861 0000f4e0 65786974 4861 0000f4e4 696e6721 4861 0000f4e8 0a00 4862 0000f4ea .align 2 4863 0000f4ec LC5_LF5: 4864 0000f4ec 41626f75 .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" 4864 0000f4f0 7420746f 4864 0000f4f4 20737769 4864 0000f4f8 74636820 4864 0000f4fc 746f2050 4864 0000f500 43422030 4864 0000f504 7825782c 4864 0000f508 666c6167 4864 0000f50c 733d3078 4864 0000f510 25782040 4864 0000f514 20307825 4864 0000f518 780a00 4865 0000f51b .align 2 4866 0000f51c LC6_LF5: 4867 0000f51c 46726565 .ascii "Freeing zombie PCB 0x%x.\n\000" 4867 0000f520 696e6720 4867 0000f524 7a6f6d62 4867 0000f528 69652050 4867 0000f52c 43422030 4867 0000f530 7825782e 4867 0000f534 0a00 4868 0000f536 .align 2 4869 0000f538 LC7_LF5: 4870 0000f538 4c656176 .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" 4870 0000f53c 696e6720 4870 0000f540 50726f63 4870 0000f544 65737353 4870 0000f548 63686564 4870 0000f54c 756c6520 4870 0000f550 28637572 4870 0000f554 3d307825 4870 0000f558 78290a00 4871 0000f55c .text 4872 00004b4c .align 2 4873 00004b4c .proc _ProcessSchedule 4874 00004b4c .global _ProcessSchedule 4875 00004b4c _ProcessSchedule: 4876 ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. 4877 00004b4c afbefffc sw -4(r29),r30; push fp 4878 00004b50 001df020 add r30,r0,r29; fp = sp 4879 00004b54 afbffff8 sw -8(r29),r31; push ret addr 4880 00004b58 2fbd0028 subui r29,r29,#40; alloc local storage 4881 00004b5c afa20000 sw 0(r29),r2 4882 00004b60 afa30004 sw 4(r29),r3 4883 00004b64 afa40008 sw 8(r29),r4 4884 00004b68 afa5000c sw 12(r29),r5 4885 00004b6c afa60010 sw 16(r29),r6 4886 00004b70 afa70014 sw 20(r29),r7 4887 00004b74 afa80018 sw 24(r29),r8 4888 00004b78 23bdfff8 addi r29,r29,#-8 4889 00004b7c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4890 00004b80 2442fd60 addui r2,r2,(_debugstr)&0xffff 4891 00004b84 afa20000 sw (r29),r2 4892 00004b88 20080070 addi r8,r0,#112 4893 00004b8c afa80004 sw 4(r29),r8 4894 00004b90 0ffff2a0 jal _dindex 4895 00004b94 54000000 nop; not filled. 4896 00004b98 23bd0008 addi r29,r29,#8 4897 00004b9c 64210000 snei r1,r1,#0 4898 00004ba0 1420002c bnez r1,L92_LF5 4899 00004ba4 54000000 nop; not filled. 4900 00004ba8 23bdfff8 addi r29,r29,#-8 4901 00004bac afa20000 sw (r29),r2 4902 00004bb0 2008002b addi r8,r0,#43 4903 00004bb4 afa80004 sw 4(r29),r8 4904 00004bb8 0ffff278 jal _dindex 4905 00004bbc 54000000 nop; not filled. 4906 00004bc0 23bd0008 addi r29,r29,#8 4907 00004bc4 64210000 snei r1,r1,#0 4908 00004bc8 10200040 beqz r1,L91_LF5 4909 00004bcc 54000000 nop; not filled. 4910 00004bd0 L92_LF5: 4911 00004bd0 3c010000 lhi r1,((_runQueue_LF5)>>16)&0xffff 4912 00004bd4 2421fe38 addui r1,r1,(_runQueue_LF5)&0xffff 4913 00004bd8 8c220008 lw r2,8(r1) 4914 00004bdc 23bdfff0 addi r29,r29,#-16 4915 00004be0 3c080000 lhi r8,((LC3_LF5)>>16)&0xffff 4916 00004be4 2508f494 addui r8,r8,(LC3_LF5)&0xffff 4917 00004be8 afa80000 sw (r29),r8 4918 00004bec 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4919 00004bf0 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4920 00004bf4 8c210000 lw r1,(r1) 4921 00004bf8 afa10004 sw 4(r29),r1 4922 00004bfc afa20008 sw 8(r29),r2 4923 00004c00 0c0063e8 jal _printf 4924 00004c04 54000000 nop; not filled. 4925 00004c08 23bd0010 addi r29,r29,#16 4926 00004c0c L91_LF5: 4927 00004c0c 3c050000 lhi r5,((_runQueue_LF5)>>16)&0xffff 4928 00004c10 24a5fe38 addui r5,r5,(_runQueue_LF5)&0xffff 4929 00004c14 8ca10008 lw r1,8(r5) 4930 00004c18 60210000 seqi r1,r1,#0 4931 00004c1c 10200028 beqz r1,L94_LF5 4932 00004c20 54000000 nop; not filled. 4933 00004c24 23bdfff8 addi r29,r29,#-8 4934 00004c28 3c080000 lhi r8,((LC4_LF5)>>16)&0xffff 4935 00004c2c 2508f4c8 addui r8,r8,(LC4_LF5)&0xffff 4936 00004c30 afa80000 sw (r29),r8 4937 00004c34 0c0063b4 jal _printf 4938 00004c38 54000000 nop; not filled. 4939 00004c3c 0c006394 jal _exitsim 4940 00004c40 54000000 nop; not filled. 4941 00004c44 23bd0008 addi r29,r29,#8 4942 00004c48 L94_LF5: 4943 00004c48 8ca10000 lw r1,(r5) 4944 00004c4c 8c24000c lw r4,12(r1) 4945 00004c50 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4946 00004c54 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4947 00004c58 8c210000 lw r1,(r1) 4948 00004c5c 00810828 seq r1,r4,r1 4949 00004c60 10200078 beqz r1,L98_LF5 4950 00004c64 54000000 nop; not filled. 4951 00004c68 20830068 addi r3,r4,#104 4952 00004c6c 8c810070 lw r1,112(r4) 4953 00004c70 8c210008 lw r1,8(r1) 4954 00004c74 6c210000 sgti r1,r1,#0 4955 00004c78 1020002c beqz r1,L100_LF5 4956 00004c7c 54000000 nop; not filled. 4957 00004c80 8c81006c lw r1,108(r4) 4958 00004c84 8c680000 lw r8,(r3) 4959 00004c88 ac280000 sw (r1),r8 4960 00004c8c 8c610000 lw r1,(r3) 4961 00004c90 8c88006c lw r8,108(r4) 4962 00004c94 ac280004 sw 4(r1),r8 4963 00004c98 8c820070 lw r2,112(r4) 4964 00004c9c 8c410008 lw r1,8(r2) 4965 00004ca0 2021ffff addi r1,r1,#-1 4966 00004ca4 ac410008 sw 8(r2),r1 4967 00004ca8 L100_LF5: 4968 00004ca8 20080000 addi r8,r0,#0 4969 00004cac ac680000 sw (r3),r8 4970 00004cb0 8ca10004 lw r1,4(r5) 4971 00004cb4 ac850070 sw 112(r4),r5 4972 00004cb8 ac81006c sw 108(r4),r1 4973 00004cbc 8c280000 lw r8,(r1) 4974 00004cc0 ac680000 sw (r3),r8 4975 00004cc4 ac230000 sw (r1),r3 4976 00004cc8 8c610000 lw r1,(r3) 4977 00004ccc ac230004 sw 4(r1),r3 4978 00004cd0 8ca10008 lw r1,8(r5) 4979 00004cd4 20210001 addi r1,r1,#1 4980 00004cd8 aca10008 sw 8(r5),r1 4981 00004cdc L98_LF5: 4982 00004cdc 3c010000 lhi r1,((_runQueue_LF5)>>16)&0xffff 4983 00004ce0 2421fe38 addui r1,r1,(_runQueue_LF5)&0xffff 4984 00004ce4 8c210000 lw r1,(r1) 4985 00004ce8 8c24000c lw r4,12(r1) 4986 00004cec 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4987 00004cf0 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4988 00004cf4 ac240000 sw (r1),r4 4989 00004cf8 23bdfff8 addi r29,r29,#-8 4990 00004cfc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4991 00004d00 2442fd60 addui r2,r2,(_debugstr)&0xffff 4992 00004d04 afa20000 sw (r29),r2 4993 00004d08 20080070 addi r8,r0,#112 4994 00004d0c afa80004 sw 4(r29),r8 4995 00004d10 0ffff120 jal _dindex 4996 00004d14 54000000 nop; not filled. 4997 00004d18 23bd0008 addi r29,r29,#8 4998 00004d1c 64210000 snei r1,r1,#0 4999 00004d20 1420002c bnez r1,L106_LF5 5000 00004d24 54000000 nop; not filled. 5001 00004d28 23bdfff8 addi r29,r29,#-8 5002 00004d2c afa20000 sw (r29),r2 5003 00004d30 2008002b addi r8,r0,#43 5004 00004d34 afa80004 sw 4(r29),r8 5005 00004d38 0ffff0f8 jal _dindex 5006 00004d3c 54000000 nop; not filled. 5007 00004d40 23bd0008 addi r29,r29,#8 5008 00004d44 64210000 snei r1,r1,#0 5009 00004d48 10200038 beqz r1,L105_LF5 5010 00004d4c 54000000 nop; not filled. 5011 00004d50 L106_LF5: 5012 00004d50 23bdfff0 addi r29,r29,#-16 5013 00004d54 3c080000 lhi r8,((LC5_LF5)>>16)&0xffff 5014 00004d58 2508f4ec addui r8,r8,(LC5_LF5)&0xffff 5015 00004d5c afa80000 sw (r29),r8 5016 00004d60 afa40004 sw 4(r29),r4 5017 00004d64 8c88000c lw r8,12(r4) 5018 00004d68 afa80008 sw 8(r29),r8 5019 00004d6c 8c810004 lw r1,4(r4) 5020 00004d70 8c210128 lw r1,296(r1) 5021 00004d74 afa1000c sw 12(r29),r1 5022 00004d78 0c006270 jal _printf 5023 00004d7c 54000000 nop; not filled. 5024 00004d80 23bd0010 addi r29,r29,#16 5025 00004d84 L105_LF5: 5026 00004d84 3c070000 lhi r7,((_zombieQueue_LF5)>>16)&0xffff 5027 00004d88 24e7fe50 addui r7,r7,(_zombieQueue_LF5)&0xffff 5028 00004d8c 3c060000 lhi r6,((_debugstr)>>16)&0xffff 5029 00004d90 24c6fd60 addui r6,r6,(_debugstr)&0xffff 5030 00004d94 3c050000 lhi r5,((_freepcbs_LF5)>>16)&0xffff 5031 00004d98 24a5fe2c addui r5,r5,(_freepcbs_LF5)&0xffff 5032 00004d9c L107_LF5: 5033 00004d9c 8ce10008 lw r1,8(r7) 5034 00004da0 60210000 seqi r1,r1,#0 5035 00004da4 1420016c bnez r1,L108_LF5 5036 00004da8 54000000 nop; not filled. 5037 00004dac 8ce10000 lw r1,(r7) 5038 00004db0 8c24000c lw r4,12(r1) 5039 00004db4 23bdfff8 addi r29,r29,#-8 5040 00004db8 afa60000 sw (r29),r6 5041 00004dbc 20080070 addi r8,r0,#112 5042 00004dc0 afa80004 sw 4(r29),r8 5043 00004dc4 0ffff06c jal _dindex 5044 00004dc8 54000000 nop; not filled. 5045 00004dcc 23bd0008 addi r29,r29,#8 5046 00004dd0 64210000 snei r1,r1,#0 5047 00004dd4 1420002c bnez r1,L114_LF5 5048 00004dd8 54000000 nop; not filled. 5049 00004ddc 23bdfff8 addi r29,r29,#-8 5050 00004de0 afa60000 sw (r29),r6 5051 00004de4 2008002b addi r8,r0,#43 5052 00004de8 afa80004 sw 4(r29),r8 5053 00004dec 0ffff044 jal _dindex 5054 00004df0 54000000 nop; not filled. 5055 00004df4 23bd0008 addi r29,r29,#8 5056 00004df8 64210000 snei r1,r1,#0 5057 00004dfc 10200024 beqz r1,L113_LF5 5058 00004e00 54000000 nop; not filled. 5059 00004e04 L114_LF5: 5060 00004e04 23bdfff8 addi r29,r29,#-8 5061 00004e08 3c080000 lhi r8,((LC6_LF5)>>16)&0xffff 5062 00004e0c 2508f51c addui r8,r8,(LC6_LF5)&0xffff 5063 00004e10 afa80000 sw (r29),r8 5064 00004e14 afa40004 sw 4(r29),r4 5065 00004e18 0c0061d0 jal _printf 5066 00004e1c 54000000 nop; not filled. 5067 00004e20 23bd0008 addi r29,r29,#8 5068 00004e24 L113_LF5: 5069 00004e24 209f0068 addi r31,r4,#104 5070 00004e28 8c810070 lw r1,112(r4) 5071 00004e2c 8c210008 lw r1,8(r1) 5072 00004e30 6c210000 sgti r1,r1,#0 5073 00004e34 1020002c beqz r1,L116_LF5 5074 00004e38 54000000 nop; not filled. 5075 00004e3c 8c81006c lw r1,108(r4) 5076 00004e40 8fe80000 lw r8,(r31) 5077 00004e44 ac280000 sw (r1),r8 5078 00004e48 8fe10000 lw r1,(r31) 5079 00004e4c 8c88006c lw r8,108(r4) 5080 00004e50 ac280004 sw 4(r1),r8 5081 00004e54 8c820070 lw r2,112(r4) 5082 00004e58 8c410008 lw r1,8(r2) 5083 00004e5c 2021ffff addi r1,r1,#-1 5084 00004e60 ac410008 sw 8(r2),r1 5085 00004e64 L116_LF5: 5086 00004e64 20080000 addi r8,r0,#0 5087 00004e68 afe80000 sw (r31),r8 5088 00004e6c 8ca10004 lw r1,4(r5) 5089 00004e70 ac850070 sw 112(r4),r5 5090 00004e74 ac81006c sw 108(r4),r1 5091 00004e78 8c280000 lw r8,(r1) 5092 00004e7c afe80000 sw (r31),r8 5093 00004e80 ac3f0000 sw (r1),r31 5094 00004e84 8fe10000 lw r1,(r31) 5095 00004e88 ac3f0004 sw 4(r1),r31 5096 00004e8c 8ca10008 lw r1,8(r5) 5097 00004e90 20210001 addi r1,r1,#1 5098 00004e94 aca10008 sw 8(r5),r1 5099 00004e98 20030000 addi r3,r0,#0 5100 00004e9c 8c810064 lw r1,100(r4) 5101 00004ea0 0061082a slt r1,r3,r1 5102 00004ea4 10200038 beqz r1,L122_LF5 5103 00004ea8 54000000 nop; not filled. 5104 00004eac 00041020 add r2,r0,r4 5105 00004eb0 L124_LF5: 5106 00004eb0 23bdfff8 addi r29,r29,#-8 5107 00004eb4 8c480060 lw r8,96(r2) 5108 00004eb8 afa80000 sw (r29),r8 5109 00004ebc 0fffe81c jal _MemoryFreePte 5110 00004ec0 54000000 nop; not filled. 5111 00004ec4 23bd0008 addi r29,r29,#8 5112 00004ec8 20420004 addi r2,r2,#4 5113 00004ecc 20630001 addi r3,r3,#1 5114 00004ed0 8c810064 lw r1,100(r4) 5115 00004ed4 0061082a slt r1,r3,r1 5116 00004ed8 1420ffd4 bnez r1,L124_LF5 5117 00004edc 54000000 nop; not filled. 5118 00004ee0 L122_LF5: 5119 00004ee0 23bdfff8 addi r29,r29,#-8 5120 00004ee4 94810008 lhu r1,8(r4) 5121 00004ee8 afa10000 sw (r29),r1 5122 00004eec 0fffe320 jal _MemoryFreePage 5123 00004ef0 54000000 nop; not filled. 5124 00004ef4 23bd0008 addi r29,r29,#8 5125 00004ef8 8c81000c lw r1,12(r4) 5126 00004efc 2008ffc0 addi r8,r0,#-64 5127 00004f00 00280824 and r1,r1,r8 5128 00004f04 34210001 ori r1,r1,#1 5129 00004f08 ac81000c sw 12(r4),r1 5130 00004f0c 0bfffe8c j L107_LF5 5131 00004f10 54000000 nop; not filled. 5132 00004f14 L108_LF5: 5133 00004f14 23bdfff8 addi r29,r29,#-8 5134 00004f18 3c010000 lhi r1,((_processQuantum_LF5)>>16)&0xffff 5135 00004f1c 2421f438 addui r1,r1,(_processQuantum_LF5)&0xffff 5136 00004f20 8c210000 lw r1,(r1) 5137 00004f24 afa10000 sw (r29),r1 5138 00004f28 0c0044d0 jal _TimerSet 5139 00004f2c 54000000 nop; not filled. 5140 00004f30 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5141 00004f34 2442fd60 addui r2,r2,(_debugstr)&0xffff 5142 00004f38 afa20000 sw (r29),r2 5143 00004f3c 20080070 addi r8,r0,#112 5144 00004f40 afa80004 sw 4(r29),r8 5145 00004f44 0fffeeec jal _dindex 5146 00004f48 54000000 nop; not filled. 5147 00004f4c 23bd0008 addi r29,r29,#8 5148 00004f50 64210000 snei r1,r1,#0 5149 00004f54 1420002c bnez r1,L128_LF5 5150 00004f58 54000000 nop; not filled. 5151 00004f5c 23bdfff8 addi r29,r29,#-8 5152 00004f60 afa20000 sw (r29),r2 5153 00004f64 2008002b addi r8,r0,#43 5154 00004f68 afa80004 sw 4(r29),r8 5155 00004f6c 0fffeec4 jal _dindex 5156 00004f70 54000000 nop; not filled. 5157 00004f74 23bd0008 addi r29,r29,#8 5158 00004f78 64210000 snei r1,r1,#0 5159 00004f7c 10200030 beqz r1,L127_LF5 5160 00004f80 54000000 nop; not filled. 5161 00004f84 L128_LF5: 5162 00004f84 23bdfff8 addi r29,r29,#-8 5163 00004f88 3c080000 lhi r8,((LC7_LF5)>>16)&0xffff 5164 00004f8c 2508f538 addui r8,r8,(LC7_LF5)&0xffff 5165 00004f90 afa80000 sw (r29),r8 5166 00004f94 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 5167 00004f98 2421fe28 addui r1,r1,(_currentPCB)&0xffff 5168 00004f9c 8c210000 lw r1,(r1) 5169 00004fa0 afa10004 sw 4(r29),r1 5170 00004fa4 0c006044 jal _printf 5171 00004fa8 54000000 nop; not filled. 5172 00004fac 23bd0008 addi r29,r29,#8 5173 00004fb0 L127_LF5: 5174 00004fb0 8fa20000 lw r2,0(r29) 5175 00004fb4 8fa30004 lw r3,4(r29) 5176 00004fb8 8fa40008 lw r4,8(r29) 5177 00004fbc 8fa5000c lw r5,12(r29) 5178 00004fc0 8fa60010 lw r6,16(r29) 5179 00004fc4 8fa70014 lw r7,20(r29) 5180 00004fc8 8fa80018 lw r8,24(r29) 5181 00004fcc 8fdffff8 lw r31,-8(r30) 5182 00004fd0 001ee820 add r29,r0,r30 5183 00004fd4 8fdefffc lw r30,-4(r30) 5184 00004fd8 4be00000 jr r31 5185 00004fdc 54000000 nop 5186 00004fe0 .endproc _ProcessSchedule 5187 00004fe0 .data 5188 0000f55c .align 2 5189 0000f55c LC8_LF5: 5190 0000f55c 53757370 .ascii "Suspending PCB 0x%x (%s).\n\000" 5190 0000f560 656e6469 5190 0000f564 6e672050 5190 0000f568 43422030 5190 0000f56c 78257820 5190 0000f570 28257329 5190 0000f574 2e0a00 5191 0000f577 .align 2 5192 0000f578 LC9_LF5: 5193 0000f578 25733a20 .ascii "%s: %s\n\000" 5193 0000f57c 25730a00 5194 0000f580 .align 2 5195 0000f580 LC10_LF5: 5196 0000f580 50726f63 .ascii "ProcessSuspend\000" 5196 0000f584 65737353 5196 0000f588 75737065 5196 0000f58c 6e6400 5197 0000f58f .align 2 5198 0000f590 LC11_LF5: 5199 0000f590 54727969 .ascii "Trying to suspend a non-running process!\n\000" 5199 0000f594 6e672074 5199 0000f598 6f207375 5199 0000f59c 7370656e 5199 0000f5a0 64206120 5199 0000f5a4 6e6f6e2d 5199 0000f5a8 72756e6e 5199 0000f5ac 696e6720 5199 0000f5b0 70726f63 5199 0000f5b4 65737321 5199 0000f5b8 0a00 5200 0000f5ba .text 5201 00004fe0 .align 2 5202 00004fe0 .proc _ProcessSuspend 5203 00004fe0 .global _ProcessSuspend 5204 00004fe0 _ProcessSuspend: 5205 ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. 5206 00004fe0 afbefffc sw -4(r29),r30; push fp 5207 00004fe4 001df020 add r30,r0,r29; fp = sp 5208 00004fe8 afbffff8 sw -8(r29),r31; push ret addr 5209 00004fec 2fbd0018 subui r29,r29,#24; alloc local storage 5210 00004ff0 afa20000 sw 0(r29),r2 5211 00004ff4 afa30004 sw 4(r29),r3 5212 00004ff8 afa40008 sw 8(r29),r4 5213 00004ffc 8fc30000 lw r3,(r30) 5214 00005000 23bdfff8 addi r29,r29,#-8 5215 00005004 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5216 00005008 2442fd60 addui r2,r2,(_debugstr)&0xffff 5217 0000500c afa20000 sw (r29),r2 5218 00005010 20040070 addi r4,r0,#112 5219 00005014 afa40004 sw 4(r29),r4 5220 00005018 0fffee18 jal _dindex 5221 0000501c 54000000 nop; not filled. 5222 00005020 23bd0008 addi r29,r29,#8 5223 00005024 64210000 snei r1,r1,#0 5224 00005028 1420002c bnez r1,L131_LF5 5225 0000502c 54000000 nop; not filled. 5226 00005030 23bdfff8 addi r29,r29,#-8 5227 00005034 afa20000 sw (r29),r2 5228 00005038 2004002b addi r4,r0,#43 5229 0000503c afa40004 sw 4(r29),r4 5230 00005040 0fffedf0 jal _dindex 5231 00005044 54000000 nop; not filled. 5232 00005048 23bd0008 addi r29,r29,#8 5233 0000504c 64210000 snei r1,r1,#0 5234 00005050 1020002c beqz r1,L130_LF5 5235 00005054 54000000 nop; not filled. 5236 00005058 L131_LF5: 5237 00005058 23bdfff0 addi r29,r29,#-16 5238 0000505c 3c040000 lhi r4,((LC8_LF5)>>16)&0xffff 5239 00005060 2484f55c addui r4,r4,(LC8_LF5)&0xffff 5240 00005064 afa40000 sw (r29),r4 5241 00005068 afa30004 sw 4(r29),r3 5242 0000506c 20610010 addi r1,r3,#16 5243 00005070 afa10008 sw 8(r29),r1 5244 00005074 0c005f74 jal _printf 5245 00005078 54000000 nop; not filled. 5246 0000507c 23bd0010 addi r29,r29,#16 5247 00005080 L130_LF5: 5248 00005080 8064000f lb r4,15(r3) 5249 00005084 58810001 srli r1,r4,#0x1 5250 00005088 30210001 andi r1,r1,#1 5251 0000508c 14200038 bnez r1,L133_LF5 5252 00005090 54000000 nop; not filled. 5253 00005094 23bdfff0 addi r29,r29,#-16 5254 00005098 3c040000 lhi r4,((LC9_LF5)>>16)&0xffff 5255 0000509c 2484f578 addui r4,r4,(LC9_LF5)&0xffff 5256 000050a0 afa40000 sw (r29),r4 5257 000050a4 3c010000 lhi r1,((LC10_LF5)>>16)&0xffff 5258 000050a8 2421f580 addui r1,r1,(LC10_LF5)&0xffff 5259 000050ac afa10004 sw 4(r29),r1 5260 000050b0 3c040000 lhi r4,((LC11_LF5)>>16)&0xffff 5261 000050b4 2484f590 addui r4,r4,(LC11_LF5)&0xffff 5262 000050b8 afa40008 sw 8(r29),r4 5263 000050bc 0c005f2c jal _printf 5264 000050c0 54000000 nop; not filled. 5265 000050c4 23bd0010 addi r29,r29,#16 5266 000050c8 L133_LF5: 5267 000050c8 8c61000c lw r1,12(r3) 5268 000050cc 2004ffc0 addi r4,r0,#-64 5269 000050d0 00240824 and r1,r1,r4 5270 000050d4 34210004 ori r1,r1,#4 5271 000050d8 ac61000c sw 12(r3),r1 5272 000050dc 207f0068 addi r31,r3,#104 5273 000050e0 8c610070 lw r1,112(r3) 5274 000050e4 8c210008 lw r1,8(r1) 5275 000050e8 6c210000 sgti r1,r1,#0 5276 000050ec 1020002c beqz r1,L136_LF5 5277 000050f0 54000000 nop; not filled. 5278 000050f4 8c61006c lw r1,108(r3) 5279 000050f8 8fe40000 lw r4,(r31) 5280 000050fc ac240000 sw (r1),r4 5281 00005100 8fe10000 lw r1,(r31) 5282 00005104 8c64006c lw r4,108(r3) 5283 00005108 ac240004 sw 4(r1),r4 5284 0000510c 8c620070 lw r2,112(r3) 5285 00005110 8c410008 lw r1,8(r2) 5286 00005114 2021ffff addi r1,r1,#-1 5287 00005118 ac410008 sw 8(r2),r1 5288 0000511c L136_LF5: 5289 0000511c 20040000 addi r4,r0,#0 5290 00005120 afe40000 sw (r31),r4 5291 00005124 3c020000 lhi r2,((_waitQueue_LF5)>>16)&0xffff 5292 00005128 2442fe44 addui r2,r2,(_waitQueue_LF5)&0xffff 5293 0000512c 8c410004 lw r1,4(r2) 5294 00005130 ac620070 sw 112(r3),r2 5295 00005134 ac61006c sw 108(r3),r1 5296 00005138 8c240000 lw r4,(r1) 5297 0000513c afe40000 sw (r31),r4 5298 00005140 ac3f0000 sw (r1),r31 5299 00005144 8fe10000 lw r1,(r31) 5300 00005148 ac3f0004 sw 4(r1),r31 5301 0000514c 8c410008 lw r1,8(r2) 5302 00005150 20210001 addi r1,r1,#1 5303 00005154 ac410008 sw 8(r2),r1 5304 00005158 8fa20000 lw r2,0(r29) 5305 0000515c 8fa30004 lw r3,4(r29) 5306 00005160 8fa40008 lw r4,8(r29) 5307 00005164 8fdffff8 lw r31,-8(r30) 5308 00005168 001ee820 add r29,r0,r30 5309 0000516c 8fdefffc lw r30,-4(r30) 5310 00005170 4be00000 jr r31 5311 00005174 54000000 nop 5312 00005178 .endproc _ProcessSuspend 5313 00005178 .data 5314 0000f5ba .align 2 5315 0000f5bc LC12_LF5: 5316 0000f5bc 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 5316 0000f5c0 6e672075 5316 0000f5c4 70205043 5316 0000f5c8 42203078 5316 0000f5cc 25782e0a 5316 0000f5d0 00 5317 0000f5d1 .align 2 5318 0000f5d4 LC13_LF5: 5319 0000f5d4 50726f63 .ascii "ProcessWakeup\000" 5319 0000f5d8 65737357 5319 0000f5dc 616b6575 5319 0000f5e0 7000 5320 0000f5e2 .align 2 5321 0000f5e4 LC14_LF5: 5322 0000f5e4 54727969 .ascii "Trying to wake up a non-sleeping process!\n\000" 5322 0000f5e8 6e672074 5322 0000f5ec 6f207761 5322 0000f5f0 6b652075 5322 0000f5f4 70206120 5322 0000f5f8 6e6f6e2d 5322 0000f5fc 736c6565 5322 0000f600 70696e67 5322 0000f604 2070726f 5322 0000f608 63657373 5322 0000f60c 210a00 5323 0000f60f .text 5324 00005178 .align 2 5325 00005178 .proc _ProcessWakeup 5326 00005178 .global _ProcessWakeup 5327 00005178 _ProcessWakeup: 5328 ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. 5329 00005178 afbefffc sw -4(r29),r30; push fp 5330 0000517c 001df020 add r30,r0,r29; fp = sp 5331 00005180 afbffff8 sw -8(r29),r31; push ret addr 5332 00005184 2fbd0018 subui r29,r29,#24; alloc local storage 5333 00005188 afa20000 sw 0(r29),r2 5334 0000518c afa30004 sw 4(r29),r3 5335 00005190 afa40008 sw 8(r29),r4 5336 00005194 8fc30000 lw r3,(r30) 5337 00005198 23bdfff8 addi r29,r29,#-8 5338 0000519c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5339 000051a0 2442fd60 addui r2,r2,(_debugstr)&0xffff 5340 000051a4 afa20000 sw (r29),r2 5341 000051a8 20040070 addi r4,r0,#112 5342 000051ac afa40004 sw 4(r29),r4 5343 000051b0 0fffec80 jal _dindex 5344 000051b4 54000000 nop; not filled. 5345 000051b8 23bd0008 addi r29,r29,#8 5346 000051bc 64210000 snei r1,r1,#0 5347 000051c0 1420002c bnez r1,L142_LF5 5348 000051c4 54000000 nop; not filled. 5349 000051c8 23bdfff8 addi r29,r29,#-8 5350 000051cc afa20000 sw (r29),r2 5351 000051d0 2004002b addi r4,r0,#43 5352 000051d4 afa40004 sw 4(r29),r4 5353 000051d8 0fffec58 jal _dindex 5354 000051dc 54000000 nop; not filled. 5355 000051e0 23bd0008 addi r29,r29,#8 5356 000051e4 64210000 snei r1,r1,#0 5357 000051e8 10200024 beqz r1,L141_LF5 5358 000051ec 54000000 nop; not filled. 5359 000051f0 L142_LF5: 5360 000051f0 23bdfff8 addi r29,r29,#-8 5361 000051f4 3c040000 lhi r4,((LC12_LF5)>>16)&0xffff 5362 000051f8 2484f5bc addui r4,r4,(LC12_LF5)&0xffff 5363 000051fc afa40000 sw (r29),r4 5364 00005200 afa30004 sw 4(r29),r3 5365 00005204 0c005de4 jal _printf 5366 00005208 54000000 nop; not filled. 5367 0000520c 23bd0008 addi r29,r29,#8 5368 00005210 L141_LF5: 5369 00005210 8064000f lb r4,15(r3) 5370 00005214 58810002 srli r1,r4,#0x2 5371 00005218 30210001 andi r1,r1,#1 5372 0000521c 14200038 bnez r1,L144_LF5 5373 00005220 54000000 nop; not filled. 5374 00005224 23bdfff0 addi r29,r29,#-16 5375 00005228 3c040000 lhi r4,((LC9_LF5)>>16)&0xffff 5376 0000522c 2484f578 addui r4,r4,(LC9_LF5)&0xffff 5377 00005230 afa40000 sw (r29),r4 5378 00005234 3c010000 lhi r1,((LC13_LF5)>>16)&0xffff 5379 00005238 2421f5d4 addui r1,r1,(LC13_LF5)&0xffff 5380 0000523c afa10004 sw 4(r29),r1 5381 00005240 3c040000 lhi r4,((LC14_LF5)>>16)&0xffff 5382 00005244 2484f5e4 addui r4,r4,(LC14_LF5)&0xffff 5383 00005248 afa40008 sw 8(r29),r4 5384 0000524c 0c005d9c jal _printf 5385 00005250 54000000 nop; not filled. 5386 00005254 23bd0010 addi r29,r29,#16 5387 00005258 L144_LF5: 5388 00005258 8c61000c lw r1,12(r3) 5389 0000525c 2004ffc0 addi r4,r0,#-64 5390 00005260 00240824 and r1,r1,r4 5391 00005264 34210002 ori r1,r1,#2 5392 00005268 ac61000c sw 12(r3),r1 5393 0000526c 207f0068 addi r31,r3,#104 5394 00005270 8c610070 lw r1,112(r3) 5395 00005274 8c210008 lw r1,8(r1) 5396 00005278 6c210000 sgti r1,r1,#0 5397 0000527c 1020002c beqz r1,L147_LF5 5398 00005280 54000000 nop; not filled. 5399 00005284 8c61006c lw r1,108(r3) 5400 00005288 8fe40000 lw r4,(r31) 5401 0000528c ac240000 sw (r1),r4 5402 00005290 8fe10000 lw r1,(r31) 5403 00005294 8c64006c lw r4,108(r3) 5404 00005298 ac240004 sw 4(r1),r4 5405 0000529c 8c620070 lw r2,112(r3) 5406 000052a0 8c410008 lw r1,8(r2) 5407 000052a4 2021ffff addi r1,r1,#-1 5408 000052a8 ac410008 sw 8(r2),r1 5409 000052ac L147_LF5: 5410 000052ac 20040000 addi r4,r0,#0 5411 000052b0 afe40000 sw (r31),r4 5412 000052b4 3c020000 lhi r2,((_runQueue_LF5)>>16)&0xffff 5413 000052b8 2442fe38 addui r2,r2,(_runQueue_LF5)&0xffff 5414 000052bc 8c410004 lw r1,4(r2) 5415 000052c0 ac620070 sw 112(r3),r2 5416 000052c4 ac61006c sw 108(r3),r1 5417 000052c8 8c240000 lw r4,(r1) 5418 000052cc afe40000 sw (r31),r4 5419 000052d0 ac3f0000 sw (r1),r31 5420 000052d4 8fe10000 lw r1,(r31) 5421 000052d8 ac3f0004 sw 4(r1),r31 5422 000052dc 8c410008 lw r1,8(r2) 5423 000052e0 20210001 addi r1,r1,#1 5424 000052e4 ac410008 sw 8(r2),r1 5425 000052e8 8fa20000 lw r2,0(r29) 5426 000052ec 8fa30004 lw r3,4(r29) 5427 000052f0 8fa40008 lw r4,8(r29) 5428 000052f4 8fdffff8 lw r31,-8(r30) 5429 000052f8 001ee820 add r29,r0,r30 5430 000052fc 8fdefffc lw r30,-4(r30) 5431 00005300 4be00000 jr r31 5432 00005304 54000000 nop 5433 00005308 .endproc _ProcessWakeup 5434 00005308 .data 5435 0000f60f .align 2 5436 0000f610 LC15_LF5: 5437 0000f610 456e7465 .ascii "Entering ProcessDestroy for 0x%x.\n\000" 5437 0000f614 72696e67 5437 0000f618 2050726f 5437 0000f61c 63657373 5437 0000f620 44657374 5437 0000f624 726f7920 5437 0000f628 666f7220 5437 0000f62c 30782578 5437 0000f630 2e0a00 5438 0000f633 .align 2 5439 0000f634 LC16_LF5: 5440 0000f634 4c656176 .ascii "Leaving ProcessDestroy for 0x%x.\n\000" 5440 0000f638 696e6720 5440 0000f63c 50726f63 5440 0000f640 65737344 5440 0000f644 65737472 5440 0000f648 6f792066 5440 0000f64c 6f722030 5440 0000f650 7825782e 5440 0000f654 0a00 5441 0000f656 .text 5442 00005308 .align 2 5443 00005308 .proc _ProcessDestroy 5444 00005308 .global _ProcessDestroy 5445 00005308 _ProcessDestroy: 5446 ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. 5447 00005308 afbefffc sw -4(r29),r30; push fp 5448 0000530c 001df020 add r30,r0,r29; fp = sp 5449 00005310 afbffff8 sw -8(r29),r31; push ret addr 5450 00005314 2fbd0018 subui r29,r29,#24; alloc local storage 5451 00005318 afa20000 sw 0(r29),r2 5452 0000531c afa30004 sw 4(r29),r3 5453 00005320 afa40008 sw 8(r29),r4 5454 00005324 8fc30000 lw r3,(r30) 5455 00005328 23bdfff8 addi r29,r29,#-8 5456 0000532c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5457 00005330 2442fd60 addui r2,r2,(_debugstr)&0xffff 5458 00005334 afa20000 sw (r29),r2 5459 00005338 20040070 addi r4,r0,#112 5460 0000533c afa40004 sw 4(r29),r4 5461 00005340 0fffeaf0 jal _dindex 5462 00005344 54000000 nop; not filled. 5463 00005348 23bd0008 addi r29,r29,#8 5464 0000534c 64210000 snei r1,r1,#0 5465 00005350 1420002c bnez r1,L153_LF5 5466 00005354 54000000 nop; not filled. 5467 00005358 23bdfff8 addi r29,r29,#-8 5468 0000535c afa20000 sw (r29),r2 5469 00005360 2004002b addi r4,r0,#43 5470 00005364 afa40004 sw 4(r29),r4 5471 00005368 0fffeac8 jal _dindex 5472 0000536c 54000000 nop; not filled. 5473 00005370 23bd0008 addi r29,r29,#8 5474 00005374 64210000 snei r1,r1,#0 5475 00005378 10200024 beqz r1,L152_LF5 5476 0000537c 54000000 nop; not filled. 5477 00005380 L153_LF5: 5478 00005380 23bdfff8 addi r29,r29,#-8 5479 00005384 3c040000 lhi r4,((LC15_LF5)>>16)&0xffff 5480 00005388 2484f610 addui r4,r4,(LC15_LF5)&0xffff 5481 0000538c afa40000 sw (r29),r4 5482 00005390 afa30004 sw 4(r29),r3 5483 00005394 0c005c54 jal _printf 5484 00005398 54000000 nop; not filled. 5485 0000539c 23bd0008 addi r29,r29,#8 5486 000053a0 L152_LF5: 5487 000053a0 8c61000c lw r1,12(r3) 5488 000053a4 2004ffc0 addi r4,r0,#-64 5489 000053a8 00240824 and r1,r1,r4 5490 000053ac 34210010 ori r1,r1,#16 5491 000053b0 ac61000c sw 12(r3),r1 5492 000053b4 207f0068 addi r31,r3,#104 5493 000053b8 8c610070 lw r1,112(r3) 5494 000053bc 8c210008 lw r1,8(r1) 5495 000053c0 6c210000 sgti r1,r1,#0 5496 000053c4 1020002c beqz r1,L156_LF5 5497 000053c8 54000000 nop; not filled. 5498 000053cc 8c61006c lw r1,108(r3) 5499 000053d0 8fe40000 lw r4,(r31) 5500 000053d4 ac240000 sw (r1),r4 5501 000053d8 8fe10000 lw r1,(r31) 5502 000053dc 8c64006c lw r4,108(r3) 5503 000053e0 ac240004 sw 4(r1),r4 5504 000053e4 8c620070 lw r2,112(r3) 5505 000053e8 8c410008 lw r1,8(r2) 5506 000053ec 2021ffff addi r1,r1,#-1 5507 000053f0 ac410008 sw 8(r2),r1 5508 000053f4 L156_LF5: 5509 000053f4 20040000 addi r4,r0,#0 5510 000053f8 afe40000 sw (r31),r4 5511 000053fc 3c020000 lhi r2,((_zombieQueue_LF5)>>16)&0xffff 5512 00005400 2442fe50 addui r2,r2,(_zombieQueue_LF5)&0xffff 5513 00005404 ac620070 sw 112(r3),r2 5514 00005408 ac62006c sw 108(r3),r2 5515 0000540c 8c440000 lw r4,(r2) 5516 00005410 afe40000 sw (r31),r4 5517 00005414 ac5f0000 sw (r2),r31 5518 00005418 8fe10000 lw r1,(r31) 5519 0000541c ac3f0004 sw 4(r1),r31 5520 00005420 8c410008 lw r1,8(r2) 5521 00005424 20210001 addi r1,r1,#1 5522 00005428 ac410008 sw 8(r2),r1 5523 0000542c 23bdfff8 addi r29,r29,#-8 5524 00005430 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5525 00005434 2442fd60 addui r2,r2,(_debugstr)&0xffff 5526 00005438 afa20000 sw (r29),r2 5527 0000543c 20040070 addi r4,r0,#112 5528 00005440 afa40004 sw 4(r29),r4 5529 00005444 0fffe9ec jal _dindex 5530 00005448 54000000 nop; not filled. 5531 0000544c 23bd0008 addi r29,r29,#8 5532 00005450 64210000 snei r1,r1,#0 5533 00005454 1420002c bnez r1,L160_LF5 5534 00005458 54000000 nop; not filled. 5535 0000545c 23bdfff8 addi r29,r29,#-8 5536 00005460 afa20000 sw (r29),r2 5537 00005464 2004002b addi r4,r0,#43 5538 00005468 afa40004 sw 4(r29),r4 5539 0000546c 0fffe9c4 jal _dindex 5540 00005470 54000000 nop; not filled. 5541 00005474 23bd0008 addi r29,r29,#8 5542 00005478 64210000 snei r1,r1,#0 5543 0000547c 10200024 beqz r1,L159_LF5 5544 00005480 54000000 nop; not filled. 5545 00005484 L160_LF5: 5546 00005484 23bdfff8 addi r29,r29,#-8 5547 00005488 3c040000 lhi r4,((LC16_LF5)>>16)&0xffff 5548 0000548c 2484f634 addui r4,r4,(LC16_LF5)&0xffff 5549 00005490 afa40000 sw (r29),r4 5550 00005494 afa30004 sw 4(r29),r3 5551 00005498 0c005b50 jal _printf 5552 0000549c 54000000 nop; not filled. 5553 000054a0 23bd0008 addi r29,r29,#8 5554 000054a4 L159_LF5: 5555 000054a4 8fa20000 lw r2,0(r29) 5556 000054a8 8fa30004 lw r3,4(r29) 5557 000054ac 8fa40008 lw r4,8(r29) 5558 000054b0 8fdffff8 lw r31,-8(r30) 5559 000054b4 001ee820 add r29,r0,r30 5560 000054b8 8fdefffc lw r30,-4(r30) 5561 000054bc 4be00000 jr r31 5562 000054c0 54000000 nop 5563 000054c4 .endproc _ProcessDestroy 5564 000054c4 .data 5565 0000f656 .align 2 5566 0000f658 _str52_LF5: 5567 0000f658 .space 4 5568 0000f65c .align 2 5569 0000f65c _location53_LF5: 5570 0000f65c 00000000 .word 0 5571 0000f660 .text 5572 000054c4 .align 2 5573 000054c4 .proc _get_argument 5574 000054c4 .global _get_argument 5575 000054c4 _get_argument: 5576 ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. 5577 000054c4 afbefffc sw -4(r29),r30; push fp 5578 000054c8 001df020 add r30,r0,r29; fp = sp 5579 000054cc afbffff8 sw -8(r29),r31; push ret addr 5580 000054d0 2fbd0018 subui r29,r29,#24; alloc local storage 5581 000054d4 afa20000 sw 0(r29),r2 5582 000054d8 afa30004 sw 4(r29),r3 5583 000054dc afa40008 sw 8(r29),r4 5584 000054e0 afa5000c sw 12(r29),r5 5585 000054e4 8fc20000 lw r2,(r30) 5586 000054e8 64410000 snei r1,r2,#0 5587 000054ec 10200020 beqz r1,L173_LF5 5588 000054f0 54000000 nop; not filled. 5589 000054f4 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 5590 000054f8 2421f658 addui r1,r1,(_str52_LF5)&0xffff 5591 000054fc ac220000 sw (r1),r2 5592 00005500 3c010000 lhi r1,((_location53_LF5)>>16)&0xffff 5593 00005504 2421f65c addui r1,r1,(_location53_LF5)&0xffff 5594 00005508 20050000 addi r5,r0,#0 5595 0000550c ac250000 sw (r1),r5 5596 00005510 L173_LF5: 5597 00005510 3c1f0000 lhi r31,((_location53_LF5)>>16)&0xffff 5598 00005514 27fff65c addui r31,r31,(_location53_LF5)&0xffff 5599 00005518 8fe30000 lw r3,(r31) 5600 0000551c 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 5601 00005520 2421f658 addui r1,r1,(_str52_LF5)&0xffff 5602 00005524 8c220000 lw r2,(r1) 5603 00005528 00430820 add r1,r2,r3 5604 0000552c 90210000 lbu r1,(r1) 5605 00005530 64210000 snei r1,r1,#0 5606 00005534 10200010 beqz r1,L175_LF5 5607 00005538 54000000 nop; not filled. 5608 0000553c 6c610062 sgti r1,r3,#98 5609 00005540 10200020 beqz r1,L174_LF5 5610 00005544 54000000 nop; not filled. 5611 00005548 L175_LF5: 5612 00005548 20010000 addi r1,r0,#0 5613 0000554c 08000058 j L182_LF5 5614 00005550 54000000 nop; not filled. 5615 00005554 L183_LF5: 5616 00005554 23e10001 addi r1,r31,#1 5617 00005558 ac410000 sw (r2),r1 5618 0000555c 08000044 j L177_LF5 5619 00005560 54000000 nop; not filled. 5620 00005564 L174_LF5: 5621 00005564 70610063 slei r1,r3,#99 5622 00005568 10200038 beqz r1,L177_LF5 5623 0000556c 54000000 nop; not filled. 5624 00005570 00022020 add r4,r0,r2 5625 00005574 001f1020 add r2,r0,r31 5626 00005578 L179_LF5: 5627 00005578 8c5f0000 lw r31,(r2) 5628 0000557c 009f0820 add r1,r4,r31 5629 00005580 90210000 lbu r1,(r1) 5630 00005584 64210000 snei r1,r1,#0 5631 00005588 1020ffc8 beqz r1,L183_LF5 5632 0000558c 54000000 nop; not filled. 5633 00005590 23e10001 addi r1,r31,#1 5634 00005594 ac410000 sw (r2),r1 5635 00005598 70210063 slei r1,r1,#99 5636 0000559c 1420ffd8 bnez r1,L179_LF5 5637 000055a0 54000000 nop; not filled. 5638 000055a4 L177_LF5: 5639 000055a4 00030820 add r1,r0,r3 5640 000055a8 L182_LF5: 5641 000055a8 8fa20000 lw r2,0(r29) 5642 000055ac 8fa30004 lw r3,4(r29) 5643 000055b0 8fa40008 lw r4,8(r29) 5644 000055b4 8fa5000c lw r5,12(r29) 5645 000055b8 8fdffff8 lw r31,-8(r30) 5646 000055bc 001ee820 add r29,r0,r30 5647 000055c0 8fdefffc lw r30,-4(r30) 5648 000055c4 4be00000 jr r31 5649 000055c8 54000000 nop 5650 000055cc .endproc _get_argument 5651 000055cc .data 5652 0000f660 .align 2 5653 0000f660 LC17_LF5: 5654 0000f660 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 5654 0000f664 696e7465 5654 0000f668 72727570 5654 0000f66c 74207661 5654 0000f670 6c756520 5654 0000f674 77617320 5654 0000f678 30782578 5654 0000f67c 2e0a00 5655 0000f67f .align 2 5656 0000f680 LC18_LF5: 5657 0000f680 456e7465 .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" 5657 0000f684 72696e67 5657 0000f688 2050726f 5657 0000f68c 63657373 5657 0000f690 466f726b 5657 0000f694 20617267 5657 0000f698 733d3078 5657 0000f69c 25782030 5657 0000f6a0 78257820 5657 0000f6a4 25732025 5657 0000f6a8 640a00 5658 0000f6ab .align 2 5659 0000f6ac LC19_LF5: 5660 0000f6ac 46415441 .ascii "FATAL error: no free processes!\n\000" 5660 0000f6b0 4c206572 5660 0000f6b4 726f723a 5660 0000f6b8 206e6f20 5660 0000f6bc 66726565 5660 0000f6c0 2070726f 5660 0000f6c4 63657373 5660 0000f6c8 6573210a 5660 0000f6cc 00 5661 0000f6cd .align 2 5662 0000f6d0 LC20_LF5: 5663 0000f6d0 476f7420 .ascii "Got a link @ 0x%x\n\000" 5663 0000f6d4 61206c69 5663 0000f6d8 6e6b2040 5663 0000f6dc 20307825 5663 0000f6e0 780a00 5664 0000f6e3 .align 2 5665 0000f6e4 LC21_LF5: 5666 0000f6e4 4265666f .ascii "Before restore interrupt value is 0x%x.\n\000" 5666 0000f6e8 72652072 5666 0000f6ec 6573746f 5666 0000f6f0 72652069 5666 0000f6f4 6e746572 5666 0000f6f8 72757074 5666 0000f6fc 2076616c 5666 0000f700 75652069 5666 0000f704 73203078 5666 0000f708 25782e0a 5666 0000f70c 00 5667 0000f70d .align 2 5668 0000f710 LC22_LF5: 5669 0000f710 4e657720 .ascii "New interrupt value is 0x%x.\n\000" 5669 0000f714 696e7465 5669 0000f718 72727570 5669 0000f71c 74207661 5669 0000f720 6c756520 5669 0000f724 69732030 5669 0000f728 7825782e 5669 0000f72c 0a00 5670 0000f72e .align 2 5671 0000f730 LC23_LF5: 5672 0000f730 61464154 .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" 5672 0000f734 414c3a20 5672 0000f738 636f756c 5672 0000f73c 646e2774 5672 0000f740 20616c6c 5672 0000f744 6f636174 5672 0000f748 65206d65 5672 0000f74c 6d6f7279 5672 0000f750 202d206e 5672 0000f754 6f206672 5672 0000f758 65652070 5672 0000f75c 61676573 5672 0000f760 210a00 5673 0000f763 .align 2 5674 0000f764 LC24_LF5: 5675 0000f764 62464154 .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" 5675 0000f768 414c3a20 5675 0000f76c 636f756c 5675 0000f770 646e2774 5675 0000f774 20616c6c 5675 0000f778 6f636174 5675 0000f77c 65207379 5675 0000f780 7374656d 5675 0000f784 20737461 5675 0000f788 636b202d 5675 0000f78c 206e6f20 5675 0000f790 66726565 5675 0000f794 20706167 5675 0000f798 6573210a 5675 0000f79c 00 5676 0000f79d .align 2 5677 0000f7a0 LC25_LF5: 5678 0000f7a0 53657474 .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" 5678 0000f7a4 696e6720 5678 0000f7a8 75702050 5678 0000f7ac 43422040 5678 0000f7b0 20307825 5678 0000f7b4 78202873 5678 0000f7b8 79732073 5678 0000f7bc 7461636b 5678 0000f7c0 3d307825 5678 0000f7c4 782c206d 5678 0000f7c8 656d3d30 5678 0000f7cc 7825782c 5678 0000f7d0 2073697a 5678 0000f7d4 653d3078 5678 0000f7d8 2578290a 5678 0000f7dc 00 5679 0000f7dd .align 2 5680 0000f7e0 LC26_LF5: 5681 0000f7e0 41626f75 .ascii "About to load %s\n\000" 5681 0000f7e4 7420746f 5681 0000f7e8 206c6f61 5681 0000f7ec 64202573 5681 0000f7f0 0a00 5682 0000f7f2 .align 2 5683 0000f7f4 LC27_LF5: 5684 0000f7f4 46696c65 .ascii "File %s -> start=0x%08x\n\000" 5684 0000f7f8 20257320 5684 0000f7fc 2d3e2073 5684 0000f800 74617274 5684 0000f804 3d307825 5684 0000f808 3038780a 5684 0000f80c 00 5685 0000f80d .align 2 5686 0000f810 LC28_LF5: 5687 0000f810 46696c65 .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" 5687 0000f814 20257320 5687 0000f818 2d3e2063 5687 0000f81c 6f646520 5687 0000f820 40203078 5687 0000f824 25303878 5687 0000f828 20287369 5687 0000f82c 7a653d30 5687 0000f830 78253038 5687 0000f834 78290a00 5688 0000f838 .align 2 5689 0000f838 LC29_LF5: 5690 0000f838 46696c65 .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" 5690 0000f83c 20257320 5690 0000f840 2d3e2064 5690 0000f844 61746120 5690 0000f848 40203078 5690 0000f84c 25303878 5690 0000f850 20287369 5690 0000f854 7a653d30 5690 0000f858 78253038 5690 0000f85c 78290a00 5691 0000f860 .align 2 5692 0000f860 LC30_LF5: 5693 0000f860 506c6163 .ascii "Placing %d bytes at vaddr %08x.\n\000" 5693 0000f864 696e6720 5693 0000f868 25642062 5693 0000f86c 79746573 5693 0000f870 20617420 5693 0000f874 76616464 5693 0000f878 72202530 5693 0000f87c 38782e0a 5693 0000f880 00 5694 0000f881 .align 2 5695 0000f884 LC31_LF5: 5696 0000f884 53657474 .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" 5696 0000f888 696e6720 5696 0000f88c 63757272 5696 0000f890 656e7450 5696 0000f894 43423d30 5696 0000f898 7825782c 5696 0000f89c 20737461 5696 0000f8a0 636b6672 5696 0000f8a4 616d653d 5696 0000f8a8 30782578 5696 0000f8ac 0a00 5697 0000f8ae .align 2 5698 0000f8b0 LC32_LF5: 5699 0000f8b0 4c656176 .ascii "Leaving ProcessFork (%s)\n\000" 5699 0000f8b4 696e6720 5699 0000f8b8 50726f63 5699 0000f8bc 65737346 5699 0000f8c0 6f726b20 5699 0000f8c4 28257329 5699 0000f8c8 0a00 5700 0000f8ca .text 5701 000055cc .align 2 5702 000055cc .proc _ProcessFork 5703 000055cc .global _ProcessFork 5704 000055cc _ProcessFork: 5705 ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. 5706 000055cc afbefffc sw -4(r29),r30; push fp 5707 000055d0 001df020 add r30,r0,r29; fp = sp 5708 000055d4 afbffff8 sw -8(r29),r31; push ret addr 5709 000055d8 2fbd02d8 subui r29,r29,#728; alloc local storage 5710 000055dc afa20000 sw 0(r29),r2 5711 000055e0 afa30004 sw 4(r29),r3 5712 000055e4 afa40008 sw 8(r29),r4 5713 000055e8 afa5000c sw 12(r29),r5 5714 000055ec afa60010 sw 16(r29),r6 5715 000055f0 afa70014 sw 20(r29),r7 5716 000055f4 afa80018 sw 24(r29),r8 5717 000055f8 afa9001c sw 28(r29),r9 5718 000055fc afaa0020 sw 32(r29),r10 5719 00005600 afab0024 sw 36(r29),r11 5720 00005604 afac0028 sw 40(r29),r12 5721 00005608 afad002c sw 44(r29),r13 5722 0000560c 8fc50000 lw r5,(r30) 5723 00005610 8fca0004 lw r10,4(r30) 5724 00005614 8fcc0008 lw r12,8(r30) 5725 00005618 8fc4000c lw r4,12(r30) 5726 0000561c 200d0000 addi r13,r0,#0 5727 00005620 afcdfd58 sw -680(r30),r13 5728 00005624 23bdfff8 addi r29,r29,#-8 5729 00005628 200d000f addi r13,r0,#15 5730 0000562c afad0000 sw (r29),r13 5731 00005630 0fffbc54 jal _SetIntrs 5732 00005634 54000000 nop; not filled. 5733 00005638 00011820 add r3,r0,r1 5734 0000563c 23bd0008 addi r29,r29,#8 5735 00005640 23bdfff8 addi r29,r29,#-8 5736 00005644 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5737 00005648 2442fd60 addui r2,r2,(_debugstr)&0xffff 5738 0000564c afa20000 sw (r29),r2 5739 00005650 200d0049 addi r13,r0,#73 5740 00005654 afad0004 sw 4(r29),r13 5741 00005658 0fffe7d8 jal _dindex 5742 0000565c 54000000 nop; not filled. 5743 00005660 23bd0008 addi r29,r29,#8 5744 00005664 64210000 snei r1,r1,#0 5745 00005668 1420002c bnez r1,L187_LF5 5746 0000566c 54000000 nop; not filled. 5747 00005670 23bdfff8 addi r29,r29,#-8 5748 00005674 afa20000 sw (r29),r2 5749 00005678 200d002b addi r13,r0,#43 5750 0000567c afad0004 sw 4(r29),r13 5751 00005680 0fffe7b0 jal _dindex 5752 00005684 54000000 nop; not filled. 5753 00005688 23bd0008 addi r29,r29,#8 5754 0000568c 64210000 snei r1,r1,#0 5755 00005690 10200024 beqz r1,L186_LF5 5756 00005694 54000000 nop; not filled. 5757 00005698 L187_LF5: 5758 00005698 23bdfff8 addi r29,r29,#-8 5759 0000569c 3c0d0000 lhi r13,((LC17_LF5)>>16)&0xffff 5760 000056a0 25adf660 addui r13,r13,(LC17_LF5)&0xffff 5761 000056a4 afad0000 sw (r29),r13 5762 000056a8 afa30004 sw 4(r29),r3 5763 000056ac 0c00593c jal _printf 5764 000056b0 54000000 nop; not filled. 5765 000056b4 23bd0008 addi r29,r29,#8 5766 000056b8 L186_LF5: 5767 000056b8 23bdfff8 addi r29,r29,#-8 5768 000056bc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5769 000056c0 2442fd60 addui r2,r2,(_debugstr)&0xffff 5770 000056c4 afa20000 sw (r29),r2 5771 000056c8 200d0070 addi r13,r0,#112 5772 000056cc afad0004 sw 4(r29),r13 5773 000056d0 0fffe760 jal _dindex 5774 000056d4 54000000 nop; not filled. 5775 000056d8 23bd0008 addi r29,r29,#8 5776 000056dc 64210000 snei r1,r1,#0 5777 000056e0 1420002c bnez r1,L189_LF5 5778 000056e4 54000000 nop; not filled. 5779 000056e8 23bdfff8 addi r29,r29,#-8 5780 000056ec afa20000 sw (r29),r2 5781 000056f0 200d002b addi r13,r0,#43 5782 000056f4 afad0004 sw 4(r29),r13 5783 000056f8 0fffe738 jal _dindex 5784 000056fc 54000000 nop; not filled. 5785 00005700 23bd0008 addi r29,r29,#8 5786 00005704 64210000 snei r1,r1,#0 5787 00005708 10200030 beqz r1,L188_LF5 5788 0000570c 54000000 nop; not filled. 5789 00005710 L189_LF5: 5790 00005710 23bdffe8 addi r29,r29,#-24 5791 00005714 3c0d0000 lhi r13,((LC18_LF5)>>16)&0xffff 5792 00005718 25adf680 addui r13,r13,(LC18_LF5)&0xffff 5793 0000571c afad0000 sw (r29),r13 5794 00005720 afa50004 sw 4(r29),r5 5795 00005724 afaa0008 sw 8(r29),r10 5796 00005728 afac000c sw 12(r29),r12 5797 0000572c afa40010 sw 16(r29),r4 5798 00005730 0c0058b8 jal _printf 5799 00005734 54000000 nop; not filled. 5800 00005738 23bd0018 addi r29,r29,#24 5801 0000573c L188_LF5: 5802 0000573c 3c020000 lhi r2,((_freepcbs_LF5)>>16)&0xffff 5803 00005740 2442fe2c addui r2,r2,(_freepcbs_LF5)&0xffff 5804 00005744 8c410008 lw r1,8(r2) 5805 00005748 60210000 seqi r1,r1,#0 5806 0000574c 10200028 beqz r1,L190_LF5 5807 00005750 54000000 nop; not filled. 5808 00005754 23bdfff8 addi r29,r29,#-8 5809 00005758 3c0d0000 lhi r13,((LC19_LF5)>>16)&0xffff 5810 0000575c 25adf6ac addui r13,r13,(LC19_LF5)&0xffff 5811 00005760 afad0000 sw (r29),r13 5812 00005764 0c005884 jal _printf 5813 00005768 54000000 nop; not filled. 5814 0000576c 0c005864 jal _exitsim 5815 00005770 54000000 nop; not filled. 5816 00005774 23bd0008 addi r29,r29,#8 5817 00005778 L190_LF5: 5818 00005778 8c490000 lw r9,(r2) 5819 0000577c 23bdfff8 addi r29,r29,#-8 5820 00005780 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5821 00005784 2442fd60 addui r2,r2,(_debugstr)&0xffff 5822 00005788 afa20000 sw (r29),r2 5823 0000578c 200d0070 addi r13,r0,#112 5824 00005790 afad0004 sw 4(r29),r13 5825 00005794 0fffe69c jal _dindex 5826 00005798 54000000 nop; not filled. 5827 0000579c 23bd0008 addi r29,r29,#8 5828 000057a0 64210000 snei r1,r1,#0 5829 000057a4 1420002c bnez r1,L195_LF5 5830 000057a8 54000000 nop; not filled. 5831 000057ac 23bdfff8 addi r29,r29,#-8 5832 000057b0 afa20000 sw (r29),r2 5833 000057b4 200d002b addi r13,r0,#43 5834 000057b8 afad0004 sw 4(r29),r13 5835 000057bc 0fffe674 jal _dindex 5836 000057c0 54000000 nop; not filled. 5837 000057c4 23bd0008 addi r29,r29,#8 5838 000057c8 64210000 snei r1,r1,#0 5839 000057cc 10200024 beqz r1,L194_LF5 5840 000057d0 54000000 nop; not filled. 5841 000057d4 L195_LF5: 5842 000057d4 23bdfff8 addi r29,r29,#-8 5843 000057d8 3c0d0000 lhi r13,((LC20_LF5)>>16)&0xffff 5844 000057dc 25adf6d0 addui r13,r13,(LC20_LF5)&0xffff 5845 000057e0 afad0000 sw (r29),r13 5846 000057e4 afa90004 sw 4(r29),r9 5847 000057e8 0c005800 jal _printf 5848 000057ec 54000000 nop; not filled. 5849 000057f0 23bd0008 addi r29,r29,#8 5850 000057f4 L194_LF5: 5851 000057f4 8d210008 lw r1,8(r9) 5852 000057f8 8c210008 lw r1,8(r1) 5853 000057fc 6c210000 sgti r1,r1,#0 5854 00005800 1020002c beqz r1,L197_LF5 5855 00005804 54000000 nop; not filled. 5856 00005808 8d210004 lw r1,4(r9) 5857 0000580c 8d2d0000 lw r13,(r9) 5858 00005810 ac2d0000 sw (r1),r13 5859 00005814 8d210000 lw r1,(r9) 5860 00005818 8d2d0004 lw r13,4(r9) 5861 0000581c ac2d0004 sw 4(r1),r13 5862 00005820 8d220008 lw r2,8(r9) 5863 00005824 8c410008 lw r1,8(r2) 5864 00005828 2021ffff addi r1,r1,#-1 5865 0000582c ac410008 sw 8(r2),r1 5866 00005830 L197_LF5: 5867 00005830 200d0000 addi r13,r0,#0 5868 00005834 ad2d0000 sw (r9),r13 5869 00005838 8d26000c lw r6,12(r9) 5870 0000583c 8cc1000c lw r1,12(r6) 5871 00005840 200dffc0 addi r13,r0,#-64 5872 00005844 002d0824 and r1,r1,r13 5873 00005848 34210002 ori r1,r1,#2 5874 0000584c acc1000c sw 12(r6),r1 5875 00005850 23bdfff8 addi r29,r29,#-8 5876 00005854 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5877 00005858 2442fd60 addui r2,r2,(_debugstr)&0xffff 5878 0000585c afa20000 sw (r29),r2 5879 00005860 200d0049 addi r13,r0,#73 5880 00005864 afad0004 sw 4(r29),r13 5881 00005868 0fffe5c8 jal _dindex 5882 0000586c 54000000 nop; not filled. 5883 00005870 23bd0008 addi r29,r29,#8 5884 00005874 64210000 snei r1,r1,#0 5885 00005878 1420002c bnez r1,L200_LF5 5886 0000587c 54000000 nop; not filled. 5887 00005880 23bdfff8 addi r29,r29,#-8 5888 00005884 afa20000 sw (r29),r2 5889 00005888 200d002b addi r13,r0,#43 5890 0000588c afad0004 sw 4(r29),r13 5891 00005890 0fffe5a0 jal _dindex 5892 00005894 54000000 nop; not filled. 5893 00005898 23bd0008 addi r29,r29,#8 5894 0000589c 64210000 snei r1,r1,#0 5895 000058a0 1020002c beqz r1,L199_LF5 5896 000058a4 54000000 nop; not filled. 5897 000058a8 L200_LF5: 5898 000058a8 0fffba18 jal _CurrentIntrs 5899 000058ac 54000000 nop; not filled. 5900 000058b0 23bdfff8 addi r29,r29,#-8 5901 000058b4 3c0d0000 lhi r13,((LC21_LF5)>>16)&0xffff 5902 000058b8 25adf6e4 addui r13,r13,(LC21_LF5)&0xffff 5903 000058bc afad0000 sw (r29),r13 5904 000058c0 afa10004 sw 4(r29),r1 5905 000058c4 0c005724 jal _printf 5906 000058c8 54000000 nop; not filled. 5907 000058cc 23bd0008 addi r29,r29,#8 5908 000058d0 L199_LF5: 5909 000058d0 23bdfff8 addi r29,r29,#-8 5910 000058d4 afa30000 sw (r29),r3 5911 000058d8 0fffb9ac jal _SetIntrs 5912 000058dc 54000000 nop; not filled. 5913 000058e0 23bd0008 addi r29,r29,#8 5914 000058e4 23bdfff8 addi r29,r29,#-8 5915 000058e8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5916 000058ec 2442fd60 addui r2,r2,(_debugstr)&0xffff 5917 000058f0 afa20000 sw (r29),r2 5918 000058f4 200d0049 addi r13,r0,#73 5919 000058f8 afad0004 sw 4(r29),r13 5920 000058fc 0fffe534 jal _dindex 5921 00005900 54000000 nop; not filled. 5922 00005904 23bd0008 addi r29,r29,#8 5923 00005908 64210000 snei r1,r1,#0 5924 0000590c 1420002c bnez r1,L203_LF5 5925 00005910 54000000 nop; not filled. 5926 00005914 23bdfff8 addi r29,r29,#-8 5927 00005918 afa20000 sw (r29),r2 5928 0000591c 200d002b addi r13,r0,#43 5929 00005920 afad0004 sw 4(r29),r13 5930 00005924 0fffe50c jal _dindex 5931 00005928 54000000 nop; not filled. 5932 0000592c 23bd0008 addi r29,r29,#8 5933 00005930 64210000 snei r1,r1,#0 5934 00005934 1020002c beqz r1,L202_LF5 5935 00005938 54000000 nop; not filled. 5936 0000593c L203_LF5: 5937 0000593c 0fffb984 jal _CurrentIntrs 5938 00005940 54000000 nop; not filled. 5939 00005944 23bdfff8 addi r29,r29,#-8 5940 00005948 3c0d0000 lhi r13,((LC22_LF5)>>16)&0xffff 5941 0000594c 25adf710 addui r13,r13,(LC22_LF5)&0xffff 5942 00005950 afad0000 sw (r29),r13 5943 00005954 afa10004 sw 4(r29),r1 5944 00005958 0c005690 jal _printf 5945 0000595c 54000000 nop; not filled. 5946 00005960 23bd0008 addi r29,r29,#8 5947 00005964 L202_LF5: 5948 00005964 23bdfff8 addi r29,r29,#-8 5949 00005968 20c10010 addi r1,r6,#16 5950 0000596c afa10000 sw (r29),r1 5951 00005970 afac0004 sw 4(r29),r12 5952 00005974 0fffdffc jal _dstrcpy 5953 00005978 54000000 nop; not filled. 5954 0000597c 200d0001 addi r13,r0,#1 5955 00005980 accd0064 sw 100(r6),r13 5956 00005984 0fffd5c0 jal _MemoryAllocPage 5957 00005988 54000000 nop; not filled. 5958 0000598c 00011020 add r2,r0,r1 5959 00005990 23bd0008 addi r29,r29,#8 5960 00005994 64410000 snei r1,r2,#0 5961 00005998 14200028 bnez r1,L204_LF5 5962 0000599c 54000000 nop; not filled. 5963 000059a0 23bdfff8 addi r29,r29,#-8 5964 000059a4 3c0d0000 lhi r13,((LC23_LF5)>>16)&0xffff 5965 000059a8 25adf730 addui r13,r13,(LC23_LF5)&0xffff 5966 000059ac afad0000 sw (r29),r13 5967 000059b0 0c005638 jal _printf 5968 000059b4 54000000 nop; not filled. 5969 000059b8 0c005618 jal _exitsim 5970 000059bc 54000000 nop; not filled. 5971 000059c0 23bd0008 addi r29,r29,#8 5972 000059c4 L204_LF5: 5973 000059c4 23bdfff8 addi r29,r29,#-8 5974 000059c8 afa20000 sw (r29),r2 5975 000059cc 0fffdcdc jal _MemorySetupPte 5976 000059d0 54000000 nop; not filled. 5977 000059d4 acc10060 sw 96(r6),r1 5978 000059d8 0fffd56c jal _MemoryAllocPage 5979 000059dc 54000000 nop; not filled. 5980 000059e0 00011020 add r2,r0,r1 5981 000059e4 23bd0008 addi r29,r29,#8 5982 000059e8 64410000 snei r1,r2,#0 5983 000059ec 14200028 bnez r1,L205_LF5 5984 000059f0 54000000 nop; not filled. 5985 000059f4 23bdfff8 addi r29,r29,#-8 5986 000059f8 3c0d0000 lhi r13,((LC24_LF5)>>16)&0xffff 5987 000059fc 25adf764 addui r13,r13,(LC24_LF5)&0xffff 5988 00005a00 afad0000 sw (r29),r13 5989 00005a04 0c0055e4 jal _printf 5990 00005a08 54000000 nop; not filled. 5991 00005a0c 0c0055c4 jal _exitsim 5992 00005a10 54000000 nop; not filled. 5993 00005a14 23bd0008 addi r29,r29,#8 5994 00005a18 L205_LF5: 5995 00005a18 50410010 slli r1,r2,#0x10 5996 00005a1c acc10008 sw 8(r6),r1 5997 00005a20 3428fe8c ori r8,r1,#65164 5998 00005a24 acc80004 sw 4(r6),r8 5999 00005a28 acc80000 sw (r6),r8 6000 00005a2c 23bdfff8 addi r29,r29,#-8 6001 00005a30 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6002 00005a34 2442fd60 addui r2,r2,(_debugstr)&0xffff 6003 00005a38 afa20000 sw (r29),r2 6004 00005a3c 200d0070 addi r13,r0,#112 6005 00005a40 afad0004 sw 4(r29),r13 6006 00005a44 0fffe3ec jal _dindex 6007 00005a48 54000000 nop; not filled. 6008 00005a4c 23bd0008 addi r29,r29,#8 6009 00005a50 64210000 snei r1,r1,#0 6010 00005a54 1420002c bnez r1,L207_LF5 6011 00005a58 54000000 nop; not filled. 6012 00005a5c 23bdfff8 addi r29,r29,#-8 6013 00005a60 afa20000 sw (r29),r2 6014 00005a64 200d002b addi r13,r0,#43 6015 00005a68 afad0004 sw 4(r29),r13 6016 00005a6c 0fffe3c4 jal _dindex 6017 00005a70 54000000 nop; not filled. 6018 00005a74 23bd0008 addi r29,r29,#8 6019 00005a78 64210000 snei r1,r1,#0 6020 00005a7c 10200040 beqz r1,L206_LF5 6021 00005a80 54000000 nop; not filled. 6022 00005a84 L207_LF5: 6023 00005a84 23bdffe8 addi r29,r29,#-24 6024 00005a88 3c0d0000 lhi r13,((LC25_LF5)>>16)&0xffff 6025 00005a8c 25adf7a0 addui r13,r13,(LC25_LF5)&0xffff 6026 00005a90 afad0000 sw (r29),r13 6027 00005a94 afa60004 sw 4(r29),r6 6028 00005a98 8ccd0008 lw r13,8(r6) 6029 00005a9c afad0008 sw 8(r29),r13 6030 00005aa0 8ccd0060 lw r13,96(r6) 6031 00005aa4 afad000c sw 12(r29),r13 6032 00005aa8 8cc10064 lw r1,100(r6) 6033 00005aac 50210010 slli r1,r1,#0x10 6034 00005ab0 afa10010 sw 16(r29),r1 6035 00005ab4 0c005534 jal _printf 6036 00005ab8 54000000 nop; not filled. 6037 00005abc 23bd0018 addi r29,r29,#24 6038 00005ac0 L206_LF5: 6039 00005ac0 200d0000 addi r13,r0,#0 6040 00005ac4 ad0d0028 sw 40(r8),r13 6041 00005ac8 20c10060 addi r1,r6,#96 6042 00005acc ad010138 sw 312(r8),r1 6043 00005ad0 8ccd0064 lw r13,100(r6) 6044 00005ad4 ad0d013c sw 316(r8),r13 6045 00005ad8 3c010010 lhi r1,#16 6046 00005adc 24210010 addui r1,r1,#16 6047 00005ae0 ad010140 sw 320(r8),r1 6048 00005ae4 64810000 snei r1,r4,#0 6049 00005ae8 10200640 beqz r1,L208_LF5 6050 00005aec 54000000 nop; not filled. 6051 00005af0 23bdfff8 addi r29,r29,#-8 6052 00005af4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6053 00005af8 2442fd60 addui r2,r2,(_debugstr)&0xffff 6054 00005afc afa20000 sw (r29),r2 6055 00005b00 200d0070 addi r13,r0,#112 6056 00005b04 afad0004 sw 4(r29),r13 6057 00005b08 0fffe328 jal _dindex 6058 00005b0c 54000000 nop; not filled. 6059 00005b10 23bd0008 addi r29,r29,#8 6060 00005b14 64210000 snei r1,r1,#0 6061 00005b18 1420002c bnez r1,L210_LF5 6062 00005b1c 54000000 nop; not filled. 6063 00005b20 23bdfff8 addi r29,r29,#-8 6064 00005b24 afa20000 sw (r29),r2 6065 00005b28 200d002b addi r13,r0,#43 6066 00005b2c afad0004 sw 4(r29),r13 6067 00005b30 0fffe300 jal _dindex 6068 00005b34 54000000 nop; not filled. 6069 00005b38 23bd0008 addi r29,r29,#8 6070 00005b3c 64210000 snei r1,r1,#0 6071 00005b40 10200024 beqz r1,L209_LF5 6072 00005b44 54000000 nop; not filled. 6073 00005b48 L210_LF5: 6074 00005b48 23bdfff8 addi r29,r29,#-8 6075 00005b4c 3c0d0000 lhi r13,((LC26_LF5)>>16)&0xffff 6076 00005b50 25adf7e0 addui r13,r13,(LC26_LF5)&0xffff 6077 00005b54 afad0000 sw (r29),r13 6078 00005b58 afac0004 sw 4(r29),r12 6079 00005b5c 0c00548c jal _printf 6080 00005b60 54000000 nop; not filled. 6081 00005b64 23bd0008 addi r29,r29,#8 6082 00005b68 L209_LF5: 6083 00005b68 23bdffe8 addi r29,r29,#-24 6084 00005b6c afac0000 sw (r29),r12 6085 00005b70 23c1fd6c addi r1,r30,#-660 6086 00005b74 afa10004 sw 4(r29),r1 6087 00005b78 23c1fd68 addi r1,r30,#-664 6088 00005b7c afa10008 sw 8(r29),r1 6089 00005b80 23c1fd64 addi r1,r30,#-668 6090 00005b84 afa1000c sw 12(r29),r1 6091 00005b88 23c1fd60 addi r1,r30,#-672 6092 00005b8c afa10010 sw 16(r29),r1 6093 00005b90 23c1fd5c addi r1,r30,#-676 6094 00005b94 afa10014 sw 20(r29),r1 6095 00005b98 0c0007b0 jal _ProcessGetCodeInfo 6096 00005b9c 54000000 nop; not filled. 6097 00005ba0 00012820 add r5,r0,r1 6098 00005ba4 23bd0018 addi r29,r29,#24 6099 00005ba8 68a10000 slti r1,r5,#0 6100 00005bac 102000bc beqz r1,L211_LF5 6101 00005bb0 54000000 nop; not filled. 6102 00005bb4 3c030000 lhi r3,((_freepcbs_LF5)>>16)&0xffff 6103 00005bb8 2463fe2c addui r3,r3,(_freepcbs_LF5)&0xffff 6104 00005bbc 20c20068 addi r2,r6,#104 6105 00005bc0 8c610004 lw r1,4(r3) 6106 00005bc4 acc30070 sw 112(r6),r3 6107 00005bc8 acc1006c sw 108(r6),r1 6108 00005bcc 8c2d0000 lw r13,(r1) 6109 00005bd0 ac4d0000 sw (r2),r13 6110 00005bd4 ac220000 sw (r1),r2 6111 00005bd8 8c410000 lw r1,(r2) 6112 00005bdc ac220004 sw 4(r1),r2 6113 00005be0 8c610008 lw r1,8(r3) 6114 00005be4 20210001 addi r1,r1,#1 6115 00005be8 ac610008 sw 8(r3),r1 6116 00005bec 20020000 addi r2,r0,#0 6117 00005bf0 8cc10064 lw r1,100(r6) 6118 00005bf4 0041082a slt r1,r2,r1 6119 00005bf8 10200038 beqz r1,L217_LF5 6120 00005bfc 54000000 nop; not filled. 6121 00005c00 00061820 add r3,r0,r6 6122 00005c04 L219_LF5: 6123 00005c04 23bdfff8 addi r29,r29,#-8 6124 00005c08 8c6d0060 lw r13,96(r3) 6125 00005c0c afad0000 sw (r29),r13 6126 00005c10 0fffdac8 jal _MemoryFreePte 6127 00005c14 54000000 nop; not filled. 6128 00005c18 23bd0008 addi r29,r29,#8 6129 00005c1c 20630004 addi r3,r3,#4 6130 00005c20 20420001 addi r2,r2,#1 6131 00005c24 8cc10064 lw r1,100(r6) 6132 00005c28 0041082a slt r1,r2,r1 6133 00005c2c 1420ffd4 bnez r1,L219_LF5 6134 00005c30 54000000 nop; not filled. 6135 00005c34 L217_LF5: 6136 00005c34 23bdfff8 addi r29,r29,#-8 6137 00005c38 94c10008 lhu r1,8(r6) 6138 00005c3c afa10000 sw (r29),r1 6139 00005c40 0fffd5cc jal _MemoryFreePage 6140 00005c44 54000000 nop; not filled. 6141 00005c48 23bd0008 addi r29,r29,#8 6142 00005c4c 8cc1000c lw r1,12(r6) 6143 00005c50 200dffc0 addi r13,r0,#-64 6144 00005c54 002d0824 and r1,r1,r13 6145 00005c58 34210001 ori r1,r1,#1 6146 00005c5c acc1000c sw 12(r6),r1 6147 00005c60 2001ffff addi r1,r0,#-1 6148 00005c64 080006a0 j L268_LF5 6149 00005c68 54000000 nop; not filled. 6150 00005c6c L211_LF5: 6151 00005c6c 23bdfff8 addi r29,r29,#-8 6152 00005c70 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6153 00005c74 2442fd60 addui r2,r2,(_debugstr)&0xffff 6154 00005c78 afa20000 sw (r29),r2 6155 00005c7c 200d0070 addi r13,r0,#112 6156 00005c80 afad0004 sw 4(r29),r13 6157 00005c84 0fffe1ac jal _dindex 6158 00005c88 54000000 nop; not filled. 6159 00005c8c 23bd0008 addi r29,r29,#8 6160 00005c90 64210000 snei r1,r1,#0 6161 00005c94 1420002c bnez r1,L223_LF5 6162 00005c98 54000000 nop; not filled. 6163 00005c9c 23bdfff8 addi r29,r29,#-8 6164 00005ca0 afa20000 sw (r29),r2 6165 00005ca4 200d002b addi r13,r0,#43 6166 00005ca8 afad0004 sw 4(r29),r13 6167 00005cac 0fffe184 jal _dindex 6168 00005cb0 54000000 nop; not filled. 6169 00005cb4 23bd0008 addi r29,r29,#8 6170 00005cb8 64210000 snei r1,r1,#0 6171 00005cbc 1020002c beqz r1,L222_LF5 6172 00005cc0 54000000 nop; not filled. 6173 00005cc4 L223_LF5: 6174 00005cc4 23bdfff0 addi r29,r29,#-16 6175 00005cc8 3c0d0000 lhi r13,((LC27_LF5)>>16)&0xffff 6176 00005ccc 25adf7f4 addui r13,r13,(LC27_LF5)&0xffff 6177 00005cd0 afad0000 sw (r29),r13 6178 00005cd4 afac0004 sw 4(r29),r12 6179 00005cd8 8fcdfd6c lw r13,-660(r30) 6180 00005cdc afad0008 sw 8(r29),r13 6181 00005ce0 0c005308 jal _printf 6182 00005ce4 54000000 nop; not filled. 6183 00005ce8 23bd0010 addi r29,r29,#16 6184 00005cec L222_LF5: 6185 00005cec 23bdfff8 addi r29,r29,#-8 6186 00005cf0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6187 00005cf4 2442fd60 addui r2,r2,(_debugstr)&0xffff 6188 00005cf8 afa20000 sw (r29),r2 6189 00005cfc 200d0070 addi r13,r0,#112 6190 00005d00 afad0004 sw 4(r29),r13 6191 00005d04 0fffe12c jal _dindex 6192 00005d08 54000000 nop; not filled. 6193 00005d0c 23bd0008 addi r29,r29,#8 6194 00005d10 64210000 snei r1,r1,#0 6195 00005d14 1420002c bnez r1,L225_LF5 6196 00005d18 54000000 nop; not filled. 6197 00005d1c 23bdfff8 addi r29,r29,#-8 6198 00005d20 afa20000 sw (r29),r2 6199 00005d24 200d002b addi r13,r0,#43 6200 00005d28 afad0004 sw 4(r29),r13 6201 00005d2c 0fffe104 jal _dindex 6202 00005d30 54000000 nop; not filled. 6203 00005d34 23bd0008 addi r29,r29,#8 6204 00005d38 64210000 snei r1,r1,#0 6205 00005d3c 10200034 beqz r1,L224_LF5 6206 00005d40 54000000 nop; not filled. 6207 00005d44 L225_LF5: 6208 00005d44 23bdfff0 addi r29,r29,#-16 6209 00005d48 3c0d0000 lhi r13,((LC28_LF5)>>16)&0xffff 6210 00005d4c 25adf810 addui r13,r13,(LC28_LF5)&0xffff 6211 00005d50 afad0000 sw (r29),r13 6212 00005d54 afac0004 sw 4(r29),r12 6213 00005d58 8fcdfd68 lw r13,-664(r30) 6214 00005d5c afad0008 sw 8(r29),r13 6215 00005d60 8fcdfd64 lw r13,-668(r30) 6216 00005d64 afad000c sw 12(r29),r13 6217 00005d68 0c005280 jal _printf 6218 00005d6c 54000000 nop; not filled. 6219 00005d70 23bd0010 addi r29,r29,#16 6220 00005d74 L224_LF5: 6221 00005d74 23bdfff8 addi r29,r29,#-8 6222 00005d78 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6223 00005d7c 2442fd60 addui r2,r2,(_debugstr)&0xffff 6224 00005d80 afa20000 sw (r29),r2 6225 00005d84 200d0070 addi r13,r0,#112 6226 00005d88 afad0004 sw 4(r29),r13 6227 00005d8c 0fffe0a4 jal _dindex 6228 00005d90 54000000 nop; not filled. 6229 00005d94 23bd0008 addi r29,r29,#8 6230 00005d98 64210000 snei r1,r1,#0 6231 00005d9c 1420002c bnez r1,L227_LF5 6232 00005da0 54000000 nop; not filled. 6233 00005da4 23bdfff8 addi r29,r29,#-8 6234 00005da8 afa20000 sw (r29),r2 6235 00005dac 200d002b addi r13,r0,#43 6236 00005db0 afad0004 sw 4(r29),r13 6237 00005db4 0fffe07c jal _dindex 6238 00005db8 54000000 nop; not filled. 6239 00005dbc 23bd0008 addi r29,r29,#8 6240 00005dc0 64210000 snei r1,r1,#0 6241 00005dc4 10200034 beqz r1,L226_LF5 6242 00005dc8 54000000 nop; not filled. 6243 00005dcc L227_LF5: 6244 00005dcc 23bdfff0 addi r29,r29,#-16 6245 00005dd0 3c0d0000 lhi r13,((LC29_LF5)>>16)&0xffff 6246 00005dd4 25adf838 addui r13,r13,(LC29_LF5)&0xffff 6247 00005dd8 afad0000 sw (r29),r13 6248 00005ddc afac0004 sw 4(r29),r12 6249 00005de0 8fcdfd60 lw r13,-672(r30) 6250 00005de4 afad0008 sw 8(r29),r13 6251 00005de8 8fcdfd5c lw r13,-676(r30) 6252 00005dec afad000c sw 12(r29),r13 6253 00005df0 0c0051f8 jal _printf 6254 00005df4 54000000 nop; not filled. 6255 00005df8 23bd0010 addi r29,r29,#16 6256 00005dfc L226_LF5: 6257 00005dfc 23c3ff90 addi r3,r30,#-112 6258 00005e00 23c7fd58 addi r7,r30,#-680 6259 00005e04 3c040000 lhi r4,((_debugstr)>>16)&0xffff 6260 00005e08 2484fd60 addui r4,r4,(_debugstr)&0xffff 6261 00005e0c L228_LF5: 6262 00005e0c 23bdfff0 addi r29,r29,#-16 6263 00005e10 afa50000 sw (r29),r5 6264 00005e14 afa30004 sw 4(r29),r3 6265 00005e18 afa70008 sw 8(r29),r7 6266 00005e1c 200d0064 addi r13,r0,#100 6267 00005e20 afad000c sw 12(r29),r13 6268 00005e24 0c000984 jal _ProcessGetFromFile 6269 00005e28 54000000 nop; not filled. 6270 00005e2c 00011020 add r2,r0,r1 6271 00005e30 23bd0010 addi r29,r29,#16 6272 00005e34 6c410000 sgti r1,r2,#0 6273 00005e38 102000b0 beqz r1,L229_LF5 6274 00005e3c 54000000 nop; not filled. 6275 00005e40 23bdfff8 addi r29,r29,#-8 6276 00005e44 afa40000 sw (r29),r4 6277 00005e48 200d0070 addi r13,r0,#112 6278 00005e4c afad0004 sw 4(r29),r13 6279 00005e50 0fffdfe0 jal _dindex 6280 00005e54 54000000 nop; not filled. 6281 00005e58 23bd0008 addi r29,r29,#8 6282 00005e5c 64210000 snei r1,r1,#0 6283 00005e60 1420002c bnez r1,L232_LF5 6284 00005e64 54000000 nop; not filled. 6285 00005e68 23bdfff8 addi r29,r29,#-8 6286 00005e6c afa40000 sw (r29),r4 6287 00005e70 200d002b addi r13,r0,#43 6288 00005e74 afad0004 sw 4(r29),r13 6289 00005e78 0fffdfb8 jal _dindex 6290 00005e7c 54000000 nop; not filled. 6291 00005e80 23bd0008 addi r29,r29,#8 6292 00005e84 64210000 snei r1,r1,#0 6293 00005e88 10200030 beqz r1,L231_LF5 6294 00005e8c 54000000 nop; not filled. 6295 00005e90 L232_LF5: 6296 00005e90 23bdfff0 addi r29,r29,#-16 6297 00005e94 3c0d0000 lhi r13,((LC30_LF5)>>16)&0xffff 6298 00005e98 25adf860 addui r13,r13,(LC30_LF5)&0xffff 6299 00005e9c afad0000 sw (r29),r13 6300 00005ea0 afa20004 sw 4(r29),r2 6301 00005ea4 8fc1fd58 lw r1,-680(r30) 6302 00005ea8 00220822 sub r1,r1,r2 6303 00005eac afa10008 sw 8(r29),r1 6304 00005eb0 0c005138 jal _printf 6305 00005eb4 54000000 nop; not filled. 6306 00005eb8 23bd0010 addi r29,r29,#16 6307 00005ebc L231_LF5: 6308 00005ebc 23bdfff0 addi r29,r29,#-16 6309 00005ec0 afa60000 sw (r29),r6 6310 00005ec4 afa30004 sw 4(r29),r3 6311 00005ec8 8fc1fd58 lw r1,-680(r30) 6312 00005ecc 00220822 sub r1,r1,r2 6313 00005ed0 afa10008 sw 8(r29),r1 6314 00005ed4 afa2000c sw 12(r29),r2 6315 00005ed8 0fffd580 jal _MemoryCopySystemToUser 6316 00005edc 54000000 nop; not filled. 6317 00005ee0 23bd0010 addi r29,r29,#16 6318 00005ee4 0bffff24 j L228_LF5 6319 00005ee8 54000000 nop; not filled. 6320 00005eec L229_LF5: 6321 00005eec 23bdfff8 addi r29,r29,#-8 6322 00005ef0 afa50000 sw (r29),r5 6323 00005ef4 0fffbbfc jal _FsClose 6324 00005ef8 54000000 nop; not filled. 6325 00005efc 200d0100 addi r13,r0,#256 6326 00005f00 ad0d012c sw 300(r8),r13 6327 00005f04 240dfc00 addui r13,r0,#64512 6328 00005f08 ad0d009c sw 156(r8),r13 6329 00005f0c 23bdfff8 addi r29,r29,#-8 6330 00005f10 afa60000 sw (r29),r6 6331 00005f14 afaa0004 sw 4(r29),r10 6332 00005f18 8d0d009c lw r13,156(r8) 6333 00005f1c afad0008 sw 8(r29),r13 6334 00005f20 200d03e0 addi r13,r0,#992 6335 00005f24 afad000c sw 12(r29),r13 6336 00005f28 0fffd530 jal _MemoryCopySystemToUser 6337 00005f2c 54000000 nop; not filled. 6338 00005f30 23bd0010 addi r29,r29,#16 6339 00005f34 65410000 snei r1,r10,#0 6340 00005f38 10200020 beqz r1,L234_LF5 6341 00005f3c 54000000 nop; not filled. 6342 00005f40 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 6343 00005f44 2421f658 addui r1,r1,(_str52_LF5)&0xffff 6344 00005f48 ac2a0000 sw (r1),r10 6345 00005f4c 3c010000 lhi r1,((_location53_LF5)>>16)&0xffff 6346 00005f50 2421f65c addui r1,r1,(_location53_LF5)&0xffff 6347 00005f54 200d0000 addi r13,r0,#0 6348 00005f58 ac2d0000 sw (r1),r13 6349 00005f5c L234_LF5: 6350 00005f5c 3c030000 lhi r3,((_location53_LF5)>>16)&0xffff 6351 00005f60 2463f65c addui r3,r3,(_location53_LF5)&0xffff 6352 00005f64 8c640000 lw r4,(r3) 6353 00005f68 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 6354 00005f6c 2421f658 addui r1,r1,(_str52_LF5)&0xffff 6355 00005f70 8c220000 lw r2,(r1) 6356 00005f74 00440820 add r1,r2,r4 6357 00005f78 90210000 lbu r1,(r1) 6358 00005f7c 64210000 snei r1,r1,#0 6359 00005f80 10200010 beqz r1,L236_LF5 6360 00005f84 54000000 nop; not filled. 6361 00005f88 6c810062 sgti r1,r4,#98 6362 00005f8c 10200020 beqz r1,L235_LF5 6363 00005f90 54000000 nop; not filled. 6364 00005f94 L236_LF5: 6365 00005f94 20030000 addi r3,r0,#0 6366 00005f98 08000054 j L233_LF5 6367 00005f9c 54000000 nop; not filled. 6368 00005fa0 L269_LF5: 6369 00005fa0 20410001 addi r1,r2,#1 6370 00005fa4 ac610000 sw (r3),r1 6371 00005fa8 08000040 j L238_LF5 6372 00005fac 54000000 nop; not filled. 6373 00005fb0 L235_LF5: 6374 00005fb0 70810063 slei r1,r4,#99 6375 00005fb4 10200034 beqz r1,L238_LF5 6376 00005fb8 54000000 nop; not filled. 6377 00005fbc 00022820 add r5,r0,r2 6378 00005fc0 L240_LF5: 6379 00005fc0 8c620000 lw r2,(r3) 6380 00005fc4 00a20820 add r1,r5,r2 6381 00005fc8 90210000 lbu r1,(r1) 6382 00005fcc 64210000 snei r1,r1,#0 6383 00005fd0 1020ffcc beqz r1,L269_LF5 6384 00005fd4 54000000 nop; not filled. 6385 00005fd8 20410001 addi r1,r2,#1 6386 00005fdc ac610000 sw (r3),r1 6387 00005fe0 70210063 slei r1,r1,#99 6388 00005fe4 1420ffd8 bnez r1,L240_LF5 6389 00005fe8 54000000 nop; not filled. 6390 00005fec L238_LF5: 6391 00005fec 00041820 add r3,r0,r4 6392 00005ff0 L233_LF5: 6393 00005ff0 2402fc00 addui r2,r0,#64512 6394 00005ff4 00620820 add r1,r3,r2 6395 00005ff8 afc1fd78 sw -648(r30),r1 6396 00005ffc 20070003 addi r7,r0,#3 6397 00006000 3c040000 lhi r4,((_location53_LF5)>>16)&0xffff 6398 00006004 2484f65c addui r4,r4,(_location53_LF5)&0xffff 6399 00006008 3c0b0000 lhi r11,((_str52_LF5)>>16)&0xffff 6400 0000600c 256bf658 addui r11,r11,(_str52_LF5)&0xffff 6401 00006010 00025020 add r10,r0,r2 6402 00006014 23c50004 addi r5,r30,#4 6403 00006018 L243_LF5: 6404 00006018 8c9f0000 lw r31,(r4) 6405 0000601c 8d630000 lw r3,(r11) 6406 00006020 007f0820 add r1,r3,r31 6407 00006024 90210000 lbu r1,(r1) 6408 00006028 64210000 snei r1,r1,#0 6409 0000602c 10200010 beqz r1,L249_LF5 6410 00006030 54000000 nop; not filled. 6411 00006034 6fe10062 sgti r1,r31,#98 6412 00006038 10200020 beqz r1,L248_LF5 6413 0000603c 54000000 nop; not filled. 6414 00006040 L249_LF5: 6415 00006040 20030000 addi r3,r0,#0 6416 00006044 08000054 j L246_LF5 6417 00006048 54000000 nop; not filled. 6418 0000604c L270_LF5: 6419 0000604c 20610001 addi r1,r3,#1 6420 00006050 ac810000 sw (r4),r1 6421 00006054 08000040 j L251_LF5 6422 00006058 54000000 nop; not filled. 6423 0000605c L248_LF5: 6424 0000605c 73e10063 slei r1,r31,#99 6425 00006060 10200034 beqz r1,L251_LF5 6426 00006064 54000000 nop; not filled. 6427 00006068 00031020 add r2,r0,r3 6428 0000606c L253_LF5: 6429 0000606c 8c830000 lw r3,(r4) 6430 00006070 00430820 add r1,r2,r3 6431 00006074 90210000 lbu r1,(r1) 6432 00006078 64210000 snei r1,r1,#0 6433 0000607c 1020ffcc beqz r1,L270_LF5 6434 00006080 54000000 nop; not filled. 6435 00006084 20610001 addi r1,r3,#1 6436 00006088 ac810000 sw (r4),r1 6437 0000608c 70210063 slei r1,r1,#99 6438 00006090 1420ffd8 bnez r1,L253_LF5 6439 00006094 54000000 nop; not filled. 6440 00006098 L251_LF5: 6441 00006098 001f1820 add r3,r0,r31 6442 0000609c L246_LF5: 6443 0000609c 006a0820 add r1,r3,r10 6444 000060a0 aca1fd78 sw -648(r5),r1 6445 000060a4 64610000 snei r1,r3,#0 6446 000060a8 10200014 beqz r1,L244_LF5 6447 000060ac 54000000 nop; not filled. 6448 000060b0 20a50004 addi r5,r5,#4 6449 000060b4 20e70001 addi r7,r7,#1 6450 000060b8 0bffff5c j L243_LF5 6451 000060bc 54000000 nop; not filled. 6452 000060c0 L244_LF5: 6453 000060c0 20e1fffe addi r1,r7,#-2 6454 000060c4 afc1fd70 sw -656(r30),r1 6455 000060c8 50210002 slli r1,r1,#0x2 6456 000060cc 01410822 sub r1,r10,r1 6457 000060d0 afc1fd74 sw -652(r30),r1 6458 000060d4 23bdfff0 addi r29,r29,#-16 6459 000060d8 afa60000 sw (r29),r6 6460 000060dc 23c1fd70 addi r1,r30,#-656 6461 000060e0 afa10004 sw 4(r29),r1 6462 000060e4 50e20002 slli r2,r7,#0x2 6463 000060e8 8d01009c lw r1,156(r8) 6464 000060ec 00220822 sub r1,r1,r2 6465 000060f0 afa10008 sw 8(r29),r1 6466 000060f4 afa2000c sw 12(r29),r2 6467 000060f8 0fffd360 jal _MemoryCopySystemToUser 6468 000060fc 54000000 nop; not filled. 6469 00006100 8d01009c lw r1,156(r8) 6470 00006104 00220822 sub r1,r1,r2 6471 00006108 ad01009c sw 156(r8),r1 6472 0000610c 8fcdfd6c lw r13,-660(r30) 6473 00006110 ad0d0128 sw 296(r8),r13 6474 00006114 8cc1000c lw r1,12(r6) 6475 00006118 34210200 ori r1,r1,#512 6476 0000611c acc1000c sw 12(r6),r1 6477 00006120 23bd0010 addi r29,r29,#16 6478 00006124 08000038 j L257_LF5 6479 00006128 54000000 nop; not filled. 6480 0000612c L208_LF5: 6481 0000612c 3c0d0000 lhi r13,((_ProcessExit_LF5)>>16)&0xffff 6482 00006130 25ad7ad4 addui r13,r13,(_ProcessExit_LF5)&0xffff 6483 00006134 ad0d00a4 sw 164(r8),r13 6484 00006138 8cc10008 lw r1,8(r6) 6485 0000613c 2421ffe0 addui r1,r1,#65504 6486 00006140 ad01009c sw 156(r8),r1 6487 00006144 ac2a0000 sw (r1),r10 6488 00006148 ad050128 sw 296(r8),r5 6489 0000614c 200d0140 addi r13,r0,#320 6490 00006150 ad0d012c sw 300(r8),r13 6491 00006154 8cc1000c lw r1,12(r6) 6492 00006158 34210100 ori r1,r1,#256 6493 0000615c acc1000c sw 12(r6),r1 6494 00006160 L257_LF5: 6495 00006160 23bdfff8 addi r29,r29,#-8 6496 00006164 200d000f addi r13,r0,#15 6497 00006168 afad0000 sw (r29),r13 6498 0000616c 0fffb118 jal _SetIntrs 6499 00006170 54000000 nop; not filled. 6500 00006174 23bd0008 addi r29,r29,#8 6501 00006178 3c030000 lhi r3,((_runQueue_LF5)>>16)&0xffff 6502 0000617c 2463fe38 addui r3,r3,(_runQueue_LF5)&0xffff 6503 00006180 8c620004 lw r2,4(r3) 6504 00006184 ad230008 sw 8(r9),r3 6505 00006188 ad220004 sw 4(r9),r2 6506 0000618c 8c4d0000 lw r13,(r2) 6507 00006190 ad2d0000 sw (r9),r13 6508 00006194 ac490000 sw (r2),r9 6509 00006198 8d220000 lw r2,(r9) 6510 0000619c ac490004 sw 4(r2),r9 6511 000061a0 8c620008 lw r2,8(r3) 6512 000061a4 20420001 addi r2,r2,#1 6513 000061a8 ac620008 sw 8(r3),r2 6514 000061ac 23bdfff8 addi r29,r29,#-8 6515 000061b0 afa10000 sw (r29),r1 6516 000061b4 0fffb0d0 jal _SetIntrs 6517 000061b8 54000000 nop; not filled. 6518 000061bc 23bd0008 addi r29,r29,#8 6519 000061c0 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 6520 000061c4 2421fe28 addui r1,r1,(_currentPCB)&0xffff 6521 000061c8 8c210000 lw r1,(r1) 6522 000061cc 64210000 snei r1,r1,#0 6523 000061d0 14200090 bnez r1,L263_LF5 6524 000061d4 54000000 nop; not filled. 6525 000061d8 23bdfff8 addi r29,r29,#-8 6526 000061dc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6527 000061e0 2442fd60 addui r2,r2,(_debugstr)&0xffff 6528 000061e4 afa20000 sw (r29),r2 6529 000061e8 200d0070 addi r13,r0,#112 6530 000061ec afad0004 sw 4(r29),r13 6531 000061f0 0fffdc40 jal _dindex 6532 000061f4 54000000 nop; not filled. 6533 000061f8 23bd0008 addi r29,r29,#8 6534 000061fc 64210000 snei r1,r1,#0 6535 00006200 1420002c bnez r1,L265_LF5 6536 00006204 54000000 nop; not filled. 6537 00006208 23bdfff8 addi r29,r29,#-8 6538 0000620c afa20000 sw (r29),r2 6539 00006210 200d002b addi r13,r0,#43 6540 00006214 afad0004 sw 4(r29),r13 6541 00006218 0fffdc18 jal _dindex 6542 0000621c 54000000 nop; not filled. 6543 00006220 23bd0008 addi r29,r29,#8 6544 00006224 64210000 snei r1,r1,#0 6545 00006228 1020002c beqz r1,L264_LF5 6546 0000622c 54000000 nop; not filled. 6547 00006230 L265_LF5: 6548 00006230 23bdfff0 addi r29,r29,#-16 6549 00006234 3c0d0000 lhi r13,((LC31_LF5)>>16)&0xffff 6550 00006238 25adf884 addui r13,r13,(LC31_LF5)&0xffff 6551 0000623c afad0000 sw (r29),r13 6552 00006240 afa60004 sw 4(r29),r6 6553 00006244 8ccd0000 lw r13,(r6) 6554 00006248 afad0008 sw 8(r29),r13 6555 0000624c 0c004d9c jal _printf 6556 00006250 54000000 nop; not filled. 6557 00006254 23bd0010 addi r29,r29,#16 6558 00006258 L264_LF5: 6559 00006258 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 6560 0000625c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 6561 00006260 ac260000 sw (r1),r6 6562 00006264 L263_LF5: 6563 00006264 23bdfff8 addi r29,r29,#-8 6564 00006268 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6565 0000626c 2442fd60 addui r2,r2,(_debugstr)&0xffff 6566 00006270 afa20000 sw (r29),r2 6567 00006274 200d0070 addi r13,r0,#112 6568 00006278 afad0004 sw 4(r29),r13 6569 0000627c 0fffdbb4 jal _dindex 6570 00006280 54000000 nop; not filled. 6571 00006284 23bd0008 addi r29,r29,#8 6572 00006288 64210000 snei r1,r1,#0 6573 0000628c 1420002c bnez r1,L267_LF5 6574 00006290 54000000 nop; not filled. 6575 00006294 23bdfff8 addi r29,r29,#-8 6576 00006298 afa20000 sw (r29),r2 6577 0000629c 200d002b addi r13,r0,#43 6578 000062a0 afad0004 sw 4(r29),r13 6579 000062a4 0fffdb8c jal _dindex 6580 000062a8 54000000 nop; not filled. 6581 000062ac 23bd0008 addi r29,r29,#8 6582 000062b0 64210000 snei r1,r1,#0 6583 000062b4 10200024 beqz r1,L266_LF5 6584 000062b8 54000000 nop; not filled. 6585 000062bc L267_LF5: 6586 000062bc 23bdfff8 addi r29,r29,#-8 6587 000062c0 3c0d0000 lhi r13,((LC32_LF5)>>16)&0xffff 6588 000062c4 25adf8b0 addui r13,r13,(LC32_LF5)&0xffff 6589 000062c8 afad0000 sw (r29),r13 6590 000062cc afac0004 sw 4(r29),r12 6591 000062d0 0c004d18 jal _printf 6592 000062d4 54000000 nop; not filled. 6593 000062d8 23bd0008 addi r29,r29,#8 6594 000062dc L266_LF5: 6595 000062dc 3c0d0000 lhi r13,((_pcbs_LF5)>>16)&0xffff 6596 000062e0 25adfe5c addui r13,r13,(_pcbs_LF5)&0xffff 6597 000062e4 00cd1022 sub r2,r6,r13 6598 000062e8 50410004 slli r1,r2,#0x4 6599 000062ec 00221020 add r2,r1,r2 6600 000062f0 50410008 slli r1,r2,#0x8 6601 000062f4 00411020 add r2,r2,r1 6602 000062f8 50410010 slli r1,r2,#0x10 6603 000062fc 00410820 add r1,r2,r1 6604 00006300 00010822 sub r1,r0,r1 6605 00006304 5c210003 srai r1,r1,#0x3 6606 00006308 L268_LF5: 6607 00006308 8fa20000 lw r2,0(r29) 6608 0000630c 8fa30004 lw r3,4(r29) 6609 00006310 8fa40008 lw r4,8(r29) 6610 00006314 8fa5000c lw r5,12(r29) 6611 00006318 8fa60010 lw r6,16(r29) 6612 0000631c 8fa70014 lw r7,20(r29) 6613 00006320 8fa80018 lw r8,24(r29) 6614 00006324 8fa9001c lw r9,28(r29) 6615 00006328 8faa0020 lw r10,32(r29) 6616 0000632c 8fab0024 lw r11,36(r29) 6617 00006330 8fac0028 lw r12,40(r29) 6618 00006334 8fad002c lw r13,44(r29) 6619 00006338 8fdffff8 lw r31,-8(r30) 6620 0000633c 001ee820 add r29,r0,r30 6621 00006340 8fdefffc lw r30,-4(r30) 6622 00006344 4be00000 jr r31 6623 00006348 54000000 nop 6624 0000634c .endproc _ProcessFork 6625 0000634c .data 6626 0000f8ca .align 2 6627 0000f8cc LC33_LF5: 6628 0000f8cc 50726f63 .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" 6628 0000f8d0 65737347 6628 0000f8d4 6574436f 6628 0000f8d8 6465496e 6628 0000f8dc 666f3a20 6628 0000f8e0 6f70656e 6628 0000f8e4 206f6620 6628 0000f8e8 25732066 6628 0000f8ec 61696c65 6628 0000f8f0 64202825 6628 0000f8f4 64292e0a 6628 0000f8f8 00 6629 0000f8f9 .align 2 6630 0000f8fc LC34_LF5: 6631 0000f8fc 46696c65 .ascii "File descriptor is now %d.\n\000" 6631 0000f900 20646573 6631 0000f904 63726970 6631 0000f908 746f7220 6631 0000f90c 6973206e 6631 0000f910 6f772025 6631 0000f914 642e0a00 6632 0000f918 .align 2 6633 0000f918 LC35_LF5: 6634 0000f918 50726f63 .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" 6634 0000f91c 65737347 6634 0000f920 6574436f 6634 0000f924 6465496e 6634 0000f928 666f3a20 6634 0000f92c 72656164 6634 0000f930 20676f74 6634 0000f934 20256420 6634 0000f938 286e6f74 6634 0000f93c 20256429 6634 0000f940 20627974 6634 0000f944 65732066 6634 0000f948 726f6d20 6634 0000f94c 25730a00 6635 0000f950 .align 2 6636 0000f950 LC36_LF5: 6637 0000f950 73746172 .ascii "start:\000" 6637 0000f954 743a00 6638 0000f957 .align 2 6639 0000f958 LC37_LF5: 6640 0000f958 50726f63 .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" 6640 0000f95c 65737347 6640 0000f960 6574436f 6640 0000f964 6465496e 6640 0000f968 666f3a20 6640 0000f96c 2573206d 6640 0000f970 69737369 6640 0000f974 6e672073 6640 0000f978 74617274 6640 0000f97c 206c696e 6640 0000f980 6520286e 6640 0000f984 6f742061 6640 0000f988 20444c58 6640 0000f98c 20657865 6640 0000f990 63757461 6640 0000f994 626c653f 6640 0000f998 290a00 6641 0000f99b .text 6642 0000634c .align 2 6643 0000634c .proc _ProcessGetCodeInfo 6644 0000634c .global _ProcessGetCodeInfo 6645 0000634c _ProcessGetCodeInfo: 6646 ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. 6647 0000634c afbefffc sw -4(r29),r30; push fp 6648 00006350 001df020 add r30,r0,r29; fp = sp 6649 00006354 afbffff8 sw -8(r29),r31; push ret addr 6650 00006358 2fbd00a8 subui r29,r29,#168; alloc local storage 6651 0000635c afa20000 sw 0(r29),r2 6652 00006360 afa30004 sw 4(r29),r3 6653 00006364 afa40008 sw 8(r29),r4 6654 00006368 afa5000c sw 12(r29),r5 6655 0000636c afa60010 sw 16(r29),r6 6656 00006370 afa70014 sw 20(r29),r7 6657 00006374 afa80018 sw 24(r29),r8 6658 00006378 afa9001c sw 28(r29),r9 6659 0000637c afaa0020 sw 32(r29),r10 6660 00006380 afab0024 sw 36(r29),r11 6661 00006384 afac0028 sw 40(r29),r12 6662 00006388 8fc60000 lw r6,(r30) 6663 0000638c 8fc70004 lw r7,4(r30) 6664 00006390 8fc80008 lw r8,8(r30) 6665 00006394 8fc9000c lw r9,12(r30) 6666 00006398 8fca0010 lw r10,16(r30) 6667 0000639c 8fcb0014 lw r11,20(r30) 6668 000063a0 23bdfff8 addi r29,r29,#-8 6669 000063a4 afa60000 sw (r29),r6 6670 000063a8 200c0001 addi r12,r0,#1 6671 000063ac afac0004 sw 4(r29),r12 6672 000063b0 0fffb3e4 jal _FsOpen 6673 000063b4 54000000 nop; not filled. 6674 000063b8 00011820 add r3,r0,r1 6675 000063bc 23bd0008 addi r29,r29,#8 6676 000063c0 68610000 slti r1,r3,#0 6677 000063c4 10200088 beqz r1,L279_LF5 6678 000063c8 54000000 nop; not filled. 6679 000063cc 23bdfff8 addi r29,r29,#-8 6680 000063d0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6681 000063d4 2442fd60 addui r2,r2,(_debugstr)&0xffff 6682 000063d8 afa20000 sw (r29),r2 6683 000063dc 200c0066 addi r12,r0,#102 6684 000063e0 afac0004 sw 4(r29),r12 6685 000063e4 0fffda4c jal _dindex 6686 000063e8 54000000 nop; not filled. 6687 000063ec 23bd0008 addi r29,r29,#8 6688 000063f0 64210000 snei r1,r1,#0 6689 000063f4 1420002c bnez r1,L281_LF5 6690 000063f8 54000000 nop; not filled. 6691 000063fc 23bdfff8 addi r29,r29,#-8 6692 00006400 afa20000 sw (r29),r2 6693 00006404 200c002b addi r12,r0,#43 6694 00006408 afac0004 sw 4(r29),r12 6695 0000640c 0fffda24 jal _dindex 6696 00006410 54000000 nop; not filled. 6697 00006414 23bd0008 addi r29,r29,#8 6698 00006418 64210000 snei r1,r1,#0 6699 0000641c 10200224 beqz r1,L288_LF5 6700 00006420 54000000 nop; not filled. 6701 00006424 L281_LF5: 6702 00006424 23bdfff0 addi r29,r29,#-16 6703 00006428 3c0c0000 lhi r12,((LC33_LF5)>>16)&0xffff 6704 0000642c 258cf8cc addui r12,r12,(LC33_LF5)&0xffff 6705 00006430 afac0000 sw (r29),r12 6706 00006434 afa60004 sw 4(r29),r6 6707 00006438 afa30008 sw 8(r29),r3 6708 0000643c 0c004bac jal _printf 6709 00006440 54000000 nop; not filled. 6710 00006444 23bd0010 addi r29,r29,#16 6711 00006448 080001f8 j L288_LF5 6712 0000644c 54000000 nop; not filled. 6713 00006450 L279_LF5: 6714 00006450 23bdfff8 addi r29,r29,#-8 6715 00006454 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6716 00006458 2442fd60 addui r2,r2,(_debugstr)&0xffff 6717 0000645c afa20000 sw (r29),r2 6718 00006460 200c0066 addi r12,r0,#102 6719 00006464 afac0004 sw 4(r29),r12 6720 00006468 0fffd9c8 jal _dindex 6721 0000646c 54000000 nop; not filled. 6722 00006470 23bd0008 addi r29,r29,#8 6723 00006474 64210000 snei r1,r1,#0 6724 00006478 1420002c bnez r1,L283_LF5 6725 0000647c 54000000 nop; not filled. 6726 00006480 23bdfff8 addi r29,r29,#-8 6727 00006484 afa20000 sw (r29),r2 6728 00006488 200c002b addi r12,r0,#43 6729 0000648c afac0004 sw 4(r29),r12 6730 00006490 0fffd9a0 jal _dindex 6731 00006494 54000000 nop; not filled. 6732 00006498 23bd0008 addi r29,r29,#8 6733 0000649c 64210000 snei r1,r1,#0 6734 000064a0 10200024 beqz r1,L282_LF5 6735 000064a4 54000000 nop; not filled. 6736 000064a8 L283_LF5: 6737 000064a8 23bdfff8 addi r29,r29,#-8 6738 000064ac 3c0c0000 lhi r12,((LC34_LF5)>>16)&0xffff 6739 000064b0 258cf8fc addui r12,r12,(LC34_LF5)&0xffff 6740 000064b4 afac0000 sw (r29),r12 6741 000064b8 afa30004 sw 4(r29),r3 6742 000064bc 0c004b2c jal _printf 6743 000064c0 54000000 nop; not filled. 6744 000064c4 23bd0008 addi r29,r29,#8 6745 000064c8 L282_LF5: 6746 000064c8 23bdfff0 addi r29,r29,#-16 6747 000064cc afa30000 sw (r29),r3 6748 000064d0 23c4ff90 addi r4,r30,#-112 6749 000064d4 afa40004 sw 4(r29),r4 6750 000064d8 200c0064 addi r12,r0,#100 6751 000064dc afac0008 sw 8(r29),r12 6752 000064e0 0fffb718 jal _FsRead 6753 000064e4 54000000 nop; not filled. 6754 000064e8 00012820 add r5,r0,r1 6755 000064ec 23bd0010 addi r29,r29,#16 6756 000064f0 64a10064 snei r1,r5,#100 6757 000064f4 102000a8 beqz r1,L284_LF5 6758 000064f8 54000000 nop; not filled. 6759 000064fc 23bdfff8 addi r29,r29,#-8 6760 00006500 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6761 00006504 2442fd60 addui r2,r2,(_debugstr)&0xffff 6762 00006508 afa20000 sw (r29),r2 6763 0000650c 200c0066 addi r12,r0,#102 6764 00006510 afac0004 sw 4(r29),r12 6765 00006514 0fffd91c jal _dindex 6766 00006518 54000000 nop; not filled. 6767 0000651c 23bd0008 addi r29,r29,#8 6768 00006520 64210000 snei r1,r1,#0 6769 00006524 1420002c bnez r1,L286_LF5 6770 00006528 54000000 nop; not filled. 6771 0000652c 23bdfff8 addi r29,r29,#-8 6772 00006530 afa20000 sw (r29),r2 6773 00006534 200c002b addi r12,r0,#43 6774 00006538 afac0004 sw 4(r29),r12 6775 0000653c 0fffd8f4 jal _dindex 6776 00006540 54000000 nop; not filled. 6777 00006544 23bd0008 addi r29,r29,#8 6778 00006548 64210000 snei r1,r1,#0 6779 0000654c 10200030 beqz r1,L285_LF5 6780 00006550 54000000 nop; not filled. 6781 00006554 L286_LF5: 6782 00006554 23bdfff0 addi r29,r29,#-16 6783 00006558 3c0c0000 lhi r12,((LC35_LF5)>>16)&0xffff 6784 0000655c 258cf918 addui r12,r12,(LC35_LF5)&0xffff 6785 00006560 afac0000 sw (r29),r12 6786 00006564 afa50004 sw 4(r29),r5 6787 00006568 200c0064 addi r12,r0,#100 6788 0000656c afac0008 sw 8(r29),r12 6789 00006570 afa6000c sw 12(r29),r6 6790 00006574 0c004a74 jal _printf 6791 00006578 54000000 nop; not filled. 6792 0000657c 23bd0010 addi r29,r29,#16 6793 00006580 L285_LF5: 6794 00006580 23bdfff8 addi r29,r29,#-8 6795 00006584 afa30000 sw (r29),r3 6796 00006588 0fffb568 jal _FsClose 6797 0000658c 54000000 nop; not filled. 6798 00006590 2001ffff addi r1,r0,#-1 6799 00006594 23bd0008 addi r29,r29,#8 6800 00006598 080001d0 j L278_LF5 6801 0000659c 54000000 nop; not filled. 6802 000065a0 L284_LF5: 6803 000065a0 23bdfff8 addi r29,r29,#-8 6804 000065a4 afa40000 sw (r29),r4 6805 000065a8 3c010000 lhi r1,((LC36_LF5)>>16)&0xffff 6806 000065ac 2421f950 addui r1,r1,(LC36_LF5)&0xffff 6807 000065b0 afa10004 sw 4(r29),r1 6808 000065b4 0fffd664 jal _dstrstr 6809 000065b8 54000000 nop; not filled. 6810 000065bc 23bd0008 addi r29,r29,#8 6811 000065c0 64210000 snei r1,r1,#0 6812 000065c4 14200088 bnez r1,L287_LF5 6813 000065c8 54000000 nop; not filled. 6814 000065cc 23bdfff8 addi r29,r29,#-8 6815 000065d0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6816 000065d4 2442fd60 addui r2,r2,(_debugstr)&0xffff 6817 000065d8 afa20000 sw (r29),r2 6818 000065dc 200c0066 addi r12,r0,#102 6819 000065e0 afac0004 sw 4(r29),r12 6820 000065e4 0fffd84c jal _dindex 6821 000065e8 54000000 nop; not filled. 6822 000065ec 23bd0008 addi r29,r29,#8 6823 000065f0 64210000 snei r1,r1,#0 6824 000065f4 1420002c bnez r1,L289_LF5 6825 000065f8 54000000 nop; not filled. 6826 000065fc 23bdfff8 addi r29,r29,#-8 6827 00006600 afa20000 sw (r29),r2 6828 00006604 200c002b addi r12,r0,#43 6829 00006608 afac0004 sw 4(r29),r12 6830 0000660c 0fffd824 jal _dindex 6831 00006610 54000000 nop; not filled. 6832 00006614 23bd0008 addi r29,r29,#8 6833 00006618 64210000 snei r1,r1,#0 6834 0000661c 10200024 beqz r1,L288_LF5 6835 00006620 54000000 nop; not filled. 6836 00006624 L289_LF5: 6837 00006624 23bdfff8 addi r29,r29,#-8 6838 00006628 3c0c0000 lhi r12,((LC37_LF5)>>16)&0xffff 6839 0000662c 258cf958 addui r12,r12,(LC37_LF5)&0xffff 6840 00006630 afac0000 sw (r29),r12 6841 00006634 afa60004 sw 4(r29),r6 6842 00006638 0c0049b0 jal _printf 6843 0000663c 54000000 nop; not filled. 6844 00006640 23bd0008 addi r29,r29,#8 6845 00006644 L288_LF5: 6846 00006644 2001ffff addi r1,r0,#-1 6847 00006648 08000120 j L278_LF5 6848 0000664c 54000000 nop; not filled. 6849 00006650 L287_LF5: 6850 00006650 23bdfff8 addi r29,r29,#-8 6851 00006654 afa40000 sw (r29),r4 6852 00006658 200c003a addi r12,r0,#58 6853 0000665c afac0004 sw 4(r29),r12 6854 00006660 0fffd7d0 jal _dindex 6855 00006664 54000000 nop; not filled. 6856 00006668 20210001 addi r1,r1,#1 6857 0000666c afc1ff8c sw -116(r30),r1 6858 00006670 23bdfff8 addi r29,r29,#-8 6859 00006674 afa10000 sw (r29),r1 6860 00006678 23c2ff8c addi r2,r30,#-116 6861 0000667c afa20004 sw 4(r29),r2 6862 00006680 200c0010 addi r12,r0,#16 6863 00006684 afac0008 sw 8(r29),r12 6864 00006688 0fffd930 jal _dstrtol 6865 0000668c 54000000 nop; not filled. 6866 00006690 ace10000 sw (r7),r1 6867 00006694 8fccff8c lw r12,-116(r30) 6868 00006698 afac0000 sw (r29),r12 6869 0000669c afa20004 sw 4(r29),r2 6870 000066a0 200c0010 addi r12,r0,#16 6871 000066a4 afac0008 sw 8(r29),r12 6872 000066a8 0fffd910 jal _dstrtol 6873 000066ac 54000000 nop; not filled. 6874 000066b0 8fccff8c lw r12,-116(r30) 6875 000066b4 afac0000 sw (r29),r12 6876 000066b8 afa20004 sw 4(r29),r2 6877 000066bc 200c0010 addi r12,r0,#16 6878 000066c0 afac0008 sw 8(r29),r12 6879 000066c4 0fffd8f4 jal _dstrtol 6880 000066c8 54000000 nop; not filled. 6881 000066cc ad010000 sw (r8),r1 6882 000066d0 8fccff8c lw r12,-116(r30) 6883 000066d4 afac0000 sw (r29),r12 6884 000066d8 afa20004 sw 4(r29),r2 6885 000066dc 200c0010 addi r12,r0,#16 6886 000066e0 afac0008 sw 8(r29),r12 6887 000066e4 0fffd8d4 jal _dstrtol 6888 000066e8 54000000 nop; not filled. 6889 000066ec ad210000 sw (r9),r1 6890 000066f0 8fccff8c lw r12,-116(r30) 6891 000066f4 afac0000 sw (r29),r12 6892 000066f8 afa20004 sw 4(r29),r2 6893 000066fc 200c0010 addi r12,r0,#16 6894 00006700 afac0008 sw 8(r29),r12 6895 00006704 0fffd8b4 jal _dstrtol 6896 00006708 54000000 nop; not filled. 6897 0000670c ad410000 sw (r10),r1 6898 00006710 8fccff8c lw r12,-116(r30) 6899 00006714 afac0000 sw (r29),r12 6900 00006718 afa20004 sw 4(r29),r2 6901 0000671c 200c0010 addi r12,r0,#16 6902 00006720 afac0008 sw 8(r29),r12 6903 00006724 0fffd894 jal _dstrtol 6904 00006728 54000000 nop; not filled. 6905 0000672c ad610000 sw (r11),r1 6906 00006730 afa40000 sw (r29),r4 6907 00006734 200c000a addi r12,r0,#10 6908 00006738 afac0004 sw 4(r29),r12 6909 0000673c 0fffd6f4 jal _dindex 6910 00006740 54000000 nop; not filled. 6911 00006744 23c2ff8f addi r2,r30,#-113 6912 00006748 00220822 sub r1,r1,r2 6913 0000674c afa30000 sw (r29),r3 6914 00006750 afa10004 sw 4(r29),r1 6915 00006754 200c0000 addi r12,r0,#0 6916 00006758 afac0008 sw 8(r29),r12 6917 0000675c 0fffb694 jal _FsSeek 6918 00006760 54000000 nop; not filled. 6919 00006764 00030820 add r1,r0,r3 6920 00006768 23bd0010 addi r29,r29,#16 6921 0000676c L278_LF5: 6922 0000676c 8fa20000 lw r2,0(r29) 6923 00006770 8fa30004 lw r3,4(r29) 6924 00006774 8fa40008 lw r4,8(r29) 6925 00006778 8fa5000c lw r5,12(r29) 6926 0000677c 8fa60010 lw r6,16(r29) 6927 00006780 8fa70014 lw r7,20(r29) 6928 00006784 8fa80018 lw r8,24(r29) 6929 00006788 8fa9001c lw r9,28(r29) 6930 0000678c 8faa0020 lw r10,32(r29) 6931 00006790 8fab0024 lw r11,36(r29) 6932 00006794 8fac0028 lw r12,40(r29) 6933 00006798 8fdffff8 lw r31,-8(r30) 6934 0000679c 001ee820 add r29,r0,r30 6935 000067a0 8fdefffc lw r30,-4(r30) 6936 000067a4 4be00000 jr r31 6937 000067a8 54000000 nop 6938 000067ac .endproc _ProcessGetCodeInfo 6939 000067ac .data 6940 0000f99b .align 2 6941 0000f99c LC38_LF5: 6942 0000f99c 476f7420 .ascii "Got %d bytes at offset %d ...\000" 6942 0000f9a0 25642062 6942 0000f9a4 79746573 6942 0000f9a8 20617420 6942 0000f9ac 6f666673 6942 0000f9b0 65742025 6942 0000f9b4 64202e2e 6942 0000f9b8 2e00 6943 0000f9ba .align 2 6944 0000f9bc LC39_LF5: 6945 0000f9bc 20746572 .ascii " terminated at %d.\n\000" 6945 0000f9c0 6d696e61 6945 0000f9c4 74656420 6945 0000f9c8 61742025 6945 0000f9cc 642e0a00 6946 0000f9d0 .align 2 6947 0000f9d0 LC40_LF5: 6948 0000f9d0 42756666 .ascii "Buffer is \'%s\'\n\000" 6948 0000f9d4 65722069 6948 0000f9d8 73202725 6948 0000f9dc 73270a00 6949 0000f9e0 .align 2 6950 0000f9e0 LC41_LF5: 6951 0000f9e0 4e657720 .ascii "New address is 0x%x.\n\000" 6951 0000f9e4 61646472 6951 0000f9e8 65737320 6951 0000f9ec 69732030 6951 0000f9f0 7825782e 6951 0000f9f4 0a00 6952 0000f9f6 .align 2 6953 0000f9f8 LC42_LF5: 6954 0000f9f8 5365656b .ascii "Seeking to %d and returning %d bytes!\n\000" 6954 0000f9fc 696e6720 6954 0000fa00 746f2025 6954 0000fa04 6420616e 6954 0000fa08 64207265 6954 0000fa0c 7475726e 6954 0000fa10 696e6720 6954 0000fa14 25642062 6954 0000fa18 79746573 6954 0000fa1c 210a00 6955 0000fa1f .text 6956 000067ac .align 2 6957 000067ac .proc _ProcessGetFromFile 6958 000067ac .global _ProcessGetFromFile 6959 000067ac _ProcessGetFromFile: 6960 ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. 6961 000067ac afbefffc sw -4(r29),r30; push fp 6962 000067b0 001df020 add r30,r0,r29; fp = sp 6963 000067b4 afbffff8 sw -8(r29),r31; push ret addr 6964 000067b8 2fbd0110 subui r29,r29,#272; alloc local storage 6965 000067bc afa20000 sw 0(r29),r2 6966 000067c0 afa30004 sw 4(r29),r3 6967 000067c4 afa40008 sw 8(r29),r4 6968 000067c8 afa5000c sw 12(r29),r5 6969 000067cc afa60010 sw 16(r29),r6 6970 000067d0 afa70014 sw 20(r29),r7 6971 000067d4 afa80018 sw 24(r29),r8 6972 000067d8 afa9001c sw 28(r29),r9 6973 000067dc afaa0020 sw 32(r29),r10 6974 000067e0 afab0024 sw 36(r29),r11 6975 000067e4 afac0028 sw 40(r29),r12 6976 000067e8 8fca0000 lw r10,(r30) 6977 000067ec 8fc70008 lw r7,8(r30) 6978 000067f0 8fc2000c lw r2,12(r30) 6979 000067f4 8fcb0004 lw r11,4(r30) 6980 000067f8 23c3ff28 addi r3,r30,#-216 6981 000067fc afc3ff24 sw -220(r30),r3 6982 00006800 23bdfff0 addi r29,r29,#-16 6983 00006804 afaa0000 sw (r29),r10 6984 00006808 200c0000 addi r12,r0,#0 6985 0000680c afac0004 sw 4(r29),r12 6986 00006810 200c0001 addi r12,r0,#1 6987 00006814 afac0008 sw 8(r29),r12 6988 00006818 0fffb5d8 jal _FsSeek 6989 0000681c 54000000 nop; not filled. 6990 00006820 00014820 add r9,r0,r1 6991 00006824 50420001 slli r2,r2,#0x1 6992 00006828 23bd0010 addi r29,r29,#16 6993 0000682c 6c4100c8 sgtui r1,r2,#200 6994 00006830 10200008 beqz r1,L292_LF5 6995 00006834 54000000 nop; not filled. 6996 00006838 200200c8 addi r2,r0,#200 6997 0000683c L292_LF5: 6998 0000683c 23bdfff0 addi r29,r29,#-16 6999 00006840 afaa0000 sw (r29),r10 7000 00006844 afa30004 sw 4(r29),r3 7001 00006848 afa20008 sw 8(r29),r2 7002 0000684c 0fffb3ac jal _FsRead 7003 00006850 54000000 nop; not filled. 7004 00006854 00012820 add r5,r0,r1 7005 00006858 23bd0010 addi r29,r29,#16 7006 0000685c 70a10000 slei r1,r5,#0 7007 00006860 10200010 beqz r1,L293_LF5 7008 00006864 54000000 nop; not filled. 7009 00006868 20010000 addi r1,r0,#0 7010 0000686c 08000594 j L347_LF5 7011 00006870 54000000 nop; not filled. 7012 00006874 L293_LF5: 7013 00006874 23bdfff8 addi r29,r29,#-8 7014 00006878 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7015 0000687c 2442fd60 addui r2,r2,(_debugstr)&0xffff 7016 00006880 afa20000 sw (r29),r2 7017 00006884 200c0066 addi r12,r0,#102 7018 00006888 afac0004 sw 4(r29),r12 7019 0000688c 0fffd5a4 jal _dindex 7020 00006890 54000000 nop; not filled. 7021 00006894 23bd0008 addi r29,r29,#8 7022 00006898 64210000 snei r1,r1,#0 7023 0000689c 1420002c bnez r1,L295_LF5 7024 000068a0 54000000 nop; not filled. 7025 000068a4 23bdfff8 addi r29,r29,#-8 7026 000068a8 afa20000 sw (r29),r2 7027 000068ac 200c002b addi r12,r0,#43 7028 000068b0 afac0004 sw 4(r29),r12 7029 000068b4 0fffd57c jal _dindex 7030 000068b8 54000000 nop; not filled. 7031 000068bc 23bd0008 addi r29,r29,#8 7032 000068c0 64210000 snei r1,r1,#0 7033 000068c4 10200028 beqz r1,L294_LF5 7034 000068c8 54000000 nop; not filled. 7035 000068cc L295_LF5: 7036 000068cc 23bdfff0 addi r29,r29,#-16 7037 000068d0 3c0c0000 lhi r12,((LC38_LF5)>>16)&0xffff 7038 000068d4 258cf99c addui r12,r12,(LC38_LF5)&0xffff 7039 000068d8 afac0000 sw (r29),r12 7040 000068dc afa50004 sw 4(r29),r5 7041 000068e0 afa90008 sw 8(r29),r9 7042 000068e4 0c004704 jal _printf 7043 000068e8 54000000 nop; not filled. 7044 000068ec 23bd0010 addi r29,r29,#16 7045 000068f0 L294_LF5: 7046 000068f0 20a5ffff addi r5,r5,#-1 7047 000068f4 23c1ff28 addi r1,r30,#-216 7048 000068f8 00251020 add r2,r1,r5 7049 000068fc 0800000c j L350_LF5 7050 00006900 54000000 nop; not filled. 7051 00006904 L296_LF5: 7052 00006904 2042ffff addi r2,r2,#-1 7053 00006908 20a5ffff addi r5,r5,#-1 7054 0000690c L350_LF5: 7055 0000690c 90410000 lbu r1,(r2) 7056 00006910 6421000a snei r1,r1,#10 7057 00006914 1420ffec bnez r1,L296_LF5 7058 00006918 54000000 nop; not filled. 7059 0000691c 23c1ff29 addi r1,r30,#-215 7060 00006920 00250820 add r1,r1,r5 7061 00006924 200c005a addi r12,r0,(#0x5a)&0xff 7062 00006928 a02c0000 sb (r1),r12 7063 0000692c 23c1ff2a addi r1,r30,#-214 7064 00006930 00250820 add r1,r1,r5 7065 00006934 200c0000 addi r12,r0,(#0x0)&0xff 7066 00006938 a02c0000 sb (r1),r12 7067 0000693c 23bdfff8 addi r29,r29,#-8 7068 00006940 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7069 00006944 2442fd60 addui r2,r2,(_debugstr)&0xffff 7070 00006948 afa20000 sw (r29),r2 7071 0000694c 200c0066 addi r12,r0,#102 7072 00006950 afac0004 sw 4(r29),r12 7073 00006954 0fffd4dc jal _dindex 7074 00006958 54000000 nop; not filled. 7075 0000695c 23bd0008 addi r29,r29,#8 7076 00006960 64210000 snei r1,r1,#0 7077 00006964 1420002c bnez r1,L301_LF5 7078 00006968 54000000 nop; not filled. 7079 0000696c 23bdfff8 addi r29,r29,#-8 7080 00006970 afa20000 sw (r29),r2 7081 00006974 200c002b addi r12,r0,#43 7082 00006978 afac0004 sw 4(r29),r12 7083 0000697c 0fffd4b4 jal _dindex 7084 00006980 54000000 nop; not filled. 7085 00006984 23bd0008 addi r29,r29,#8 7086 00006988 64210000 snei r1,r1,#0 7087 0000698c 10200024 beqz r1,L300_LF5 7088 00006990 54000000 nop; not filled. 7089 00006994 L301_LF5: 7090 00006994 23bdfff8 addi r29,r29,#-8 7091 00006998 3c0c0000 lhi r12,((LC39_LF5)>>16)&0xffff 7092 0000699c 258cf9bc addui r12,r12,(LC39_LF5)&0xffff 7093 000069a0 afac0000 sw (r29),r12 7094 000069a4 afa50004 sw 4(r29),r5 7095 000069a8 0c004640 jal _printf 7096 000069ac 54000000 nop; not filled. 7097 000069b0 23bd0008 addi r29,r29,#8 7098 000069b4 L300_LF5: 7099 000069b4 23bdfff8 addi r29,r29,#-8 7100 000069b8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7101 000069bc 2442fd60 addui r2,r2,(_debugstr)&0xffff 7102 000069c0 afa20000 sw (r29),r2 7103 000069c4 200c0066 addi r12,r0,#102 7104 000069c8 afac0004 sw 4(r29),r12 7105 000069cc 0fffd464 jal _dindex 7106 000069d0 54000000 nop; not filled. 7107 000069d4 23bd0008 addi r29,r29,#8 7108 000069d8 64210000 snei r1,r1,#0 7109 000069dc 1420002c bnez r1,L303_LF5 7110 000069e0 54000000 nop; not filled. 7111 000069e4 23bdfff8 addi r29,r29,#-8 7112 000069e8 afa20000 sw (r29),r2 7113 000069ec 200c002b addi r12,r0,#43 7114 000069f0 afac0004 sw 4(r29),r12 7115 000069f4 0fffd43c jal _dindex 7116 000069f8 54000000 nop; not filled. 7117 000069fc 23bd0008 addi r29,r29,#8 7118 00006a00 64210000 snei r1,r1,#0 7119 00006a04 10200028 beqz r1,L302_LF5 7120 00006a08 54000000 nop; not filled. 7121 00006a0c L303_LF5: 7122 00006a0c 23bdfff8 addi r29,r29,#-8 7123 00006a10 3c0c0000 lhi r12,((LC40_LF5)>>16)&0xffff 7124 00006a14 258cf9d0 addui r12,r12,(LC40_LF5)&0xffff 7125 00006a18 afac0000 sw (r29),r12 7126 00006a1c 23c1ff28 addi r1,r30,#-216 7127 00006a20 afa10004 sw 4(r29),r1 7128 00006a24 0c0045c4 jal _printf 7129 00006a28 54000000 nop; not filled. 7130 00006a2c 23bd0008 addi r29,r29,#8 7131 00006a30 L302_LF5: 7132 00006a30 20050000 addi r5,r0,#0 7133 00006a34 3c080000 lhi r8,((_debugstr)>>16)&0xffff 7134 00006a38 2508fd60 addui r8,r8,(_debugstr)&0xffff 7135 00006a3c L304_LF5: 7136 00006a3c 23bdfff8 addi r29,r29,#-8 7137 00006a40 8fccff24 lw r12,-220(r30) 7138 00006a44 afac0000 sw (r29),r12 7139 00006a48 200c005a addi r12,r0,#90 7140 00006a4c afac0004 sw 4(r29),r12 7141 00006a50 0fffd3e0 jal _dindex 7142 00006a54 54000000 nop; not filled. 7143 00006a58 23bd0008 addi r29,r29,#8 7144 00006a5c 64210000 snei r1,r1,#0 7145 00006a60 102002ec beqz r1,L305_LF5 7146 00006a64 54000000 nop; not filled. 7147 00006a68 23bdfff8 addi r29,r29,#-8 7148 00006a6c 8fccff24 lw r12,-220(r30) 7149 00006a70 afac0000 sw (r29),r12 7150 00006a74 200c003a addi r12,r0,#58 7151 00006a78 afac0004 sw 4(r29),r12 7152 00006a7c 0fffd3b4 jal _dindex 7153 00006a80 54000000 nop; not filled. 7154 00006a84 23bd0008 addi r29,r29,#8 7155 00006a88 64210000 snei r1,r1,#0 7156 00006a8c 102002c0 beqz r1,L305_LF5 7157 00006a90 54000000 nop; not filled. 7158 00006a94 8fc2ff24 lw r2,-220(r30) 7159 00006a98 90410000 lbu r1,(r2) 7160 00006a9c 6421003a snei r1,r1,#58 7161 00006aa0 102000b8 beqz r1,L349_LF5 7162 00006aa4 54000000 nop; not filled. 7163 00006aa8 6ca10000 sgti r1,r5,#0 7164 00006aac 142002a0 bnez r1,L305_LF5 7165 00006ab0 54000000 nop; not filled. 7166 00006ab4 23bdfff0 addi r29,r29,#-16 7167 00006ab8 afa20000 sw (r29),r2 7168 00006abc 23c1ff24 addi r1,r30,#-220 7169 00006ac0 afa10004 sw 4(r29),r1 7170 00006ac4 200c0010 addi r12,r0,#16 7171 00006ac8 afac0008 sw 8(r29),r12 7172 00006acc 0fffd4ec jal _dstrtol 7173 00006ad0 54000000 nop; not filled. 7174 00006ad4 ace10000 sw (r7),r1 7175 00006ad8 afa80000 sw (r29),r8 7176 00006adc 200c0066 addi r12,r0,#102 7177 00006ae0 afac0004 sw 4(r29),r12 7178 00006ae4 0fffd34c jal _dindex 7179 00006ae8 54000000 nop; not filled. 7180 00006aec 23bd0010 addi r29,r29,#16 7181 00006af0 64210000 snei r1,r1,#0 7182 00006af4 1420002c bnez r1,L311_LF5 7183 00006af8 54000000 nop; not filled. 7184 00006afc 23bdfff8 addi r29,r29,#-8 7185 00006b00 afa80000 sw (r29),r8 7186 00006b04 200c002b addi r12,r0,#43 7187 00006b08 afac0004 sw 4(r29),r12 7188 00006b0c 0fffd324 jal _dindex 7189 00006b10 54000000 nop; not filled. 7190 00006b14 23bd0008 addi r29,r29,#8 7191 00006b18 64210000 snei r1,r1,#0 7192 00006b1c 10200028 beqz r1,L308_LF5 7193 00006b20 54000000 nop; not filled. 7194 00006b24 L311_LF5: 7195 00006b24 23bdfff8 addi r29,r29,#-8 7196 00006b28 3c0c0000 lhi r12,((LC41_LF5)>>16)&0xffff 7197 00006b2c 258cf9e0 addui r12,r12,(LC41_LF5)&0xffff 7198 00006b30 afac0000 sw (r29),r12 7199 00006b34 8ce10000 lw r1,(r7) 7200 00006b38 afa10004 sw 4(r29),r1 7201 00006b3c 0c0044ac jal _printf 7202 00006b40 54000000 nop; not filled. 7203 00006b44 23bd0008 addi r29,r29,#8 7204 00006b48 L308_LF5: 7205 00006b48 8fc1ff24 lw r1,-220(r30) 7206 00006b4c 90210000 lbu r1,(r1) 7207 00006b50 6421003a snei r1,r1,#58 7208 00006b54 142001f8 bnez r1,L305_LF5 7209 00006b58 54000000 nop; not filled. 7210 00006b5c L349_LF5: 7211 00006b5c 8fc1ff24 lw r1,-220(r30) 7212 00006b60 20210001 addi r1,r1,#1 7213 00006b64 afc1ff24 sw -220(r30),r1 7214 00006b68 00ab3020 add r6,r5,r11 7215 00006b6c L315_LF5: 7216 00006b6c 8fc1ff24 lw r1,-220(r30) 7217 00006b70 08000010 j L351_LF5 7218 00006b74 54000000 nop; not filled. 7219 00006b78 L318_LF5: 7220 00006b78 8fc1ff24 lw r1,-220(r30) 7221 00006b7c 20210001 addi r1,r1,#1 7222 00006b80 afc1ff24 sw -220(r30),r1 7223 00006b84 L351_LF5: 7224 00006b84 903f0000 lbu r31,(r1) 7225 00006b88 63e10020 seqi r1,r31,#32 7226 00006b8c 1420ffe8 bnez r1,L318_LF5 7227 00006b90 54000000 nop; not filled. 7228 00006b94 63e10009 seqi r1,r31,#9 7229 00006b98 1420ffdc bnez r1,L318_LF5 7230 00006b9c 54000000 nop; not filled. 7231 00006ba0 8fc2ff24 lw r2,-220(r30) 7232 00006ba4 805f0000 lb r31,(r2) 7233 00006ba8 33e300ff andi r3,r31,#0x00ff 7234 00006bac 6061000a seqi r1,r3,#10 7235 00006bb0 10200014 beqz r1,L320_LF5 7236 00006bb4 54000000 nop; not filled. 7237 00006bb8 20410001 addi r1,r2,#1 7238 00006bbc afc1ff24 sw -220(r30),r1 7239 00006bc0 0bfffe78 j L304_LF5 7240 00006bc4 54000000 nop; not filled. 7241 00006bc8 L320_LF5: 7242 00006bc8 20020000 addi r2,r0,#0 7243 00006bcc 23e1ffd0 addi r1,r31,#-48 7244 00006bd0 302100ff andi r1,r1,#0x00ff 7245 00006bd4 70210009 sleui r1,r1,#9 7246 00006bd8 14200024 bnez r1,L326_LF5 7247 00006bdc 54000000 nop; not filled. 7248 00006be0 23e1ff9f addi r1,r31,#-97 7249 00006be4 302100ff andi r1,r1,#0x00ff 7250 00006be8 70210005 sleui r1,r1,#5 7251 00006bec 14200010 bnez r1,L326_LF5 7252 00006bf0 54000000 nop; not filled. 7253 00006bf4 64610041 snei r1,r3,#65 7254 00006bf8 14200008 bnez r1,L325_LF5 7255 00006bfc 54000000 nop; not filled. 7256 00006c00 L326_LF5: 7257 00006c00 20020001 addi r2,r0,#1 7258 00006c04 L325_LF5: 7259 00006c04 64410000 snei r1,r2,#0 7260 00006c08 1020fe30 beqz r1,L304_LF5 7261 00006c0c 54000000 nop; not filled. 7262 00006c10 8fc1ff24 lw r1,-220(r30) 7263 00006c14 80220001 lb r2,1(r1) 7264 00006c18 20030000 addi r3,r0,#0 7265 00006c1c 2041ffd0 addi r1,r2,#-48 7266 00006c20 302100ff andi r1,r1,#0x00ff 7267 00006c24 70210009 sleui r1,r1,#9 7268 00006c28 14200028 bnez r1,L329_LF5 7269 00006c2c 54000000 nop; not filled. 7270 00006c30 2041ff9f addi r1,r2,#-97 7271 00006c34 302100ff andi r1,r1,#0x00ff 7272 00006c38 70210005 sleui r1,r1,#5 7273 00006c3c 14200014 bnez r1,L329_LF5 7274 00006c40 54000000 nop; not filled. 7275 00006c44 304100ff andi r1,r2,#0x00ff 7276 00006c48 64210041 snei r1,r1,#65 7277 00006c4c 14200008 bnez r1,L328_LF5 7278 00006c50 54000000 nop; not filled. 7279 00006c54 L329_LF5: 7280 00006c54 20030001 addi r3,r0,#1 7281 00006c58 L328_LF5: 7282 00006c58 64610000 snei r1,r3,#0 7283 00006c5c 1020fddc beqz r1,L304_LF5 7284 00006c60 54000000 nop; not filled. 7285 00006c64 8fc1ff24 lw r1,-220(r30) 7286 00006c68 90220000 lbu r2,(r1) 7287 00006c6c 00021820 add r3,r0,r2 7288 00006c70 205fffd0 addi r31,r2,#-48 7289 00006c74 73e10009 sleui r1,r31,#9 7290 00006c78 10200010 beqz r1,L331_LF5 7291 00006c7c 54000000 nop; not filled. 7292 00006c80 001f2020 add r4,r0,r31 7293 00006c84 08000038 j L330_LF5 7294 00006c88 54000000 nop; not filled. 7295 00006c8c L331_LF5: 7296 00006c8c 2041ff9f addi r1,r2,#-97 7297 00006c90 70210005 sleui r1,r1,#5 7298 00006c94 10200010 beqz r1,L333_LF5 7299 00006c98 54000000 nop; not filled. 7300 00006c9c 2044ffa9 addi r4,r2,#-87 7301 00006ca0 0800001c j L330_LF5 7302 00006ca4 54000000 nop; not filled. 7303 00006ca8 L333_LF5: 7304 00006ca8 2061ffbf addi r1,r3,#-65 7305 00006cac 70210005 sleui r1,r1,#5 7306 00006cb0 20040000 addi r4,r0,#0 7307 00006cb4 10200008 beqz r1,L330_LF5 7308 00006cb8 54000000 nop; not filled. 7309 00006cbc 2064ffc9 addi r4,r3,#-55 7310 00006cc0 L330_LF5: 7311 00006cc0 8fc1ff24 lw r1,-220(r30) 7312 00006cc4 90220001 lbu r2,1(r1) 7313 00006cc8 00021820 add r3,r0,r2 7314 00006ccc 205fffd0 addi r31,r2,#-48 7315 00006cd0 73e10009 sleui r1,r31,#9 7316 00006cd4 10200010 beqz r1,L338_LF5 7317 00006cd8 54000000 nop; not filled. 7318 00006cdc 001f1020 add r2,r0,r31 7319 00006ce0 08000038 j L337_LF5 7320 00006ce4 54000000 nop; not filled. 7321 00006ce8 L338_LF5: 7322 00006ce8 2041ff9f addi r1,r2,#-97 7323 00006cec 70210005 sleui r1,r1,#5 7324 00006cf0 10200010 beqz r1,L340_LF5 7325 00006cf4 54000000 nop; not filled. 7326 00006cf8 2042ffa9 addi r2,r2,#-87 7327 00006cfc 0800001c j L337_LF5 7328 00006d00 54000000 nop; not filled. 7329 00006d04 L340_LF5: 7330 00006d04 2061ffbf addi r1,r3,#-65 7331 00006d08 70210005 sleui r1,r1,#5 7332 00006d0c 20020000 addi r2,r0,#0 7333 00006d10 10200008 beqz r1,L337_LF5 7334 00006d14 54000000 nop; not filled. 7335 00006d18 2062ffc9 addi r2,r3,#-55 7336 00006d1c L337_LF5: 7337 00006d1c 50810004 slli r1,r4,#0x4 7338 00006d20 00220820 add r1,r1,r2 7339 00006d24 a0c10000 sb (r6),r1 7340 00006d28 20c60001 addi r6,r6,#1 7341 00006d2c 20a50001 addi r5,r5,#1 7342 00006d30 8fc1ff24 lw r1,-220(r30) 7343 00006d34 20210002 addi r1,r1,#2 7344 00006d38 afc1ff24 sw -220(r30),r1 7345 00006d3c 8ce10000 lw r1,(r7) 7346 00006d40 20210001 addi r1,r1,#1 7347 00006d44 ace10000 sw (r7),r1 7348 00006d48 0bfffe20 j L315_LF5 7349 00006d4c 54000000 nop; not filled. 7350 00006d50 L305_LF5: 7351 00006d50 23bdfff0 addi r29,r29,#-16 7352 00006d54 afaa0000 sw (r29),r10 7353 00006d58 8fc1ff24 lw r1,-220(r30) 7354 00006d5c 00290820 add r1,r1,r9 7355 00006d60 23c3ff28 addi r3,r30,#-216 7356 00006d64 00230822 sub r1,r1,r3 7357 00006d68 afa10004 sw 4(r29),r1 7358 00006d6c 200c0000 addi r12,r0,#0 7359 00006d70 afac0008 sw 8(r29),r12 7360 00006d74 0fffb07c jal _FsSeek 7361 00006d78 54000000 nop; not filled. 7362 00006d7c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7363 00006d80 2442fd60 addui r2,r2,(_debugstr)&0xffff 7364 00006d84 afa20000 sw (r29),r2 7365 00006d88 200c0066 addi r12,r0,#102 7366 00006d8c afac0004 sw 4(r29),r12 7367 00006d90 0fffd0a0 jal _dindex 7368 00006d94 54000000 nop; not filled. 7369 00006d98 23bd0010 addi r29,r29,#16 7370 00006d9c 64210000 snei r1,r1,#0 7371 00006da0 1420002c bnez r1,L346_LF5 7372 00006da4 54000000 nop; not filled. 7373 00006da8 23bdfff8 addi r29,r29,#-8 7374 00006dac afa20000 sw (r29),r2 7375 00006db0 200c002b addi r12,r0,#43 7376 00006db4 afac0004 sw 4(r29),r12 7377 00006db8 0fffd078 jal _dindex 7378 00006dbc 54000000 nop; not filled. 7379 00006dc0 23bd0008 addi r29,r29,#8 7380 00006dc4 64210000 snei r1,r1,#0 7381 00006dc8 10200034 beqz r1,L345_LF5 7382 00006dcc 54000000 nop; not filled. 7383 00006dd0 L346_LF5: 7384 00006dd0 23bdfff0 addi r29,r29,#-16 7385 00006dd4 3c0c0000 lhi r12,((LC42_LF5)>>16)&0xffff 7386 00006dd8 258cf9f8 addui r12,r12,(LC42_LF5)&0xffff 7387 00006ddc afac0000 sw (r29),r12 7388 00006de0 8fc1ff24 lw r1,-220(r30) 7389 00006de4 00290820 add r1,r1,r9 7390 00006de8 00230822 sub r1,r1,r3 7391 00006dec afa10004 sw 4(r29),r1 7392 00006df0 afa50008 sw 8(r29),r5 7393 00006df4 0c0041f4 jal _printf 7394 00006df8 54000000 nop; not filled. 7395 00006dfc 23bd0010 addi r29,r29,#16 7396 00006e00 L345_LF5: 7397 00006e00 00050820 add r1,r0,r5 7398 00006e04 L347_LF5: 7399 00006e04 8fa20000 lw r2,0(r29) 7400 00006e08 8fa30004 lw r3,4(r29) 7401 00006e0c 8fa40008 lw r4,8(r29) 7402 00006e10 8fa5000c lw r5,12(r29) 7403 00006e14 8fa60010 lw r6,16(r29) 7404 00006e18 8fa70014 lw r7,20(r29) 7405 00006e1c 8fa80018 lw r8,24(r29) 7406 00006e20 8fa9001c lw r9,28(r29) 7407 00006e24 8faa0020 lw r10,32(r29) 7408 00006e28 8fab0024 lw r11,36(r29) 7409 00006e2c 8fac0028 lw r12,40(r29) 7410 00006e30 8fdffff8 lw r31,-8(r30) 7411 00006e34 001ee820 add r29,r0,r30 7412 00006e38 8fdefffc lw r30,-4(r30) 7413 00006e3c 4be00000 jr r31 7414 00006e40 54000000 nop 7415 00006e44 .endproc _ProcessGetFromFile 7416 00006e44 .data 7417 0000fa1f .align 2 7418 0000fa20 _temppcb64_LF5: 7419 0000fa20 .space 120 7420 0000fa98 .align 2 7421 0000fa98 LC43_LF5: 7422 0000fa98 476f7420 .ascii "Got %d arguments.\n\000" 7422 0000fa9c 25642061 7422 0000faa0 7267756d 7422 0000faa4 656e7473 7422 0000faa8 2e0a00 7423 0000faab .align 2 7424 0000faac LC44_LF5: 7425 0000faac 41766169 .ascii "Available memory: 0x%x -> 0x%x.\n\000" 7425 0000fab0 6c61626c 7425 0000fab4 65206d65 7425 0000fab8 6d6f7279 7425 0000fabc 3a203078 7425 0000fac0 2578202d 7425 0000fac4 3e203078 7425 0000fac8 25782e0a 7425 0000facc 00 7426 0000facd .align 2 7427 0000fad0 LC45_LF5: 7428 0000fad0 41726775 .ascii "Argument count is %d.\n\000" 7428 0000fad4 6d656e74 7428 0000fad8 20636f75 7428 0000fadc 6e742069 7428 0000fae0 73202564 7428 0000fae4 2e0a00 7429 0000fae7 .align 2 7430 0000fae8 LC46_LF5: 7431 0000fae8 41726775 .ascii "Argument %d is %s.\n\000" 7431 0000faec 6d656e74 7431 0000faf0 20256420 7431 0000faf4 69732025 7431 0000faf8 732e0a00 7432 0000fafc .align 2 7433 0000fafc LC47_LF5: 7434 0000fafc 436f6e76 .ascii "Converted %s to %d=%s\n\000" 7434 0000fb00 65727465 7434 0000fb04 64202573 7434 0000fb08 20746f20 7434 0000fb0c 25643d25 7434 0000fb10 730a00 7435 0000fb13 _buf65_LF5: 7436 0000fb13 .space 200 7437 0000fbdb .align 2 7438 0000fbdc LC48_LF5: 7439 0000fbdc 25303878 .ascii "%08x: %02x%02x%02x%02x\n\000" 7439 0000fbe0 3a202530 7439 0000fbe4 32782530 7439 0000fbe8 32782530 7439 0000fbec 32782530 7439 0000fbf0 32780a00 7440 0000fbf4 .align 2 7441 0000fbf4 LC49_LF5: 7442 0000fbf4 4f707469 .ascii "Option %s not recognized.\n\000" 7442 0000fbf8 6f6e2025 7442 0000fbfc 73206e6f 7442 0000fc00 74207265 7442 0000fc04 636f676e 7442 0000fc08 697a6564 7442 0000fc0c 2e0a00 7443 0000fc0f .align 2 7444 0000fc10 LC50_LF5: 7445 0000fc10 41626f75 .ascii "About to initialize queues.\n\000" 7445 0000fc14 7420746f 7445 0000fc18 20696e69 7445 0000fc1c 7469616c 7445 0000fc20 697a6520 7445 0000fc24 71756575 7445 0000fc28 65732e0a 7445 0000fc2c 00 7446 0000fc2d .align 2 7447 0000fc30 LC51_LF5: 7448 0000fc30 41667465 .ascii "After initializing queues.\n\000" 7448 0000fc34 7220696e 7448 0000fc38 69746961 7448 0000fc3c 6c697a69 7448 0000fc40 6e672071 7448 0000fc44 75657565 7448 0000fc48 732e0a00 7449 0000fc4c .align 2 7450 0000fc4c LC52_LF5: 7451 0000fc4c 41667465 .ascii "After initializing memory.\n\000" 7451 0000fc50 7220696e 7451 0000fc54 69746961 7451 0000fc58 6c697a69 7451 0000fc5c 6e67206d 7451 0000fc60 656d6f72 7451 0000fc64 792e0a00 7452 0000fc68 .align 2 7453 0000fc68 LC53_LF5: 7454 0000fc68 41667465 .ascii "After initializing processes.\n\000" 7454 0000fc6c 7220696e 7454 0000fc70 69746961 7454 0000fc74 6c697a69 7454 0000fc78 6e672070 7454 0000fc7c 726f6365 7454 0000fc80 73736573 7454 0000fc84 2e0a00 7455 0000fc87 .align 2 7456 0000fc88 LC54_LF5: 7457 0000fc88 41667465 .ascii "After initializing synchronization tools.\n\000" 7457 0000fc8c 7220696e 7457 0000fc90 69746961 7457 0000fc94 6c697a69 7457 0000fc98 6e672073 7457 0000fc9c 796e6368 7457 0000fca0 726f6e69 7457 0000fca4 7a617469 7457 0000fca8 6f6e2074 7457 0000fcac 6f6f6c73 7457 0000fcb0 2e0a00 7458 0000fcb3 .align 2 7459 0000fcb4 LC55_LF5: 7460 0000fcb4 41667465 .ascii "After initializing keyboard.\n\000" 7460 0000fcb8 7220696e 7460 0000fcbc 69746961 7460 0000fcc0 6c697a69 7460 0000fcc4 6e67206b 7460 0000fcc8 6579626f 7460 0000fccc 6172642e 7460 0000fcd0 0a00 7461 0000fcd2 .align 2 7462 0000fcd4 LC56_LF5: 7463 0000fcd4 766d00 .ascii "vm\000" 7464 0000fcd7 .align 2 7465 0000fcd8 LC57_LF5: 7466 0000fcd8 564d2044 .ascii "VM Descriptor is %d\n\000" 7466 0000fcdc 65736372 7466 0000fce0 6970746f 7466 0000fce4 72206973 7466 0000fce8 2025640a 7466 0000fcec 00 7467 0000fced .align 2 7468 0000fcf0 LC58_LF5: 7469 0000fcf0 43726561 .ascii "Created processes - about to set timer quantum.\n\000" 7469 0000fcf4 74656420 7469 0000fcf8 70726f63 7469 0000fcfc 65737365 7469 0000fd00 73202d20 7469 0000fd04 61626f75 7469 0000fd08 7420746f 7469 0000fd0c 20736574 7469 0000fd10 2074696d 7469 0000fd14 65722071 7469 0000fd18 75616e74 7469 0000fd1c 756d2e0a 7469 0000fd20 00 7470 0000fd21 .align 2 7471 0000fd24 LC59_LF5: 7472 0000fd24 53657420 .ascii "Set timer quantum to %d, about to run first process.\n\000" 7472 0000fd28 74696d65 7472 0000fd2c 72207175 7472 0000fd30 616e7475 7472 0000fd34 6d20746f 7472 0000fd38 2025642c 7472 0000fd3c 2061626f 7472 0000fd40 75742074 7472 0000fd44 6f207275 7472 0000fd48 6e206669 7472 0000fd4c 72737420 7472 0000fd50 70726f63 7472 0000fd54 6573732e 7472 0000fd58 0a00 7473 0000fd5a .text 7474 00006e44 .align 2 7475 00006e44 .proc _main 7476 00006e44 .global _main 7477 00006e44 _main: 7478 ; Function 'main'; 192 bytes of locals, 0 regs to save. 7479 00006e44 afbefffc sw -4(r29),r30; push fp 7480 00006e48 001df020 add r30,r0,r29; fp = sp 7481 00006e4c afbffff8 sw -8(r29),r31; push ret addr 7482 00006e50 2fbd00c8 subui r29,r29,#200; alloc local storage 7483 00006e54 8fce0000 lw r14,(r30) 7484 00006e58 8fd40004 lw r20,4(r30) 7485 00006e5c 0c0040f4 jal ___main 7486 00006e60 54000000 nop; not filled. 7487 00006e64 20100000 addi r16,r0,#0 7488 00006e68 20150000 addi r21,r0,#0 7489 00006e6c afd5ff50 sw -176(r30),r21 7490 00006e70 afd5ff54 sw -172(r30),r21 7491 00006e74 afd5ff58 sw -168(r30),r21 7492 00006e78 afd5ff5c sw -164(r30),r21 7493 00006e7c afd5ff60 sw -160(r30),r21 7494 00006e80 afd5ff64 sw -156(r30),r21 7495 00006e84 afd5ff68 sw -152(r30),r21 7496 00006e88 afd5ff6c sw -148(r30),r21 7497 00006e8c afd5ff70 sw -144(r30),r21 7498 00006e90 afd5ff74 sw -140(r30),r21 7499 00006e94 afd5ff78 sw -136(r30),r21 7500 00006e98 afd5ff7c sw -132(r30),r21 7501 00006e9c 3c010000 lhi r1,((_debugstr)>>16)&0xffff 7502 00006ea0 2421fd60 addui r1,r1,(_debugstr)&0xffff 7503 00006ea4 20150000 addi r21,r0,(#0x0)&0xff 7504 00006ea8 a0350001 sb 1(r1),r21 7505 00006eac 0c0009e4 jal _MyFuncRetZero 7506 00006eb0 54000000 nop; not filled. 7507 00006eb4 23bdfff8 addi r29,r29,#-8 7508 00006eb8 3c150000 lhi r21,((LC43_LF5)>>16)&0xffff 7509 00006ebc 26b5fa98 addui r21,r21,(LC43_LF5)&0xffff 7510 00006ec0 afb50000 sw (r29),r21 7511 00006ec4 afae0004 sw 4(r29),r14 7512 00006ec8 0c004120 jal _printf 7513 00006ecc 54000000 nop; not filled. 7514 00006ed0 0fffbb38 jal _MemoryGetSize 7515 00006ed4 54000000 nop; not filled. 7516 00006ed8 23bdfff8 addi r29,r29,#-8 7517 00006edc 3c150000 lhi r21,((LC44_LF5)>>16)&0xffff 7518 00006ee0 26b5faac addui r21,r21,(LC44_LF5)&0xffff 7519 00006ee4 afb50000 sw (r29),r21 7520 00006ee8 3c020001 lhi r2,((_lastosaddress)>>16)&0xffff 7521 00006eec 24422df8 addui r2,r2,(_lastosaddress)&0xffff 7522 00006ef0 8c420000 lw r2,(r2) 7523 00006ef4 afa20004 sw 4(r29),r2 7524 00006ef8 afa10008 sw 8(r29),r1 7525 00006efc 0c0040ec jal _printf 7526 00006f00 54000000 nop; not filled. 7527 00006f04 3c150000 lhi r21,((LC45_LF5)>>16)&0xffff 7528 00006f08 26b5fad0 addui r21,r21,(LC45_LF5)&0xffff 7529 00006f0c afb50000 sw (r29),r21 7530 00006f10 afae0004 sw 4(r29),r14 7531 00006f14 0c0040d4 jal _printf 7532 00006f18 54000000 nop; not filled. 7533 00006f1c 20090000 addi r9,r0,#0 7534 00006f20 23bd0010 addi r29,r29,#16 7535 00006f24 012e082a slt r1,r9,r14 7536 00006f28 10200044 beqz r1,L354_LF5 7537 00006f2c 54000000 nop; not filled. 7538 00006f30 00141020 add r2,r0,r20 7539 00006f34 L356_LF5: 7540 00006f34 23bdfff0 addi r29,r29,#-16 7541 00006f38 3c150000 lhi r21,((LC46_LF5)>>16)&0xffff 7542 00006f3c 26b5fae8 addui r21,r21,(LC46_LF5)&0xffff 7543 00006f40 afb50000 sw (r29),r21 7544 00006f44 afa90004 sw 4(r29),r9 7545 00006f48 8c550000 lw r21,(r2) 7546 00006f4c afb50008 sw 8(r29),r21 7547 00006f50 0c004098 jal _printf 7548 00006f54 54000000 nop; not filled. 7549 00006f58 23bd0010 addi r29,r29,#16 7550 00006f5c 20420004 addi r2,r2,#4 7551 00006f60 21290001 addi r9,r9,#1 7552 00006f64 012e082a slt r1,r9,r14 7553 00006f68 1420ffc8 bnez r1,L356_LF5 7554 00006f6c 54000000 nop; not filled. 7555 00006f70 L354_LF5: 7556 00006f70 0fffb50c jal _FsModuleInit 7557 00006f74 54000000 nop; not filled. 7558 00006f78 20090000 addi r9,r0,#0 7559 00006f7c 012e082a slt r1,r9,r14 7560 00006f80 1020033c beqz r1,L359_LF5 7561 00006f84 54000000 nop; not filled. 7562 00006f88 23ccff80 addi r12,r30,#-128 7563 00006f8c 23cdff38 addi r13,r30,#-200 7564 00006f90 3c0f0000 lhi r15,((_buf65_LF5)>>16)&0xffff 7565 00006f94 25effb13 addui r15,r15,(_buf65_LF5)&0xffff 7566 00006f98 21f20001 addi r18,r15,#1 7567 00006f9c 21f10002 addi r17,r15,#2 7568 00006fa0 00144020 add r8,r0,r20 7569 00006fa4 L361_LF5: 7570 00006fa4 8d020000 lw r2,(r8) 7571 00006fa8 90410000 lbu r1,(r2) 7572 00006fac 6021002d seqi r1,r1,#45 7573 00006fb0 102002f8 beqz r1,L360_LF5 7574 00006fb4 54000000 nop; not filled. 7575 00006fb8 90420001 lbu r2,1(r2) 7576 00006fbc 60410066 seqi r1,r2,#102 7577 00006fc0 142000e0 bnez r1,L366_LF5 7578 00006fc4 54000000 nop; not filled. 7579 00006fc8 6c410066 sgti r1,r2,#102 7580 00006fcc 14200018 bnez r1,L378_LF5 7581 00006fd0 54000000 nop; not filled. 7582 00006fd4 60410044 seqi r1,r2,#68 7583 00006fd8 102002a0 beqz r1,L376_LF5 7584 00006fdc 54000000 nop; not filled. 7585 00006fe0 08000024 j L364_LF5 7586 00006fe4 54000000 nop; not filled. 7587 00006fe8 L378_LF5: 7588 00006fe8 60410069 seqi r1,r2,#105 7589 00006fec 14200048 bnez r1,L365_LF5 7590 00006ff0 54000000 nop; not filled. 7591 00006ff4 60410075 seqi r1,r2,#117 7592 00006ff8 10200280 beqz r1,L376_LF5 7593 00006ffc 54000000 nop; not filled. 7594 00007000 08000260 j L375_LF5 7595 00007004 54000000 nop; not filled. 7596 00007008 L364_LF5: 7597 00007008 23bdfff8 addi r29,r29,#-8 7598 0000700c 3c150000 lhi r21,((_debugstr)>>16)&0xffff 7599 00007010 26b5fd60 addui r21,r21,(_debugstr)&0xffff 7600 00007014 afb50000 sw (r29),r21 7601 00007018 21080004 addi r8,r8,#4 7602 0000701c 21290001 addi r9,r9,#1 7603 00007020 8d010000 lw r1,(r8) 7604 00007024 afa10004 sw 4(r29),r1 7605 00007028 0fffc948 jal _dstrcpy 7606 0000702c 54000000 nop; not filled. 7607 00007030 08000268 j L411_LF5 7608 00007034 54000000 nop; not filled. 7609 00007038 L365_LF5: 7610 00007038 23bdfff0 addi r29,r29,#-16 7611 0000703c 21080004 addi r8,r8,#4 7612 00007040 21290001 addi r9,r9,#1 7613 00007044 8d150000 lw r21,(r8) 7614 00007048 afb50000 sw (r29),r21 7615 0000704c 20150000 addi r21,r0,#0 7616 00007050 afb50004 sw 4(r29),r21 7617 00007054 afb50008 sw 8(r29),r21 7618 00007058 0fffcf60 jal _dstrtol 7619 0000705c 54000000 nop; not filled. 7620 00007060 00011820 add r3,r0,r1 7621 00007064 afa10000 sw (r29),r1 7622 00007068 afac0004 sw 4(r29),r12 7623 0000706c 0fffce40 jal _ditoa 7624 00007070 54000000 nop; not filled. 7625 00007074 3c150000 lhi r21,((LC47_LF5)>>16)&0xffff 7626 00007078 26b5fafc addui r21,r21,(LC47_LF5)&0xffff 7627 0000707c afb50000 sw (r29),r21 7628 00007080 8d010000 lw r1,(r8) 7629 00007084 afa10004 sw 4(r29),r1 7630 00007088 afa30008 sw 8(r29),r3 7631 0000708c afac000c sw 12(r29),r12 7632 00007090 0c003f58 jal _printf 7633 00007094 54000000 nop; not filled. 7634 00007098 23bd0010 addi r29,r29,#16 7635 0000709c 08000200 j L363_LF5 7636 000070a0 54000000 nop; not filled. 7637 000070a4 L366_LF5: 7638 000070a4 20150000 addi r21,r0,#0 7639 000070a8 afd5ff38 sw -200(r30),r21 7640 000070ac 23bdffe8 addi r29,r29,#-24 7641 000070b0 21080004 addi r8,r8,#4 7642 000070b4 21290001 addi r9,r9,#1 7643 000070b8 8d150000 lw r21,(r8) 7644 000070bc afb50000 sw (r29),r21 7645 000070c0 23c1ff4c addi r1,r30,#-180 7646 000070c4 afa10004 sw 4(r29),r1 7647 000070c8 23c1ff48 addi r1,r30,#-184 7648 000070cc afa10008 sw 8(r29),r1 7649 000070d0 23c1ff44 addi r1,r30,#-188 7650 000070d4 afa1000c sw 12(r29),r1 7651 000070d8 23c1ff40 addi r1,r30,#-192 7652 000070dc afa10010 sw 16(r29),r1 7653 000070e0 23c1ff3c addi r1,r30,#-196 7654 000070e4 afa10014 sw 20(r29),r1 7655 000070e8 0ffff260 jal _ProcessGetCodeInfo 7656 000070ec 54000000 nop; not filled. 7657 000070f0 00015020 add r10,r0,r1 7658 000070f4 3c150000 lhi r21,((LC27_LF5)>>16)&0xffff 7659 000070f8 26b5f7f4 addui r21,r21,(LC27_LF5)&0xffff 7660 000070fc afb50000 sw (r29),r21 7661 00007100 8d010000 lw r1,(r8) 7662 00007104 afa10004 sw 4(r29),r1 7663 00007108 8fd5ff4c lw r21,-180(r30) 7664 0000710c afb50008 sw 8(r29),r21 7665 00007110 0c003ed8 jal _printf 7666 00007114 54000000 nop; not filled. 7667 00007118 3c150000 lhi r21,((LC28_LF5)>>16)&0xffff 7668 0000711c 26b5f810 addui r21,r21,(LC28_LF5)&0xffff 7669 00007120 afb50000 sw (r29),r21 7670 00007124 8d010000 lw r1,(r8) 7671 00007128 afa10004 sw 4(r29),r1 7672 0000712c 8fd5ff48 lw r21,-184(r30) 7673 00007130 afb50008 sw 8(r29),r21 7674 00007134 8fd5ff44 lw r21,-188(r30) 7675 00007138 afb5000c sw 12(r29),r21 7676 0000713c 0c003eac jal _printf 7677 00007140 54000000 nop; not filled. 7678 00007144 3c150000 lhi r21,((LC29_LF5)>>16)&0xffff 7679 00007148 26b5f838 addui r21,r21,(LC29_LF5)&0xffff 7680 0000714c afb50000 sw (r29),r21 7681 00007150 8d010000 lw r1,(r8) 7682 00007154 afa10004 sw 4(r29),r1 7683 00007158 8fd5ff40 lw r21,-192(r30) 7684 0000715c afb50008 sw 8(r29),r21 7685 00007160 8fd5ff3c lw r21,-196(r30) 7686 00007164 afb5000c sw 12(r29),r21 7687 00007168 0c003e80 jal _printf 7688 0000716c 54000000 nop; not filled. 7689 00007170 23bd0018 addi r29,r29,#24 7690 00007174 3c0b0000 lhi r11,((_buf65_LF5+3)>>16)&0xffff 7691 00007178 256bfb16 addui r11,r11,(_buf65_LF5+3)&0xffff 7692 0000717c L367_LF5: 7693 0000717c 23bdfff0 addi r29,r29,#-16 7694 00007180 afaa0000 sw (r29),r10 7695 00007184 3c150000 lhi r21,((_buf65_LF5)>>16)&0xffff 7696 00007188 26b5fb13 addui r21,r21,(_buf65_LF5)&0xffff 7697 0000718c afb50004 sw 4(r29),r21 7698 00007190 afad0008 sw 8(r29),r13 7699 00007194 201500c8 addi r21,r0,#200 7700 00007198 afb5000c sw 12(r29),r21 7701 0000719c 0ffff60c jal _ProcessGetFromFile 7702 000071a0 54000000 nop; not filled. 7703 000071a4 00011820 add r3,r0,r1 7704 000071a8 23bd0010 addi r29,r29,#16 7705 000071ac 6c610000 sgti r1,r3,#0 7706 000071b0 10200098 beqz r1,L368_LF5 7707 000071b4 54000000 nop; not filled. 7708 000071b8 20020000 addi r2,r0,#0 7709 000071bc 0043082a slt r1,r2,r3 7710 000071c0 1020ffb8 beqz r1,L367_LF5 7711 000071c4 54000000 nop; not filled. 7712 000071c8 000b3820 add r7,r0,r11 7713 000071cc 00113020 add r6,r0,r17 7714 000071d0 00122820 add r5,r0,r18 7715 000071d4 000f2020 add r4,r0,r15 7716 000071d8 L373_LF5: 7717 000071d8 23bdffe8 addi r29,r29,#-24 7718 000071dc 3c150000 lhi r21,((LC48_LF5)>>16)&0xffff 7719 000071e0 26b5fbdc addui r21,r21,(LC48_LF5)&0xffff 7720 000071e4 afb50000 sw (r29),r21 7721 000071e8 8fc1ff38 lw r1,-200(r30) 7722 000071ec 00220820 add r1,r1,r2 7723 000071f0 00230822 sub r1,r1,r3 7724 000071f4 afa10004 sw 4(r29),r1 7725 000071f8 90810000 lbu r1,(r4) 7726 000071fc afa10008 sw 8(r29),r1 7727 00007200 90a10000 lbu r1,(r5) 7728 00007204 afa1000c sw 12(r29),r1 7729 00007208 90c10000 lbu r1,(r6) 7730 0000720c afa10010 sw 16(r29),r1 7731 00007210 90e10000 lbu r1,(r7) 7732 00007214 afa10014 sw 20(r29),r1 7733 00007218 0c003dd0 jal _printf 7734 0000721c 54000000 nop; not filled. 7735 00007220 23bd0018 addi r29,r29,#24 7736 00007224 20e70004 addi r7,r7,#4 7737 00007228 20c60004 addi r6,r6,#4 7738 0000722c 20a50004 addi r5,r5,#4 7739 00007230 20840004 addi r4,r4,#4 7740 00007234 20420004 addi r2,r2,#4 7741 00007238 0043082a slt r1,r2,r3 7742 0000723c 1420ff98 bnez r1,L373_LF5 7743 00007240 54000000 nop; not filled. 7744 00007244 0bffff34 j L367_LF5 7745 00007248 54000000 nop; not filled. 7746 0000724c L368_LF5: 7747 0000724c 23bdfff8 addi r29,r29,#-8 7748 00007250 afaa0000 sw (r29),r10 7749 00007254 0c003d10 jal _close 7750 00007258 54000000 nop; not filled. 7751 0000725c 0800003c j L411_LF5 7752 00007260 54000000 nop; not filled. 7753 00007264 L375_LF5: 7754 00007264 21080004 addi r8,r8,#4 7755 00007268 21290001 addi r9,r9,#1 7756 0000726c 8d100000 lw r16,(r8) 7757 00007270 00099820 add r19,r0,r9 7758 00007274 08000028 j L363_LF5 7759 00007278 54000000 nop; not filled. 7760 0000727c L376_LF5: 7761 0000727c 23bdfff8 addi r29,r29,#-8 7762 00007280 3c150000 lhi r21,((LC49_LF5)>>16)&0xffff 7763 00007284 26b5fbf4 addui r21,r21,(LC49_LF5)&0xffff 7764 00007288 afb50000 sw (r29),r21 7765 0000728c 8d010000 lw r1,(r8) 7766 00007290 afa10004 sw 4(r29),r1 7767 00007294 0c003d54 jal _printf 7768 00007298 54000000 nop; not filled. 7769 0000729c L411_LF5: 7770 0000729c 23bd0008 addi r29,r29,#8 7771 000072a0 L363_LF5: 7772 000072a0 66010000 snei r1,r16,#0 7773 000072a4 14200018 bnez r1,L359_LF5 7774 000072a8 54000000 nop; not filled. 7775 000072ac L360_LF5: 7776 000072ac 21080004 addi r8,r8,#4 7777 000072b0 21290001 addi r9,r9,#1 7778 000072b4 012e082a slt r1,r9,r14 7779 000072b8 1420fce8 bnez r1,L361_LF5 7780 000072bc 54000000 nop; not filled. 7781 000072c0 L359_LF5: 7782 000072c0 23bdfff8 addi r29,r29,#-8 7783 000072c4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7784 000072c8 2442fd60 addui r2,r2,(_debugstr)&0xffff 7785 000072cc afa20000 sw (r29),r2 7786 000072d0 20150069 addi r21,r0,#105 7787 000072d4 afb50004 sw 4(r29),r21 7788 000072d8 0fffcb58 jal _dindex 7789 000072dc 54000000 nop; not filled. 7790 000072e0 23bd0008 addi r29,r29,#8 7791 000072e4 64210000 snei r1,r1,#0 7792 000072e8 1420002c bnez r1,L382_LF5 7793 000072ec 54000000 nop; not filled. 7794 000072f0 23bdfff8 addi r29,r29,#-8 7795 000072f4 afa20000 sw (r29),r2 7796 000072f8 2015002b addi r21,r0,#43 7797 000072fc afb50004 sw 4(r29),r21 7798 00007300 0fffcb30 jal _dindex 7799 00007304 54000000 nop; not filled. 7800 00007308 23bd0008 addi r29,r29,#8 7801 0000730c 64210000 snei r1,r1,#0 7802 00007310 10200020 beqz r1,L381_LF5 7803 00007314 54000000 nop; not filled. 7804 00007318 L382_LF5: 7805 00007318 23bdfff8 addi r29,r29,#-8 7806 0000731c 3c150000 lhi r21,((LC50_LF5)>>16)&0xffff 7807 00007320 26b5fc10 addui r21,r21,(LC50_LF5)&0xffff 7808 00007324 afb50000 sw (r29),r21 7809 00007328 0c003cc0 jal _printf 7810 0000732c 54000000 nop; not filled. 7811 00007330 23bd0008 addi r29,r29,#8 7812 00007334 L381_LF5: 7813 00007334 0c000c64 jal _QueueModuleInit 7814 00007338 54000000 nop; not filled. 7815 0000733c 23bdfff8 addi r29,r29,#-8 7816 00007340 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7817 00007344 2442fd60 addui r2,r2,(_debugstr)&0xffff 7818 00007348 afa20000 sw (r29),r2 7819 0000734c 20150069 addi r21,r0,#105 7820 00007350 afb50004 sw 4(r29),r21 7821 00007354 0fffcadc jal _dindex 7822 00007358 54000000 nop; not filled. 7823 0000735c 23bd0008 addi r29,r29,#8 7824 00007360 64210000 snei r1,r1,#0 7825 00007364 1420002c bnez r1,L384_LF5 7826 00007368 54000000 nop; not filled. 7827 0000736c 23bdfff8 addi r29,r29,#-8 7828 00007370 afa20000 sw (r29),r2 7829 00007374 2015002b addi r21,r0,#43 7830 00007378 afb50004 sw 4(r29),r21 7831 0000737c 0fffcab4 jal _dindex 7832 00007380 54000000 nop; not filled. 7833 00007384 23bd0008 addi r29,r29,#8 7834 00007388 64210000 snei r1,r1,#0 7835 0000738c 10200020 beqz r1,L383_LF5 7836 00007390 54000000 nop; not filled. 7837 00007394 L384_LF5: 7838 00007394 23bdfff8 addi r29,r29,#-8 7839 00007398 3c150000 lhi r21,((LC51_LF5)>>16)&0xffff 7840 0000739c 26b5fc30 addui r21,r21,(LC51_LF5)&0xffff 7841 000073a0 afb50000 sw (r29),r21 7842 000073a4 0c003c44 jal _printf 7843 000073a8 54000000 nop; not filled. 7844 000073ac 23bd0008 addi r29,r29,#8 7845 000073b0 L383_LF5: 7846 000073b0 0fffb7b8 jal _MemoryModuleInit 7847 000073b4 54000000 nop; not filled. 7848 000073b8 23bdfff8 addi r29,r29,#-8 7849 000073bc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7850 000073c0 2442fd60 addui r2,r2,(_debugstr)&0xffff 7851 000073c4 afa20000 sw (r29),r2 7852 000073c8 20150069 addi r21,r0,#105 7853 000073cc afb50004 sw 4(r29),r21 7854 000073d0 0fffca60 jal _dindex 7855 000073d4 54000000 nop; not filled. 7856 000073d8 23bd0008 addi r29,r29,#8 7857 000073dc 64210000 snei r1,r1,#0 7858 000073e0 1420002c bnez r1,L386_LF5 7859 000073e4 54000000 nop; not filled. 7860 000073e8 23bdfff8 addi r29,r29,#-8 7861 000073ec afa20000 sw (r29),r2 7862 000073f0 2015002b addi r21,r0,#43 7863 000073f4 afb50004 sw 4(r29),r21 7864 000073f8 0fffca38 jal _dindex 7865 000073fc 54000000 nop; not filled. 7866 00007400 23bd0008 addi r29,r29,#8 7867 00007404 64210000 snei r1,r1,#0 7868 00007408 10200020 beqz r1,L385_LF5 7869 0000740c 54000000 nop; not filled. 7870 00007410 L386_LF5: 7871 00007410 23bdfff8 addi r29,r29,#-8 7872 00007414 3c150000 lhi r21,((LC52_LF5)>>16)&0xffff 7873 00007418 26b5fc4c addui r21,r21,(LC52_LF5)&0xffff 7874 0000741c afb50000 sw (r29),r21 7875 00007420 0c003bc8 jal _printf 7876 00007424 54000000 nop; not filled. 7877 00007428 23bd0008 addi r29,r29,#8 7878 0000742c L385_LF5: 7879 0000742c 0fffd308 jal _ProcessModuleInit 7880 00007430 54000000 nop; not filled. 7881 00007434 23bdfff8 addi r29,r29,#-8 7882 00007438 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7883 0000743c 2442fd60 addui r2,r2,(_debugstr)&0xffff 7884 00007440 afa20000 sw (r29),r2 7885 00007444 20150069 addi r21,r0,#105 7886 00007448 afb50004 sw 4(r29),r21 7887 0000744c 0fffc9e4 jal _dindex 7888 00007450 54000000 nop; not filled. 7889 00007454 23bd0008 addi r29,r29,#8 7890 00007458 64210000 snei r1,r1,#0 7891 0000745c 1420002c bnez r1,L388_LF5 7892 00007460 54000000 nop; not filled. 7893 00007464 23bdfff8 addi r29,r29,#-8 7894 00007468 afa20000 sw (r29),r2 7895 0000746c 2015002b addi r21,r0,#43 7896 00007470 afb50004 sw 4(r29),r21 7897 00007474 0fffc9bc jal _dindex 7898 00007478 54000000 nop; not filled. 7899 0000747c 23bd0008 addi r29,r29,#8 7900 00007480 64210000 snei r1,r1,#0 7901 00007484 10200020 beqz r1,L387_LF5 7902 00007488 54000000 nop; not filled. 7903 0000748c L388_LF5: 7904 0000748c 23bdfff8 addi r29,r29,#-8 7905 00007490 3c150000 lhi r21,((LC53_LF5)>>16)&0xffff 7906 00007494 26b5fc68 addui r21,r21,(LC53_LF5)&0xffff 7907 00007498 afb50000 sw (r29),r21 7908 0000749c 0c003b4c jal _printf 7909 000074a0 54000000 nop; not filled. 7910 000074a4 23bd0008 addi r29,r29,#8 7911 000074a8 L387_LF5: 7912 000074a8 0c00127c jal _SynchModuleInit 7913 000074ac 54000000 nop; not filled. 7914 000074b0 23bdfff8 addi r29,r29,#-8 7915 000074b4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7916 000074b8 2442fd60 addui r2,r2,(_debugstr)&0xffff 7917 000074bc afa20000 sw (r29),r2 7918 000074c0 20150069 addi r21,r0,#105 7919 000074c4 afb50004 sw 4(r29),r21 7920 000074c8 0fffc968 jal _dindex 7921 000074cc 54000000 nop; not filled. 7922 000074d0 23bd0008 addi r29,r29,#8 7923 000074d4 64210000 snei r1,r1,#0 7924 000074d8 1420002c bnez r1,L390_LF5 7925 000074dc 54000000 nop; not filled. 7926 000074e0 23bdfff8 addi r29,r29,#-8 7927 000074e4 afa20000 sw (r29),r2 7928 000074e8 2015002b addi r21,r0,#43 7929 000074ec afb50004 sw 4(r29),r21 7930 000074f0 0fffc940 jal _dindex 7931 000074f4 54000000 nop; not filled. 7932 000074f8 23bd0008 addi r29,r29,#8 7933 000074fc 64210000 snei r1,r1,#0 7934 00007500 10200020 beqz r1,L389_LF5 7935 00007504 54000000 nop; not filled. 7936 00007508 L390_LF5: 7937 00007508 23bdfff8 addi r29,r29,#-8 7938 0000750c 3c150000 lhi r21,((LC54_LF5)>>16)&0xffff 7939 00007510 26b5fc88 addui r21,r21,(LC54_LF5)&0xffff 7940 00007514 afb50000 sw (r29),r21 7941 00007518 0c003ad0 jal _printf 7942 0000751c 54000000 nop; not filled. 7943 00007520 23bd0008 addi r29,r29,#8 7944 00007524 L389_LF5: 7945 00007524 0c001f08 jal _KbdModuleInit 7946 00007528 54000000 nop; not filled. 7947 0000752c 23bdfff8 addi r29,r29,#-8 7948 00007530 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7949 00007534 2442fd60 addui r2,r2,(_debugstr)&0xffff 7950 00007538 afa20000 sw (r29),r2 7951 0000753c 20150069 addi r21,r0,#105 7952 00007540 afb50004 sw 4(r29),r21 7953 00007544 0fffc8ec jal _dindex 7954 00007548 54000000 nop; not filled. 7955 0000754c 23bd0008 addi r29,r29,#8 7956 00007550 64210000 snei r1,r1,#0 7957 00007554 1420002c bnez r1,L392_LF5 7958 00007558 54000000 nop; not filled. 7959 0000755c 23bdfff8 addi r29,r29,#-8 7960 00007560 afa20000 sw (r29),r2 7961 00007564 2015002b addi r21,r0,#43 7962 00007568 afb50004 sw 4(r29),r21 7963 0000756c 0fffc8c4 jal _dindex 7964 00007570 54000000 nop; not filled. 7965 00007574 23bd0008 addi r29,r29,#8 7966 00007578 64210000 snei r1,r1,#0 7967 0000757c 10200020 beqz r1,L391_LF5 7968 00007580 54000000 nop; not filled. 7969 00007584 L392_LF5: 7970 00007584 23bdfff8 addi r29,r29,#-8 7971 00007588 3c150000 lhi r21,((LC55_LF5)>>16)&0xffff 7972 0000758c 26b5fcb4 addui r21,r21,(LC55_LF5)&0xffff 7973 00007590 afb50000 sw (r29),r21 7974 00007594 0c003a54 jal _printf 7975 00007598 54000000 nop; not filled. 7976 0000759c 23bd0008 addi r29,r29,#8 7977 000075a0 L391_LF5: 7978 000075a0 23c2ff80 addi r2,r30,#-128 7979 000075a4 23c3ffe3 addi r3,r30,#-29 7980 000075a8 L396_LF5: 7981 000075a8 20150061 addi r21,r0,(#0x61)&0xff 7982 000075ac a0550000 sb (r2),r21 7983 000075b0 20420001 addi r2,r2,#1 7984 000075b4 0043082c sle r1,r2,r3 7985 000075b8 1420ffec bnez r1,L396_LF5 7986 000075bc 54000000 nop; not filled. 7987 000075c0 23bdfff8 addi r29,r29,#-8 7988 000075c4 3c150000 lhi r21,((LC56_LF5)>>16)&0xffff 7989 000075c8 26b5fcd4 addui r21,r21,(LC56_LF5)&0xffff 7990 000075cc afb50000 sw (r29),r21 7991 000075d0 20150002 addi r21,r0,#2 7992 000075d4 afb50004 sw 4(r29),r21 7993 000075d8 0fffa1bc jal _FsOpen 7994 000075dc 54000000 nop; not filled. 7995 000075e0 00014820 add r9,r0,r1 7996 000075e4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7997 000075e8 2442fd60 addui r2,r2,(_debugstr)&0xffff 7998 000075ec afa20000 sw (r29),r2 7999 000075f0 20150069 addi r21,r0,#105 8000 000075f4 afb50004 sw 4(r29),r21 8001 000075f8 0fffc838 jal _dindex 8002 000075fc 54000000 nop; not filled. 8003 00007600 23bd0008 addi r29,r29,#8 8004 00007604 64210000 snei r1,r1,#0 8005 00007608 1420002c bnez r1,L399_LF5 8006 0000760c 54000000 nop; not filled. 8007 00007610 23bdfff8 addi r29,r29,#-8 8008 00007614 afa20000 sw (r29),r2 8009 00007618 2015002b addi r21,r0,#43 8010 0000761c afb50004 sw 4(r29),r21 8011 00007620 0fffc810 jal _dindex 8012 00007624 54000000 nop; not filled. 8013 00007628 23bd0008 addi r29,r29,#8 8014 0000762c 64210000 snei r1,r1,#0 8015 00007630 10200024 beqz r1,L398_LF5 8016 00007634 54000000 nop; not filled. 8017 00007638 L399_LF5: 8018 00007638 23bdfff8 addi r29,r29,#-8 8019 0000763c 3c150000 lhi r21,((LC57_LF5)>>16)&0xffff 8020 00007640 26b5fcd8 addui r21,r21,(LC57_LF5)&0xffff 8021 00007644 afb50000 sw (r29),r21 8022 00007648 afa90004 sw 4(r29),r9 8023 0000764c 0c00399c jal _printf 8024 00007650 54000000 nop; not filled. 8025 00007654 23bd0008 addi r29,r29,#8 8026 00007658 L398_LF5: 8027 00007658 23bdfff0 addi r29,r29,#-16 8028 0000765c afa90000 sw (r29),r9 8029 00007660 20150000 addi r21,r0,#0 8030 00007664 afb50004 sw 4(r29),r21 8031 00007668 afb50008 sw 8(r29),r21 8032 0000766c 0fffa784 jal _FsSeek 8033 00007670 54000000 nop; not filled. 8034 00007674 afa90000 sw (r29),r9 8035 00007678 23c1ff80 addi r1,r30,#-128 8036 0000767c afa10004 sw 4(r29),r1 8037 00007680 20150050 addi r21,r0,#80 8038 00007684 afb50008 sw 8(r29),r21 8039 00007688 0fffa66c jal _FsWrite 8040 0000768c 54000000 nop; not filled. 8041 00007690 afa90000 sw (r29),r9 8042 00007694 0fffa45c jal _FsClose 8043 00007698 54000000 nop; not filled. 8044 0000769c 23bd0010 addi r29,r29,#16 8045 000076a0 66010000 snei r1,r16,#0 8046 000076a4 102000c4 beqz r1,L400_LF5 8047 000076a8 54000000 nop; not filled. 8048 000076ac 00134820 add r9,r0,r19 8049 000076b0 026e082a slt r1,r19,r14 8050 000076b4 10200044 beqz r1,L402_LF5 8051 000076b8 54000000 nop; not filled. 8052 000076bc 23c4fff8 addi r4,r30,#-8 8053 000076c0 51210002 slli r1,r9,#0x2 8054 000076c4 00341820 add r3,r1,r20 8055 000076c8 L406_LF5: 8056 000076c8 01331022 sub r2,r9,r19 8057 000076cc 7041000a slei r1,r2,#10 8058 000076d0 10200028 beqz r1,L402_LF5 8059 000076d4 54000000 nop; not filled. 8060 000076d8 50410002 slli r1,r2,#0x2 8061 000076dc 00240820 add r1,r1,r4 8062 000076e0 8c750000 lw r21,(r3) 8063 000076e4 ac35ff58 sw -168(r1),r21 8064 000076e8 20630004 addi r3,r3,#4 8065 000076ec 21290001 addi r9,r9,#1 8066 000076f0 012e082a slt r1,r9,r14 8067 000076f4 1420ffd0 bnez r1,L406_LF5 8068 000076f8 54000000 nop; not filled. 8069 000076fc L402_LF5: 8070 000076fc 23bdffd0 addi r29,r29,#-48 8071 00007700 8fd5ff50 lw r21,-176(r30) 8072 00007704 afb50000 sw (r29),r21 8073 00007708 8fc1ff54 lw r1,-172(r30) 8074 0000770c afa10004 sw 4(r29),r1 8075 00007710 8fd5ff58 lw r21,-168(r30) 8076 00007714 afb50008 sw 8(r29),r21 8077 00007718 8fd5ff5c lw r21,-164(r30) 8078 0000771c afb5000c sw 12(r29),r21 8079 00007720 8fd5ff60 lw r21,-160(r30) 8080 00007724 afb50010 sw 16(r29),r21 8081 00007728 8fd5ff64 lw r21,-156(r30) 8082 0000772c afb50014 sw 20(r29),r21 8083 00007730 8fd5ff68 lw r21,-152(r30) 8084 00007734 afb50018 sw 24(r29),r21 8085 00007738 8fd5ff6c lw r21,-148(r30) 8086 0000773c afb5001c sw 28(r29),r21 8087 00007740 8fd5ff70 lw r21,-144(r30) 8088 00007744 afb50020 sw 32(r29),r21 8089 00007748 8fd5ff74 lw r21,-140(r30) 8090 0000774c afb50024 sw 36(r29),r21 8091 00007750 8fd5ff78 lw r21,-136(r30) 8092 00007754 afb50028 sw 40(r29),r21 8093 00007758 8fd5ff7c lw r21,-132(r30) 8094 0000775c afb5002c sw 44(r29),r21 8095 00007760 0c000220 jal _process_create 8096 00007764 54000000 nop; not filled. 8097 00007768 23bd0030 addi r29,r29,#48 8098 0000776c L400_LF5: 8099 0000776c 0c003764 jal _SysprocCreateProcesses 8100 00007770 54000000 nop; not filled. 8101 00007774 23bdfff8 addi r29,r29,#-8 8102 00007778 3c020000 lhi r2,((_debugstr)>>16)&0xffff 8103 0000777c 2442fd60 addui r2,r2,(_debugstr)&0xffff 8104 00007780 afa20000 sw (r29),r2 8105 00007784 20150069 addi r21,r0,#105 8106 00007788 afb50004 sw 4(r29),r21 8107 0000778c 0fffc6a4 jal _dindex 8108 00007790 54000000 nop; not filled. 8109 00007794 23bd0008 addi r29,r29,#8 8110 00007798 64210000 snei r1,r1,#0 8111 0000779c 1420002c bnez r1,L408_LF5 8112 000077a0 54000000 nop; not filled. 8113 000077a4 23bdfff8 addi r29,r29,#-8 8114 000077a8 afa20000 sw (r29),r2 8115 000077ac 2015002b addi r21,r0,#43 8116 000077b0 afb50004 sw 4(r29),r21 8117 000077b4 0fffc67c jal _dindex 8118 000077b8 54000000 nop; not filled. 8119 000077bc 23bd0008 addi r29,r29,#8 8120 000077c0 64210000 snei r1,r1,#0 8121 000077c4 10200020 beqz r1,L407_LF5 8122 000077c8 54000000 nop; not filled. 8123 000077cc L408_LF5: 8124 000077cc 23bdfff8 addi r29,r29,#-8 8125 000077d0 3c150000 lhi r21,((LC58_LF5)>>16)&0xffff 8126 000077d4 26b5fcf0 addui r21,r21,(LC58_LF5)&0xffff 8127 000077d8 afb50000 sw (r29),r21 8128 000077dc 0c00380c jal _printf 8129 000077e0 54000000 nop; not filled. 8130 000077e4 23bd0008 addi r29,r29,#8 8131 000077e8 L407_LF5: 8132 000077e8 23bdfff8 addi r29,r29,#-8 8133 000077ec 3c030000 lhi r3,((_processQuantum_LF5)>>16)&0xffff 8134 000077f0 2463f438 addui r3,r3,(_processQuantum_LF5)&0xffff 8135 000077f4 8c750000 lw r21,(r3) 8136 000077f8 afb50000 sw (r29),r21 8137 000077fc 0c001bfc jal _TimerSet 8138 00007800 54000000 nop; not filled. 8139 00007804 3c020000 lhi r2,((_debugstr)>>16)&0xffff 8140 00007808 2442fd60 addui r2,r2,(_debugstr)&0xffff 8141 0000780c afa20000 sw (r29),r2 8142 00007810 20150069 addi r21,r0,#105 8143 00007814 afb50004 sw 4(r29),r21 8144 00007818 0fffc618 jal _dindex 8145 0000781c 54000000 nop; not filled. 8146 00007820 23bd0008 addi r29,r29,#8 8147 00007824 64210000 snei r1,r1,#0 8148 00007828 1420002c bnez r1,L410_LF5 8149 0000782c 54000000 nop; not filled. 8150 00007830 23bdfff8 addi r29,r29,#-8 8151 00007834 afa20000 sw (r29),r2 8152 00007838 2015002b addi r21,r0,#43 8153 0000783c afb50004 sw 4(r29),r21 8154 00007840 0fffc5f0 jal _dindex 8155 00007844 54000000 nop; not filled. 8156 00007848 23bd0008 addi r29,r29,#8 8157 0000784c 64210000 snei r1,r1,#0 8158 00007850 10200028 beqz r1,L409_LF5 8159 00007854 54000000 nop; not filled. 8160 00007858 L410_LF5: 8161 00007858 23bdfff8 addi r29,r29,#-8 8162 0000785c 3c150000 lhi r21,((LC59_LF5)>>16)&0xffff 8163 00007860 26b5fd24 addui r21,r21,(LC59_LF5)&0xffff 8164 00007864 afb50000 sw (r29),r21 8165 00007868 8c610000 lw r1,(r3) 8166 0000786c afa10004 sw 4(r29),r1 8167 00007870 0c003778 jal _printf 8168 00007874 54000000 nop; not filled. 8169 00007878 23bd0008 addi r29,r29,#8 8170 0000787c L409_LF5: 8171 0000787c 0fff98e8 jal _intrreturn 8172 00007880 54000000 nop; not filled. 8173 00007884 0c00374c jal _exitsim 8174 00007888 54000000 nop; not filled. 8175 0000788c 0c003750 jal _exit 8176 00007890 54000000 nop 8177 00007894 .endproc _main 8178 00007894 .data 8179 0000fd5a .align 2 8180 0000fd5c LC61_LF5: 8181 0000fd5c 00000000 .word 0x00000000 8182 ;; 0.0000000e+00 8183 0000fd60 .text 8184 00007894 .align 2 8185 00007894 .proc _MyFuncRetZero 8186 00007894 .global _MyFuncRetZero 8187 00007894 _MyFuncRetZero: 8188 ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. 8189 00007894 afbefffc sw -4(r29),r30; push fp 8190 00007898 001df020 add r30,r0,r29; fp = sp 8191 0000789c afbffff8 sw -8(r29),r31; push ret addr 8192 000078a0 2fbd0008 subui r29,r29,#8; alloc local storage 8193 000078a4 3c010000 lhi r1,((LC61_LF5)>>16)&0xffff 8194 000078a8 2421fd5c addui r1,r1,(LC61_LF5)&0xffff 8195 000078ac 98200000 lf f0,(r1) 8196 000078b0 8fdffff8 lw r31,-8(r30) 8197 000078b4 001ee820 add r29,r0,r30 8198 000078b8 8fdefffc lw r30,-4(r30) 8199 000078bc 4be00000 jr r31 8200 000078c0 54000000 nop 8201 000078c4 .endproc _MyFuncRetZero 8202 000078c4 .align 2 8203 000078c4 .proc _GetCurrentPid 8204 000078c4 .global _GetCurrentPid 8205 000078c4 _GetCurrentPid: 8206 ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. 8207 000078c4 afbefffc sw -4(r29),r30; push fp 8208 000078c8 001df020 add r30,r0,r29; fp = sp 8209 000078cc afbffff8 sw -8(r29),r31; push ret addr 8210 000078d0 2fbd0010 subui r29,r29,#16; alloc local storage 8211 000078d4 afa20000 sw 0(r29),r2 8212 000078d8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 8213 000078dc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 8214 000078e0 8c210000 lw r1,(r1) 8215 000078e4 3c1f0000 lhi r31,((_pcbs_LF5)>>16)&0xffff 8216 000078e8 27fffe5c addui r31,r31,(_pcbs_LF5)&0xffff 8217 000078ec 003f1022 sub r2,r1,r31 8218 000078f0 50410004 slli r1,r2,#0x4 8219 000078f4 00221020 add r2,r1,r2 8220 000078f8 50410008 slli r1,r2,#0x8 8221 000078fc 00411020 add r2,r2,r1 8222 00007900 50410010 slli r1,r2,#0x10 8223 00007904 00410820 add r1,r2,r1 8224 00007908 00010822 sub r1,r0,r1 8225 0000790c 5c210003 srai r1,r1,#0x3 8226 00007910 8fa20000 lw r2,0(r29) 8227 00007914 8fdffff8 lw r31,-8(r30) 8228 00007918 001ee820 add r29,r0,r30 8229 0000791c 8fdefffc lw r30,-4(r30) 8230 00007920 4be00000 jr r31 8231 00007924 54000000 nop 8232 00007928 .endproc _GetCurrentPid 8233 00007928 .align 2 8234 00007928 .proc _findpid 8235 00007928 .global _findpid 8236 00007928 _findpid: 8237 ; Function 'findpid'; 0 bytes of locals, 1 regs to save. 8238 00007928 afbefffc sw -4(r29),r30; push fp 8239 0000792c 001df020 add r30,r0,r29; fp = sp 8240 00007930 afbffff8 sw -8(r29),r31; push ret addr 8241 00007934 2fbd0010 subui r29,r29,#16; alloc local storage 8242 00007938 afa20000 sw 0(r29),r2 8243 0000793c 8fc10000 lw r1,(r30) 8244 00007940 3c1f0000 lhi r31,((_pcbs_LF5)>>16)&0xffff 8245 00007944 27fffe5c addui r31,r31,(_pcbs_LF5)&0xffff 8246 00007948 003f1022 sub r2,r1,r31 8247 0000794c 50410004 slli r1,r2,#0x4 8248 00007950 00221020 add r2,r1,r2 8249 00007954 50410008 slli r1,r2,#0x8 8250 00007958 00411020 add r2,r2,r1 8251 0000795c 50410010 slli r1,r2,#0x10 8252 00007960 00410820 add r1,r2,r1 8253 00007964 00010822 sub r1,r0,r1 8254 00007968 5c210003 srai r1,r1,#0x3 8255 0000796c 8fa20000 lw r2,0(r29) 8256 00007970 8fdffff8 lw r31,-8(r30) 8257 00007974 001ee820 add r29,r0,r30 8258 00007978 8fdefffc lw r30,-4(r30) 8259 0000797c 4be00000 jr r31 8260 00007980 54000000 nop 8261 00007984 .endproc _findpid 8262 00007984 .align 2 8263 00007984 .proc _process_create 8264 00007984 .global _process_create 8265 00007984 _process_create: 8266 ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. 8267 00007984 afbefffc sw -4(r29),r30; push fp 8268 00007988 001df020 add r30,r0,r29; fp = sp 8269 0000798c afbffff8 sw -8(r29),r31; push ret addr 8270 00007990 2fbd0408 subui r29,r29,#1032; alloc local storage 8271 00007994 afa20000 sw 0(r29),r2 8272 00007998 afa30004 sw 4(r29),r3 8273 0000799c afa40008 sw 8(r29),r4 8274 000079a0 afa5000c sw 12(r29),r5 8275 000079a4 afa60010 sw 16(r29),r6 8276 000079a8 20040000 addi r4,r0,#0 8277 000079ac 8fc10000 lw r1,(r30) 8278 000079b0 64210000 snei r1,r1,#0 8279 000079b4 1020005c beqz r1,L420_LF5 8280 000079b8 54000000 nop; not filled. 8281 000079bc 23c5fc10 addi r5,r30,#-1008 8282 000079c0 001ef820 add r31,r0,r30 8283 000079c4 L422_LF5: 8284 000079c4 20020000 addi r2,r0,#0 8285 000079c8 00851820 add r3,r4,r5 8286 000079cc L423_LF5: 8287 000079cc 8fe10000 lw r1,(r31) 8288 000079d0 00220820 add r1,r1,r2 8289 000079d4 80210000 lb r1,(r1) 8290 000079d8 a0610000 sb (r3),r1 8291 000079dc 20420001 addi r2,r2,#1 8292 000079e0 20630001 addi r3,r3,#1 8293 000079e4 20840001 addi r4,r4,#1 8294 000079e8 8fe10000 lw r1,(r31) 8295 000079ec 00410820 add r1,r2,r1 8296 000079f0 9021ffff lbu r1,-1(r1) 8297 000079f4 64210000 snei r1,r1,#0 8298 000079f8 1420ffd0 bnez r1,L423_LF5 8299 000079fc 54000000 nop; not filled. 8300 00007a00 23ff0004 addi r31,r31,#4 8301 00007a04 8fe10000 lw r1,(r31) 8302 00007a08 64210000 snei r1,r1,#0 8303 00007a0c 1420ffb4 bnez r1,L422_LF5 8304 00007a10 54000000 nop; not filled. 8305 00007a14 L420_LF5: 8306 00007a14 23c3fc10 addi r3,r30,#-1008 8307 00007a18 00641020 add r2,r3,r4 8308 00007a1c 23c1fc11 addi r1,r30,#-1007 8309 00007a20 00240820 add r1,r1,r4 8310 00007a24 20060000 addi r6,r0,(#0x0)&0xff 8311 00007a28 a0260000 sb (r1),r6 8312 00007a2c a0460000 sb (r2),r6 8313 00007a30 23bdfff0 addi r29,r29,#-16 8314 00007a34 20060000 addi r6,r0,#0 8315 00007a38 afa60000 sw (r29),r6 8316 00007a3c afa30004 sw 4(r29),r3 8317 00007a40 8fc60000 lw r6,(r30) 8318 00007a44 afa60008 sw 8(r29),r6 8319 00007a48 20060001 addi r6,r0,#1 8320 00007a4c afa6000c sw 12(r29),r6 8321 00007a50 0fffdb78 jal _ProcessFork 8322 00007a54 54000000 nop; not filled. 8323 00007a58 23bd0010 addi r29,r29,#16 8324 00007a5c 8fa20000 lw r2,0(r29) 8325 00007a60 8fa30004 lw r3,4(r29) 8326 00007a64 8fa40008 lw r4,8(r29) 8327 00007a68 8fa5000c lw r5,12(r29) 8328 00007a6c 8fa60010 lw r6,16(r29) 8329 00007a70 8fdffff8 lw r31,-8(r30) 8330 00007a74 001ee820 add r29,r0,r30 8331 00007a78 8fdefffc lw r30,-4(r30) 8332 00007a7c 4be00000 jr r31 8333 00007a80 54000000 nop 8334 00007a84 .endproc _process_create 8335 00007a84 .align 2 8336 00007a84 .proc _ProcessKill 8337 00007a84 .global _ProcessKill 8338 00007a84 _ProcessKill: 8339 ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. 8340 00007a84 afbefffc sw -4(r29),r30; push fp 8341 00007a88 001df020 add r30,r0,r29; fp = sp 8342 00007a8c afbffff8 sw -8(r29),r31; push ret addr 8343 00007a90 2fbd0008 subui r29,r29,#8; alloc local storage 8344 00007a94 0fffd0b4 jal _ProcessSchedule 8345 00007a98 54000000 nop; not filled. 8346 00007a9c 8fdffff8 lw r31,-8(r30) 8347 00007aa0 001ee820 add r29,r0,r30 8348 00007aa4 8fdefffc lw r30,-4(r30) 8349 00007aa8 4be00000 jr r31 8350 00007aac 54000000 nop 8351 00007ab0 .endproc _ProcessKill 8352 00007ab0 .align 2 8353 00007ab0 .proc _PageFaultHandler 8354 00007ab0 .global _PageFaultHandler 8355 00007ab0 _PageFaultHandler: 8356 ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. 8357 00007ab0 afbefffc sw -4(r29),r30; push fp 8358 00007ab4 001df020 add r30,r0,r29; fp = sp 8359 00007ab8 afbffff8 sw -8(r29),r31; push ret addr 8360 00007abc 2fbd0008 subui r29,r29,#8; alloc local storage 8361 00007ac0 8fdffff8 lw r31,-8(r30) 8362 00007ac4 001ee820 add r29,r0,r30 8363 00007ac8 8fdefffc lw r30,-4(r30) 8364 00007acc 4be00000 jr r31 8365 00007ad0 54000000 nop 8366 00007ad4 .endproc _PageFaultHandler 8367 00007ad4 .data 8368 0000fd60 .global _debugstr 8369 0000fd60 _debugstr: 8370 0000fd60 .space 200 8371 0000fe28 .align 2 8372 0000fe28 .global _currentPCB 8373 0000fe28 _currentPCB: 8374 0000fe28 .space 4 8375 0000fe2c .align 2 8376 0000fe2c _freepcbs_LF5: 8377 0000fe2c .space 12 8378 0000fe38 .align 2 8379 0000fe38 _runQueue_LF5: 8380 0000fe38 .space 12 8381 0000fe44 .align 2 8382 0000fe44 _waitQueue_LF5: 8383 0000fe44 .space 12 8384 0000fe50 .align 2 8385 0000fe50 _zombieQueue_LF5: 8386 0000fe50 .space 12 8387 0000fe5c .align 2 8388 0000fe5c _pcbs_LF5: 8389 0000fe5c .space 3840 8390 00010d5c .text 8391 00007ad4 .align 2 8392 00007ad4 .proc _ProcessExit_LF5 8393 00007ad4 _ProcessExit_LF5: 8394 ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. 8395 00007ad4 afbefffc sw -4(r29),r30; push fp 8396 00007ad8 001df020 add r30,r0,r29; fp = sp 8397 00007adc afbffff8 sw -8(r29),r31; push ret addr 8398 00007ae0 2fbd0008 subui r29,r29,#8; alloc local storage 8399 00007ae4 0c0034f8 jal _exit 8400 00007ae8 54000000 nop; not filled. 8401 00007aec 8fdffff8 lw r31,-8(r30) 8402 00007af0 001ee820 add r29,r0,r30 8403 00007af4 8fdefffc lw r30,-4(r30) 8404 00007af8 4be00000 jr r31 8405 00007afc 54000000 nop 8406 00007b00 .endproc _ProcessExit_LF5 8407 ; Compiled by GCC 8409 00007b00 .align 2 8410 00007b00 .proc _isspace 8411 00007b00 .global _isspace 8412 00007b00 _isspace: 8413 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 8414 00007b00 afbefffc sw -4(r29),r30; push fp 8415 00007b04 001df020 add r30,r0,r29; fp = sp 8416 00007b08 afbffff8 sw -8(r29),r31; push ret addr 8417 00007b0c 2fbd0010 subui r29,r29,#16; alloc local storage 8418 00007b10 afa20000 sw 0(r29),r2 8419 00007b14 83c20003 lb r2,3(r30) 8420 00007b18 201f0000 addi r31,r0,#0 8421 00007b1c 304100ff andi r1,r2,#0x00ff 8422 00007b20 60210020 seqi r1,r1,#32 8423 00007b24 14200018 bnez r1,L6_LF6 8424 00007b28 54000000 nop; not filled. 8425 00007b2c 2041fff7 addi r1,r2,#-9 8426 00007b30 302100ff andi r1,r1,#0x00ff 8427 00007b34 70210001 sleui r1,r1,#1 8428 00007b38 10200008 beqz r1,L5_LF6 8429 00007b3c 54000000 nop; not filled. 8430 00007b40 L6_LF6: 8431 00007b40 201f0001 addi r31,r0,#1 8432 00007b44 L5_LF6: 8433 00007b44 001f0820 add r1,r0,r31 8434 00007b48 8fa20000 lw r2,0(r29) 8435 00007b4c 8fdffff8 lw r31,-8(r30) 8436 00007b50 001ee820 add r29,r0,r30 8437 00007b54 8fdefffc lw r30,-4(r30) 8438 00007b58 4be00000 jr r31 8439 00007b5c 54000000 nop 8440 00007b60 .endproc _isspace 8441 00007b60 .align 2 8442 00007b60 .proc _isxdigit 8443 00007b60 .global _isxdigit 8444 00007b60 _isxdigit: 8445 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 8446 00007b60 afbefffc sw -4(r29),r30; push fp 8447 00007b64 001df020 add r30,r0,r29; fp = sp 8448 00007b68 afbffff8 sw -8(r29),r31; push ret addr 8449 00007b6c 2fbd0010 subui r29,r29,#16; alloc local storage 8450 00007b70 afa20000 sw 0(r29),r2 8451 00007b74 83df0003 lb r31,3(r30) 8452 00007b78 20020000 addi r2,r0,#0 8453 00007b7c 23e1ffd0 addi r1,r31,#-48 8454 00007b80 302100ff andi r1,r1,#0x00ff 8455 00007b84 70210009 sleui r1,r1,#9 8456 00007b88 14200028 bnez r1,L12_LF6 8457 00007b8c 54000000 nop; not filled. 8458 00007b90 23e1ff9f addi r1,r31,#-97 8459 00007b94 302100ff andi r1,r1,#0x00ff 8460 00007b98 70210005 sleui r1,r1,#5 8461 00007b9c 14200014 bnez r1,L12_LF6 8462 00007ba0 54000000 nop; not filled. 8463 00007ba4 33e100ff andi r1,r31,#0x00ff 8464 00007ba8 64210041 snei r1,r1,#65 8465 00007bac 14200008 bnez r1,L11_LF6 8466 00007bb0 54000000 nop; not filled. 8467 00007bb4 L12_LF6: 8468 00007bb4 20020001 addi r2,r0,#1 8469 00007bb8 L11_LF6: 8470 00007bb8 00020820 add r1,r0,r2 8471 00007bbc 8fa20000 lw r2,0(r29) 8472 00007bc0 8fdffff8 lw r31,-8(r30) 8473 00007bc4 001ee820 add r29,r0,r30 8474 00007bc8 8fdefffc lw r30,-4(r30) 8475 00007bcc 4be00000 jr r31 8476 00007bd0 54000000 nop 8477 00007bd4 .endproc _isxdigit 8478 00007bd4 .align 2 8479 00007bd4 .proc _DisableIntrs 8480 00007bd4 .global _DisableIntrs 8481 00007bd4 _DisableIntrs: 8482 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 8483 00007bd4 afbefffc sw -4(r29),r30; push fp 8484 00007bd8 001df020 add r30,r0,r29; fp = sp 8485 00007bdc afbffff8 sw -8(r29),r31; push ret addr 8486 00007be0 2fbd0010 subui r29,r29,#16; alloc local storage 8487 00007be4 afa20000 sw 0(r29),r2 8488 00007be8 23bdfff8 addi r29,r29,#-8 8489 00007bec 2002000f addi r2,r0,#15 8490 00007bf0 afa20000 sw (r29),r2 8491 00007bf4 0fff9690 jal _SetIntrs 8492 00007bf8 54000000 nop; not filled. 8493 00007bfc 23bd0008 addi r29,r29,#8 8494 00007c00 8fa20000 lw r2,0(r29) 8495 00007c04 8fdffff8 lw r31,-8(r30) 8496 00007c08 001ee820 add r29,r0,r30 8497 00007c0c 8fdefffc lw r30,-4(r30) 8498 00007c10 4be00000 jr r31 8499 00007c14 54000000 nop 8500 00007c18 .endproc _DisableIntrs 8501 00007c18 .align 2 8502 00007c18 .proc _EnableIntrs 8503 00007c18 .global _EnableIntrs 8504 00007c18 _EnableIntrs: 8505 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 8506 00007c18 afbefffc sw -4(r29),r30; push fp 8507 00007c1c 001df020 add r30,r0,r29; fp = sp 8508 00007c20 afbffff8 sw -8(r29),r31; push ret addr 8509 00007c24 2fbd0010 subui r29,r29,#16; alloc local storage 8510 00007c28 afa20000 sw 0(r29),r2 8511 00007c2c 23bdfff8 addi r29,r29,#-8 8512 00007c30 20020000 addi r2,r0,#0 8513 00007c34 afa20000 sw (r29),r2 8514 00007c38 0fff964c jal _SetIntrs 8515 00007c3c 54000000 nop; not filled. 8516 00007c40 23bd0008 addi r29,r29,#8 8517 00007c44 8fa20000 lw r2,0(r29) 8518 00007c48 8fdffff8 lw r31,-8(r30) 8519 00007c4c 001ee820 add r29,r0,r30 8520 00007c50 8fdefffc lw r30,-4(r30) 8521 00007c54 4be00000 jr r31 8522 00007c58 54000000 nop 8523 00007c5c .endproc _EnableIntrs 8524 00007c5c .align 2 8525 00007c5c .proc _RestoreIntrs 8526 00007c5c .global _RestoreIntrs 8527 00007c5c _RestoreIntrs: 8528 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 8529 00007c5c afbefffc sw -4(r29),r30; push fp 8530 00007c60 001df020 add r30,r0,r29; fp = sp 8531 00007c64 afbffff8 sw -8(r29),r31; push ret addr 8532 00007c68 2fbd0010 subui r29,r29,#16; alloc local storage 8533 00007c6c afa20000 sw 0(r29),r2 8534 00007c70 23bdfff8 addi r29,r29,#-8 8535 00007c74 8fc20000 lw r2,(r30) 8536 00007c78 afa20000 sw (r29),r2 8537 00007c7c 0fff9608 jal _SetIntrs 8538 00007c80 54000000 nop; not filled. 8539 00007c84 23bd0008 addi r29,r29,#8 8540 00007c88 8fa20000 lw r2,0(r29) 8541 00007c8c 8fdffff8 lw r31,-8(r30) 8542 00007c90 001ee820 add r29,r0,r30 8543 00007c94 8fdefffc lw r30,-4(r30) 8544 00007c98 4be00000 jr r31 8545 00007c9c 54000000 nop 8546 00007ca0 .endproc _RestoreIntrs 8547 00007ca0 .align 2 8548 00007ca0 .proc _QueueLinkInit 8549 00007ca0 .global _QueueLinkInit 8550 00007ca0 _QueueLinkInit: 8551 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 8552 00007ca0 afbefffc sw -4(r29),r30; push fp 8553 00007ca4 001df020 add r30,r0,r29; fp = sp 8554 00007ca8 afbffff8 sw -8(r29),r31; push ret addr 8555 00007cac 2fbd0010 subui r29,r29,#16; alloc local storage 8556 00007cb0 afa20000 sw 0(r29),r2 8557 00007cb4 8fc10000 lw r1,(r30) 8558 00007cb8 8fc20004 lw r2,4(r30) 8559 00007cbc 201f0000 addi r31,r0,#0 8560 00007cc0 ac3f0000 sw (r1),r31 8561 00007cc4 ac22000c sw 12(r1),r2 8562 00007cc8 8fa20000 lw r2,0(r29) 8563 00007ccc 8fdffff8 lw r31,-8(r30) 8564 00007cd0 001ee820 add r29,r0,r30 8565 00007cd4 8fdefffc lw r30,-4(r30) 8566 00007cd8 4be00000 jr r31 8567 00007cdc 54000000 nop 8568 00007ce0 .endproc _QueueLinkInit 8569 00007ce0 .align 2 8570 00007ce0 .proc _QueueNext 8571 00007ce0 .global _QueueNext 8572 00007ce0 _QueueNext: 8573 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 8574 00007ce0 afbefffc sw -4(r29),r30; push fp 8575 00007ce4 001df020 add r30,r0,r29; fp = sp 8576 00007ce8 afbffff8 sw -8(r29),r31; push ret addr 8577 00007cec 2fbd0008 subui r29,r29,#8; alloc local storage 8578 00007cf0 8fc10000 lw r1,(r30) 8579 00007cf4 8c210000 lw r1,(r1) 8580 00007cf8 8fdffff8 lw r31,-8(r30) 8581 00007cfc 001ee820 add r29,r0,r30 8582 00007d00 8fdefffc lw r30,-4(r30) 8583 00007d04 4be00000 jr r31 8584 00007d08 54000000 nop 8585 00007d0c .endproc _QueueNext 8586 00007d0c .align 2 8587 00007d0c .proc _QueuePrev 8588 00007d0c .global _QueuePrev 8589 00007d0c _QueuePrev: 8590 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 8591 00007d0c afbefffc sw -4(r29),r30; push fp 8592 00007d10 001df020 add r30,r0,r29; fp = sp 8593 00007d14 afbffff8 sw -8(r29),r31; push ret addr 8594 00007d18 2fbd0008 subui r29,r29,#8; alloc local storage 8595 00007d1c 8fc10000 lw r1,(r30) 8596 00007d20 8c210004 lw r1,4(r1) 8597 00007d24 8fdffff8 lw r31,-8(r30) 8598 00007d28 001ee820 add r29,r0,r30 8599 00007d2c 8fdefffc lw r30,-4(r30) 8600 00007d30 4be00000 jr r31 8601 00007d34 54000000 nop 8602 00007d38 .endproc _QueuePrev 8603 00007d38 .align 2 8604 00007d38 .proc _QueueFirst 8605 00007d38 .global _QueueFirst 8606 00007d38 _QueueFirst: 8607 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 8608 00007d38 afbefffc sw -4(r29),r30; push fp 8609 00007d3c 001df020 add r30,r0,r29; fp = sp 8610 00007d40 afbffff8 sw -8(r29),r31; push ret addr 8611 00007d44 2fbd0008 subui r29,r29,#8; alloc local storage 8612 00007d48 8fc10000 lw r1,(r30) 8613 00007d4c 8c210000 lw r1,(r1) 8614 00007d50 8fdffff8 lw r31,-8(r30) 8615 00007d54 001ee820 add r29,r0,r30 8616 00007d58 8fdefffc lw r30,-4(r30) 8617 00007d5c 4be00000 jr r31 8618 00007d60 54000000 nop 8619 00007d64 .endproc _QueueFirst 8620 00007d64 .align 2 8621 00007d64 .proc _QueueLast 8622 00007d64 .global _QueueLast 8623 00007d64 _QueueLast: 8624 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 8625 00007d64 afbefffc sw -4(r29),r30; push fp 8626 00007d68 001df020 add r30,r0,r29; fp = sp 8627 00007d6c afbffff8 sw -8(r29),r31; push ret addr 8628 00007d70 2fbd0008 subui r29,r29,#8; alloc local storage 8629 00007d74 8fc10000 lw r1,(r30) 8630 00007d78 8c210004 lw r1,4(r1) 8631 00007d7c 8fdffff8 lw r31,-8(r30) 8632 00007d80 001ee820 add r29,r0,r30 8633 00007d84 8fdefffc lw r30,-4(r30) 8634 00007d88 4be00000 jr r31 8635 00007d8c 54000000 nop 8636 00007d90 .endproc _QueueLast 8637 00007d90 .align 2 8638 00007d90 .proc _QueueInsertAfter 8639 00007d90 .global _QueueInsertAfter 8640 00007d90 _QueueInsertAfter: 8641 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 8642 00007d90 afbefffc sw -4(r29),r30; push fp 8643 00007d94 001df020 add r30,r0,r29; fp = sp 8644 00007d98 afbffff8 sw -8(r29),r31; push ret addr 8645 00007d9c 2fbd0010 subui r29,r29,#16; alloc local storage 8646 00007da0 afa20000 sw 0(r29),r2 8647 00007da4 afa30004 sw 4(r29),r3 8648 00007da8 8fc30000 lw r3,(r30) 8649 00007dac 8fc20004 lw r2,4(r30) 8650 00007db0 8fc10008 lw r1,8(r30) 8651 00007db4 ac230008 sw 8(r1),r3 8652 00007db8 ac220004 sw 4(r1),r2 8653 00007dbc 8c5f0000 lw r31,(r2) 8654 00007dc0 ac3f0000 sw (r1),r31 8655 00007dc4 ac410000 sw (r2),r1 8656 00007dc8 8c220000 lw r2,(r1) 8657 00007dcc ac410004 sw 4(r2),r1 8658 00007dd0 8c610008 lw r1,8(r3) 8659 00007dd4 20210001 addi r1,r1,#1 8660 00007dd8 ac610008 sw 8(r3),r1 8661 00007ddc 8fa20000 lw r2,0(r29) 8662 00007de0 8fa30004 lw r3,4(r29) 8663 00007de4 8fdffff8 lw r31,-8(r30) 8664 00007de8 001ee820 add r29,r0,r30 8665 00007dec 8fdefffc lw r30,-4(r30) 8666 00007df0 4be00000 jr r31 8667 00007df4 54000000 nop 8668 00007df8 .endproc _QueueInsertAfter 8669 00007df8 .align 2 8670 00007df8 .proc _QueueInsertFirst 8671 00007df8 .global _QueueInsertFirst 8672 00007df8 _QueueInsertFirst: 8673 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 8674 00007df8 afbefffc sw -4(r29),r30; push fp 8675 00007dfc 001df020 add r30,r0,r29; fp = sp 8676 00007e00 afbffff8 sw -8(r29),r31; push ret addr 8677 00007e04 2fbd0010 subui r29,r29,#16; alloc local storage 8678 00007e08 afa20000 sw 0(r29),r2 8679 00007e0c afa30004 sw 4(r29),r3 8680 00007e10 8fc30000 lw r3,(r30) 8681 00007e14 8fc10004 lw r1,4(r30) 8682 00007e18 ac230008 sw 8(r1),r3 8683 00007e1c ac230004 sw 4(r1),r3 8684 00007e20 8c7f0000 lw r31,(r3) 8685 00007e24 ac3f0000 sw (r1),r31 8686 00007e28 ac610000 sw (r3),r1 8687 00007e2c 8c220000 lw r2,(r1) 8688 00007e30 ac410004 sw 4(r2),r1 8689 00007e34 8c610008 lw r1,8(r3) 8690 00007e38 20210001 addi r1,r1,#1 8691 00007e3c ac610008 sw 8(r3),r1 8692 00007e40 8fa20000 lw r2,0(r29) 8693 00007e44 8fa30004 lw r3,4(r29) 8694 00007e48 8fdffff8 lw r31,-8(r30) 8695 00007e4c 001ee820 add r29,r0,r30 8696 00007e50 8fdefffc lw r30,-4(r30) 8697 00007e54 4be00000 jr r31 8698 00007e58 54000000 nop 8699 00007e5c .endproc _QueueInsertFirst 8700 00007e5c .align 2 8701 00007e5c .proc _QueueInsertLast 8702 00007e5c .global _QueueInsertLast 8703 00007e5c _QueueInsertLast: 8704 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 8705 00007e5c afbefffc sw -4(r29),r30; push fp 8706 00007e60 001df020 add r30,r0,r29; fp = sp 8707 00007e64 afbffff8 sw -8(r29),r31; push ret addr 8708 00007e68 2fbd0010 subui r29,r29,#16; alloc local storage 8709 00007e6c afa20000 sw 0(r29),r2 8710 00007e70 afa30004 sw 4(r29),r3 8711 00007e74 8fc30000 lw r3,(r30) 8712 00007e78 8fc10004 lw r1,4(r30) 8713 00007e7c 8c620004 lw r2,4(r3) 8714 00007e80 ac230008 sw 8(r1),r3 8715 00007e84 ac220004 sw 4(r1),r2 8716 00007e88 8c5f0000 lw r31,(r2) 8717 00007e8c ac3f0000 sw (r1),r31 8718 00007e90 ac410000 sw (r2),r1 8719 00007e94 8c220000 lw r2,(r1) 8720 00007e98 ac410004 sw 4(r2),r1 8721 00007e9c 8c610008 lw r1,8(r3) 8722 00007ea0 20210001 addi r1,r1,#1 8723 00007ea4 ac610008 sw 8(r3),r1 8724 00007ea8 8fa20000 lw r2,0(r29) 8725 00007eac 8fa30004 lw r3,4(r29) 8726 00007eb0 8fdffff8 lw r31,-8(r30) 8727 00007eb4 001ee820 add r29,r0,r30 8728 00007eb8 8fdefffc lw r30,-4(r30) 8729 00007ebc 4be00000 jr r31 8730 00007ec0 54000000 nop 8731 00007ec4 .endproc _QueueInsertLast 8732 00007ec4 .align 2 8733 00007ec4 .proc _QueueRemove 8734 00007ec4 .global _QueueRemove 8735 00007ec4 _QueueRemove: 8736 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 8737 00007ec4 afbefffc sw -4(r29),r30; push fp 8738 00007ec8 001df020 add r30,r0,r29; fp = sp 8739 00007ecc afbffff8 sw -8(r29),r31; push ret addr 8740 00007ed0 2fbd0010 subui r29,r29,#16; alloc local storage 8741 00007ed4 afa20000 sw 0(r29),r2 8742 00007ed8 afa30004 sw 4(r29),r3 8743 00007edc 8fdf0000 lw r31,(r30) 8744 00007ee0 8fe10008 lw r1,8(r31) 8745 00007ee4 8c210008 lw r1,8(r1) 8746 00007ee8 6c210000 sgti r1,r1,#0 8747 00007eec 1020002c beqz r1,L44_LF6 8748 00007ef0 54000000 nop; not filled. 8749 00007ef4 8fe10004 lw r1,4(r31) 8750 00007ef8 8fe30000 lw r3,(r31) 8751 00007efc ac230000 sw (r1),r3 8752 00007f00 8fe10000 lw r1,(r31) 8753 00007f04 8fe30004 lw r3,4(r31) 8754 00007f08 ac230004 sw 4(r1),r3 8755 00007f0c 8fe20008 lw r2,8(r31) 8756 00007f10 8c410008 lw r1,8(r2) 8757 00007f14 2021ffff addi r1,r1,#-1 8758 00007f18 ac410008 sw 8(r2),r1 8759 00007f1c L44_LF6: 8760 00007f1c 20030000 addi r3,r0,#0 8761 00007f20 afe30000 sw (r31),r3 8762 00007f24 8fa20000 lw r2,0(r29) 8763 00007f28 8fa30004 lw r3,4(r29) 8764 00007f2c 8fdffff8 lw r31,-8(r30) 8765 00007f30 001ee820 add r29,r0,r30 8766 00007f34 8fdefffc lw r30,-4(r30) 8767 00007f38 4be00000 jr r31 8768 00007f3c 54000000 nop 8769 00007f40 .endproc _QueueRemove 8770 00007f40 .align 2 8771 00007f40 .proc _QueueLength 8772 00007f40 .global _QueueLength 8773 00007f40 _QueueLength: 8774 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 8775 00007f40 afbefffc sw -4(r29),r30; push fp 8776 00007f44 001df020 add r30,r0,r29; fp = sp 8777 00007f48 afbffff8 sw -8(r29),r31; push ret addr 8778 00007f4c 2fbd0008 subui r29,r29,#8; alloc local storage 8779 00007f50 8fc10000 lw r1,(r30) 8780 00007f54 8c210008 lw r1,8(r1) 8781 00007f58 8fdffff8 lw r31,-8(r30) 8782 00007f5c 001ee820 add r29,r0,r30 8783 00007f60 8fdefffc lw r30,-4(r30) 8784 00007f64 4be00000 jr r31 8785 00007f68 54000000 nop 8786 00007f6c .endproc _QueueLength 8787 00007f6c .align 2 8788 00007f6c .proc _QueueEmpty 8789 00007f6c .global _QueueEmpty 8790 00007f6c _QueueEmpty: 8791 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 8792 00007f6c afbefffc sw -4(r29),r30; push fp 8793 00007f70 001df020 add r30,r0,r29; fp = sp 8794 00007f74 afbffff8 sw -8(r29),r31; push ret addr 8795 00007f78 2fbd0008 subui r29,r29,#8; alloc local storage 8796 00007f7c 8fc10000 lw r1,(r30) 8797 00007f80 8c210008 lw r1,8(r1) 8798 00007f84 60210000 seqi r1,r1,#0 8799 00007f88 8fdffff8 lw r31,-8(r30) 8800 00007f8c 001ee820 add r29,r0,r30 8801 00007f90 8fdefffc lw r30,-4(r30) 8802 00007f94 4be00000 jr r31 8803 00007f98 54000000 nop 8804 00007f9c .endproc _QueueEmpty 8805 00007f9c .data 8806 00010d5c .align 2 8807 00010d5c LC0_LF6: 8808 00010d5c 496e6974 .ascii "Initializing queue link %d.\n\000" 8808 00010d60 69616c69 8808 00010d64 7a696e67 8808 00010d68 20717565 8808 00010d6c 7565206c 8808 00010d70 696e6b20 8808 00010d74 25642e0a 8808 00010d78 00 8809 00010d79 .text 8810 00007f9c .align 2 8811 00007f9c .proc _QueueModuleInit 8812 00007f9c .global _QueueModuleInit 8813 00007f9c _QueueModuleInit: 8814 ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. 8815 00007f9c afbefffc sw -4(r29),r30; push fp 8816 00007fa0 001df020 add r30,r0,r29; fp = sp 8817 00007fa4 afbffff8 sw -8(r29),r31; push ret addr 8818 00007fa8 2fbd0018 subui r29,r29,#24; alloc local storage 8819 00007fac afa20000 sw 0(r29),r2 8820 00007fb0 afa30004 sw 4(r29),r3 8821 00007fb4 afa40008 sw 8(r29),r4 8822 00007fb8 afa5000c sw 12(r29),r5 8823 00007fbc 23bdfff8 addi r29,r29,#-8 8824 00007fc0 3c050001 lhi r5,((_freeLinks)>>16)&0xffff 8825 00007fc4 24a50dc8 addui r5,r5,(_freeLinks)&0xffff 8826 00007fc8 afa50000 sw (r29),r5 8827 00007fcc 0c0000e0 jal _QueueInit 8828 00007fd0 54000000 nop; not filled. 8829 00007fd4 20030000 addi r3,r0,#0 8830 00007fd8 23bd0008 addi r29,r29,#8 8831 00007fdc 3c040000 lhi r4,((_debugstr)>>16)&0xffff 8832 00007fe0 2484fd60 addui r4,r4,(_debugstr)&0xffff 8833 00007fe4 3c020001 lhi r2,((_linkpool_LF6)>>16)&0xffff 8834 00007fe8 24420dd4 addui r2,r2,(_linkpool_LF6)&0xffff 8835 00007fec L63_LF6: 8836 00007fec 23bdfff8 addi r29,r29,#-8 8837 00007ff0 afa40000 sw (r29),r4 8838 00007ff4 20050069 addi r5,r0,#105 8839 00007ff8 afa50004 sw 4(r29),r5 8840 00007ffc 0fffbe34 jal _dindex 8841 00008000 54000000 nop; not filled. 8842 00008004 23bd0008 addi r29,r29,#8 8843 00008008 64210000 snei r1,r1,#0 8844 0000800c 1420002c bnez r1,L65_LF6 8845 00008010 54000000 nop; not filled. 8846 00008014 23bdfff8 addi r29,r29,#-8 8847 00008018 afa40000 sw (r29),r4 8848 0000801c 2005002b addi r5,r0,#43 8849 00008020 afa50004 sw 4(r29),r5 8850 00008024 0fffbe0c jal _dindex 8851 00008028 54000000 nop; not filled. 8852 0000802c 23bd0008 addi r29,r29,#8 8853 00008030 64210000 snei r1,r1,#0 8854 00008034 10200024 beqz r1,L64_LF6 8855 00008038 54000000 nop; not filled. 8856 0000803c L65_LF6: 8857 0000803c 23bdfff8 addi r29,r29,#-8 8858 00008040 3c050001 lhi r5,((LC0_LF6)>>16)&0xffff 8859 00008044 24a50d5c addui r5,r5,(LC0_LF6)&0xffff 8860 00008048 afa50000 sw (r29),r5 8861 0000804c afa30004 sw 4(r29),r3 8862 00008050 0c002f98 jal _printf 8863 00008054 54000000 nop; not filled. 8864 00008058 23bd0008 addi r29,r29,#8 8865 0000805c L64_LF6: 8866 0000805c 20050000 addi r5,r0,#0 8867 00008060 ac450000 sw (r2),r5 8868 00008064 23bdfff8 addi r29,r29,#-8 8869 00008068 afa20000 sw (r29),r2 8870 0000806c 0c000078 jal _QueueFreeLink 8871 00008070 54000000 nop; not filled. 8872 00008074 23bd0008 addi r29,r29,#8 8873 00008078 20420010 addi r2,r2,#16 8874 0000807c 20630001 addi r3,r3,#1 8875 00008080 7061018f slei r1,r3,#399 8876 00008084 1420ff64 bnez r1,L63_LF6 8877 00008088 54000000 nop; not filled. 8878 0000808c 8fa20000 lw r2,0(r29) 8879 00008090 8fa30004 lw r3,4(r29) 8880 00008094 8fa40008 lw r4,8(r29) 8881 00008098 8fa5000c lw r5,12(r29) 8882 0000809c 8fdffff8 lw r31,-8(r30) 8883 000080a0 001ee820 add r29,r0,r30 8884 000080a4 8fdefffc lw r30,-4(r30) 8885 000080a8 4be00000 jr r31 8886 000080ac 54000000 nop 8887 000080b0 .endproc _QueueModuleInit 8888 000080b0 .align 2 8889 000080b0 .proc _QueueInit 8890 000080b0 .global _QueueInit 8891 000080b0 _QueueInit: 8892 ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. 8893 000080b0 afbefffc sw -4(r29),r30; push fp 8894 000080b4 001df020 add r30,r0,r29; fp = sp 8895 000080b8 afbffff8 sw -8(r29),r31; push ret addr 8896 000080bc 2fbd0008 subui r29,r29,#8; alloc local storage 8897 000080c0 8fc10000 lw r1,(r30) 8898 000080c4 ac210000 sw (r1),r1 8899 000080c8 ac210004 sw 4(r1),r1 8900 000080cc 201f0000 addi r31,r0,#0 8901 000080d0 ac3f0008 sw 8(r1),r31 8902 000080d4 8fdffff8 lw r31,-8(r30) 8903 000080d8 001ee820 add r29,r0,r30 8904 000080dc 8fdefffc lw r30,-4(r30) 8905 000080e0 4be00000 jr r31 8906 000080e4 54000000 nop 8907 000080e8 .endproc _QueueInit 8908 000080e8 .data 8909 00010d79 .align 2 8910 00010d7c LC1_LF6: 8911 00010d7c 25733a20 .ascii "%s: %s\n\000" 8911 00010d80 25730a00 8912 00010d84 .align 2 8913 00010d84 LC2_LF6: 8914 00010d84 51756575 .ascii "QueueFreeLink\000" 8914 00010d88 65467265 8914 00010d8c 654c696e 8914 00010d90 6b00 8915 00010d92 .align 2 8916 00010d94 LC3_LF6: 8917 00010d94 4c696e6b .ascii "Link not empty\000" 8917 00010d98 206e6f74 8917 00010d9c 20656d70 8917 00010da0 747900 8918 00010da3 .text 8919 000080e8 .align 2 8920 000080e8 .proc _QueueFreeLink 8921 000080e8 .global _QueueFreeLink 8922 000080e8 _QueueFreeLink: 8923 ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. 8924 000080e8 afbefffc sw -4(r29),r30; push fp 8925 000080ec 001df020 add r30,r0,r29; fp = sp 8926 000080f0 afbffff8 sw -8(r29),r31; push ret addr 8927 000080f4 2fbd0018 subui r29,r29,#24; alloc local storage 8928 000080f8 afa20000 sw 0(r29),r2 8929 000080fc afa30004 sw 4(r29),r3 8930 00008100 afa40008 sw 8(r29),r4 8931 00008104 8fc30000 lw r3,(r30) 8932 00008108 8c610000 lw r1,(r3) 8933 0000810c 64210000 snei r1,r1,#0 8934 00008110 10200038 beqz r1,L77_LF6 8935 00008114 54000000 nop; not filled. 8936 00008118 23bdfff0 addi r29,r29,#-16 8937 0000811c 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 8938 00008120 24840d7c addui r4,r4,(LC1_LF6)&0xffff 8939 00008124 afa40000 sw (r29),r4 8940 00008128 3c010001 lhi r1,((LC2_LF6)>>16)&0xffff 8941 0000812c 24210d84 addui r1,r1,(LC2_LF6)&0xffff 8942 00008130 afa10004 sw 4(r29),r1 8943 00008134 3c040001 lhi r4,((LC3_LF6)>>16)&0xffff 8944 00008138 24840d94 addui r4,r4,(LC3_LF6)&0xffff 8945 0000813c afa40008 sw 8(r29),r4 8946 00008140 0c002ea8 jal _printf 8947 00008144 54000000 nop; not filled. 8948 00008148 23bd0010 addi r29,r29,#16 8949 0000814c L77_LF6: 8950 0000814c 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 8951 00008150 24420dc8 addui r2,r2,(_freeLinks)&0xffff 8952 00008154 8c410004 lw r1,4(r2) 8953 00008158 ac620008 sw 8(r3),r2 8954 0000815c ac610004 sw 4(r3),r1 8955 00008160 8c240000 lw r4,(r1) 8956 00008164 ac640000 sw (r3),r4 8957 00008168 ac230000 sw (r1),r3 8958 0000816c 8c610000 lw r1,(r3) 8959 00008170 ac230004 sw 4(r1),r3 8960 00008174 8c410008 lw r1,8(r2) 8961 00008178 20210001 addi r1,r1,#1 8962 0000817c ac410008 sw 8(r2),r1 8963 00008180 8fa20000 lw r2,0(r29) 8964 00008184 8fa30004 lw r3,4(r29) 8965 00008188 8fa40008 lw r4,8(r29) 8966 0000818c 8fdffff8 lw r31,-8(r30) 8967 00008190 001ee820 add r29,r0,r30 8968 00008194 8fdefffc lw r30,-4(r30) 8969 00008198 4be00000 jr r31 8970 0000819c 54000000 nop 8971 000081a0 .endproc _QueueFreeLink 8972 000081a0 .data 8973 00010da3 .align 2 8974 00010da4 LC4_LF6: 8975 00010da4 51756575 .ascii "QueueAllocLink\000" 8975 00010da8 65416c6c 8975 00010dac 6f634c69 8975 00010db0 6e6b00 8976 00010db3 .align 2 8977 00010db4 LC5_LF6: 8978 00010db4 4c696e6b .ascii "Link not allocated!\000" 8978 00010db8 206e6f74 8978 00010dbc 20616c6c 8978 00010dc0 6f636174 8978 00010dc4 65642100 8979 00010dc8 .text 8980 000081a0 .align 2 8981 000081a0 .proc _QueueAllocLink 8982 000081a0 .global _QueueAllocLink 8983 000081a0 _QueueAllocLink: 8984 ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. 8985 000081a0 afbefffc sw -4(r29),r30; push fp 8986 000081a4 001df020 add r30,r0,r29; fp = sp 8987 000081a8 afbffff8 sw -8(r29),r31; push ret addr 8988 000081ac 2fbd0018 subui r29,r29,#24; alloc local storage 8989 000081b0 afa20000 sw 0(r29),r2 8990 000081b4 afa30004 sw 4(r29),r3 8991 000081b8 afa40008 sw 8(r29),r4 8992 000081bc 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 8993 000081c0 24420dc8 addui r2,r2,(_freeLinks)&0xffff 8994 000081c4 8c410008 lw r1,8(r2) 8995 000081c8 60210000 seqi r1,r1,#0 8996 000081cc 14200054 bnez r1,L92_LF6 8997 000081d0 54000000 nop; not filled. 8998 000081d4 8c430000 lw r3,(r2) 8999 000081d8 8c610008 lw r1,8(r3) 9000 000081dc 8c210008 lw r1,8(r1) 9001 000081e0 6c210000 sgti r1,r1,#0 9002 000081e4 1020002c beqz r1,L97_LF6 9003 000081e8 54000000 nop; not filled. 9004 000081ec 8c610004 lw r1,4(r3) 9005 000081f0 8c640000 lw r4,(r3) 9006 000081f4 ac240000 sw (r1),r4 9007 000081f8 8c610000 lw r1,(r3) 9008 000081fc 8c640004 lw r4,4(r3) 9009 00008200 ac240004 sw 4(r1),r4 9010 00008204 8c620008 lw r2,8(r3) 9011 00008208 8c410008 lw r1,8(r2) 9012 0000820c 2021ffff addi r1,r1,#-1 9013 00008210 ac410008 sw 8(r2),r1 9014 00008214 L97_LF6: 9015 00008214 20040000 addi r4,r0,#0 9016 00008218 ac640000 sw (r3),r4 9017 0000821c 08000008 j L98_LF6 9018 00008220 54000000 nop; not filled. 9019 00008224 L92_LF6: 9020 00008224 20030000 addi r3,r0,#0 9021 00008228 L98_LF6: 9022 00008228 64610000 snei r1,r3,#0 9023 0000822c 14200038 bnez r1,L100_LF6 9024 00008230 54000000 nop; not filled. 9025 00008234 23bdfff0 addi r29,r29,#-16 9026 00008238 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 9027 0000823c 24840d7c addui r4,r4,(LC1_LF6)&0xffff 9028 00008240 afa40000 sw (r29),r4 9029 00008244 3c010001 lhi r1,((LC4_LF6)>>16)&0xffff 9030 00008248 24210da4 addui r1,r1,(LC4_LF6)&0xffff 9031 0000824c afa10004 sw 4(r29),r1 9032 00008250 3c040001 lhi r4,((LC5_LF6)>>16)&0xffff 9033 00008254 24840db4 addui r4,r4,(LC5_LF6)&0xffff 9034 00008258 afa40008 sw 8(r29),r4 9035 0000825c 0c002d8c jal _printf 9036 00008260 54000000 nop; not filled. 9037 00008264 23bd0010 addi r29,r29,#16 9038 00008268 L100_LF6: 9039 00008268 00030820 add r1,r0,r3 9040 0000826c 8fa20000 lw r2,0(r29) 9041 00008270 8fa30004 lw r3,4(r29) 9042 00008274 8fa40008 lw r4,8(r29) 9043 00008278 8fdffff8 lw r31,-8(r30) 9044 0000827c 001ee820 add r29,r0,r30 9045 00008280 8fdefffc lw r30,-4(r30) 9046 00008284 4be00000 jr r31 9047 00008288 54000000 nop 9048 0000828c .endproc _QueueAllocLink 9049 0000828c .data 9050 00010dc8 .align 2 9051 00010dc8 .global _freeLinks 9052 00010dc8 _freeLinks: 9053 00010dc8 .space 12 9054 00010dd4 .align 2 9055 00010dd4 _linkpool_LF6: 9056 00010dd4 .space 6400 9057 ; Compiled by GCC 9058 000126d4 .text 9059 0000828c .align 2 9060 0000828c .proc _isspace 9061 0000828c .global _isspace 9062 0000828c _isspace: 9063 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 9064 0000828c afbefffc sw -4(r29),r30; push fp 9065 00008290 001df020 add r30,r0,r29; fp = sp 9066 00008294 afbffff8 sw -8(r29),r31; push ret addr 9067 00008298 2fbd0010 subui r29,r29,#16; alloc local storage 9068 0000829c afa20000 sw 0(r29),r2 9069 000082a0 83c20003 lb r2,3(r30) 9070 000082a4 201f0000 addi r31,r0,#0 9071 000082a8 304100ff andi r1,r2,#0x00ff 9072 000082ac 60210020 seqi r1,r1,#32 9073 000082b0 14200018 bnez r1,L6_LF7 9074 000082b4 54000000 nop; not filled. 9075 000082b8 2041fff7 addi r1,r2,#-9 9076 000082bc 302100ff andi r1,r1,#0x00ff 9077 000082c0 70210001 sleui r1,r1,#1 9078 000082c4 10200008 beqz r1,L5_LF7 9079 000082c8 54000000 nop; not filled. 9080 000082cc L6_LF7: 9081 000082cc 201f0001 addi r31,r0,#1 9082 000082d0 L5_LF7: 9083 000082d0 001f0820 add r1,r0,r31 9084 000082d4 8fa20000 lw r2,0(r29) 9085 000082d8 8fdffff8 lw r31,-8(r30) 9086 000082dc 001ee820 add r29,r0,r30 9087 000082e0 8fdefffc lw r30,-4(r30) 9088 000082e4 4be00000 jr r31 9089 000082e8 54000000 nop 9090 000082ec .endproc _isspace 9091 000082ec .align 2 9092 000082ec .proc _isxdigit 9093 000082ec .global _isxdigit 9094 000082ec _isxdigit: 9095 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 9096 000082ec afbefffc sw -4(r29),r30; push fp 9097 000082f0 001df020 add r30,r0,r29; fp = sp 9098 000082f4 afbffff8 sw -8(r29),r31; push ret addr 9099 000082f8 2fbd0010 subui r29,r29,#16; alloc local storage 9100 000082fc afa20000 sw 0(r29),r2 9101 00008300 83df0003 lb r31,3(r30) 9102 00008304 20020000 addi r2,r0,#0 9103 00008308 23e1ffd0 addi r1,r31,#-48 9104 0000830c 302100ff andi r1,r1,#0x00ff 9105 00008310 70210009 sleui r1,r1,#9 9106 00008314 14200028 bnez r1,L12_LF7 9107 00008318 54000000 nop; not filled. 9108 0000831c 23e1ff9f addi r1,r31,#-97 9109 00008320 302100ff andi r1,r1,#0x00ff 9110 00008324 70210005 sleui r1,r1,#5 9111 00008328 14200014 bnez r1,L12_LF7 9112 0000832c 54000000 nop; not filled. 9113 00008330 33e100ff andi r1,r31,#0x00ff 9114 00008334 64210041 snei r1,r1,#65 9115 00008338 14200008 bnez r1,L11_LF7 9116 0000833c 54000000 nop; not filled. 9117 00008340 L12_LF7: 9118 00008340 20020001 addi r2,r0,#1 9119 00008344 L11_LF7: 9120 00008344 00020820 add r1,r0,r2 9121 00008348 8fa20000 lw r2,0(r29) 9122 0000834c 8fdffff8 lw r31,-8(r30) 9123 00008350 001ee820 add r29,r0,r30 9124 00008354 8fdefffc lw r30,-4(r30) 9125 00008358 4be00000 jr r31 9126 0000835c 54000000 nop 9127 00008360 .endproc _isxdigit 9128 00008360 .align 2 9129 00008360 .proc _DisableIntrs 9130 00008360 .global _DisableIntrs 9131 00008360 _DisableIntrs: 9132 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 9133 00008360 afbefffc sw -4(r29),r30; push fp 9134 00008364 001df020 add r30,r0,r29; fp = sp 9135 00008368 afbffff8 sw -8(r29),r31; push ret addr 9136 0000836c 2fbd0010 subui r29,r29,#16; alloc local storage 9137 00008370 afa20000 sw 0(r29),r2 9138 00008374 23bdfff8 addi r29,r29,#-8 9139 00008378 2002000f addi r2,r0,#15 9140 0000837c afa20000 sw (r29),r2 9141 00008380 0fff8f04 jal _SetIntrs 9142 00008384 54000000 nop; not filled. 9143 00008388 23bd0008 addi r29,r29,#8 9144 0000838c 8fa20000 lw r2,0(r29) 9145 00008390 8fdffff8 lw r31,-8(r30) 9146 00008394 001ee820 add r29,r0,r30 9147 00008398 8fdefffc lw r30,-4(r30) 9148 0000839c 4be00000 jr r31 9149 000083a0 54000000 nop 9150 000083a4 .endproc _DisableIntrs 9151 000083a4 .align 2 9152 000083a4 .proc _EnableIntrs 9153 000083a4 .global _EnableIntrs 9154 000083a4 _EnableIntrs: 9155 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 9156 000083a4 afbefffc sw -4(r29),r30; push fp 9157 000083a8 001df020 add r30,r0,r29; fp = sp 9158 000083ac afbffff8 sw -8(r29),r31; push ret addr 9159 000083b0 2fbd0010 subui r29,r29,#16; alloc local storage 9160 000083b4 afa20000 sw 0(r29),r2 9161 000083b8 23bdfff8 addi r29,r29,#-8 9162 000083bc 20020000 addi r2,r0,#0 9163 000083c0 afa20000 sw (r29),r2 9164 000083c4 0fff8ec0 jal _SetIntrs 9165 000083c8 54000000 nop; not filled. 9166 000083cc 23bd0008 addi r29,r29,#8 9167 000083d0 8fa20000 lw r2,0(r29) 9168 000083d4 8fdffff8 lw r31,-8(r30) 9169 000083d8 001ee820 add r29,r0,r30 9170 000083dc 8fdefffc lw r30,-4(r30) 9171 000083e0 4be00000 jr r31 9172 000083e4 54000000 nop 9173 000083e8 .endproc _EnableIntrs 9174 000083e8 .align 2 9175 000083e8 .proc _RestoreIntrs 9176 000083e8 .global _RestoreIntrs 9177 000083e8 _RestoreIntrs: 9178 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 9179 000083e8 afbefffc sw -4(r29),r30; push fp 9180 000083ec 001df020 add r30,r0,r29; fp = sp 9181 000083f0 afbffff8 sw -8(r29),r31; push ret addr 9182 000083f4 2fbd0010 subui r29,r29,#16; alloc local storage 9183 000083f8 afa20000 sw 0(r29),r2 9184 000083fc 23bdfff8 addi r29,r29,#-8 9185 00008400 8fc20000 lw r2,(r30) 9186 00008404 afa20000 sw (r29),r2 9187 00008408 0fff8e7c jal _SetIntrs 9188 0000840c 54000000 nop; not filled. 9189 00008410 23bd0008 addi r29,r29,#8 9190 00008414 8fa20000 lw r2,0(r29) 9191 00008418 8fdffff8 lw r31,-8(r30) 9192 0000841c 001ee820 add r29,r0,r30 9193 00008420 8fdefffc lw r30,-4(r30) 9194 00008424 4be00000 jr r31 9195 00008428 54000000 nop 9196 0000842c .endproc _RestoreIntrs 9197 0000842c .align 2 9198 0000842c .proc _QueueLinkInit 9199 0000842c .global _QueueLinkInit 9200 0000842c _QueueLinkInit: 9201 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 9202 0000842c afbefffc sw -4(r29),r30; push fp 9203 00008430 001df020 add r30,r0,r29; fp = sp 9204 00008434 afbffff8 sw -8(r29),r31; push ret addr 9205 00008438 2fbd0010 subui r29,r29,#16; alloc local storage 9206 0000843c afa20000 sw 0(r29),r2 9207 00008440 8fc10000 lw r1,(r30) 9208 00008444 8fc20004 lw r2,4(r30) 9209 00008448 201f0000 addi r31,r0,#0 9210 0000844c ac3f0000 sw (r1),r31 9211 00008450 ac22000c sw 12(r1),r2 9212 00008454 8fa20000 lw r2,0(r29) 9213 00008458 8fdffff8 lw r31,-8(r30) 9214 0000845c 001ee820 add r29,r0,r30 9215 00008460 8fdefffc lw r30,-4(r30) 9216 00008464 4be00000 jr r31 9217 00008468 54000000 nop 9218 0000846c .endproc _QueueLinkInit 9219 0000846c .align 2 9220 0000846c .proc _QueueNext 9221 0000846c .global _QueueNext 9222 0000846c _QueueNext: 9223 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 9224 0000846c afbefffc sw -4(r29),r30; push fp 9225 00008470 001df020 add r30,r0,r29; fp = sp 9226 00008474 afbffff8 sw -8(r29),r31; push ret addr 9227 00008478 2fbd0008 subui r29,r29,#8; alloc local storage 9228 0000847c 8fc10000 lw r1,(r30) 9229 00008480 8c210000 lw r1,(r1) 9230 00008484 8fdffff8 lw r31,-8(r30) 9231 00008488 001ee820 add r29,r0,r30 9232 0000848c 8fdefffc lw r30,-4(r30) 9233 00008490 4be00000 jr r31 9234 00008494 54000000 nop 9235 00008498 .endproc _QueueNext 9236 00008498 .align 2 9237 00008498 .proc _QueuePrev 9238 00008498 .global _QueuePrev 9239 00008498 _QueuePrev: 9240 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 9241 00008498 afbefffc sw -4(r29),r30; push fp 9242 0000849c 001df020 add r30,r0,r29; fp = sp 9243 000084a0 afbffff8 sw -8(r29),r31; push ret addr 9244 000084a4 2fbd0008 subui r29,r29,#8; alloc local storage 9245 000084a8 8fc10000 lw r1,(r30) 9246 000084ac 8c210004 lw r1,4(r1) 9247 000084b0 8fdffff8 lw r31,-8(r30) 9248 000084b4 001ee820 add r29,r0,r30 9249 000084b8 8fdefffc lw r30,-4(r30) 9250 000084bc 4be00000 jr r31 9251 000084c0 54000000 nop 9252 000084c4 .endproc _QueuePrev 9253 000084c4 .align 2 9254 000084c4 .proc _QueueFirst 9255 000084c4 .global _QueueFirst 9256 000084c4 _QueueFirst: 9257 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 9258 000084c4 afbefffc sw -4(r29),r30; push fp 9259 000084c8 001df020 add r30,r0,r29; fp = sp 9260 000084cc afbffff8 sw -8(r29),r31; push ret addr 9261 000084d0 2fbd0008 subui r29,r29,#8; alloc local storage 9262 000084d4 8fc10000 lw r1,(r30) 9263 000084d8 8c210000 lw r1,(r1) 9264 000084dc 8fdffff8 lw r31,-8(r30) 9265 000084e0 001ee820 add r29,r0,r30 9266 000084e4 8fdefffc lw r30,-4(r30) 9267 000084e8 4be00000 jr r31 9268 000084ec 54000000 nop 9269 000084f0 .endproc _QueueFirst 9270 000084f0 .align 2 9271 000084f0 .proc _QueueLast 9272 000084f0 .global _QueueLast 9273 000084f0 _QueueLast: 9274 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 9275 000084f0 afbefffc sw -4(r29),r30; push fp 9276 000084f4 001df020 add r30,r0,r29; fp = sp 9277 000084f8 afbffff8 sw -8(r29),r31; push ret addr 9278 000084fc 2fbd0008 subui r29,r29,#8; alloc local storage 9279 00008500 8fc10000 lw r1,(r30) 9280 00008504 8c210004 lw r1,4(r1) 9281 00008508 8fdffff8 lw r31,-8(r30) 9282 0000850c 001ee820 add r29,r0,r30 9283 00008510 8fdefffc lw r30,-4(r30) 9284 00008514 4be00000 jr r31 9285 00008518 54000000 nop 9286 0000851c .endproc _QueueLast 9287 0000851c .align 2 9288 0000851c .proc _QueueInsertAfter 9289 0000851c .global _QueueInsertAfter 9290 0000851c _QueueInsertAfter: 9291 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 9292 0000851c afbefffc sw -4(r29),r30; push fp 9293 00008520 001df020 add r30,r0,r29; fp = sp 9294 00008524 afbffff8 sw -8(r29),r31; push ret addr 9295 00008528 2fbd0010 subui r29,r29,#16; alloc local storage 9296 0000852c afa20000 sw 0(r29),r2 9297 00008530 afa30004 sw 4(r29),r3 9298 00008534 8fc30000 lw r3,(r30) 9299 00008538 8fc20004 lw r2,4(r30) 9300 0000853c 8fc10008 lw r1,8(r30) 9301 00008540 ac230008 sw 8(r1),r3 9302 00008544 ac220004 sw 4(r1),r2 9303 00008548 8c5f0000 lw r31,(r2) 9304 0000854c ac3f0000 sw (r1),r31 9305 00008550 ac410000 sw (r2),r1 9306 00008554 8c220000 lw r2,(r1) 9307 00008558 ac410004 sw 4(r2),r1 9308 0000855c 8c610008 lw r1,8(r3) 9309 00008560 20210001 addi r1,r1,#1 9310 00008564 ac610008 sw 8(r3),r1 9311 00008568 8fa20000 lw r2,0(r29) 9312 0000856c 8fa30004 lw r3,4(r29) 9313 00008570 8fdffff8 lw r31,-8(r30) 9314 00008574 001ee820 add r29,r0,r30 9315 00008578 8fdefffc lw r30,-4(r30) 9316 0000857c 4be00000 jr r31 9317 00008580 54000000 nop 9318 00008584 .endproc _QueueInsertAfter 9319 00008584 .align 2 9320 00008584 .proc _QueueInsertFirst 9321 00008584 .global _QueueInsertFirst 9322 00008584 _QueueInsertFirst: 9323 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 9324 00008584 afbefffc sw -4(r29),r30; push fp 9325 00008588 001df020 add r30,r0,r29; fp = sp 9326 0000858c afbffff8 sw -8(r29),r31; push ret addr 9327 00008590 2fbd0010 subui r29,r29,#16; alloc local storage 9328 00008594 afa20000 sw 0(r29),r2 9329 00008598 afa30004 sw 4(r29),r3 9330 0000859c 8fc30000 lw r3,(r30) 9331 000085a0 8fc10004 lw r1,4(r30) 9332 000085a4 ac230008 sw 8(r1),r3 9333 000085a8 ac230004 sw 4(r1),r3 9334 000085ac 8c7f0000 lw r31,(r3) 9335 000085b0 ac3f0000 sw (r1),r31 9336 000085b4 ac610000 sw (r3),r1 9337 000085b8 8c220000 lw r2,(r1) 9338 000085bc ac410004 sw 4(r2),r1 9339 000085c0 8c610008 lw r1,8(r3) 9340 000085c4 20210001 addi r1,r1,#1 9341 000085c8 ac610008 sw 8(r3),r1 9342 000085cc 8fa20000 lw r2,0(r29) 9343 000085d0 8fa30004 lw r3,4(r29) 9344 000085d4 8fdffff8 lw r31,-8(r30) 9345 000085d8 001ee820 add r29,r0,r30 9346 000085dc 8fdefffc lw r30,-4(r30) 9347 000085e0 4be00000 jr r31 9348 000085e4 54000000 nop 9349 000085e8 .endproc _QueueInsertFirst 9350 000085e8 .align 2 9351 000085e8 .proc _QueueInsertLast 9352 000085e8 .global _QueueInsertLast 9353 000085e8 _QueueInsertLast: 9354 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 9355 000085e8 afbefffc sw -4(r29),r30; push fp 9356 000085ec 001df020 add r30,r0,r29; fp = sp 9357 000085f0 afbffff8 sw -8(r29),r31; push ret addr 9358 000085f4 2fbd0010 subui r29,r29,#16; alloc local storage 9359 000085f8 afa20000 sw 0(r29),r2 9360 000085fc afa30004 sw 4(r29),r3 9361 00008600 8fc30000 lw r3,(r30) 9362 00008604 8fc10004 lw r1,4(r30) 9363 00008608 8c620004 lw r2,4(r3) 9364 0000860c ac230008 sw 8(r1),r3 9365 00008610 ac220004 sw 4(r1),r2 9366 00008614 8c5f0000 lw r31,(r2) 9367 00008618 ac3f0000 sw (r1),r31 9368 0000861c ac410000 sw (r2),r1 9369 00008620 8c220000 lw r2,(r1) 9370 00008624 ac410004 sw 4(r2),r1 9371 00008628 8c610008 lw r1,8(r3) 9372 0000862c 20210001 addi r1,r1,#1 9373 00008630 ac610008 sw 8(r3),r1 9374 00008634 8fa20000 lw r2,0(r29) 9375 00008638 8fa30004 lw r3,4(r29) 9376 0000863c 8fdffff8 lw r31,-8(r30) 9377 00008640 001ee820 add r29,r0,r30 9378 00008644 8fdefffc lw r30,-4(r30) 9379 00008648 4be00000 jr r31 9380 0000864c 54000000 nop 9381 00008650 .endproc _QueueInsertLast 9382 00008650 .align 2 9383 00008650 .proc _QueueRemove 9384 00008650 .global _QueueRemove 9385 00008650 _QueueRemove: 9386 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 9387 00008650 afbefffc sw -4(r29),r30; push fp 9388 00008654 001df020 add r30,r0,r29; fp = sp 9389 00008658 afbffff8 sw -8(r29),r31; push ret addr 9390 0000865c 2fbd0010 subui r29,r29,#16; alloc local storage 9391 00008660 afa20000 sw 0(r29),r2 9392 00008664 afa30004 sw 4(r29),r3 9393 00008668 8fdf0000 lw r31,(r30) 9394 0000866c 8fe10008 lw r1,8(r31) 9395 00008670 8c210008 lw r1,8(r1) 9396 00008674 6c210000 sgti r1,r1,#0 9397 00008678 1020002c beqz r1,L44_LF7 9398 0000867c 54000000 nop; not filled. 9399 00008680 8fe10004 lw r1,4(r31) 9400 00008684 8fe30000 lw r3,(r31) 9401 00008688 ac230000 sw (r1),r3 9402 0000868c 8fe10000 lw r1,(r31) 9403 00008690 8fe30004 lw r3,4(r31) 9404 00008694 ac230004 sw 4(r1),r3 9405 00008698 8fe20008 lw r2,8(r31) 9406 0000869c 8c410008 lw r1,8(r2) 9407 000086a0 2021ffff addi r1,r1,#-1 9408 000086a4 ac410008 sw 8(r2),r1 9409 000086a8 L44_LF7: 9410 000086a8 20030000 addi r3,r0,#0 9411 000086ac afe30000 sw (r31),r3 9412 000086b0 8fa20000 lw r2,0(r29) 9413 000086b4 8fa30004 lw r3,4(r29) 9414 000086b8 8fdffff8 lw r31,-8(r30) 9415 000086bc 001ee820 add r29,r0,r30 9416 000086c0 8fdefffc lw r30,-4(r30) 9417 000086c4 4be00000 jr r31 9418 000086c8 54000000 nop 9419 000086cc .endproc _QueueRemove 9420 000086cc .align 2 9421 000086cc .proc _QueueLength 9422 000086cc .global _QueueLength 9423 000086cc _QueueLength: 9424 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 9425 000086cc afbefffc sw -4(r29),r30; push fp 9426 000086d0 001df020 add r30,r0,r29; fp = sp 9427 000086d4 afbffff8 sw -8(r29),r31; push ret addr 9428 000086d8 2fbd0008 subui r29,r29,#8; alloc local storage 9429 000086dc 8fc10000 lw r1,(r30) 9430 000086e0 8c210008 lw r1,8(r1) 9431 000086e4 8fdffff8 lw r31,-8(r30) 9432 000086e8 001ee820 add r29,r0,r30 9433 000086ec 8fdefffc lw r30,-4(r30) 9434 000086f0 4be00000 jr r31 9435 000086f4 54000000 nop 9436 000086f8 .endproc _QueueLength 9437 000086f8 .align 2 9438 000086f8 .proc _QueueEmpty 9439 000086f8 .global _QueueEmpty 9440 000086f8 _QueueEmpty: 9441 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 9442 000086f8 afbefffc sw -4(r29),r30; push fp 9443 000086fc 001df020 add r30,r0,r29; fp = sp 9444 00008700 afbffff8 sw -8(r29),r31; push ret addr 9445 00008704 2fbd0008 subui r29,r29,#8; alloc local storage 9446 00008708 8fc10000 lw r1,(r30) 9447 0000870c 8c210008 lw r1,8(r1) 9448 00008710 60210000 seqi r1,r1,#0 9449 00008714 8fdffff8 lw r31,-8(r30) 9450 00008718 001ee820 add r29,r0,r30 9451 0000871c 8fdefffc lw r30,-4(r30) 9452 00008720 4be00000 jr r31 9453 00008724 54000000 nop 9454 00008728 .endproc _QueueEmpty 9455 00008728 .data 9456 000126d4 .align 2 9457 000126d4 LC0_LF7: 9458 000126d4 456e7465 .ascii "Entering SynchModuleInit\n\000" 9458 000126d8 72696e67 9458 000126dc 2053796e 9458 000126e0 63684d6f 9458 000126e4 64756c65 9458 000126e8 496e6974 9458 000126ec 0a00 9459 000126ee .align 2 9460 000126f0 LC1_LF7: 9461 000126f0 4c656176 .ascii "Leaving SynchModuleInit\n\000" 9461 000126f4 696e6720 9461 000126f8 53796e63 9461 000126fc 684d6f64 9461 00012700 756c6549 9461 00012704 6e69740a 9461 00012708 00 9462 00012709 .text 9463 00008728 .align 2 9464 00008728 .proc _SynchModuleInit 9465 00008728 .global _SynchModuleInit 9466 00008728 _SynchModuleInit: 9467 ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. 9468 00008728 afbefffc sw -4(r29),r30; push fp 9469 0000872c 001df020 add r30,r0,r29; fp = sp 9470 00008730 afbffff8 sw -8(r29),r31; push ret addr 9471 00008734 2fbd0010 subui r29,r29,#16; alloc local storage 9472 00008738 afa20000 sw 0(r29),r2 9473 0000873c afa30004 sw 4(r29),r3 9474 00008740 23bdfff8 addi r29,r29,#-8 9475 00008744 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9476 00008748 2442fd60 addui r2,r2,(_debugstr)&0xffff 9477 0000874c afa20000 sw (r29),r2 9478 00008750 20030070 addi r3,r0,#112 9479 00008754 afa30004 sw 4(r29),r3 9480 00008758 0fffb6d8 jal _dindex 9481 0000875c 54000000 nop; not filled. 9482 00008760 23bd0008 addi r29,r29,#8 9483 00008764 64210000 snei r1,r1,#0 9484 00008768 1420002c bnez r1,L53_LF7 9485 0000876c 54000000 nop; not filled. 9486 00008770 23bdfff8 addi r29,r29,#-8 9487 00008774 afa20000 sw (r29),r2 9488 00008778 2003002b addi r3,r0,#43 9489 0000877c afa30004 sw 4(r29),r3 9490 00008780 0fffb6b0 jal _dindex 9491 00008784 54000000 nop; not filled. 9492 00008788 23bd0008 addi r29,r29,#8 9493 0000878c 64210000 snei r1,r1,#0 9494 00008790 10200020 beqz r1,L52_LF7 9495 00008794 54000000 nop; not filled. 9496 00008798 L53_LF7: 9497 00008798 23bdfff8 addi r29,r29,#-8 9498 0000879c 3c030001 lhi r3,((LC0_LF7)>>16)&0xffff 9499 000087a0 246326d4 addui r3,r3,(LC0_LF7)&0xffff 9500 000087a4 afa30000 sw (r29),r3 9501 000087a8 0c002840 jal _printf 9502 000087ac 54000000 nop; not filled. 9503 000087b0 23bd0008 addi r29,r29,#8 9504 000087b4 L52_LF7: 9505 000087b4 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9506 000087b8 27ff27b8 addui r31,r31,(_sems_LF7)&0xffff 9507 000087bc 23e2026c addi r2,r31,#620 9508 000087c0 L57_LF7: 9509 000087c0 20030000 addi r3,r0,#0 9510 000087c4 afe30010 sw 16(r31),r3 9511 000087c8 23ff0014 addi r31,r31,#20 9512 000087cc 03e2082c sle r1,r31,r2 9513 000087d0 1420ffec bnez r1,L57_LF7 9514 000087d4 54000000 nop; not filled. 9515 000087d8 23bdfff8 addi r29,r29,#-8 9516 000087dc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9517 000087e0 2442fd60 addui r2,r2,(_debugstr)&0xffff 9518 000087e4 afa20000 sw (r29),r2 9519 000087e8 20030070 addi r3,r0,#112 9520 000087ec afa30004 sw 4(r29),r3 9521 000087f0 0fffb640 jal _dindex 9522 000087f4 54000000 nop; not filled. 9523 000087f8 23bd0008 addi r29,r29,#8 9524 000087fc 64210000 snei r1,r1,#0 9525 00008800 1420002c bnez r1,L60_LF7 9526 00008804 54000000 nop; not filled. 9527 00008808 23bdfff8 addi r29,r29,#-8 9528 0000880c afa20000 sw (r29),r2 9529 00008810 2003002b addi r3,r0,#43 9530 00008814 afa30004 sw 4(r29),r3 9531 00008818 0fffb618 jal _dindex 9532 0000881c 54000000 nop; not filled. 9533 00008820 23bd0008 addi r29,r29,#8 9534 00008824 64210000 snei r1,r1,#0 9535 00008828 10200020 beqz r1,L59_LF7 9536 0000882c 54000000 nop; not filled. 9537 00008830 L60_LF7: 9538 00008830 23bdfff8 addi r29,r29,#-8 9539 00008834 3c030001 lhi r3,((LC1_LF7)>>16)&0xffff 9540 00008838 246326f0 addui r3,r3,(LC1_LF7)&0xffff 9541 0000883c afa30000 sw (r29),r3 9542 00008840 0c0027a8 jal _printf 9543 00008844 54000000 nop; not filled. 9544 00008848 23bd0008 addi r29,r29,#8 9545 0000884c L59_LF7: 9546 0000884c 8fa20000 lw r2,0(r29) 9547 00008850 8fa30004 lw r3,4(r29) 9548 00008854 8fdffff8 lw r31,-8(r30) 9549 00008858 001ee820 add r29,r0,r30 9550 0000885c 8fdefffc lw r30,-4(r30) 9551 00008860 4be00000 jr r31 9552 00008864 54000000 nop 9553 00008868 .endproc _SynchModuleInit 9554 00008868 .align 2 9555 00008868 .proc _SemInit 9556 00008868 .global _SemInit 9557 00008868 _SemInit: 9558 ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. 9559 00008868 afbefffc sw -4(r29),r30; push fp 9560 0000886c 001df020 add r30,r0,r29; fp = sp 9561 00008870 afbffff8 sw -8(r29),r31; push ret addr 9562 00008874 2fbd0010 subui r29,r29,#16; alloc local storage 9563 00008878 afa20000 sw 0(r29),r2 9564 0000887c afa30004 sw 4(r29),r3 9565 00008880 8fc20000 lw r2,(r30) 9566 00008884 8fc30004 lw r3,4(r30) 9567 00008888 23bdfff8 addi r29,r29,#-8 9568 0000888c afa20000 sw (r29),r2 9569 00008890 0ffff81c jal _QueueInit 9570 00008894 54000000 nop; not filled. 9571 00008898 ac43000c sw 12(r2),r3 9572 0000889c 23bd0008 addi r29,r29,#8 9573 000088a0 8fa20000 lw r2,0(r29) 9574 000088a4 8fa30004 lw r3,4(r29) 9575 000088a8 8fdffff8 lw r31,-8(r30) 9576 000088ac 001ee820 add r29,r0,r30 9577 000088b0 8fdefffc lw r30,-4(r30) 9578 000088b4 4be00000 jr r31 9579 000088b8 54000000 nop 9580 000088bc .endproc _SemInit 9581 000088bc .align 2 9582 000088bc .proc _SemCreate 9583 000088bc .global _SemCreate 9584 000088bc _SemCreate: 9585 ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. 9586 000088bc afbefffc sw -4(r29),r30; push fp 9587 000088c0 001df020 add r30,r0,r29; fp = sp 9588 000088c4 afbffff8 sw -8(r29),r31; push ret addr 9589 000088c8 2fbd0018 subui r29,r29,#24; alloc local storage 9590 000088cc afa20000 sw 0(r29),r2 9591 000088d0 afa30004 sw 4(r29),r3 9592 000088d4 afa40008 sw 8(r29),r4 9593 000088d8 afa5000c sw 12(r29),r5 9594 000088dc 23bdfff8 addi r29,r29,#-8 9595 000088e0 2005000f addi r5,r0,#15 9596 000088e4 afa50000 sw (r29),r5 9597 000088e8 0fff899c jal _SetIntrs 9598 000088ec 54000000 nop; not filled. 9599 000088f0 00012020 add r4,r0,r1 9600 000088f4 23bd0008 addi r29,r29,#8 9601 000088f8 20030000 addi r3,r0,#0 9602 000088fc 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9603 00008900 27ff27b8 addui r31,r31,(_sems_LF7)&0xffff 9604 00008904 L79_LF7: 9605 00008904 001f1020 add r2,r0,r31 9606 00008908 8fe10010 lw r1,16(r31) 9607 0000890c 64210000 snei r1,r1,#0 9608 00008910 10200078 beqz r1,L86_LF7 9609 00008914 54000000 nop; not filled. 9610 00008918 205f0014 addi r31,r2,#20 9611 0000891c 20630001 addi r3,r3,#1 9612 00008920 7061001f slei r1,r3,#31 9613 00008924 1420ffdc bnez r1,L79_LF7 9614 00008928 54000000 nop; not filled. 9615 0000892c L77_LF7: 9616 0000892c 23bdfff8 addi r29,r29,#-8 9617 00008930 afa40000 sw (r29),r4 9618 00008934 0fff8950 jal _SetIntrs 9619 00008938 54000000 nop; not filled. 9620 0000893c 23bd0008 addi r29,r29,#8 9621 00008940 60610020 seqi r1,r3,#32 9622 00008944 14200054 bnez r1,L83_LF7 9623 00008948 54000000 nop; not filled. 9624 0000894c 50610002 slli r1,r3,#0x2 9625 00008950 00230820 add r1,r1,r3 9626 00008954 50210002 slli r1,r1,#0x2 9627 00008958 3c050001 lhi r5,((_sems_LF7)>>16)&0xffff 9628 0000895c 24a527b8 addui r5,r5,(_sems_LF7)&0xffff 9629 00008960 00251020 add r2,r1,r5 9630 00008964 23bdfff8 addi r29,r29,#-8 9631 00008968 afa20000 sw (r29),r2 9632 0000896c 0ffff740 jal _QueueInit 9633 00008970 54000000 nop; not filled. 9634 00008974 8fc50000 lw r5,(r30) 9635 00008978 ac45000c sw 12(r2),r5 9636 0000897c 23bd0008 addi r29,r29,#8 9637 00008980 00030820 add r1,r0,r3 9638 00008984 08000018 j L85_LF7 9639 00008988 54000000 nop; not filled. 9640 0000898c L86_LF7: 9641 0000898c 20050001 addi r5,r0,#1 9642 00008990 afe50010 sw 16(r31),r5 9643 00008994 0bffff94 j L77_LF7 9644 00008998 54000000 nop; not filled. 9645 0000899c L83_LF7: 9646 0000899c 2001ffff addi r1,r0,#-1 9647 000089a0 L85_LF7: 9648 000089a0 8fa20000 lw r2,0(r29) 9649 000089a4 8fa30004 lw r3,4(r29) 9650 000089a8 8fa40008 lw r4,8(r29) 9651 000089ac 8fa5000c lw r5,12(r29) 9652 000089b0 8fdffff8 lw r31,-8(r30) 9653 000089b4 001ee820 add r29,r0,r30 9654 000089b8 8fdefffc lw r30,-4(r30) 9655 000089bc 4be00000 jr r31 9656 000089c0 54000000 nop 9657 000089c4 .endproc _SemCreate 9658 000089c4 .data 9659 00012709 .align 2 9660 0001270c LC2_LF7: 9661 0001270c 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 9661 00012710 696e7465 9661 00012714 72727570 9661 00012718 74207661 9661 0001271c 6c756520 9661 00012720 77617320 9661 00012724 30782578 9661 00012728 2e0a00 9662 0001272b .align 2 9663 0001272c LC3_LF7: 9664 0001272c 50726f63 .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" 9664 00012730 20307825 9664 00012734 78207761 9664 00012738 6974696e 9664 0001273c 67206f6e 9664 00012740 2073656d 9664 00012744 20307825 9664 00012748 782c2063 9664 0001274c 6f756e74 9664 00012750 3d25642e 9664 00012754 0a00 9665 00012756 .align 2 9666 00012758 LC4_LF7: 9667 00012758 53757370 .ascii "Suspending current proc (0x%x).\n\000" 9667 0001275c 656e6469 9667 00012760 6e672063 9667 00012764 75727265 9667 00012768 6e742070 9667 0001276c 726f6320 9667 00012770 28307825 9667 00012774 78292e0a 9667 00012778 00 9668 00012779 .text 9669 000089c4 .align 2 9670 000089c4 .proc _SemWait 9671 000089c4 .global _SemWait 9672 000089c4 _SemWait: 9673 ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. 9674 000089c4 afbefffc sw -4(r29),r30; push fp 9675 000089c8 001df020 add r30,r0,r29; fp = sp 9676 000089cc afbffff8 sw -8(r29),r31; push ret addr 9677 000089d0 2fbd0020 subui r29,r29,#32; alloc local storage 9678 000089d4 afa20000 sw 0(r29),r2 9679 000089d8 afa30004 sw 4(r29),r3 9680 000089dc afa40008 sw 8(r29),r4 9681 000089e0 afa5000c sw 12(r29),r5 9682 000089e4 afa60010 sw 16(r29),r6 9683 000089e8 afa70014 sw 20(r29),r7 9684 000089ec 8fc40000 lw r4,(r30) 9685 000089f0 23bdfff8 addi r29,r29,#-8 9686 000089f4 2007000f addi r7,r0,#15 9687 000089f8 afa70000 sw (r29),r7 9688 000089fc 0fff8888 jal _SetIntrs 9689 00008a00 54000000 nop; not filled. 9690 00008a04 00013020 add r6,r0,r1 9691 00008a08 23bd0008 addi r29,r29,#8 9692 00008a0c 23bdfff8 addi r29,r29,#-8 9693 00008a10 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9694 00008a14 2442fd60 addui r2,r2,(_debugstr)&0xffff 9695 00008a18 afa20000 sw (r29),r2 9696 00008a1c 20070049 addi r7,r0,#73 9697 00008a20 afa70004 sw 4(r29),r7 9698 00008a24 0fffb40c jal _dindex 9699 00008a28 54000000 nop; not filled. 9700 00008a2c 23bd0008 addi r29,r29,#8 9701 00008a30 64210000 snei r1,r1,#0 9702 00008a34 1420002c bnez r1,L90_LF7 9703 00008a38 54000000 nop; not filled. 9704 00008a3c 23bdfff8 addi r29,r29,#-8 9705 00008a40 afa20000 sw (r29),r2 9706 00008a44 2007002b addi r7,r0,#43 9707 00008a48 afa70004 sw 4(r29),r7 9708 00008a4c 0fffb3e4 jal _dindex 9709 00008a50 54000000 nop; not filled. 9710 00008a54 23bd0008 addi r29,r29,#8 9711 00008a58 64210000 snei r1,r1,#0 9712 00008a5c 10200024 beqz r1,L89_LF7 9713 00008a60 54000000 nop; not filled. 9714 00008a64 L90_LF7: 9715 00008a64 23bdfff8 addi r29,r29,#-8 9716 00008a68 3c070001 lhi r7,((LC2_LF7)>>16)&0xffff 9717 00008a6c 24e7270c addui r7,r7,(LC2_LF7)&0xffff 9718 00008a70 afa70000 sw (r29),r7 9719 00008a74 afa60004 sw 4(r29),r6 9720 00008a78 0c002570 jal _printf 9721 00008a7c 54000000 nop; not filled. 9722 00008a80 23bd0008 addi r29,r29,#8 9723 00008a84 L89_LF7: 9724 00008a84 23bdfff8 addi r29,r29,#-8 9725 00008a88 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9726 00008a8c 2442fd60 addui r2,r2,(_debugstr)&0xffff 9727 00008a90 afa20000 sw (r29),r2 9728 00008a94 20070073 addi r7,r0,#115 9729 00008a98 afa70004 sw 4(r29),r7 9730 00008a9c 0fffb394 jal _dindex 9731 00008aa0 54000000 nop; not filled. 9732 00008aa4 23bd0008 addi r29,r29,#8 9733 00008aa8 64210000 snei r1,r1,#0 9734 00008aac 1420002c bnez r1,L92_LF7 9735 00008ab0 54000000 nop; not filled. 9736 00008ab4 23bdfff8 addi r29,r29,#-8 9737 00008ab8 afa20000 sw (r29),r2 9738 00008abc 2007002b addi r7,r0,#43 9739 00008ac0 afa70004 sw 4(r29),r7 9740 00008ac4 0fffb36c jal _dindex 9741 00008ac8 54000000 nop; not filled. 9742 00008acc 23bd0008 addi r29,r29,#8 9743 00008ad0 64210000 snei r1,r1,#0 9744 00008ad4 1020003c beqz r1,L91_LF7 9745 00008ad8 54000000 nop; not filled. 9746 00008adc L92_LF7: 9747 00008adc 23bdfff0 addi r29,r29,#-16 9748 00008ae0 3c070001 lhi r7,((LC3_LF7)>>16)&0xffff 9749 00008ae4 24e7272c addui r7,r7,(LC3_LF7)&0xffff 9750 00008ae8 afa70000 sw (r29),r7 9751 00008aec 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 9752 00008af0 2421fe28 addui r1,r1,(_currentPCB)&0xffff 9753 00008af4 8c210000 lw r1,(r1) 9754 00008af8 afa10004 sw 4(r29),r1 9755 00008afc afa40008 sw 8(r29),r4 9756 00008b00 8c87000c lw r7,12(r4) 9757 00008b04 afa7000c sw 12(r29),r7 9758 00008b08 0c0024e0 jal _printf 9759 00008b0c 54000000 nop; not filled. 9760 00008b10 23bd0010 addi r29,r29,#16 9761 00008b14 L91_LF7: 9762 00008b14 8c81000c lw r1,12(r4) 9763 00008b18 2021ffff addi r1,r1,#-1 9764 00008b1c ac81000c sw 12(r4),r1 9765 00008b20 68210000 slti r1,r1,#0 9766 00008b24 102000d8 beqz r1,L93_LF7 9767 00008b28 54000000 nop; not filled. 9768 00008b2c 0ffff670 jal _QueueAllocLink 9769 00008b30 54000000 nop; not filled. 9770 00008b34 00011020 add r2,r0,r1 9771 00008b38 3c050000 lhi r5,((_currentPCB)>>16)&0xffff 9772 00008b3c 24a5fe28 addui r5,r5,(_currentPCB)&0xffff 9773 00008b40 8ca10000 lw r1,(r5) 9774 00008b44 20070000 addi r7,r0,#0 9775 00008b48 ac470000 sw (r2),r7 9776 00008b4c ac41000c sw 12(r2),r1 9777 00008b50 23bdfff8 addi r29,r29,#-8 9778 00008b54 3c030000 lhi r3,((_debugstr)>>16)&0xffff 9779 00008b58 2463fd60 addui r3,r3,(_debugstr)&0xffff 9780 00008b5c afa30000 sw (r29),r3 9781 00008b60 20070073 addi r7,r0,#115 9782 00008b64 afa70004 sw 4(r29),r7 9783 00008b68 0fffb2c8 jal _dindex 9784 00008b6c 54000000 nop; not filled. 9785 00008b70 23bd0008 addi r29,r29,#8 9786 00008b74 64210000 snei r1,r1,#0 9787 00008b78 1420002c bnez r1,L96_LF7 9788 00008b7c 54000000 nop; not filled. 9789 00008b80 23bdfff8 addi r29,r29,#-8 9790 00008b84 afa30000 sw (r29),r3 9791 00008b88 2007002b addi r7,r0,#43 9792 00008b8c afa70004 sw 4(r29),r7 9793 00008b90 0fffb2a0 jal _dindex 9794 00008b94 54000000 nop; not filled. 9795 00008b98 23bd0008 addi r29,r29,#8 9796 00008b9c 64210000 snei r1,r1,#0 9797 00008ba0 10200028 beqz r1,L95_LF7 9798 00008ba4 54000000 nop; not filled. 9799 00008ba8 L96_LF7: 9800 00008ba8 23bdfff8 addi r29,r29,#-8 9801 00008bac 3c070001 lhi r7,((LC4_LF7)>>16)&0xffff 9802 00008bb0 24e72758 addui r7,r7,(LC4_LF7)&0xffff 9803 00008bb4 afa70000 sw (r29),r7 9804 00008bb8 8ca10000 lw r1,(r5) 9805 00008bbc afa10004 sw 4(r29),r1 9806 00008bc0 0c002428 jal _printf 9807 00008bc4 54000000 nop; not filled. 9808 00008bc8 23bd0008 addi r29,r29,#8 9809 00008bcc L95_LF7: 9810 00008bcc 8c810004 lw r1,4(r4) 9811 00008bd0 ac440008 sw 8(r2),r4 9812 00008bd4 ac410004 sw 4(r2),r1 9813 00008bd8 8c270000 lw r7,(r1) 9814 00008bdc ac470000 sw (r2),r7 9815 00008be0 ac220000 sw (r1),r2 9816 00008be4 8c410000 lw r1,(r2) 9817 00008be8 ac220004 sw 4(r1),r2 9818 00008bec 8c810008 lw r1,8(r4) 9819 00008bf0 20210001 addi r1,r1,#1 9820 00008bf4 ac810008 sw 8(r4),r1 9821 00008bf8 0fff86d8 jal _ProcessSleep 9822 00008bfc 54000000 nop; not filled. 9823 00008c00 L93_LF7: 9824 00008c00 23bdfff8 addi r29,r29,#-8 9825 00008c04 afa60000 sw (r29),r6 9826 00008c08 0fff867c jal _SetIntrs 9827 00008c0c 54000000 nop; not filled. 9828 00008c10 23bd0008 addi r29,r29,#8 9829 00008c14 8fa20000 lw r2,0(r29) 9830 00008c18 8fa30004 lw r3,4(r29) 9831 00008c1c 8fa40008 lw r4,8(r29) 9832 00008c20 8fa5000c lw r5,12(r29) 9833 00008c24 8fa60010 lw r6,16(r29) 9834 00008c28 8fa70014 lw r7,20(r29) 9835 00008c2c 8fdffff8 lw r31,-8(r30) 9836 00008c30 001ee820 add r29,r0,r30 9837 00008c34 8fdefffc lw r30,-4(r30) 9838 00008c38 4be00000 jr r31 9839 00008c3c 54000000 nop 9840 00008c40 .endproc _SemWait 9841 00008c40 .align 2 9842 00008c40 .proc _SemHandleWait 9843 00008c40 .global _SemHandleWait 9844 00008c40 _SemHandleWait: 9845 ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. 9846 00008c40 afbefffc sw -4(r29),r30; push fp 9847 00008c44 001df020 add r30,r0,r29; fp = sp 9848 00008c48 afbffff8 sw -8(r29),r31; push ret addr 9849 00008c4c 2fbd0010 subui r29,r29,#16; alloc local storage 9850 00008c50 afa20000 sw 0(r29),r2 9851 00008c54 8fdf0000 lw r31,(r30) 9852 00008c58 73e1001f sleui r1,r31,#31 9853 00008c5c 10200058 beqz r1,L106_LF7 9854 00008c60 54000000 nop; not filled. 9855 00008c64 53e10002 slli r1,r31,#0x2 9856 00008c68 003f0820 add r1,r1,r31 9857 00008c6c 50210002 slli r1,r1,#0x2 9858 00008c70 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 9859 00008c74 244227b8 addui r2,r2,(_sems_LF7)&0xffff 9860 00008c78 0022f820 add r31,r1,r2 9861 00008c7c 8fe10010 lw r1,16(r31) 9862 00008c80 64210000 snei r1,r1,#0 9863 00008c84 10200024 beqz r1,L107_LF7 9864 00008c88 54000000 nop; not filled. 9865 00008c8c 23bdfff8 addi r29,r29,#-8 9866 00008c90 afbf0000 sw (r29),r31 9867 00008c94 0ffffd2c jal _SemWait 9868 00008c98 54000000 nop; not filled. 9869 00008c9c 20010000 addi r1,r0,#0 9870 00008ca0 23bd0008 addi r29,r29,#8 9871 00008ca4 08000014 j L105_LF7 9872 00008ca8 54000000 nop; not filled. 9873 00008cac L107_LF7: 9874 00008cac 20010001 addi r1,r0,#1 9875 00008cb0 08000008 j L105_LF7 9876 00008cb4 54000000 nop; not filled. 9877 00008cb8 L106_LF7: 9878 00008cb8 20010001 addi r1,r0,#1 9879 00008cbc L105_LF7: 9880 00008cbc 8fa20000 lw r2,0(r29) 9881 00008cc0 8fdffff8 lw r31,-8(r30) 9882 00008cc4 001ee820 add r29,r0,r30 9883 00008cc8 8fdefffc lw r30,-4(r30) 9884 00008ccc 4be00000 jr r31 9885 00008cd0 54000000 nop 9886 00008cd4 .endproc _SemHandleWait 9887 00008cd4 .data 9888 00012779 .align 2 9889 0001277c LC5_LF7: 9890 0001277c 5369676e .ascii "Signalling on sem 0x%x, count=%d.\n\000" 9890 00012780 616c6c69 9890 00012784 6e67206f 9890 00012788 6e207365 9890 0001278c 6d203078 9890 00012790 25782c20 9890 00012794 636f756e 9890 00012798 743d2564 9890 0001279c 2e0a00 9891 0001279f .align 2 9892 000127a0 LC6_LF7: 9893 000127a0 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 9893 000127a4 6e672075 9893 000127a8 70205043 9893 000127ac 42203078 9893 000127b0 25782e0a 9893 000127b4 00 9894 000127b5 .text 9895 00008cd4 .align 2 9896 00008cd4 .proc _SemSignal 9897 00008cd4 .global _SemSignal 9898 00008cd4 _SemSignal: 9899 ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. 9900 00008cd4 afbefffc sw -4(r29),r30; push fp 9901 00008cd8 001df020 add r30,r0,r29; fp = sp 9902 00008cdc afbffff8 sw -8(r29),r31; push ret addr 9903 00008ce0 2fbd0018 subui r29,r29,#24; alloc local storage 9904 00008ce4 afa20000 sw 0(r29),r2 9905 00008ce8 afa30004 sw 4(r29),r3 9906 00008cec afa40008 sw 8(r29),r4 9907 00008cf0 afa5000c sw 12(r29),r5 9908 00008cf4 8fc20000 lw r2,(r30) 9909 00008cf8 23bdfff8 addi r29,r29,#-8 9910 00008cfc 2005000f addi r5,r0,#15 9911 00008d00 afa50000 sw (r29),r5 9912 00008d04 0fff8580 jal _SetIntrs 9913 00008d08 54000000 nop; not filled. 9914 00008d0c 00012020 add r4,r0,r1 9915 00008d10 23bd0008 addi r29,r29,#8 9916 00008d14 23bdfff8 addi r29,r29,#-8 9917 00008d18 3c030000 lhi r3,((_debugstr)>>16)&0xffff 9918 00008d1c 2463fd60 addui r3,r3,(_debugstr)&0xffff 9919 00008d20 afa30000 sw (r29),r3 9920 00008d24 20050073 addi r5,r0,#115 9921 00008d28 afa50004 sw 4(r29),r5 9922 00008d2c 0fffb104 jal _dindex 9923 00008d30 54000000 nop; not filled. 9924 00008d34 23bd0008 addi r29,r29,#8 9925 00008d38 64210000 snei r1,r1,#0 9926 00008d3c 1420002c bnez r1,L113_LF7 9927 00008d40 54000000 nop; not filled. 9928 00008d44 23bdfff8 addi r29,r29,#-8 9929 00008d48 afa30000 sw (r29),r3 9930 00008d4c 2005002b addi r5,r0,#43 9931 00008d50 afa50004 sw 4(r29),r5 9932 00008d54 0fffb0dc jal _dindex 9933 00008d58 54000000 nop; not filled. 9934 00008d5c 23bd0008 addi r29,r29,#8 9935 00008d60 64210000 snei r1,r1,#0 9936 00008d64 1020002c beqz r1,L112_LF7 9937 00008d68 54000000 nop; not filled. 9938 00008d6c L113_LF7: 9939 00008d6c 23bdfff0 addi r29,r29,#-16 9940 00008d70 3c050001 lhi r5,((LC5_LF7)>>16)&0xffff 9941 00008d74 24a5277c addui r5,r5,(LC5_LF7)&0xffff 9942 00008d78 afa50000 sw (r29),r5 9943 00008d7c afa20004 sw 4(r29),r2 9944 00008d80 8c45000c lw r5,12(r2) 9945 00008d84 afa50008 sw 8(r29),r5 9946 00008d88 0c002260 jal _printf 9947 00008d8c 54000000 nop; not filled. 9948 00008d90 23bd0010 addi r29,r29,#16 9949 00008d94 L112_LF7: 9950 00008d94 8c41000c lw r1,12(r2) 9951 00008d98 20210001 addi r1,r1,#1 9952 00008d9c ac41000c sw 12(r2),r1 9953 00008da0 70210000 slei r1,r1,#0 9954 00008da4 102000ec beqz r1,L114_LF7 9955 00008da8 54000000 nop; not filled. 9956 00008dac 8c430000 lw r3,(r2) 9957 00008db0 8c610008 lw r1,8(r3) 9958 00008db4 8c210008 lw r1,8(r1) 9959 00008db8 6c210000 sgti r1,r1,#0 9960 00008dbc 1020002c beqz r1,L117_LF7 9961 00008dc0 54000000 nop; not filled. 9962 00008dc4 8c610004 lw r1,4(r3) 9963 00008dc8 8c650000 lw r5,(r3) 9964 00008dcc ac250000 sw (r1),r5 9965 00008dd0 8c610000 lw r1,(r3) 9966 00008dd4 8c650004 lw r5,4(r3) 9967 00008dd8 ac250004 sw 4(r1),r5 9968 00008ddc 8c620008 lw r2,8(r3) 9969 00008de0 8c410008 lw r1,8(r2) 9970 00008de4 2021ffff addi r1,r1,#-1 9971 00008de8 ac410008 sw 8(r2),r1 9972 00008dec L117_LF7: 9973 00008dec 20050000 addi r5,r0,#0 9974 00008df0 ac650000 sw (r3),r5 9975 00008df4 23bdfff8 addi r29,r29,#-8 9976 00008df8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9977 00008dfc 2442fd60 addui r2,r2,(_debugstr)&0xffff 9978 00008e00 afa20000 sw (r29),r2 9979 00008e04 20050073 addi r5,r0,#115 9980 00008e08 afa50004 sw 4(r29),r5 9981 00008e0c 0fffb024 jal _dindex 9982 00008e10 54000000 nop; not filled. 9983 00008e14 23bd0008 addi r29,r29,#8 9984 00008e18 64210000 snei r1,r1,#0 9985 00008e1c 1420002c bnez r1,L119_LF7 9986 00008e20 54000000 nop; not filled. 9987 00008e24 23bdfff8 addi r29,r29,#-8 9988 00008e28 afa20000 sw (r29),r2 9989 00008e2c 2005002b addi r5,r0,#43 9990 00008e30 afa50004 sw 4(r29),r5 9991 00008e34 0fffaffc jal _dindex 9992 00008e38 54000000 nop; not filled. 9993 00008e3c 23bd0008 addi r29,r29,#8 9994 00008e40 64210000 snei r1,r1,#0 9995 00008e44 10200028 beqz r1,L118_LF7 9996 00008e48 54000000 nop; not filled. 9997 00008e4c L119_LF7: 9998 00008e4c 23bdfff8 addi r29,r29,#-8 9999 00008e50 3c050001 lhi r5,((LC6_LF7)>>16)&0xffff 10000 00008e54 24a527a0 addui r5,r5,(LC6_LF7)&0xffff 10001 00008e58 afa50000 sw (r29),r5 10002 00008e5c 8c61000c lw r1,12(r3) 10003 00008e60 afa10004 sw 4(r29),r1 10004 00008e64 0c002184 jal _printf 10005 00008e68 54000000 nop; not filled. 10006 00008e6c 23bd0008 addi r29,r29,#8 10007 00008e70 L118_LF7: 10008 00008e70 23bdfff8 addi r29,r29,#-8 10009 00008e74 8c65000c lw r5,12(r3) 10010 00008e78 afa50000 sw (r29),r5 10011 00008e7c 0fffc2f8 jal _ProcessWakeup 10012 00008e80 54000000 nop; not filled. 10013 00008e84 afa30000 sw (r29),r3 10014 00008e88 0ffff25c jal _QueueFreeLink 10015 00008e8c 54000000 nop; not filled. 10016 00008e90 23bd0008 addi r29,r29,#8 10017 00008e94 L114_LF7: 10018 00008e94 23bdfff8 addi r29,r29,#-8 10019 00008e98 afa40000 sw (r29),r4 10020 00008e9c 0fff83e8 jal _SetIntrs 10021 00008ea0 54000000 nop; not filled. 10022 00008ea4 23bd0008 addi r29,r29,#8 10023 00008ea8 8fa20000 lw r2,0(r29) 10024 00008eac 8fa30004 lw r3,4(r29) 10025 00008eb0 8fa40008 lw r4,8(r29) 10026 00008eb4 8fa5000c lw r5,12(r29) 10027 00008eb8 8fdffff8 lw r31,-8(r30) 10028 00008ebc 001ee820 add r29,r0,r30 10029 00008ec0 8fdefffc lw r30,-4(r30) 10030 00008ec4 4be00000 jr r31 10031 00008ec8 54000000 nop 10032 00008ecc .endproc _SemSignal 10033 00008ecc .align 2 10034 00008ecc .proc _SemHandleSignal 10035 00008ecc .global _SemHandleSignal 10036 00008ecc _SemHandleSignal: 10037 ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. 10038 00008ecc afbefffc sw -4(r29),r30; push fp 10039 00008ed0 001df020 add r30,r0,r29; fp = sp 10040 00008ed4 afbffff8 sw -8(r29),r31; push ret addr 10041 00008ed8 2fbd0010 subui r29,r29,#16; alloc local storage 10042 00008edc afa20000 sw 0(r29),r2 10043 00008ee0 8fdf0000 lw r31,(r30) 10044 00008ee4 73e1001f sleui r1,r31,#31 10045 00008ee8 10200058 beqz r1,L126_LF7 10046 00008eec 54000000 nop; not filled. 10047 00008ef0 53e10002 slli r1,r31,#0x2 10048 00008ef4 003f0820 add r1,r1,r31 10049 00008ef8 50210002 slli r1,r1,#0x2 10050 00008efc 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 10051 00008f00 244227b8 addui r2,r2,(_sems_LF7)&0xffff 10052 00008f04 0022f820 add r31,r1,r2 10053 00008f08 8fe10010 lw r1,16(r31) 10054 00008f0c 64210000 snei r1,r1,#0 10055 00008f10 10200024 beqz r1,L127_LF7 10056 00008f14 54000000 nop; not filled. 10057 00008f18 23bdfff8 addi r29,r29,#-8 10058 00008f1c afbf0000 sw (r29),r31 10059 00008f20 0ffffdb0 jal _SemSignal 10060 00008f24 54000000 nop; not filled. 10061 00008f28 20010000 addi r1,r0,#0 10062 00008f2c 23bd0008 addi r29,r29,#8 10063 00008f30 08000014 j L125_LF7 10064 00008f34 54000000 nop; not filled. 10065 00008f38 L127_LF7: 10066 00008f38 20010001 addi r1,r0,#1 10067 00008f3c 08000008 j L125_LF7 10068 00008f40 54000000 nop; not filled. 10069 00008f44 L126_LF7: 10070 00008f44 20010001 addi r1,r0,#1 10071 00008f48 L125_LF7: 10072 00008f48 8fa20000 lw r2,0(r29) 10073 00008f4c 8fdffff8 lw r31,-8(r30) 10074 00008f50 001ee820 add r29,r0,r30 10075 00008f54 8fdefffc lw r30,-4(r30) 10076 00008f58 4be00000 jr r31 10077 00008f5c 54000000 nop 10078 00008f60 .endproc _SemHandleSignal 10079 00008f60 .data 10080 000127b5 .align 2 10081 000127b8 _sems_LF7: 10082 000127b8 .space 640 10083 ; Compiled by GCC 10085 00012a38 .align 2 10086 00012a38 _rcsid_LF8: 10087 00012a38 3a207472 .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 10087 00012a3c 6170732e 10087 00012a40 632c7620 10087 00012a44 312e3120 10087 00012a48 32303030 10087 00012a4c 2f30392f 10087 00012a50 32302030 10087 00012a54 313a3530 10087 00012a58 3a313920 10087 00012a5c 656c6d20 10087 00012a60 45787020 10087 00012a64 656c6d20 10087 00012a68 303030 10088 00012a6b .text 10089 00008f60 .align 2 10090 00008f60 .proc _isspace 10091 00008f60 .global _isspace 10092 00008f60 _isspace: 10093 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 10094 00008f60 afbefffc sw -4(r29),r30; push fp 10095 00008f64 001df020 add r30,r0,r29; fp = sp 10096 00008f68 afbffff8 sw -8(r29),r31; push ret addr 10097 00008f6c 2fbd0010 subui r29,r29,#16; alloc local storage 10098 00008f70 afa20000 sw 0(r29),r2 10099 00008f74 83c20003 lb r2,3(r30) 10100 00008f78 201f0000 addi r31,r0,#0 10101 00008f7c 304100ff andi r1,r2,#0x00ff 10102 00008f80 60210020 seqi r1,r1,#32 10103 00008f84 14200018 bnez r1,L6_LF8 10104 00008f88 54000000 nop; not filled. 10105 00008f8c 2041fff7 addi r1,r2,#-9 10106 00008f90 302100ff andi r1,r1,#0x00ff 10107 00008f94 70210001 sleui r1,r1,#1 10108 00008f98 10200008 beqz r1,L5_LF8 10109 00008f9c 54000000 nop; not filled. 10110 00008fa0 L6_LF8: 10111 00008fa0 201f0001 addi r31,r0,#1 10112 00008fa4 L5_LF8: 10113 00008fa4 001f0820 add r1,r0,r31 10114 00008fa8 8fa20000 lw r2,0(r29) 10115 00008fac 8fdffff8 lw r31,-8(r30) 10116 00008fb0 001ee820 add r29,r0,r30 10117 00008fb4 8fdefffc lw r30,-4(r30) 10118 00008fb8 4be00000 jr r31 10119 00008fbc 54000000 nop 10120 00008fc0 .endproc _isspace 10121 00008fc0 .align 2 10122 00008fc0 .proc _isxdigit 10123 00008fc0 .global _isxdigit 10124 00008fc0 _isxdigit: 10125 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 10126 00008fc0 afbefffc sw -4(r29),r30; push fp 10127 00008fc4 001df020 add r30,r0,r29; fp = sp 10128 00008fc8 afbffff8 sw -8(r29),r31; push ret addr 10129 00008fcc 2fbd0010 subui r29,r29,#16; alloc local storage 10130 00008fd0 afa20000 sw 0(r29),r2 10131 00008fd4 83df0003 lb r31,3(r30) 10132 00008fd8 20020000 addi r2,r0,#0 10133 00008fdc 23e1ffd0 addi r1,r31,#-48 10134 00008fe0 302100ff andi r1,r1,#0x00ff 10135 00008fe4 70210009 sleui r1,r1,#9 10136 00008fe8 14200028 bnez r1,L12_LF8 10137 00008fec 54000000 nop; not filled. 10138 00008ff0 23e1ff9f addi r1,r31,#-97 10139 00008ff4 302100ff andi r1,r1,#0x00ff 10140 00008ff8 70210005 sleui r1,r1,#5 10141 00008ffc 14200014 bnez r1,L12_LF8 10142 00009000 54000000 nop; not filled. 10143 00009004 33e100ff andi r1,r31,#0x00ff 10144 00009008 64210041 snei r1,r1,#65 10145 0000900c 14200008 bnez r1,L11_LF8 10146 00009010 54000000 nop; not filled. 10147 00009014 L12_LF8: 10148 00009014 20020001 addi r2,r0,#1 10149 00009018 L11_LF8: 10150 00009018 00020820 add r1,r0,r2 10151 0000901c 8fa20000 lw r2,0(r29) 10152 00009020 8fdffff8 lw r31,-8(r30) 10153 00009024 001ee820 add r29,r0,r30 10154 00009028 8fdefffc lw r30,-4(r30) 10155 0000902c 4be00000 jr r31 10156 00009030 54000000 nop 10157 00009034 .endproc _isxdigit 10158 00009034 .align 2 10159 00009034 .proc _DisableIntrs 10160 00009034 .global _DisableIntrs 10161 00009034 _DisableIntrs: 10162 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 10163 00009034 afbefffc sw -4(r29),r30; push fp 10164 00009038 001df020 add r30,r0,r29; fp = sp 10165 0000903c afbffff8 sw -8(r29),r31; push ret addr 10166 00009040 2fbd0010 subui r29,r29,#16; alloc local storage 10167 00009044 afa20000 sw 0(r29),r2 10168 00009048 23bdfff8 addi r29,r29,#-8 10169 0000904c 2002000f addi r2,r0,#15 10170 00009050 afa20000 sw (r29),r2 10171 00009054 0fff8230 jal _SetIntrs 10172 00009058 54000000 nop; not filled. 10173 0000905c 23bd0008 addi r29,r29,#8 10174 00009060 8fa20000 lw r2,0(r29) 10175 00009064 8fdffff8 lw r31,-8(r30) 10176 00009068 001ee820 add r29,r0,r30 10177 0000906c 8fdefffc lw r30,-4(r30) 10178 00009070 4be00000 jr r31 10179 00009074 54000000 nop 10180 00009078 .endproc _DisableIntrs 10181 00009078 .align 2 10182 00009078 .proc _EnableIntrs 10183 00009078 .global _EnableIntrs 10184 00009078 _EnableIntrs: 10185 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 10186 00009078 afbefffc sw -4(r29),r30; push fp 10187 0000907c 001df020 add r30,r0,r29; fp = sp 10188 00009080 afbffff8 sw -8(r29),r31; push ret addr 10189 00009084 2fbd0010 subui r29,r29,#16; alloc local storage 10190 00009088 afa20000 sw 0(r29),r2 10191 0000908c 23bdfff8 addi r29,r29,#-8 10192 00009090 20020000 addi r2,r0,#0 10193 00009094 afa20000 sw (r29),r2 10194 00009098 0fff81ec jal _SetIntrs 10195 0000909c 54000000 nop; not filled. 10196 000090a0 23bd0008 addi r29,r29,#8 10197 000090a4 8fa20000 lw r2,0(r29) 10198 000090a8 8fdffff8 lw r31,-8(r30) 10199 000090ac 001ee820 add r29,r0,r30 10200 000090b0 8fdefffc lw r30,-4(r30) 10201 000090b4 4be00000 jr r31 10202 000090b8 54000000 nop 10203 000090bc .endproc _EnableIntrs 10204 000090bc .align 2 10205 000090bc .proc _RestoreIntrs 10206 000090bc .global _RestoreIntrs 10207 000090bc _RestoreIntrs: 10208 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 10209 000090bc afbefffc sw -4(r29),r30; push fp 10210 000090c0 001df020 add r30,r0,r29; fp = sp 10211 000090c4 afbffff8 sw -8(r29),r31; push ret addr 10212 000090c8 2fbd0010 subui r29,r29,#16; alloc local storage 10213 000090cc afa20000 sw 0(r29),r2 10214 000090d0 23bdfff8 addi r29,r29,#-8 10215 000090d4 8fc20000 lw r2,(r30) 10216 000090d8 afa20000 sw (r29),r2 10217 000090dc 0fff81a8 jal _SetIntrs 10218 000090e0 54000000 nop; not filled. 10219 000090e4 23bd0008 addi r29,r29,#8 10220 000090e8 8fa20000 lw r2,0(r29) 10221 000090ec 8fdffff8 lw r31,-8(r30) 10222 000090f0 001ee820 add r29,r0,r30 10223 000090f4 8fdefffc lw r30,-4(r30) 10224 000090f8 4be00000 jr r31 10225 000090fc 54000000 nop 10226 00009100 .endproc _RestoreIntrs 10227 00009100 .align 2 10228 00009100 .proc _QueueLinkInit 10229 00009100 .global _QueueLinkInit 10230 00009100 _QueueLinkInit: 10231 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 10232 00009100 afbefffc sw -4(r29),r30; push fp 10233 00009104 001df020 add r30,r0,r29; fp = sp 10234 00009108 afbffff8 sw -8(r29),r31; push ret addr 10235 0000910c 2fbd0010 subui r29,r29,#16; alloc local storage 10236 00009110 afa20000 sw 0(r29),r2 10237 00009114 8fc10000 lw r1,(r30) 10238 00009118 8fc20004 lw r2,4(r30) 10239 0000911c 201f0000 addi r31,r0,#0 10240 00009120 ac3f0000 sw (r1),r31 10241 00009124 ac22000c sw 12(r1),r2 10242 00009128 8fa20000 lw r2,0(r29) 10243 0000912c 8fdffff8 lw r31,-8(r30) 10244 00009130 001ee820 add r29,r0,r30 10245 00009134 8fdefffc lw r30,-4(r30) 10246 00009138 4be00000 jr r31 10247 0000913c 54000000 nop 10248 00009140 .endproc _QueueLinkInit 10249 00009140 .align 2 10250 00009140 .proc _QueueNext 10251 00009140 .global _QueueNext 10252 00009140 _QueueNext: 10253 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 10254 00009140 afbefffc sw -4(r29),r30; push fp 10255 00009144 001df020 add r30,r0,r29; fp = sp 10256 00009148 afbffff8 sw -8(r29),r31; push ret addr 10257 0000914c 2fbd0008 subui r29,r29,#8; alloc local storage 10258 00009150 8fc10000 lw r1,(r30) 10259 00009154 8c210000 lw r1,(r1) 10260 00009158 8fdffff8 lw r31,-8(r30) 10261 0000915c 001ee820 add r29,r0,r30 10262 00009160 8fdefffc lw r30,-4(r30) 10263 00009164 4be00000 jr r31 10264 00009168 54000000 nop 10265 0000916c .endproc _QueueNext 10266 0000916c .align 2 10267 0000916c .proc _QueuePrev 10268 0000916c .global _QueuePrev 10269 0000916c _QueuePrev: 10270 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 10271 0000916c afbefffc sw -4(r29),r30; push fp 10272 00009170 001df020 add r30,r0,r29; fp = sp 10273 00009174 afbffff8 sw -8(r29),r31; push ret addr 10274 00009178 2fbd0008 subui r29,r29,#8; alloc local storage 10275 0000917c 8fc10000 lw r1,(r30) 10276 00009180 8c210004 lw r1,4(r1) 10277 00009184 8fdffff8 lw r31,-8(r30) 10278 00009188 001ee820 add r29,r0,r30 10279 0000918c 8fdefffc lw r30,-4(r30) 10280 00009190 4be00000 jr r31 10281 00009194 54000000 nop 10282 00009198 .endproc _QueuePrev 10283 00009198 .align 2 10284 00009198 .proc _QueueFirst 10285 00009198 .global _QueueFirst 10286 00009198 _QueueFirst: 10287 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 10288 00009198 afbefffc sw -4(r29),r30; push fp 10289 0000919c 001df020 add r30,r0,r29; fp = sp 10290 000091a0 afbffff8 sw -8(r29),r31; push ret addr 10291 000091a4 2fbd0008 subui r29,r29,#8; alloc local storage 10292 000091a8 8fc10000 lw r1,(r30) 10293 000091ac 8c210000 lw r1,(r1) 10294 000091b0 8fdffff8 lw r31,-8(r30) 10295 000091b4 001ee820 add r29,r0,r30 10296 000091b8 8fdefffc lw r30,-4(r30) 10297 000091bc 4be00000 jr r31 10298 000091c0 54000000 nop 10299 000091c4 .endproc _QueueFirst 10300 000091c4 .align 2 10301 000091c4 .proc _QueueLast 10302 000091c4 .global _QueueLast 10303 000091c4 _QueueLast: 10304 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 10305 000091c4 afbefffc sw -4(r29),r30; push fp 10306 000091c8 001df020 add r30,r0,r29; fp = sp 10307 000091cc afbffff8 sw -8(r29),r31; push ret addr 10308 000091d0 2fbd0008 subui r29,r29,#8; alloc local storage 10309 000091d4 8fc10000 lw r1,(r30) 10310 000091d8 8c210004 lw r1,4(r1) 10311 000091dc 8fdffff8 lw r31,-8(r30) 10312 000091e0 001ee820 add r29,r0,r30 10313 000091e4 8fdefffc lw r30,-4(r30) 10314 000091e8 4be00000 jr r31 10315 000091ec 54000000 nop 10316 000091f0 .endproc _QueueLast 10317 000091f0 .align 2 10318 000091f0 .proc _QueueInsertAfter 10319 000091f0 .global _QueueInsertAfter 10320 000091f0 _QueueInsertAfter: 10321 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 10322 000091f0 afbefffc sw -4(r29),r30; push fp 10323 000091f4 001df020 add r30,r0,r29; fp = sp 10324 000091f8 afbffff8 sw -8(r29),r31; push ret addr 10325 000091fc 2fbd0010 subui r29,r29,#16; alloc local storage 10326 00009200 afa20000 sw 0(r29),r2 10327 00009204 afa30004 sw 4(r29),r3 10328 00009208 8fc30000 lw r3,(r30) 10329 0000920c 8fc20004 lw r2,4(r30) 10330 00009210 8fc10008 lw r1,8(r30) 10331 00009214 ac230008 sw 8(r1),r3 10332 00009218 ac220004 sw 4(r1),r2 10333 0000921c 8c5f0000 lw r31,(r2) 10334 00009220 ac3f0000 sw (r1),r31 10335 00009224 ac410000 sw (r2),r1 10336 00009228 8c220000 lw r2,(r1) 10337 0000922c ac410004 sw 4(r2),r1 10338 00009230 8c610008 lw r1,8(r3) 10339 00009234 20210001 addi r1,r1,#1 10340 00009238 ac610008 sw 8(r3),r1 10341 0000923c 8fa20000 lw r2,0(r29) 10342 00009240 8fa30004 lw r3,4(r29) 10343 00009244 8fdffff8 lw r31,-8(r30) 10344 00009248 001ee820 add r29,r0,r30 10345 0000924c 8fdefffc lw r30,-4(r30) 10346 00009250 4be00000 jr r31 10347 00009254 54000000 nop 10348 00009258 .endproc _QueueInsertAfter 10349 00009258 .align 2 10350 00009258 .proc _QueueInsertFirst 10351 00009258 .global _QueueInsertFirst 10352 00009258 _QueueInsertFirst: 10353 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 10354 00009258 afbefffc sw -4(r29),r30; push fp 10355 0000925c 001df020 add r30,r0,r29; fp = sp 10356 00009260 afbffff8 sw -8(r29),r31; push ret addr 10357 00009264 2fbd0010 subui r29,r29,#16; alloc local storage 10358 00009268 afa20000 sw 0(r29),r2 10359 0000926c afa30004 sw 4(r29),r3 10360 00009270 8fc30000 lw r3,(r30) 10361 00009274 8fc10004 lw r1,4(r30) 10362 00009278 ac230008 sw 8(r1),r3 10363 0000927c ac230004 sw 4(r1),r3 10364 00009280 8c7f0000 lw r31,(r3) 10365 00009284 ac3f0000 sw (r1),r31 10366 00009288 ac610000 sw (r3),r1 10367 0000928c 8c220000 lw r2,(r1) 10368 00009290 ac410004 sw 4(r2),r1 10369 00009294 8c610008 lw r1,8(r3) 10370 00009298 20210001 addi r1,r1,#1 10371 0000929c ac610008 sw 8(r3),r1 10372 000092a0 8fa20000 lw r2,0(r29) 10373 000092a4 8fa30004 lw r3,4(r29) 10374 000092a8 8fdffff8 lw r31,-8(r30) 10375 000092ac 001ee820 add r29,r0,r30 10376 000092b0 8fdefffc lw r30,-4(r30) 10377 000092b4 4be00000 jr r31 10378 000092b8 54000000 nop 10379 000092bc .endproc _QueueInsertFirst 10380 000092bc .align 2 10381 000092bc .proc _QueueInsertLast 10382 000092bc .global _QueueInsertLast 10383 000092bc _QueueInsertLast: 10384 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 10385 000092bc afbefffc sw -4(r29),r30; push fp 10386 000092c0 001df020 add r30,r0,r29; fp = sp 10387 000092c4 afbffff8 sw -8(r29),r31; push ret addr 10388 000092c8 2fbd0010 subui r29,r29,#16; alloc local storage 10389 000092cc afa20000 sw 0(r29),r2 10390 000092d0 afa30004 sw 4(r29),r3 10391 000092d4 8fc30000 lw r3,(r30) 10392 000092d8 8fc10004 lw r1,4(r30) 10393 000092dc 8c620004 lw r2,4(r3) 10394 000092e0 ac230008 sw 8(r1),r3 10395 000092e4 ac220004 sw 4(r1),r2 10396 000092e8 8c5f0000 lw r31,(r2) 10397 000092ec ac3f0000 sw (r1),r31 10398 000092f0 ac410000 sw (r2),r1 10399 000092f4 8c220000 lw r2,(r1) 10400 000092f8 ac410004 sw 4(r2),r1 10401 000092fc 8c610008 lw r1,8(r3) 10402 00009300 20210001 addi r1,r1,#1 10403 00009304 ac610008 sw 8(r3),r1 10404 00009308 8fa20000 lw r2,0(r29) 10405 0000930c 8fa30004 lw r3,4(r29) 10406 00009310 8fdffff8 lw r31,-8(r30) 10407 00009314 001ee820 add r29,r0,r30 10408 00009318 8fdefffc lw r30,-4(r30) 10409 0000931c 4be00000 jr r31 10410 00009320 54000000 nop 10411 00009324 .endproc _QueueInsertLast 10412 00009324 .align 2 10413 00009324 .proc _QueueRemove 10414 00009324 .global _QueueRemove 10415 00009324 _QueueRemove: 10416 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 10417 00009324 afbefffc sw -4(r29),r30; push fp 10418 00009328 001df020 add r30,r0,r29; fp = sp 10419 0000932c afbffff8 sw -8(r29),r31; push ret addr 10420 00009330 2fbd0010 subui r29,r29,#16; alloc local storage 10421 00009334 afa20000 sw 0(r29),r2 10422 00009338 afa30004 sw 4(r29),r3 10423 0000933c 8fdf0000 lw r31,(r30) 10424 00009340 8fe10008 lw r1,8(r31) 10425 00009344 8c210008 lw r1,8(r1) 10426 00009348 6c210000 sgti r1,r1,#0 10427 0000934c 1020002c beqz r1,L44_LF8 10428 00009350 54000000 nop; not filled. 10429 00009354 8fe10004 lw r1,4(r31) 10430 00009358 8fe30000 lw r3,(r31) 10431 0000935c ac230000 sw (r1),r3 10432 00009360 8fe10000 lw r1,(r31) 10433 00009364 8fe30004 lw r3,4(r31) 10434 00009368 ac230004 sw 4(r1),r3 10435 0000936c 8fe20008 lw r2,8(r31) 10436 00009370 8c410008 lw r1,8(r2) 10437 00009374 2021ffff addi r1,r1,#-1 10438 00009378 ac410008 sw 8(r2),r1 10439 0000937c L44_LF8: 10440 0000937c 20030000 addi r3,r0,#0 10441 00009380 afe30000 sw (r31),r3 10442 00009384 8fa20000 lw r2,0(r29) 10443 00009388 8fa30004 lw r3,4(r29) 10444 0000938c 8fdffff8 lw r31,-8(r30) 10445 00009390 001ee820 add r29,r0,r30 10446 00009394 8fdefffc lw r30,-4(r30) 10447 00009398 4be00000 jr r31 10448 0000939c 54000000 nop 10449 000093a0 .endproc _QueueRemove 10450 000093a0 .align 2 10451 000093a0 .proc _QueueLength 10452 000093a0 .global _QueueLength 10453 000093a0 _QueueLength: 10454 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 10455 000093a0 afbefffc sw -4(r29),r30; push fp 10456 000093a4 001df020 add r30,r0,r29; fp = sp 10457 000093a8 afbffff8 sw -8(r29),r31; push ret addr 10458 000093ac 2fbd0008 subui r29,r29,#8; alloc local storage 10459 000093b0 8fc10000 lw r1,(r30) 10460 000093b4 8c210008 lw r1,8(r1) 10461 000093b8 8fdffff8 lw r31,-8(r30) 10462 000093bc 001ee820 add r29,r0,r30 10463 000093c0 8fdefffc lw r30,-4(r30) 10464 000093c4 4be00000 jr r31 10465 000093c8 54000000 nop 10466 000093cc .endproc _QueueLength 10467 000093cc .align 2 10468 000093cc .proc _QueueEmpty 10469 000093cc .global _QueueEmpty 10470 000093cc _QueueEmpty: 10471 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 10472 000093cc afbefffc sw -4(r29),r30; push fp 10473 000093d0 001df020 add r30,r0,r29; fp = sp 10474 000093d4 afbffff8 sw -8(r29),r31; push ret addr 10475 000093d8 2fbd0008 subui r29,r29,#8; alloc local storage 10476 000093dc 8fc10000 lw r1,(r30) 10477 000093e0 8c210008 lw r1,8(r1) 10478 000093e4 60210000 seqi r1,r1,#0 10479 000093e8 8fdffff8 lw r31,-8(r30) 10480 000093ec 001ee820 add r29,r0,r30 10481 000093f0 8fdefffc lw r30,-4(r30) 10482 000093f4 4be00000 jr r31 10483 000093f8 54000000 nop 10484 000093fc .endproc _QueueEmpty 10485 000093fc .align 2 10486 000093fc .proc _TimerSet 10487 000093fc .global _TimerSet 10488 000093fc _TimerSet: 10489 ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. 10490 000093fc afbefffc sw -4(r29),r30; push fp 10491 00009400 001df020 add r30,r0,r29; fp = sp 10492 00009404 afbffff8 sw -8(r29),r31; push ret addr 10493 00009408 2fbd0008 subui r29,r29,#8; alloc local storage 10494 0000940c 3c01fff0 lhi r1,#-16 10495 00009410 24210010 addui r1,r1,#16 10496 00009414 8fdf0000 lw r31,(r30) 10497 00009418 ac3f0000 sw (r1),r31 10498 0000941c 8fdffff8 lw r31,-8(r30) 10499 00009420 001ee820 add r29,r0,r30 10500 00009424 8fdefffc lw r30,-4(r30) 10501 00009428 4be00000 jr r31 10502 0000942c 54000000 nop 10503 00009430 .endproc _TimerSet 10504 00009430 .align 2 10505 00009430 .proc _KbdModuleInit 10506 00009430 .global _KbdModuleInit 10507 00009430 _KbdModuleInit: 10508 ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. 10509 00009430 afbefffc sw -4(r29),r30; push fp 10510 00009434 001df020 add r30,r0,r29; fp = sp 10511 00009438 afbffff8 sw -8(r29),r31; push ret addr 10512 0000943c 2fbd0008 subui r29,r29,#8; alloc local storage 10513 00009440 3c01fff0 lhi r1,#-16 10514 00009444 242101c0 addui r1,r1,#448 10515 00009448 201f0001 addi r31,r0,#1 10516 0000944c ac3f0000 sw (r1),r31 10517 00009450 8fdffff8 lw r31,-8(r30) 10518 00009454 001ee820 add r29,r0,r30 10519 00009458 8fdefffc lw r30,-4(r30) 10520 0000945c 4be00000 jr r31 10521 00009460 54000000 nop 10522 00009464 .endproc _KbdModuleInit 10523 00009464 .data 10524 00012a6b .align 2 10525 00012a6c LC0_LF8: 10526 00012a6c 46617461 .ascii "Fatal: Cumulative length of all arguments > 100\n\000" 10526 00012a70 6c3a2043 10526 00012a74 756d756c 10526 00012a78 61746976 10526 00012a7c 65206c65 10526 00012a80 6e677468 10526 00012a84 206f6620 10526 00012a88 616c6c20 10526 00012a8c 61726775 10526 00012a90 6d656e74 10526 00012a94 73203e20 10526 00012a98 3130300a 10526 00012a9c 00 10527 00012a9d .text 10528 00009464 .align 2 10529 00009464 .proc _TrapProcessCreateHandler_LF8 10530 00009464 _TrapProcessCreateHandler_LF8: 10531 ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. 10532 00009464 afbefffc sw -4(r29),r30; push fp 10533 00009468 001df020 add r30,r0,r29; fp = sp 10534 0000946c afbffff8 sw -8(r29),r31; push ret addr 10535 00009470 2fbd06a0 subui r29,r29,#1696; alloc local storage 10536 00009474 afa20000 sw 0(r29),r2 10537 00009478 afa30004 sw 4(r29),r3 10538 0000947c afa40008 sw 8(r29),r4 10539 00009480 afa5000c sw 12(r29),r5 10540 00009484 afa60010 sw 16(r29),r6 10541 00009488 afa70014 sw 20(r29),r7 10542 0000948c afa80018 sw 24(r29),r8 10543 00009490 afa9001c sw 28(r29),r9 10544 00009494 afaa0020 sw 32(r29),r10 10545 00009498 afab0024 sw 36(r29),r11 10546 0000949c afac0028 sw 40(r29),r12 10547 000094a0 8fc40000 lw r4,(r30) 10548 000094a4 8fc60004 lw r6,4(r30) 10549 000094a8 23c2fbf8 addi r2,r30,#-1032 10550 000094ac 23c3fc5b addi r3,r30,#-933 10551 000094b0 L65_LF8: 10552 000094b0 200c0000 addi r12,r0,(#0x0)&0xff 10553 000094b4 a04c0000 sb (r2),r12 10554 000094b8 20420001 addi r2,r2,#1 10555 000094bc 0043082c sle r1,r2,r3 10556 000094c0 1420ffec bnez r1,L65_LF8 10557 000094c4 54000000 nop; not filled. 10558 000094c8 20050000 addi r5,r0,#0 10559 000094cc 64c10000 snei r1,r6,#0 10560 000094d0 142000a0 bnez r1,L67_LF8 10561 000094d4 54000000 nop; not filled. 10562 000094d8 23bdfff0 addi r29,r29,#-16 10563 000094dc 3c020000 lhi r2,((_currentPCB)>>16)&0xffff 10564 000094e0 2442fe28 addui r2,r2,(_currentPCB)&0xffff 10565 000094e4 8c4c0000 lw r12,(r2) 10566 000094e8 afac0000 sw (r29),r12 10567 000094ec afa40004 sw 4(r29),r4 10568 000094f0 23c1f990 addi r1,r30,#-1648 10569 000094f4 afa10008 sw 8(r29),r1 10570 000094f8 200c0200 addi r12,r0,#512 10571 000094fc afac000c sw 12(r29),r12 10572 00009500 0fffa080 jal _MemoryCopyUserToSystem 10573 00009504 54000000 nop; not filled. 10574 00009508 23bd0010 addi r29,r29,#16 10575 0000950c 23c4fb8f addi r4,r30,#-1137 10576 00009510 23c3fb90 addi r3,r30,#-1136 10577 00009514 L68_LF8: 10578 00009514 23bdfff0 addi r29,r29,#-16 10579 00009518 8c4c0000 lw r12,(r2) 10580 0000951c afac0000 sw (r29),r12 10581 00009520 8fc1f990 lw r1,-1648(r30) 10582 00009524 00250820 add r1,r1,r5 10583 00009528 afa10004 sw 4(r29),r1 10584 0000952c afa30008 sw 8(r29),r3 10585 00009530 200c0001 addi r12,r0,#1 10586 00009534 afac000c sw 12(r29),r12 10587 00009538 0fffa048 jal _MemoryCopyUserToSystem 10588 0000953c 54000000 nop; not filled. 10589 00009540 20840001 addi r4,r4,#1 10590 00009544 20630001 addi r3,r3,#1 10591 00009548 20a50001 addi r5,r5,#1 10592 0000954c 23bd0010 addi r29,r29,#16 10593 00009550 70a10063 sleui r1,r5,#99 10594 00009554 10200060 beqz r1,L73_LF8 10595 00009558 54000000 nop; not filled. 10596 0000955c 90810000 lbu r1,(r4) 10597 00009560 64210000 snei r1,r1,#0 10598 00009564 10200050 beqz r1,L73_LF8 10599 00009568 54000000 nop; not filled. 10600 0000956c 0bffffa4 j L68_LF8 10601 00009570 54000000 nop; not filled. 10602 00009574 L67_LF8: 10603 00009574 23bdfff0 addi r29,r29,#-16 10604 00009578 afa40000 sw (r29),r4 10605 0000957c 23c1f990 addi r1,r30,#-1648 10606 00009580 afa10004 sw 4(r29),r1 10607 00009584 200c0200 addi r12,r0,#512 10608 00009588 afac0008 sw 8(r29),r12 10609 0000958c 0fffac34 jal _bcopy 10610 00009590 54000000 nop; not filled. 10611 00009594 8fccf990 lw r12,-1648(r30) 10612 00009598 afac0000 sw (r29),r12 10613 0000959c 23c1fb90 addi r1,r30,#-1136 10614 000095a0 afa10004 sw 4(r29),r1 10615 000095a4 200c0064 addi r12,r0,#100 10616 000095a8 afac0008 sw 8(r29),r12 10617 000095ac 0fffa428 jal _dstrncpy 10618 000095b0 54000000 nop; not filled. 10619 000095b4 23bd0010 addi r29,r29,#16 10620 000095b8 L73_LF8: 10621 000095b8 200c0000 addi r12,r0,(#0x0)&0xff 10622 000095bc a3ccfbf3 sb -1037(r30),r12 10623 000095c0 20050000 addi r5,r0,#0 10624 000095c4 64c10000 snei r1,r6,#0 10625 000095c8 142000b0 bnez r1,L74_LF8 10626 000095cc 54000000 nop; not filled. 10627 000095d0 3c080000 lhi r8,((_currentPCB)>>16)&0xffff 10628 000095d4 2508fe28 addui r8,r8,(_currentPCB)&0xffff 10629 000095d8 23cbfbf8 addi r11,r30,#-1032 10630 000095dc 23cafbf7 addi r10,r30,#-1033 10631 000095e0 23c6fff8 addi r6,r30,#-8 10632 000095e4 23c90020 addi r9,r30,#32 10633 000095e8 L85_LF8: 10634 000095e8 8cc1f998 lw r1,-1640(r6) 10635 000095ec 64210000 snei r1,r1,#0 10636 000095f0 1020012c beqz r1,L86_LF8 10637 000095f4 54000000 nop; not filled. 10638 000095f8 20020000 addi r2,r0,#0 10639 000095fc 00063820 add r7,r0,r6 10640 00009600 00aa2020 add r4,r5,r10 10641 00009604 00ab1820 add r3,r5,r11 10642 00009608 L80_LF8: 10643 00009608 23bdfff0 addi r29,r29,#-16 10644 0000960c 8d0c0000 lw r12,(r8) 10645 00009610 afac0000 sw (r29),r12 10646 00009614 8ce1f998 lw r1,-1640(r7) 10647 00009618 00220820 add r1,r1,r2 10648 0000961c afa10004 sw 4(r29),r1 10649 00009620 afa30008 sw 8(r29),r3 10650 00009624 200c0001 addi r12,r0,#1 10651 00009628 afac000c sw 12(r29),r12 10652 0000962c 0fff9f54 jal _MemoryCopyUserToSystem 10653 00009630 54000000 nop; not filled. 10654 00009634 20840001 addi r4,r4,#1 10655 00009638 20630001 addi r3,r3,#1 10656 0000963c 20a50001 addi r5,r5,#1 10657 00009640 20420001 addi r2,r2,#1 10658 00009644 23bd0010 addi r29,r29,#16 10659 00009648 70a103ff sleui r1,r5,#1023 10660 0000964c 10200014 beqz r1,L77_LF8 10661 00009650 54000000 nop; not filled. 10662 00009654 90810000 lbu r1,(r4) 10663 00009658 64210000 snei r1,r1,#0 10664 0000965c 1420ffa8 bnez r1,L80_LF8 10665 00009660 54000000 nop; not filled. 10666 00009664 L77_LF8: 10667 00009664 20c60004 addi r6,r6,#4 10668 00009668 00c9082c sle r1,r6,r9 10669 0000966c 102000b0 beqz r1,L86_LF8 10670 00009670 54000000 nop; not filled. 10671 00009674 0bffff70 j L85_LF8 10672 00009678 54000000 nop; not filled. 10673 0000967c L74_LF8: 10674 0000967c 23c5fbf8 addi r5,r30,#-1032 10675 00009680 00053820 add r7,r0,r5 10676 00009684 23c3fff8 addi r3,r30,#-8 10677 00009688 23c60020 addi r6,r30,#32 10678 0000968c L93_LF8: 10679 0000968c 2064f998 addi r4,r3,#-1640 10680 00009690 8c820000 lw r2,(r4) 10681 00009694 64410000 snei r1,r2,#0 10682 00009698 10200084 beqz r1,L86_LF8 10683 0000969c 54000000 nop; not filled. 10684 000096a0 23bdfff8 addi r29,r29,#-8 10685 000096a4 afa20000 sw (r29),r2 10686 000096a8 0fffa518 jal _dstrlen 10687 000096ac 54000000 nop; not filled. 10688 000096b0 00a11020 add r2,r5,r1 10689 000096b4 00470822 sub r1,r2,r7 10690 000096b8 23bd0008 addi r29,r29,#8 10691 000096bc 6c210064 sgti r1,r1,#100 10692 000096c0 10200028 beqz r1,L92_LF8 10693 000096c4 54000000 nop; not filled. 10694 000096c8 23bdfff8 addi r29,r29,#-8 10695 000096cc 3c0c0001 lhi r12,((LC0_LF8)>>16)&0xffff 10696 000096d0 258c2a6c addui r12,r12,(LC0_LF8)&0xffff 10697 000096d4 afac0000 sw (r29),r12 10698 000096d8 0c001910 jal _printf 10699 000096dc 54000000 nop; not filled. 10700 000096e0 0c0018f0 jal _exitsim 10701 000096e4 54000000 nop; not filled. 10702 000096e8 23bd0008 addi r29,r29,#8 10703 000096ec L92_LF8: 10704 000096ec 23bdfff8 addi r29,r29,#-8 10705 000096f0 afa50000 sw (r29),r5 10706 000096f4 8c810000 lw r1,(r4) 10707 000096f8 afa10004 sw 4(r29),r1 10708 000096fc 0fffa274 jal _dstrcpy 10709 00009700 54000000 nop; not filled. 10710 00009704 200c0000 addi r12,r0,(#0x0)&0xff 10711 00009708 a04c0000 sb (r2),r12 10712 0000970c 23bd0008 addi r29,r29,#8 10713 00009710 20630004 addi r3,r3,#4 10714 00009714 0066082c sle r1,r3,r6 10715 00009718 1420ff70 bnez r1,L93_LF8 10716 0000971c 54000000 nop; not filled. 10717 00009720 L86_LF8: 10718 00009720 200c0000 addi r12,r0,(#0x0)&0xff 10719 00009724 a3ccfff7 sb -9(r30),r12 10720 00009728 23bdfff0 addi r29,r29,#-16 10721 0000972c 200c0000 addi r12,r0,#0 10722 00009730 afac0000 sw (r29),r12 10723 00009734 23c1fbf8 addi r1,r30,#-1032 10724 00009738 afa10004 sw 4(r29),r1 10725 0000973c 23c1fb90 addi r1,r30,#-1136 10726 00009740 afa10008 sw 8(r29),r1 10727 00009744 200c0001 addi r12,r0,#1 10728 00009748 afac000c sw 12(r29),r12 10729 0000974c 0fffbe7c jal _ProcessFork 10730 00009750 54000000 nop; not filled. 10731 00009754 23bd0010 addi r29,r29,#16 10732 00009758 8fa20000 lw r2,0(r29) 10733 0000975c 8fa30004 lw r3,4(r29) 10734 00009760 8fa40008 lw r4,8(r29) 10735 00009764 8fa5000c lw r5,12(r29) 10736 00009768 8fa60010 lw r6,16(r29) 10737 0000976c 8fa70014 lw r7,20(r29) 10738 00009770 8fa80018 lw r8,24(r29) 10739 00009774 8fa9001c lw r9,28(r29) 10740 00009778 8faa0020 lw r10,32(r29) 10741 0000977c 8fab0024 lw r11,36(r29) 10742 00009780 8fac0028 lw r12,40(r29) 10743 00009784 8fdffff8 lw r31,-8(r30) 10744 00009788 001ee820 add r29,r0,r30 10745 0000978c 8fdefffc lw r30,-4(r30) 10746 00009790 4be00000 jr r31 10747 00009794 54000000 nop 10748 00009798 .endproc _TrapProcessCreateHandler_LF8 10749 00009798 .align 2 10750 00009798 .proc _TrapPrintfHandler_LF8 10751 00009798 _TrapPrintfHandler_LF8: 10752 ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. 10753 00009798 afbefffc sw -4(r29),r30; push fp 10754 0000979c 001df020 add r30,r0,r29; fp = sp 10755 000097a0 afbffff8 sw -8(r29),r31; push ret addr 10756 000097a4 2fbd00d0 subui r29,r29,#208; alloc local storage 10757 000097a8 afa20000 sw 0(r29),r2 10758 000097ac afa30004 sw 4(r29),r3 10759 000097b0 afa40008 sw 8(r29),r4 10760 000097b4 afa5000c sw 12(r29),r5 10761 000097b8 afa60010 sw 16(r29),r6 10762 000097bc afa70014 sw 20(r29),r7 10763 000097c0 afa80018 sw 24(r29),r8 10764 000097c4 afa9001c sw 28(r29),r9 10765 000097c8 afaa0020 sw 32(r29),r10 10766 000097cc afab0024 sw 36(r29),r11 10767 000097d0 8fc40000 lw r4,(r30) 10768 000097d4 8fc10004 lw r1,4(r30) 10769 000097d8 20080000 addi r8,r0,#0 10770 000097dc 00081820 add r3,r0,r8 10771 000097e0 64210000 snei r1,r1,#0 10772 000097e4 142000a0 bnez r1,L95_LF8 10773 000097e8 54000000 nop; not filled. 10774 000097ec 23bdfff0 addi r29,r29,#-16 10775 000097f0 3c020000 lhi r2,((_currentPCB)>>16)&0xffff 10776 000097f4 2442fe28 addui r2,r2,(_currentPCB)&0xffff 10777 000097f8 8c4b0000 lw r11,(r2) 10778 000097fc afab0000 sw (r29),r11 10779 00009800 afa40004 sw 4(r29),r4 10780 00009804 23c1ff58 addi r1,r30,#-168 10781 00009808 afa10008 sw 8(r29),r1 10782 0000980c 200b0028 addi r11,r0,#40 10783 00009810 afab000c sw 12(r29),r11 10784 00009814 0fff9d6c jal _MemoryCopyUserToSystem 10785 00009818 54000000 nop; not filled. 10786 0000981c 23bd0010 addi r29,r29,#16 10787 00009820 23c5ffa7 addi r5,r30,#-89 10788 00009824 23c4ffa8 addi r4,r30,#-88 10789 00009828 L96_LF8: 10790 00009828 23bdfff0 addi r29,r29,#-16 10791 0000982c 8c4b0000 lw r11,(r2) 10792 00009830 afab0000 sw (r29),r11 10793 00009834 8fc1ff58 lw r1,-168(r30) 10794 00009838 00230820 add r1,r1,r3 10795 0000983c afa10004 sw 4(r29),r1 10796 00009840 afa40008 sw 8(r29),r4 10797 00009844 200b0001 addi r11,r0,#1 10798 00009848 afab000c sw 12(r29),r11 10799 0000984c 0fff9d34 jal _MemoryCopyUserToSystem 10800 00009850 54000000 nop; not filled. 10801 00009854 20a50001 addi r5,r5,#1 10802 00009858 20840001 addi r4,r4,#1 10803 0000985c 20630001 addi r3,r3,#1 10804 00009860 23bd0010 addi r29,r29,#16 10805 00009864 7061004f sleui r1,r3,#79 10806 00009868 10200060 beqz r1,L101_LF8 10807 0000986c 54000000 nop; not filled. 10808 00009870 90a10000 lbu r1,(r5) 10809 00009874 64210000 snei r1,r1,#0 10810 00009878 10200050 beqz r1,L101_LF8 10811 0000987c 54000000 nop; not filled. 10812 00009880 0bffffa4 j L96_LF8 10813 00009884 54000000 nop; not filled. 10814 00009888 L95_LF8: 10815 00009888 23bdfff0 addi r29,r29,#-16 10816 0000988c afa40000 sw (r29),r4 10817 00009890 23c1ff58 addi r1,r30,#-168 10818 00009894 afa10004 sw 4(r29),r1 10819 00009898 200b0028 addi r11,r0,#40 10820 0000989c afab0008 sw 8(r29),r11 10821 000098a0 0fffa920 jal _bcopy 10822 000098a4 54000000 nop; not filled. 10823 000098a8 8fcbff58 lw r11,-168(r30) 10824 000098ac afab0000 sw (r29),r11 10825 000098b0 23c1ffa8 addi r1,r30,#-88 10826 000098b4 afa10004 sw 4(r29),r1 10827 000098b8 200b0050 addi r11,r0,#80 10828 000098bc afab0008 sw 8(r29),r11 10829 000098c0 0fffa114 jal _dstrncpy 10830 000098c4 54000000 nop; not filled. 10831 000098c8 23bd0010 addi r29,r29,#16 10832 000098cc L101_LF8: 10833 000098cc 200b0000 addi r11,r0,(#0x0)&0xff 10834 000098d0 a3cbfff7 sb -9(r30),r11 10835 000098d4 23c3ffa8 addi r3,r30,#-88 10836 000098d8 80620000 lb r2,(r3) 10837 000098dc 304100ff andi r1,r2,#0x00ff 10838 000098e0 64210000 snei r1,r1,#0 10839 000098e4 102000f0 beqz r1,L103_LF8 10840 000098e8 54000000 nop; not filled. 10841 000098ec 23cafff8 addi r10,r30,#-8 10842 000098f0 23c9ff5c addi r9,r30,#-164 10843 000098f4 51010002 slli r1,r8,#0x2 10844 000098f8 00293820 add r7,r1,r9 10845 000098fc 002a3020 add r6,r1,r10 10846 00009900 L105_LF8: 10847 00009900 304100ff andi r1,r2,#0x00ff 10848 00009904 60210025 seqi r1,r1,#37 10849 00009908 102000b4 beqz r1,L104_LF8 10850 0000990c 54000000 nop; not filled. 10851 00009910 90610001 lbu r1,1(r3) 10852 00009914 60210025 seqi r1,r1,#37 10853 00009918 10200010 beqz r1,L107_LF8 10854 0000991c 54000000 nop; not filled. 10855 00009920 20630001 addi r3,r3,#1 10856 00009924 08000098 j L104_LF8 10857 00009928 54000000 nop; not filled. 10858 0000992c L107_LF8: 10859 0000992c 8ceb0000 lw r11,(r7) 10860 00009930 accbff88 sw -120(r6),r11 10861 00009934 51010002 slli r1,r8,#0x2 10862 00009938 00292820 add r5,r1,r9 10863 0000993c 002a2020 add r4,r1,r10 10864 00009940 L110_LF8: 10865 00009940 20630001 addi r3,r3,#1 10866 00009944 807f0000 lb r31,(r3) 10867 00009948 33e200ff andi r2,r31,#0x00ff 10868 0000994c 60410073 seqi r1,r2,#115 10869 00009950 14200060 bnez r1,L109_LF8 10870 00009954 54000000 nop; not filled. 10871 00009958 6041006c seqi r1,r2,#108 10872 0000995c 1420ffe0 bnez r1,L110_LF8 10873 00009960 54000000 nop; not filled. 10874 00009964 23e1ff9a addi r1,r31,#-102 10875 00009968 302100ff andi r1,r1,#0x00ff 10876 0000996c 70210001 sleui r1,r1,#1 10877 00009970 14200010 bnez r1,L116_LF8 10878 00009974 54000000 nop; not filled. 10879 00009978 60410065 seqi r1,r2,#101 10880 0000997c 10200020 beqz r1,L115_LF8 10881 00009980 54000000 nop; not filled. 10882 00009984 L116_LF8: 10883 00009984 20e70004 addi r7,r7,#4 10884 00009988 20c60004 addi r6,r6,#4 10885 0000998c 21080001 addi r8,r8,#1 10886 00009990 8ca50004 lw r5,4(r5) 10887 00009994 ac85ff8c sw -116(r4),r5 10888 00009998 08000018 j L109_LF8 10889 0000999c 54000000 nop; not filled. 10890 000099a0 L115_LF8: 10891 000099a0 23e1ff9f addi r1,r31,#-97 10892 000099a4 302100ff andi r1,r1,#0x00ff 10893 000099a8 70210019 sleui r1,r1,#25 10894 000099ac 1020ff90 beqz r1,L110_LF8 10895 000099b0 54000000 nop; not filled. 10896 000099b4 L109_LF8: 10897 000099b4 20e70004 addi r7,r7,#4 10898 000099b8 20c60004 addi r6,r6,#4 10899 000099bc 21080001 addi r8,r8,#1 10900 000099c0 L104_LF8: 10901 000099c0 20630001 addi r3,r3,#1 10902 000099c4 80620000 lb r2,(r3) 10903 000099c8 304100ff andi r1,r2,#0x00ff 10904 000099cc 64210000 snei r1,r1,#0 10905 000099d0 1420ff2c bnez r1,L105_LF8 10906 000099d4 54000000 nop; not filled. 10907 000099d8 L103_LF8: 10908 000099d8 23bdffd8 addi r29,r29,#-40 10909 000099dc 23c1ffa8 addi r1,r30,#-88 10910 000099e0 afa10000 sw (r29),r1 10911 000099e4 8fc1ff80 lw r1,-128(r30) 10912 000099e8 afa10004 sw 4(r29),r1 10913 000099ec 8fcbff84 lw r11,-124(r30) 10914 000099f0 afab0008 sw 8(r29),r11 10915 000099f4 8fcbff88 lw r11,-120(r30) 10916 000099f8 afab000c sw 12(r29),r11 10917 000099fc 8fcbff8c lw r11,-116(r30) 10918 00009a00 afab0010 sw 16(r29),r11 10919 00009a04 8fcbff90 lw r11,-112(r30) 10920 00009a08 afab0014 sw 20(r29),r11 10921 00009a0c 8fcbff94 lw r11,-108(r30) 10922 00009a10 afab0018 sw 24(r29),r11 10923 00009a14 8fcbff98 lw r11,-104(r30) 10924 00009a18 afab001c sw 28(r29),r11 10925 00009a1c 8fcbff9c lw r11,-100(r30) 10926 00009a20 afab0020 sw 32(r29),r11 10927 00009a24 0c0015c4 jal _printf 10928 00009a28 54000000 nop; not filled. 10929 00009a2c 23bd0028 addi r29,r29,#40 10930 00009a30 8fa20000 lw r2,0(r29) 10931 00009a34 8fa30004 lw r3,4(r29) 10932 00009a38 8fa40008 lw r4,8(r29) 10933 00009a3c 8fa5000c lw r5,12(r29) 10934 00009a40 8fa60010 lw r6,16(r29) 10935 00009a44 8fa70014 lw r7,20(r29) 10936 00009a48 8fa80018 lw r8,24(r29) 10937 00009a4c 8fa9001c lw r9,28(r29) 10938 00009a50 8faa0020 lw r10,32(r29) 10939 00009a54 8fab0024 lw r11,36(r29) 10940 00009a58 8fdffff8 lw r31,-8(r30) 10941 00009a5c 001ee820 add r29,r0,r30 10942 00009a60 8fdefffc lw r30,-4(r30) 10943 00009a64 4be00000 jr r31 10944 00009a68 54000000 nop 10945 00009a6c .endproc _TrapPrintfHandler_LF8 10946 00009a6c .data 10947 00012a9d .align 2 10948 00012aa0 LC1_LF8: 10949 00012aa0 496e7465 .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" 10949 00012aa4 72727570 10949 00012aa8 74206361 10949 00012aac 7573653d 10949 00012ab0 30782578 10949 00012ab4 20696172 10949 00012ab8 3d307825 10949 00012abc 78206973 10949 00012ac0 723d3078 10949 00012ac4 25782061 10949 00012ac8 7267733d 10949 00012acc 30782530 10949 00012ad0 38782e0a 10949 00012ad4 00 10950 00012ad5 .align 2 10951 00012ad8 LC2_LF8: 10952 00012ad8 476f7420 .ascii "Got a context switch trap!\n\000" 10952 00012adc 6120636f 10952 00012ae0 6e746578 10952 00012ae4 74207377 10952 00012ae8 69746368 10952 00012aec 20747261 10952 00012af0 70210a00 10953 00012af4 .align 2 10954 00012af4 LC3_LF8: 10955 00012af4 476f7420 .ascii "Got an exit trap!\n\000" 10955 00012af8 616e2065 10955 00012afc 78697420 10955 00012b00 74726170 10955 00012b04 210a00 10956 00012b07 .align 2 10957 00012b08 LC4_LF8: 10958 00012b08 476f7420 .ascii "Got a fork trap!\n\000" 10958 00012b0c 6120666f 10958 00012b10 726b2074 10958 00012b14 72617021 10958 00012b18 0a00 10959 00012b1a .align 2 10960 00012b1c LC5_LF8: 10961 00012b1c 476f7420 .ascii "Got a process sleep trap!\n\000" 10961 00012b20 61207072 10961 00012b24 6f636573 10961 00012b28 7320736c 10961 00012b2c 65657020 10961 00012b30 74726170 10961 00012b34 210a00 10962 00012b37 .align 2 10963 00012b38 LC6_LF8: 10964 00012b38 476f7420 .ascii "Got a printf trap!\n\000" 10964 00012b3c 61207072 10964 00012b40 696e7466 10964 00012b44 20747261 10964 00012b48 70210a00 10965 00012b4c .align 2 10966 00012b4c LC7_LF8: 10967 00012b4c 476f7420 .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" 10967 00012b50 616e206f 10967 00012b54 70656e20 10967 00012b58 77697468 10967 00012b5c 20706172 10967 00012b60 616d6574 10967 00012b64 65727320 10967 00012b68 28272573 10967 00012b6c 272c3078 10967 00012b70 2578290a 10967 00012b74 00 10968 00012b75 .align 2 10969 00012b78 LC8_LF8: 10970 00012b78 476f7420 .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" 10970 00012b7c 616e2075 10970 00012b80 6e726563 10970 00012b84 6f676e69 10970 00012b88 7a656420 10970 00012b8c 74726170 10970 00012b90 20283078 10970 00012b94 25782920 10970 00012b98 2d206578 10970 00012b9c 6974696e 10970 00012ba0 67210a00 10971 00012ba4 .align 2 10972 00012ba4 LC9_LF8: 10973 00012ba4 476f7420 .ascii "Got a timer interrupt!\n\000" 10973 00012ba8 61207469 10973 00012bac 6d657220 10973 00012bb0 696e7465 10973 00012bb4 72727570 10973 00012bb8 74210a00 10974 00012bbc .align 2 10975 00012bbc LC10_LF8: 10976 00012bbc 476f7420 .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" 10976 00012bc0 61206b65 10976 00012bc4 79626f61 10976 00012bc8 72642069 10976 00012bcc 6e746572 10976 00012bd0 72757074 10976 00012bd4 20286368 10976 00012bd8 61723d30 10976 00012bdc 78257828 10976 00012be0 2563292c 10976 00012be4 206e6c65 10976 00012be8 66743d25 10976 00012bec 6429210a 10976 00012bf0 00 10977 00012bf1 .align 2 10978 00012bf4 LC11_LF8: 10979 00012bf4 45786974 .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" 10979 00012bf8 696e6720 10979 00012bfc 61667465 10979 00012c00 7220696c 10979 00012c04 6c656761 10979 00012c08 6c20696e 10979 00012c0c 73747275 10979 00012c10 6374696f 10979 00012c14 6e206174 10979 00012c18 20696172 10979 00012c1c 3d307825 10979 00012c20 782c2069 10979 00012c24 73723d30 10979 00012c28 7825780a 10979 00012c2c 00 10980 00012c2d .align 2 10981 00012c30 LC12_LF8: 10982 00012c30 476f7420 .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" 10982 00012c34 616e2075 10982 00012c38 6e726563 10982 00012c3c 6f676e69 10982 00012c40 7a656420 10982 00012c44 73797374 10982 00012c48 656d2069 10982 00012c4c 6e746572 10982 00012c50 72757074 10982 00012c54 20283078 10982 00012c58 25782920 10982 00012c5c 2d206578 10982 00012c60 6974696e 10982 00012c64 67210a00 10983 00012c68 .align 2 10984 00012c68 LC13_LF8: 10985 00012c68 41626f75 .ascii "About to return from dointerrupt.\n\000" 10985 00012c6c 7420746f 10985 00012c70 20726574 10985 00012c74 75726e20 10985 00012c78 66726f6d 10985 00012c7c 20646f69 10985 00012c80 6e746572 10985 00012c84 72757074 10985 00012c88 2e0a00 10986 00012c8b .text 10987 00009a6c .align 2 10988 00009a6c .proc _dointerrupt 10989 00009a6c .global _dointerrupt 10990 00009a6c _dointerrupt: 10991 ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. 10992 00009a6c afbefffc sw -4(r29),r30; push fp 10993 00009a70 001df020 add r30,r0,r29; fp = sp 10994 00009a74 afbffff8 sw -8(r29),r31; push ret addr 10995 00009a78 2fbd0058 subui r29,r29,#88; alloc local storage 10996 00009a7c afa20000 sw 0(r29),r2 10997 00009a80 afa30004 sw 4(r29),r3 10998 00009a84 afa40008 sw 8(r29),r4 10999 00009a88 afa5000c sw 12(r29),r5 11000 00009a8c afa60010 sw 16(r29),r6 11001 00009a90 afa70014 sw 20(r29),r7 11002 00009a94 8fc20000 lw r2,(r30) 11003 00009a98 8fc60004 lw r6,4(r30) 11004 00009a9c 8fc50008 lw r5,8(r30) 11005 00009aa0 8fc3000c lw r3,12(r30) 11006 00009aa4 23bdfff8 addi r29,r29,#-8 11007 00009aa8 3c040000 lhi r4,((_debugstr)>>16)&0xffff 11008 00009aac 2484fd60 addui r4,r4,(_debugstr)&0xffff 11009 00009ab0 afa40000 sw (r29),r4 11010 00009ab4 20070074 addi r7,r0,#116 11011 00009ab8 afa70004 sw 4(r29),r7 11012 00009abc 0fffa374 jal _dindex 11013 00009ac0 54000000 nop; not filled. 11014 00009ac4 23bd0008 addi r29,r29,#8 11015 00009ac8 64210000 snei r1,r1,#0 11016 00009acc 1420002c bnez r1,L123_LF8 11017 00009ad0 54000000 nop; not filled. 11018 00009ad4 23bdfff8 addi r29,r29,#-8 11019 00009ad8 afa40000 sw (r29),r4 11020 00009adc 2007002b addi r7,r0,#43 11021 00009ae0 afa70004 sw 4(r29),r7 11022 00009ae4 0fffa34c jal _dindex 11023 00009ae8 54000000 nop; not filled. 11024 00009aec 23bd0008 addi r29,r29,#8 11025 00009af0 64210000 snei r1,r1,#0 11026 00009af4 10200030 beqz r1,L122_LF8 11027 00009af8 54000000 nop; not filled. 11028 00009afc L123_LF8: 11029 00009afc 23bdffe8 addi r29,r29,#-24 11030 00009b00 3c070001 lhi r7,((LC1_LF8)>>16)&0xffff 11031 00009b04 24e72aa0 addui r7,r7,(LC1_LF8)&0xffff 11032 00009b08 afa70000 sw (r29),r7 11033 00009b0c afa20004 sw 4(r29),r2 11034 00009b10 afa60008 sw 8(r29),r6 11035 00009b14 afa5000c sw 12(r29),r5 11036 00009b18 afa30010 sw 16(r29),r3 11037 00009b1c 0c0014cc jal _printf 11038 00009b20 54000000 nop; not filled. 11039 00009b24 23bd0018 addi r29,r29,#24 11040 00009b28 L122_LF8: 11041 00009b28 3c070800 lhi r7,#2048 11042 00009b2c 24e70000 addui r7,r7,#0 11043 00009b30 00470824 and r1,r2,r7 11044 00009b34 64210000 snei r1,r1,#0 11045 00009b38 10200924 beqz r1,L124_LF8 11046 00009b3c 54000000 nop; not filled. 11047 00009b40 3c07f7ff lhi r7,#-2049 11048 00009b44 24e7ffff addui r7,r7,#65535 11049 00009b48 00471024 and r2,r2,r7 11050 00009b4c 60410400 seqi r1,r2,#1024 11051 00009b50 14200110 bnez r1,L126_LF8 11052 00009b54 54000000 nop; not filled. 11053 00009b58 6c410400 sgtui r1,r2,#1024 11054 00009b5c 14200074 bnez r1,L177_LF8 11055 00009b60 54000000 nop; not filled. 11056 00009b64 60410212 seqi r1,r2,#530 11057 00009b68 14200638 bnez r1,L158_LF8 11058 00009b6c 54000000 nop; not filled. 11059 00009b70 6c410212 sgtui r1,r2,#530 11060 00009b74 14200030 bnez r1,L178_LF8 11061 00009b78 54000000 nop; not filled. 11062 00009b7c 60410210 seqi r1,r2,#528 11063 00009b80 1420050c bnez r1,L149_LF8 11064 00009b84 54000000 nop; not filled. 11065 00009b88 6c410210 sgtui r1,r2,#528 11066 00009b8c 1420055c bnez r1,L152_LF8 11067 00009b90 54000000 nop; not filled. 11068 00009b94 60410201 seqi r1,r2,#513 11069 00009b98 102008b0 beqz r1,L175_LF8 11070 00009b9c 54000000 nop; not filled. 11071 00009ba0 080002dc j L138_LF8 11072 00009ba4 54000000 nop; not filled. 11073 00009ba8 L178_LF8: 11074 00009ba8 60410214 seqi r1,r2,#532 11075 00009bac 14200484 bnez r1,L146_LF8 11076 00009bb0 54000000 nop; not filled. 11077 00009bb4 68410214 sltui r1,r2,#532 11078 00009bb8 14200358 bnez r1,L141_LF8 11079 00009bbc 54000000 nop; not filled. 11080 00009bc0 60410300 seqi r1,r2,#768 11081 00009bc4 10200884 beqz r1,L175_LF8 11082 00009bc8 54000000 nop; not filled. 11083 00009bcc 08000100 j L129_LF8 11084 00009bd0 54000000 nop; not filled. 11085 00009bd4 L177_LF8: 11086 00009bd4 60410432 seqi r1,r2,#1074 11087 00009bd8 14200658 bnez r1,L162_LF8 11088 00009bdc 54000000 nop; not filled. 11089 00009be0 6c410432 sgtui r1,r2,#1074 11090 00009be4 14200030 bnez r1,L179_LF8 11091 00009be8 54000000 nop; not filled. 11092 00009bec 60410430 seqi r1,r2,#1072 11093 00009bf0 14200174 bnez r1,L132_LF8 11094 00009bf4 54000000 nop; not filled. 11095 00009bf8 6c410430 sgtui r1,r2,#1072 11096 00009bfc 14200600 bnez r1,L161_LF8 11097 00009c00 54000000 nop; not filled. 11098 00009c04 60410410 seqi r1,r2,#1040 11099 00009c08 10200840 beqz r1,L175_LF8 11100 00009c0c 54000000 nop; not filled. 11101 00009c10 080001cc j L135_LF8 11102 00009c14 54000000 nop; not filled. 11103 00009c18 L179_LF8: 11104 00009c18 60410451 seqi r1,r2,#1105 11105 00009c1c 142006dc bnez r1,L167_LF8 11106 00009c20 54000000 nop; not filled. 11107 00009c24 6c410451 sgtui r1,r2,#1105 11108 00009c28 14200018 bnez r1,L180_LF8 11109 00009c2c 54000000 nop; not filled. 11110 00009c30 60410450 seqi r1,r2,#1104 11111 00009c34 10200814 beqz r1,L175_LF8 11112 00009c38 54000000 nop; not filled. 11113 00009c3c 08000614 j L163_LF8 11114 00009c40 54000000 nop; not filled. 11115 00009c44 L180_LF8: 11116 00009c44 60410452 seqi r1,r2,#1106 11117 00009c48 14200758 bnez r1,L171_LF8 11118 00009c4c 54000000 nop; not filled. 11119 00009c50 60410580 seqi r1,r2,#1408 11120 00009c54 102007f4 beqz r1,L175_LF8 11121 00009c58 54000000 nop; not filled. 11122 00009c5c 080004e8 j L155_LF8 11123 00009c60 54000000 nop; not filled. 11124 00009c64 L126_LF8: 11125 00009c64 23bdfff8 addi r29,r29,#-8 11126 00009c68 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11127 00009c6c 2442fd60 addui r2,r2,(_debugstr)&0xffff 11128 00009c70 afa20000 sw (r29),r2 11129 00009c74 20070074 addi r7,r0,#116 11130 00009c78 afa70004 sw 4(r29),r7 11131 00009c7c 0fffa1b4 jal _dindex 11132 00009c80 54000000 nop; not filled. 11133 00009c84 23bd0008 addi r29,r29,#8 11134 00009c88 64210000 snei r1,r1,#0 11135 00009c8c 1420002c bnez r1,L128_LF8 11136 00009c90 54000000 nop; not filled. 11137 00009c94 23bdfff8 addi r29,r29,#-8 11138 00009c98 afa20000 sw (r29),r2 11139 00009c9c 2007002b addi r7,r0,#43 11140 00009ca0 afa70004 sw 4(r29),r7 11141 00009ca4 0fffa18c jal _dindex 11142 00009ca8 54000000 nop; not filled. 11143 00009cac 23bd0008 addi r29,r29,#8 11144 00009cb0 64210000 snei r1,r1,#0 11145 00009cb4 10200894 beqz r1,L184_LF8 11146 00009cb8 54000000 nop; not filled. 11147 00009cbc L128_LF8: 11148 00009cbc 23bdfff8 addi r29,r29,#-8 11149 00009cc0 3c070001 lhi r7,((LC2_LF8)>>16)&0xffff 11150 00009cc4 24e72ad8 addui r7,r7,(LC2_LF8)&0xffff 11151 00009cc8 08000870 j L206_LF8 11152 00009ccc 54000000 nop; not filled. 11153 00009cd0 L129_LF8: 11154 00009cd0 23bdfff8 addi r29,r29,#-8 11155 00009cd4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11156 00009cd8 2442fd60 addui r2,r2,(_debugstr)&0xffff 11157 00009cdc afa20000 sw (r29),r2 11158 00009ce0 20070074 addi r7,r0,#116 11159 00009ce4 afa70004 sw 4(r29),r7 11160 00009ce8 0fffa148 jal _dindex 11161 00009cec 54000000 nop; not filled. 11162 00009cf0 23bd0008 addi r29,r29,#8 11163 00009cf4 64210000 snei r1,r1,#0 11164 00009cf8 1420002c bnez r1,L131_LF8 11165 00009cfc 54000000 nop; not filled. 11166 00009d00 23bdfff8 addi r29,r29,#-8 11167 00009d04 afa20000 sw (r29),r2 11168 00009d08 2007002b addi r7,r0,#43 11169 00009d0c afa70004 sw 4(r29),r7 11170 00009d10 0fffa120 jal _dindex 11171 00009d14 54000000 nop; not filled. 11172 00009d18 23bd0008 addi r29,r29,#8 11173 00009d1c 64210000 snei r1,r1,#0 11174 00009d20 10200020 beqz r1,L130_LF8 11175 00009d24 54000000 nop; not filled. 11176 00009d28 L131_LF8: 11177 00009d28 23bdfff8 addi r29,r29,#-8 11178 00009d2c 3c070001 lhi r7,((LC3_LF8)>>16)&0xffff 11179 00009d30 24e72af4 addui r7,r7,(LC3_LF8)&0xffff 11180 00009d34 afa70000 sw (r29),r7 11181 00009d38 0c0012b0 jal _printf 11182 00009d3c 54000000 nop; not filled. 11183 00009d40 23bd0008 addi r29,r29,#8 11184 00009d44 L130_LF8: 11185 00009d44 23bdfff8 addi r29,r29,#-8 11186 00009d48 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11187 00009d4c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11188 00009d50 8c210000 lw r1,(r1) 11189 00009d54 afa10000 sw (r29),r1 11190 00009d58 0fffdd28 jal _ProcessKill 11191 00009d5c 54000000 nop; not filled. 11192 00009d60 080008fc j L201_LF8 11193 00009d64 54000000 nop; not filled. 11194 00009d68 L132_LF8: 11195 00009d68 23bdfff8 addi r29,r29,#-8 11196 00009d6c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11197 00009d70 2442fd60 addui r2,r2,(_debugstr)&0xffff 11198 00009d74 afa20000 sw (r29),r2 11199 00009d78 20070074 addi r7,r0,#116 11200 00009d7c afa70004 sw 4(r29),r7 11201 00009d80 0fffa0b0 jal _dindex 11202 00009d84 54000000 nop; not filled. 11203 00009d88 23bd0008 addi r29,r29,#8 11204 00009d8c 64210000 snei r1,r1,#0 11205 00009d90 1420002c bnez r1,L134_LF8 11206 00009d94 54000000 nop; not filled. 11207 00009d98 23bdfff8 addi r29,r29,#-8 11208 00009d9c afa20000 sw (r29),r2 11209 00009da0 2007002b addi r7,r0,#43 11210 00009da4 afa70004 sw 4(r29),r7 11211 00009da8 0fffa088 jal _dindex 11212 00009dac 54000000 nop; not filled. 11213 00009db0 23bd0008 addi r29,r29,#8 11214 00009db4 64210000 snei r1,r1,#0 11215 00009db8 102008a8 beqz r1,L181_LF8 11216 00009dbc 54000000 nop; not filled. 11217 00009dc0 L134_LF8: 11218 00009dc0 23bdfff8 addi r29,r29,#-8 11219 00009dc4 3c070001 lhi r7,((LC4_LF8)>>16)&0xffff 11220 00009dc8 24e72b08 addui r7,r7,(LC4_LF8)&0xffff 11221 00009dcc afa70000 sw (r29),r7 11222 00009dd0 0c001218 jal _printf 11223 00009dd4 54000000 nop; not filled. 11224 00009dd8 08000884 j L201_LF8 11225 00009ddc 54000000 nop; not filled. 11226 00009de0 L135_LF8: 11227 00009de0 23bdfff8 addi r29,r29,#-8 11228 00009de4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11229 00009de8 2442fd60 addui r2,r2,(_debugstr)&0xffff 11230 00009dec afa20000 sw (r29),r2 11231 00009df0 20070074 addi r7,r0,#116 11232 00009df4 afa70004 sw 4(r29),r7 11233 00009df8 0fffa038 jal _dindex 11234 00009dfc 54000000 nop; not filled. 11235 00009e00 23bd0008 addi r29,r29,#8 11236 00009e04 64210000 snei r1,r1,#0 11237 00009e08 1420002c bnez r1,L137_LF8 11238 00009e0c 54000000 nop; not filled. 11239 00009e10 23bdfff8 addi r29,r29,#-8 11240 00009e14 afa20000 sw (r29),r2 11241 00009e18 2007002b addi r7,r0,#43 11242 00009e1c afa70004 sw 4(r29),r7 11243 00009e20 0fffa010 jal _dindex 11244 00009e24 54000000 nop; not filled. 11245 00009e28 23bd0008 addi r29,r29,#8 11246 00009e2c 64210000 snei r1,r1,#0 11247 00009e30 10200020 beqz r1,L136_LF8 11248 00009e34 54000000 nop; not filled. 11249 00009e38 L137_LF8: 11250 00009e38 23bdfff8 addi r29,r29,#-8 11251 00009e3c 3c070001 lhi r7,((LC5_LF8)>>16)&0xffff 11252 00009e40 24e72b1c addui r7,r7,(LC5_LF8)&0xffff 11253 00009e44 afa70000 sw (r29),r7 11254 00009e48 0c0011a0 jal _printf 11255 00009e4c 54000000 nop; not filled. 11256 00009e50 23bd0008 addi r29,r29,#8 11257 00009e54 L136_LF8: 11258 00009e54 23bdfff8 addi r29,r29,#-8 11259 00009e58 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11260 00009e5c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11261 00009e60 8c210000 lw r1,(r1) 11262 00009e64 afa10000 sw (r29),r1 11263 00009e68 0fffb174 jal _ProcessSuspend 11264 00009e6c 54000000 nop; not filled. 11265 00009e70 0fffacd8 jal _ProcessSchedule 11266 00009e74 54000000 nop; not filled. 11267 00009e78 080007e4 j L201_LF8 11268 00009e7c 54000000 nop; not filled. 11269 00009e80 L138_LF8: 11270 00009e80 23bdfff8 addi r29,r29,#-8 11271 00009e84 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11272 00009e88 2442fd60 addui r2,r2,(_debugstr)&0xffff 11273 00009e8c afa20000 sw (r29),r2 11274 00009e90 20070074 addi r7,r0,#116 11275 00009e94 afa70004 sw 4(r29),r7 11276 00009e98 0fff9f98 jal _dindex 11277 00009e9c 54000000 nop; not filled. 11278 00009ea0 23bd0008 addi r29,r29,#8 11279 00009ea4 64210000 snei r1,r1,#0 11280 00009ea8 1420002c bnez r1,L140_LF8 11281 00009eac 54000000 nop; not filled. 11282 00009eb0 23bdfff8 addi r29,r29,#-8 11283 00009eb4 afa20000 sw (r29),r2 11284 00009eb8 2007002b addi r7,r0,#43 11285 00009ebc afa70004 sw 4(r29),r7 11286 00009ec0 0fff9f70 jal _dindex 11287 00009ec4 54000000 nop; not filled. 11288 00009ec8 23bd0008 addi r29,r29,#8 11289 00009ecc 64210000 snei r1,r1,#0 11290 00009ed0 10200020 beqz r1,L139_LF8 11291 00009ed4 54000000 nop; not filled. 11292 00009ed8 L140_LF8: 11293 00009ed8 23bdfff8 addi r29,r29,#-8 11294 00009edc 3c070001 lhi r7,((LC6_LF8)>>16)&0xffff 11295 00009ee0 24e72b38 addui r7,r7,(LC6_LF8)&0xffff 11296 00009ee4 afa70000 sw (r29),r7 11297 00009ee8 0c001100 jal _printf 11298 00009eec 54000000 nop; not filled. 11299 00009ef0 23bd0008 addi r29,r29,#8 11300 00009ef4 L139_LF8: 11301 00009ef4 23bdfff8 addi r29,r29,#-8 11302 00009ef8 afa30000 sw (r29),r3 11303 00009efc 30a10040 andi r1,r5,#64 11304 00009f00 afa10004 sw 4(r29),r1 11305 00009f04 0ffff890 jal _TrapPrintfHandler_LF8 11306 00009f08 54000000 nop; not filled. 11307 00009f0c 08000750 j L201_LF8 11308 00009f10 54000000 nop; not filled. 11309 00009f14 L141_LF8: 11310 00009f14 30a10040 andi r1,r5,#64 11311 00009f18 64210000 snei r1,r1,#0 11312 00009f1c 1020001c beqz r1,L142_LF8 11313 00009f20 54000000 nop; not filled. 11314 00009f24 8c670000 lw r7,(r3) 11315 00009f28 afc7ffe8 sw -24(r30),r7 11316 00009f2c 8c630004 lw r3,4(r3) 11317 00009f30 afc3ffec sw -20(r30),r3 11318 00009f34 0800006c j L143_LF8 11319 00009f38 54000000 nop; not filled. 11320 00009f3c L142_LF8: 11321 00009f3c 23bdfff0 addi r29,r29,#-16 11322 00009f40 3c020000 lhi r2,((_currentPCB)>>16)&0xffff 11323 00009f44 2442fe28 addui r2,r2,(_currentPCB)&0xffff 11324 00009f48 8c470000 lw r7,(r2) 11325 00009f4c afa70000 sw (r29),r7 11326 00009f50 afa30004 sw 4(r29),r3 11327 00009f54 23c1ffe8 addi r1,r30,#-24 11328 00009f58 afa10008 sw 8(r29),r1 11329 00009f5c 20070008 addi r7,r0,#8 11330 00009f60 afa7000c sw 12(r29),r7 11331 00009f64 0fff961c jal _MemoryCopyUserToSystem 11332 00009f68 54000000 nop; not filled. 11333 00009f6c 8c420000 lw r2,(r2) 11334 00009f70 afa20000 sw (r29),r2 11335 00009f74 8fc1ffe8 lw r1,-24(r30) 11336 00009f78 afa10004 sw 4(r29),r1 11337 00009f7c 23c2ffc8 addi r2,r30,#-56 11338 00009f80 afa20008 sw 8(r29),r2 11339 00009f84 2007001f addi r7,r0,#31 11340 00009f88 afa7000c sw 12(r29),r7 11341 00009f8c 0fff95f4 jal _MemoryCopyUserToSystem 11342 00009f90 54000000 nop; not filled. 11343 00009f94 20070000 addi r7,r0,(#0x0)&0xff 11344 00009f98 a3c7ffe7 sb -25(r30),r7 11345 00009f9c afc2ffe8 sw -24(r30),r2 11346 00009fa0 23bd0010 addi r29,r29,#16 11347 00009fa4 L143_LF8: 11348 00009fa4 23bdfff8 addi r29,r29,#-8 11349 00009fa8 20070000 addi r7,r0,#0 11350 00009fac afa70000 sw (r29),r7 11351 00009fb0 0fff72d4 jal _SetIntrs 11352 00009fb4 54000000 nop; not filled. 11353 00009fb8 00011020 add r2,r0,r1 11354 00009fbc 23bd0008 addi r29,r29,#8 11355 00009fc0 23bdfff8 addi r29,r29,#-8 11356 00009fc4 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11357 00009fc8 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11358 00009fcc 8c210000 lw r1,(r1) 11359 00009fd0 afa10000 sw (r29),r1 11360 00009fd4 8fc1ffec lw r1,-20(r30) 11361 00009fd8 3c070001 lhi r7,#1 11362 00009fdc 24e70000 addui r7,r7,#0 11363 00009fe0 00270820 add r1,r1,r7 11364 00009fe4 afa10004 sw 4(r29),r1 11365 00009fe8 0fffab2c jal _ProcessSetResult 11366 00009fec 54000000 nop; not filled. 11367 00009ff0 23bdfff8 addi r29,r29,#-8 11368 00009ff4 3c070001 lhi r7,((LC7_LF8)>>16)&0xffff 11369 00009ff8 24e72b4c addui r7,r7,(LC7_LF8)&0xffff 11370 00009ffc afa70000 sw (r29),r7 11371 0000a000 8fc1ffe8 lw r1,-24(r30) 11372 0000a004 afa10004 sw 4(r29),r1 11373 0000a008 8fc7ffec lw r7,-20(r30) 11374 0000a00c afa70008 sw 8(r29),r7 11375 0000a010 0c000fd8 jal _printf 11376 0000a014 54000000 nop; not filled. 11377 0000a018 23bd0010 addi r29,r29,#16 11378 0000a01c 23bdfff8 addi r29,r29,#-8 11379 0000a020 afa20000 sw (r29),r2 11380 0000a024 0fff7260 jal _SetIntrs 11381 0000a028 54000000 nop; not filled. 11382 0000a02c 08000630 j L201_LF8 11383 0000a030 54000000 nop; not filled. 11384 0000a034 L146_LF8: 11385 0000a034 23bdfff8 addi r29,r29,#-8 11386 0000a038 20070000 addi r7,r0,#0 11387 0000a03c afa70000 sw (r29),r7 11388 0000a040 0fff7244 jal _SetIntrs 11389 0000a044 54000000 nop; not filled. 11390 0000a048 00011020 add r2,r0,r1 11391 0000a04c 23bd0008 addi r29,r29,#8 11392 0000a050 23bdfff8 addi r29,r29,#-8 11393 0000a054 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11394 0000a058 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11395 0000a05c 8c210000 lw r1,(r1) 11396 0000a060 afa10000 sw (r29),r1 11397 0000a064 2007ffff addi r7,r0,#-1 11398 0000a068 afa70004 sw 4(r29),r7 11399 0000a06c 0fffaaa8 jal _ProcessSetResult 11400 0000a070 54000000 nop; not filled. 11401 0000a074 23bd0008 addi r29,r29,#8 11402 0000a078 23bdfff8 addi r29,r29,#-8 11403 0000a07c afa20000 sw (r29),r2 11404 0000a080 0fff7204 jal _SetIntrs 11405 0000a084 54000000 nop; not filled. 11406 0000a088 080005d4 j L201_LF8 11407 0000a08c 54000000 nop; not filled. 11408 0000a090 L149_LF8: 11409 0000a090 23bdfff8 addi r29,r29,#-8 11410 0000a094 20070000 addi r7,r0,#0 11411 0000a098 afa70000 sw (r29),r7 11412 0000a09c 0fff71e8 jal _SetIntrs 11413 0000a0a0 54000000 nop; not filled. 11414 0000a0a4 00011020 add r2,r0,r1 11415 0000a0a8 23bd0008 addi r29,r29,#8 11416 0000a0ac 23bdfff8 addi r29,r29,#-8 11417 0000a0b0 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11418 0000a0b4 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11419 0000a0b8 8c210000 lw r1,(r1) 11420 0000a0bc afa10000 sw (r29),r1 11421 0000a0c0 2007ffff addi r7,r0,#-1 11422 0000a0c4 afa70004 sw 4(r29),r7 11423 0000a0c8 0fffaa4c jal _ProcessSetResult 11424 0000a0cc 54000000 nop; not filled. 11425 0000a0d0 23bd0008 addi r29,r29,#8 11426 0000a0d4 23bdfff8 addi r29,r29,#-8 11427 0000a0d8 afa20000 sw (r29),r2 11428 0000a0dc 0fff71a8 jal _SetIntrs 11429 0000a0e0 54000000 nop; not filled. 11430 0000a0e4 08000578 j L201_LF8 11431 0000a0e8 54000000 nop; not filled. 11432 0000a0ec L152_LF8: 11433 0000a0ec 23bdfff8 addi r29,r29,#-8 11434 0000a0f0 20070000 addi r7,r0,#0 11435 0000a0f4 afa70000 sw (r29),r7 11436 0000a0f8 0fff718c jal _SetIntrs 11437 0000a0fc 54000000 nop; not filled. 11438 0000a100 00011020 add r2,r0,r1 11439 0000a104 23bd0008 addi r29,r29,#8 11440 0000a108 23bdfff8 addi r29,r29,#-8 11441 0000a10c 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11442 0000a110 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11443 0000a114 8c210000 lw r1,(r1) 11444 0000a118 afa10000 sw (r29),r1 11445 0000a11c 2007ffff addi r7,r0,#-1 11446 0000a120 afa70004 sw 4(r29),r7 11447 0000a124 0fffa9f0 jal _ProcessSetResult 11448 0000a128 54000000 nop; not filled. 11449 0000a12c 23bd0008 addi r29,r29,#8 11450 0000a130 23bdfff8 addi r29,r29,#-8 11451 0000a134 afa20000 sw (r29),r2 11452 0000a138 0fff714c jal _SetIntrs 11453 0000a13c 54000000 nop; not filled. 11454 0000a140 0800051c j L201_LF8 11455 0000a144 54000000 nop; not filled. 11456 0000a148 L155_LF8: 11457 0000a148 23bdfff8 addi r29,r29,#-8 11458 0000a14c 20070000 addi r7,r0,#0 11459 0000a150 afa70000 sw (r29),r7 11460 0000a154 0fff7130 jal _SetIntrs 11461 0000a158 54000000 nop; not filled. 11462 0000a15c 00011020 add r2,r0,r1 11463 0000a160 23bd0008 addi r29,r29,#8 11464 0000a164 23bdfff8 addi r29,r29,#-8 11465 0000a168 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11466 0000a16c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11467 0000a170 8c210000 lw r1,(r1) 11468 0000a174 afa10000 sw (r29),r1 11469 0000a178 2007ffff addi r7,r0,#-1 11470 0000a17c afa70004 sw 4(r29),r7 11471 0000a180 0fffa994 jal _ProcessSetResult 11472 0000a184 54000000 nop; not filled. 11473 0000a188 23bd0008 addi r29,r29,#8 11474 0000a18c 23bdfff8 addi r29,r29,#-8 11475 0000a190 afa20000 sw (r29),r2 11476 0000a194 0fff70f0 jal _SetIntrs 11477 0000a198 54000000 nop; not filled. 11478 0000a19c 080004c0 j L201_LF8 11479 0000a1a0 54000000 nop; not filled. 11480 0000a1a4 L158_LF8: 11481 0000a1a4 23bdfff8 addi r29,r29,#-8 11482 0000a1a8 20070000 addi r7,r0,#0 11483 0000a1ac afa70000 sw (r29),r7 11484 0000a1b0 0fff70d4 jal _SetIntrs 11485 0000a1b4 54000000 nop; not filled. 11486 0000a1b8 00011020 add r2,r0,r1 11487 0000a1bc 23bd0008 addi r29,r29,#8 11488 0000a1c0 23bdfff8 addi r29,r29,#-8 11489 0000a1c4 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11490 0000a1c8 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11491 0000a1cc 8c210000 lw r1,(r1) 11492 0000a1d0 afa10000 sw (r29),r1 11493 0000a1d4 2007ffff addi r7,r0,#-1 11494 0000a1d8 afa70004 sw 4(r29),r7 11495 0000a1dc 0fffa938 jal _ProcessSetResult 11496 0000a1e0 54000000 nop; not filled. 11497 0000a1e4 23bd0008 addi r29,r29,#8 11498 0000a1e8 23bdfff8 addi r29,r29,#-8 11499 0000a1ec afa20000 sw (r29),r2 11500 0000a1f0 0fff7094 jal _SetIntrs 11501 0000a1f4 54000000 nop; not filled. 11502 0000a1f8 08000464 j L201_LF8 11503 0000a1fc 54000000 nop; not filled. 11504 0000a200 L161_LF8: 11505 0000a200 0fffd6c0 jal _GetCurrentPid 11506 0000a204 54000000 nop; not filled. 11507 0000a208 00011020 add r2,r0,r1 11508 0000a20c 23bdfff8 addi r29,r29,#-8 11509 0000a210 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11510 0000a214 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11511 0000a218 8c210000 lw r1,(r1) 11512 0000a21c afa10000 sw (r29),r1 11513 0000a220 afa20004 sw 4(r29),r2 11514 0000a224 0fffa8f0 jal _ProcessSetResult 11515 0000a228 54000000 nop; not filled. 11516 0000a22c 08000430 j L201_LF8 11517 0000a230 54000000 nop; not filled. 11518 0000a234 L162_LF8: 11519 0000a234 23bdfff8 addi r29,r29,#-8 11520 0000a238 afa30000 sw (r29),r3 11521 0000a23c 30a10040 andi r1,r5,#64 11522 0000a240 afa10004 sw 4(r29),r1 11523 0000a244 0ffff21c jal _TrapProcessCreateHandler_LF8 11524 0000a248 54000000 nop; not filled. 11525 0000a24c 08000410 j L201_LF8 11526 0000a250 54000000 nop; not filled. 11527 0000a254 L163_LF8: 11528 0000a254 30a10040 andi r1,r5,#64 11529 0000a258 64210000 snei r1,r1,#0 11530 0000a25c 1420003c bnez r1,L165_LF8 11531 0000a260 54000000 nop; not filled. 11532 0000a264 23bdfff0 addi r29,r29,#-16 11533 0000a268 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11534 0000a26c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11535 0000a270 8c210000 lw r1,(r1) 11536 0000a274 afa10000 sw (r29),r1 11537 0000a278 afa30004 sw 4(r29),r3 11538 0000a27c 23c1ffc4 addi r1,r30,#-60 11539 0000a280 afa10008 sw 8(r29),r1 11540 0000a284 20070004 addi r7,r0,#4 11541 0000a288 afa7000c sw 12(r29),r7 11542 0000a28c 0fff92f4 jal _MemoryCopyUserToSystem 11543 0000a290 54000000 nop; not filled. 11544 0000a294 08000024 j L202_LF8 11545 0000a298 54000000 nop; not filled. 11546 0000a29c L165_LF8: 11547 0000a29c 23bdfff0 addi r29,r29,#-16 11548 0000a2a0 afa30000 sw (r29),r3 11549 0000a2a4 23c1ffc4 addi r1,r30,#-60 11550 0000a2a8 afa10004 sw 4(r29),r1 11551 0000a2ac 20070004 addi r7,r0,#4 11552 0000a2b0 afa70008 sw 8(r29),r7 11553 0000a2b4 0fff9f0c jal _bcopy 11554 0000a2b8 54000000 nop; not filled. 11555 0000a2bc L202_LF8: 11556 0000a2bc 23bd0010 addi r29,r29,#16 11557 0000a2c0 23bdfff8 addi r29,r29,#-8 11558 0000a2c4 8fc7ffc4 lw r7,-60(r30) 11559 0000a2c8 afa70000 sw (r29),r7 11560 0000a2cc 0fffe5ec jal _SemCreate 11561 0000a2d0 54000000 nop; not filled. 11562 0000a2d4 00011020 add r2,r0,r1 11563 0000a2d8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11564 0000a2dc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11565 0000a2e0 8c210000 lw r1,(r1) 11566 0000a2e4 afa10000 sw (r29),r1 11567 0000a2e8 afa20004 sw 4(r29),r2 11568 0000a2ec 0fffa828 jal _ProcessSetResult 11569 0000a2f0 54000000 nop; not filled. 11570 0000a2f4 08000368 j L201_LF8 11571 0000a2f8 54000000 nop; not filled. 11572 0000a2fc L167_LF8: 11573 0000a2fc 30a10040 andi r1,r5,#64 11574 0000a300 64210000 snei r1,r1,#0 11575 0000a304 1420003c bnez r1,L169_LF8 11576 0000a308 54000000 nop; not filled. 11577 0000a30c 23bdfff0 addi r29,r29,#-16 11578 0000a310 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11579 0000a314 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11580 0000a318 8c210000 lw r1,(r1) 11581 0000a31c afa10000 sw (r29),r1 11582 0000a320 afa30004 sw 4(r29),r3 11583 0000a324 23c1ffc4 addi r1,r30,#-60 11584 0000a328 afa10008 sw 8(r29),r1 11585 0000a32c 20070004 addi r7,r0,#4 11586 0000a330 afa7000c sw 12(r29),r7 11587 0000a334 0fff924c jal _MemoryCopyUserToSystem 11588 0000a338 54000000 nop; not filled. 11589 0000a33c 08000024 j L203_LF8 11590 0000a340 54000000 nop; not filled. 11591 0000a344 L169_LF8: 11592 0000a344 23bdfff0 addi r29,r29,#-16 11593 0000a348 afa30000 sw (r29),r3 11594 0000a34c 23c1ffc4 addi r1,r30,#-60 11595 0000a350 afa10004 sw 4(r29),r1 11596 0000a354 20070004 addi r7,r0,#4 11597 0000a358 afa70008 sw 8(r29),r7 11598 0000a35c 0fff9e64 jal _bcopy 11599 0000a360 54000000 nop; not filled. 11600 0000a364 L203_LF8: 11601 0000a364 23bd0010 addi r29,r29,#16 11602 0000a368 23bdfff8 addi r29,r29,#-8 11603 0000a36c 8fc7ffc4 lw r7,-60(r30) 11604 0000a370 afa70000 sw (r29),r7 11605 0000a374 0fffe8c8 jal _SemHandleWait 11606 0000a378 54000000 nop; not filled. 11607 0000a37c 00011020 add r2,r0,r1 11608 0000a380 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11609 0000a384 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11610 0000a388 8c210000 lw r1,(r1) 11611 0000a38c afa10000 sw (r29),r1 11612 0000a390 afa20004 sw 4(r29),r2 11613 0000a394 0fffa780 jal _ProcessSetResult 11614 0000a398 54000000 nop; not filled. 11615 0000a39c 080002c0 j L201_LF8 11616 0000a3a0 54000000 nop; not filled. 11617 0000a3a4 L171_LF8: 11618 0000a3a4 30a10040 andi r1,r5,#64 11619 0000a3a8 64210000 snei r1,r1,#0 11620 0000a3ac 1420003c bnez r1,L173_LF8 11621 0000a3b0 54000000 nop; not filled. 11622 0000a3b4 23bdfff0 addi r29,r29,#-16 11623 0000a3b8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11624 0000a3bc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11625 0000a3c0 8c210000 lw r1,(r1) 11626 0000a3c4 afa10000 sw (r29),r1 11627 0000a3c8 afa30004 sw 4(r29),r3 11628 0000a3cc 23c1ffc4 addi r1,r30,#-60 11629 0000a3d0 afa10008 sw 8(r29),r1 11630 0000a3d4 20070004 addi r7,r0,#4 11631 0000a3d8 afa7000c sw 12(r29),r7 11632 0000a3dc 0fff91a4 jal _MemoryCopyUserToSystem 11633 0000a3e0 54000000 nop; not filled. 11634 0000a3e4 08000024 j L204_LF8 11635 0000a3e8 54000000 nop; not filled. 11636 0000a3ec L173_LF8: 11637 0000a3ec 23bdfff0 addi r29,r29,#-16 11638 0000a3f0 afa30000 sw (r29),r3 11639 0000a3f4 23c1ffc4 addi r1,r30,#-60 11640 0000a3f8 afa10004 sw 4(r29),r1 11641 0000a3fc 20070004 addi r7,r0,#4 11642 0000a400 afa70008 sw 8(r29),r7 11643 0000a404 0fff9dbc jal _bcopy 11644 0000a408 54000000 nop; not filled. 11645 0000a40c L204_LF8: 11646 0000a40c 23bd0010 addi r29,r29,#16 11647 0000a410 23bdfff8 addi r29,r29,#-8 11648 0000a414 8fc7ffc4 lw r7,-60(r30) 11649 0000a418 afa70000 sw (r29),r7 11650 0000a41c 0fffeaac jal _SemHandleSignal 11651 0000a420 54000000 nop; not filled. 11652 0000a424 00011020 add r2,r0,r1 11653 0000a428 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11654 0000a42c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11655 0000a430 8c210000 lw r1,(r1) 11656 0000a434 afa10000 sw (r29),r1 11657 0000a438 afa20004 sw 4(r29),r2 11658 0000a43c 0fffa6d8 jal _ProcessSetResult 11659 0000a440 54000000 nop; not filled. 11660 0000a444 08000218 j L201_LF8 11661 0000a448 54000000 nop; not filled. 11662 0000a44c L175_LF8: 11663 0000a44c 23bdfff8 addi r29,r29,#-8 11664 0000a450 3c070001 lhi r7,((LC8_LF8)>>16)&0xffff 11665 0000a454 24e72b78 addui r7,r7,(LC8_LF8)&0xffff 11666 0000a458 080001ec j L205_LF8 11667 0000a45c 54000000 nop; not filled. 11668 0000a460 L124_LF8: 11669 0000a460 60410003 seqi r1,r2,#3 11670 0000a464 14200148 bnez r1,L191_LF8 11671 0000a468 54000000 nop; not filled. 11672 0000a46c 6c410003 sgtui r1,r2,#3 11673 0000a470 14200024 bnez r1,L197_LF8 11674 0000a474 54000000 nop; not filled. 11675 0000a478 60410001 seqi r1,r2,#1 11676 0000a47c 14200178 bnez r1,L193_LF8 11677 0000a480 54000000 nop; not filled. 11678 0000a484 60410002 seqi r1,r2,#2 11679 0000a488 102001b0 beqz r1,L195_LF8 11680 0000a48c 54000000 nop; not filled. 11681 0000a490 08000140 j L192_LF8 11682 0000a494 54000000 nop; not filled. 11683 0000a498 L197_LF8: 11684 0000a498 60410040 seqi r1,r2,#64 11685 0000a49c 14200038 bnez r1,L183_LF8 11686 0000a4a0 54000000 nop; not filled. 11687 0000a4a4 6c410040 sgtui r1,r2,#64 11688 0000a4a8 14200018 bnez r1,L198_LF8 11689 0000a4ac 54000000 nop; not filled. 11690 0000a4b0 60410020 seqi r1,r2,#32 11691 0000a4b4 10200184 beqz r1,L195_LF8 11692 0000a4b8 54000000 nop; not filled. 11693 0000a4bc 0800016c j L194_LF8 11694 0000a4c0 54000000 nop; not filled. 11695 0000a4c4 L198_LF8: 11696 0000a4c4 60410048 seqi r1,r2,#72 11697 0000a4c8 10200170 beqz r1,L195_LF8 11698 0000a4cc 54000000 nop; not filled. 11699 0000a4d0 08000088 j L186_LF8 11700 0000a4d4 54000000 nop; not filled. 11701 0000a4d8 L183_LF8: 11702 0000a4d8 23bdfff8 addi r29,r29,#-8 11703 0000a4dc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11704 0000a4e0 2442fd60 addui r2,r2,(_debugstr)&0xffff 11705 0000a4e4 afa20000 sw (r29),r2 11706 0000a4e8 20070074 addi r7,r0,#116 11707 0000a4ec afa70004 sw 4(r29),r7 11708 0000a4f0 0fff9940 jal _dindex 11709 0000a4f4 54000000 nop; not filled. 11710 0000a4f8 23bd0008 addi r29,r29,#8 11711 0000a4fc 64210000 snei r1,r1,#0 11712 0000a500 1420002c bnez r1,L185_LF8 11713 0000a504 54000000 nop; not filled. 11714 0000a508 23bdfff8 addi r29,r29,#-8 11715 0000a50c afa20000 sw (r29),r2 11716 0000a510 2007002b addi r7,r0,#43 11717 0000a514 afa70004 sw 4(r29),r7 11718 0000a518 0fff9918 jal _dindex 11719 0000a51c 54000000 nop; not filled. 11720 0000a520 23bd0008 addi r29,r29,#8 11721 0000a524 64210000 snei r1,r1,#0 11722 0000a528 10200020 beqz r1,L184_LF8 11723 0000a52c 54000000 nop; not filled. 11724 0000a530 L185_LF8: 11725 0000a530 23bdfff8 addi r29,r29,#-8 11726 0000a534 3c070001 lhi r7,((LC9_LF8)>>16)&0xffff 11727 0000a538 24e72ba4 addui r7,r7,(LC9_LF8)&0xffff 11728 0000a53c L206_LF8: 11729 0000a53c afa70000 sw (r29),r7 11730 0000a540 0c000aa8 jal _printf 11731 0000a544 54000000 nop; not filled. 11732 0000a548 23bd0008 addi r29,r29,#8 11733 0000a54c L184_LF8: 11734 0000a54c 0fffa5fc jal _ProcessSchedule 11735 0000a550 54000000 nop; not filled. 11736 0000a554 0800010c j L181_LF8 11737 0000a558 54000000 nop; not filled. 11738 0000a55c L186_LF8: 11739 0000a55c 3c04fff0 lhi r4,#-16 11740 0000a560 248401a0 addui r4,r4,#416 11741 0000a564 3c03fff0 lhi r3,#-16 11742 0000a568 24630180 addui r3,r3,#384 11743 0000a56c L187_LF8: 11744 0000a56c 8c820000 lw r2,(r4) 11745 0000a570 8c610000 lw r1,(r3) 11746 0000a574 23bdfff0 addi r29,r29,#-16 11747 0000a578 3c070001 lhi r7,((LC10_LF8)>>16)&0xffff 11748 0000a57c 24e72bbc addui r7,r7,(LC10_LF8)&0xffff 11749 0000a580 afa70000 sw (r29),r7 11750 0000a584 afa10004 sw 4(r29),r1 11751 0000a588 afa10008 sw 8(r29),r1 11752 0000a58c afa2000c sw 12(r29),r2 11753 0000a590 0c000a58 jal _printf 11754 0000a594 54000000 nop; not filled. 11755 0000a598 23bd0010 addi r29,r29,#16 11756 0000a59c 6c410001 sgti r1,r2,#1 11757 0000a5a0 102000c0 beqz r1,L181_LF8 11758 0000a5a4 54000000 nop; not filled. 11759 0000a5a8 0bffffc0 j L187_LF8 11760 0000a5ac 54000000 nop; not filled. 11761 0000a5b0 L191_LF8: 11762 0000a5b0 23bdfff8 addi r29,r29,#-8 11763 0000a5b4 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11764 0000a5b8 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11765 0000a5bc 8c210000 lw r1,(r1) 11766 0000a5c0 afa10000 sw (r29),r1 11767 0000a5c4 0fffd4bc jal _ProcessKill 11768 0000a5c8 54000000 nop; not filled. 11769 0000a5cc 08000090 j L201_LF8 11770 0000a5d0 54000000 nop; not filled. 11771 0000a5d4 L192_LF8: 11772 0000a5d4 23bdfff8 addi r29,r29,#-8 11773 0000a5d8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11774 0000a5dc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11775 0000a5e0 8c210000 lw r1,(r1) 11776 0000a5e4 afa10000 sw (r29),r1 11777 0000a5e8 0fffd498 jal _ProcessKill 11778 0000a5ec 54000000 nop; not filled. 11779 0000a5f0 0800006c j L201_LF8 11780 0000a5f4 54000000 nop; not filled. 11781 0000a5f8 L193_LF8: 11782 0000a5f8 23bdfff0 addi r29,r29,#-16 11783 0000a5fc 3c070001 lhi r7,((LC11_LF8)>>16)&0xffff 11784 0000a600 24e72bf4 addui r7,r7,(LC11_LF8)&0xffff 11785 0000a604 afa70000 sw (r29),r7 11786 0000a608 afa60004 sw 4(r29),r6 11787 0000a60c afa50008 sw 8(r29),r5 11788 0000a610 0c0009d8 jal _printf 11789 0000a614 54000000 nop; not filled. 11790 0000a618 0c0009b8 jal _exitsim 11791 0000a61c 54000000 nop; not filled. 11792 0000a620 23bd0010 addi r29,r29,#16 11793 0000a624 0800003c j L181_LF8 11794 0000a628 54000000 nop; not filled. 11795 0000a62c L194_LF8: 11796 0000a62c 0fffd480 jal _PageFaultHandler 11797 0000a630 54000000 nop; not filled. 11798 0000a634 0800002c j L181_LF8 11799 0000a638 54000000 nop; not filled. 11800 0000a63c L195_LF8: 11801 0000a63c 23bdfff8 addi r29,r29,#-8 11802 0000a640 3c070001 lhi r7,((LC12_LF8)>>16)&0xffff 11803 0000a644 24e72c30 addui r7,r7,(LC12_LF8)&0xffff 11804 0000a648 L205_LF8: 11805 0000a648 afa70000 sw (r29),r7 11806 0000a64c afa20004 sw 4(r29),r2 11807 0000a650 0c000998 jal _printf 11808 0000a654 54000000 nop; not filled. 11809 0000a658 0c000978 jal _exitsim 11810 0000a65c 54000000 nop; not filled. 11811 0000a660 L201_LF8: 11812 0000a660 23bd0008 addi r29,r29,#8 11813 0000a664 L181_LF8: 11814 0000a664 23bdfff8 addi r29,r29,#-8 11815 0000a668 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11816 0000a66c 2442fd60 addui r2,r2,(_debugstr)&0xffff 11817 0000a670 afa20000 sw (r29),r2 11818 0000a674 20070074 addi r7,r0,#116 11819 0000a678 afa70004 sw 4(r29),r7 11820 0000a67c 0fff97b4 jal _dindex 11821 0000a680 54000000 nop; not filled. 11822 0000a684 23bd0008 addi r29,r29,#8 11823 0000a688 64210000 snei r1,r1,#0 11824 0000a68c 1420002c bnez r1,L200_LF8 11825 0000a690 54000000 nop; not filled. 11826 0000a694 23bdfff8 addi r29,r29,#-8 11827 0000a698 afa20000 sw (r29),r2 11828 0000a69c 2007002b addi r7,r0,#43 11829 0000a6a0 afa70004 sw 4(r29),r7 11830 0000a6a4 0fff978c jal _dindex 11831 0000a6a8 54000000 nop; not filled. 11832 0000a6ac 23bd0008 addi r29,r29,#8 11833 0000a6b0 64210000 snei r1,r1,#0 11834 0000a6b4 10200020 beqz r1,L199_LF8 11835 0000a6b8 54000000 nop; not filled. 11836 0000a6bc L200_LF8: 11837 0000a6bc 23bdfff8 addi r29,r29,#-8 11838 0000a6c0 3c070001 lhi r7,((LC13_LF8)>>16)&0xffff 11839 0000a6c4 24e72c68 addui r7,r7,(LC13_LF8)&0xffff 11840 0000a6c8 afa70000 sw (r29),r7 11841 0000a6cc 0c00091c jal _printf 11842 0000a6d0 54000000 nop; not filled. 11843 0000a6d4 23bd0008 addi r29,r29,#8 11844 0000a6d8 L199_LF8: 11845 0000a6d8 0fff6a8c jal _intrreturn 11846 0000a6dc 54000000 nop; not filled. 11847 0000a6e0 8fa20000 lw r2,0(r29) 11848 0000a6e4 8fa30004 lw r3,4(r29) 11849 0000a6e8 8fa40008 lw r4,8(r29) 11850 0000a6ec 8fa5000c lw r5,12(r29) 11851 0000a6f0 8fa60010 lw r6,16(r29) 11852 0000a6f4 8fa70014 lw r7,20(r29) 11853 0000a6f8 8fdffff8 lw r31,-8(r30) 11854 0000a6fc 001ee820 add r29,r0,r30 11855 0000a700 8fdefffc lw r30,-4(r30) 11856 0000a704 4be00000 jr r31 11857 0000a708 54000000 nop 11858 0000a70c .endproc _dointerrupt 11859 ; Compiled by GCC 11861 0000a70c .align 2 11862 0000a70c .proc _isspace 11863 0000a70c .global _isspace 11864 0000a70c _isspace: 11865 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 11866 0000a70c afbefffc sw -4(r29),r30; push fp 11867 0000a710 001df020 add r30,r0,r29; fp = sp 11868 0000a714 afbffff8 sw -8(r29),r31; push ret addr 11869 0000a718 2fbd0010 subui r29,r29,#16; alloc local storage 11870 0000a71c afa20000 sw 0(r29),r2 11871 0000a720 83c20003 lb r2,3(r30) 11872 0000a724 201f0000 addi r31,r0,#0 11873 0000a728 304100ff andi r1,r2,#0x00ff 11874 0000a72c 60210020 seqi r1,r1,#32 11875 0000a730 14200018 bnez r1,L6_LF9 11876 0000a734 54000000 nop; not filled. 11877 0000a738 2041fff7 addi r1,r2,#-9 11878 0000a73c 302100ff andi r1,r1,#0x00ff 11879 0000a740 70210001 sleui r1,r1,#1 11880 0000a744 10200008 beqz r1,L5_LF9 11881 0000a748 54000000 nop; not filled. 11882 0000a74c L6_LF9: 11883 0000a74c 201f0001 addi r31,r0,#1 11884 0000a750 L5_LF9: 11885 0000a750 001f0820 add r1,r0,r31 11886 0000a754 8fa20000 lw r2,0(r29) 11887 0000a758 8fdffff8 lw r31,-8(r30) 11888 0000a75c 001ee820 add r29,r0,r30 11889 0000a760 8fdefffc lw r30,-4(r30) 11890 0000a764 4be00000 jr r31 11891 0000a768 54000000 nop 11892 0000a76c .endproc _isspace 11893 0000a76c .align 2 11894 0000a76c .proc _isxdigit 11895 0000a76c .global _isxdigit 11896 0000a76c _isxdigit: 11897 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 11898 0000a76c afbefffc sw -4(r29),r30; push fp 11899 0000a770 001df020 add r30,r0,r29; fp = sp 11900 0000a774 afbffff8 sw -8(r29),r31; push ret addr 11901 0000a778 2fbd0010 subui r29,r29,#16; alloc local storage 11902 0000a77c afa20000 sw 0(r29),r2 11903 0000a780 83df0003 lb r31,3(r30) 11904 0000a784 20020000 addi r2,r0,#0 11905 0000a788 23e1ffd0 addi r1,r31,#-48 11906 0000a78c 302100ff andi r1,r1,#0x00ff 11907 0000a790 70210009 sleui r1,r1,#9 11908 0000a794 14200028 bnez r1,L12_LF9 11909 0000a798 54000000 nop; not filled. 11910 0000a79c 23e1ff9f addi r1,r31,#-97 11911 0000a7a0 302100ff andi r1,r1,#0x00ff 11912 0000a7a4 70210005 sleui r1,r1,#5 11913 0000a7a8 14200014 bnez r1,L12_LF9 11914 0000a7ac 54000000 nop; not filled. 11915 0000a7b0 33e100ff andi r1,r31,#0x00ff 11916 0000a7b4 64210041 snei r1,r1,#65 11917 0000a7b8 14200008 bnez r1,L11_LF9 11918 0000a7bc 54000000 nop; not filled. 11919 0000a7c0 L12_LF9: 11920 0000a7c0 20020001 addi r2,r0,#1 11921 0000a7c4 L11_LF9: 11922 0000a7c4 00020820 add r1,r0,r2 11923 0000a7c8 8fa20000 lw r2,0(r29) 11924 0000a7cc 8fdffff8 lw r31,-8(r30) 11925 0000a7d0 001ee820 add r29,r0,r30 11926 0000a7d4 8fdefffc lw r30,-4(r30) 11927 0000a7d8 4be00000 jr r31 11928 0000a7dc 54000000 nop 11929 0000a7e0 .endproc _isxdigit 11930 0000a7e0 .align 2 11931 0000a7e0 .proc _DisableIntrs 11932 0000a7e0 .global _DisableIntrs 11933 0000a7e0 _DisableIntrs: 11934 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 11935 0000a7e0 afbefffc sw -4(r29),r30; push fp 11936 0000a7e4 001df020 add r30,r0,r29; fp = sp 11937 0000a7e8 afbffff8 sw -8(r29),r31; push ret addr 11938 0000a7ec 2fbd0010 subui r29,r29,#16; alloc local storage 11939 0000a7f0 afa20000 sw 0(r29),r2 11940 0000a7f4 23bdfff8 addi r29,r29,#-8 11941 0000a7f8 2002000f addi r2,r0,#15 11942 0000a7fc afa20000 sw (r29),r2 11943 0000a800 0fff6a84 jal _SetIntrs 11944 0000a804 54000000 nop; not filled. 11945 0000a808 23bd0008 addi r29,r29,#8 11946 0000a80c 8fa20000 lw r2,0(r29) 11947 0000a810 8fdffff8 lw r31,-8(r30) 11948 0000a814 001ee820 add r29,r0,r30 11949 0000a818 8fdefffc lw r30,-4(r30) 11950 0000a81c 4be00000 jr r31 11951 0000a820 54000000 nop 11952 0000a824 .endproc _DisableIntrs 11953 0000a824 .align 2 11954 0000a824 .proc _EnableIntrs 11955 0000a824 .global _EnableIntrs 11956 0000a824 _EnableIntrs: 11957 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 11958 0000a824 afbefffc sw -4(r29),r30; push fp 11959 0000a828 001df020 add r30,r0,r29; fp = sp 11960 0000a82c afbffff8 sw -8(r29),r31; push ret addr 11961 0000a830 2fbd0010 subui r29,r29,#16; alloc local storage 11962 0000a834 afa20000 sw 0(r29),r2 11963 0000a838 23bdfff8 addi r29,r29,#-8 11964 0000a83c 20020000 addi r2,r0,#0 11965 0000a840 afa20000 sw (r29),r2 11966 0000a844 0fff6a40 jal _SetIntrs 11967 0000a848 54000000 nop; not filled. 11968 0000a84c 23bd0008 addi r29,r29,#8 11969 0000a850 8fa20000 lw r2,0(r29) 11970 0000a854 8fdffff8 lw r31,-8(r30) 11971 0000a858 001ee820 add r29,r0,r30 11972 0000a85c 8fdefffc lw r30,-4(r30) 11973 0000a860 4be00000 jr r31 11974 0000a864 54000000 nop 11975 0000a868 .endproc _EnableIntrs 11976 0000a868 .align 2 11977 0000a868 .proc _RestoreIntrs 11978 0000a868 .global _RestoreIntrs 11979 0000a868 _RestoreIntrs: 11980 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 11981 0000a868 afbefffc sw -4(r29),r30; push fp 11982 0000a86c 001df020 add r30,r0,r29; fp = sp 11983 0000a870 afbffff8 sw -8(r29),r31; push ret addr 11984 0000a874 2fbd0010 subui r29,r29,#16; alloc local storage 11985 0000a878 afa20000 sw 0(r29),r2 11986 0000a87c 23bdfff8 addi r29,r29,#-8 11987 0000a880 8fc20000 lw r2,(r30) 11988 0000a884 afa20000 sw (r29),r2 11989 0000a888 0fff69fc jal _SetIntrs 11990 0000a88c 54000000 nop; not filled. 11991 0000a890 23bd0008 addi r29,r29,#8 11992 0000a894 8fa20000 lw r2,0(r29) 11993 0000a898 8fdffff8 lw r31,-8(r30) 11994 0000a89c 001ee820 add r29,r0,r30 11995 0000a8a0 8fdefffc lw r30,-4(r30) 11996 0000a8a4 4be00000 jr r31 11997 0000a8a8 54000000 nop 11998 0000a8ac .endproc _RestoreIntrs 11999 0000a8ac .align 2 12000 0000a8ac .proc _QueueLinkInit 12001 0000a8ac .global _QueueLinkInit 12002 0000a8ac _QueueLinkInit: 12003 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 12004 0000a8ac afbefffc sw -4(r29),r30; push fp 12005 0000a8b0 001df020 add r30,r0,r29; fp = sp 12006 0000a8b4 afbffff8 sw -8(r29),r31; push ret addr 12007 0000a8b8 2fbd0010 subui r29,r29,#16; alloc local storage 12008 0000a8bc afa20000 sw 0(r29),r2 12009 0000a8c0 8fc10000 lw r1,(r30) 12010 0000a8c4 8fc20004 lw r2,4(r30) 12011 0000a8c8 201f0000 addi r31,r0,#0 12012 0000a8cc ac3f0000 sw (r1),r31 12013 0000a8d0 ac22000c sw 12(r1),r2 12014 0000a8d4 8fa20000 lw r2,0(r29) 12015 0000a8d8 8fdffff8 lw r31,-8(r30) 12016 0000a8dc 001ee820 add r29,r0,r30 12017 0000a8e0 8fdefffc lw r30,-4(r30) 12018 0000a8e4 4be00000 jr r31 12019 0000a8e8 54000000 nop 12020 0000a8ec .endproc _QueueLinkInit 12021 0000a8ec .align 2 12022 0000a8ec .proc _QueueNext 12023 0000a8ec .global _QueueNext 12024 0000a8ec _QueueNext: 12025 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 12026 0000a8ec afbefffc sw -4(r29),r30; push fp 12027 0000a8f0 001df020 add r30,r0,r29; fp = sp 12028 0000a8f4 afbffff8 sw -8(r29),r31; push ret addr 12029 0000a8f8 2fbd0008 subui r29,r29,#8; alloc local storage 12030 0000a8fc 8fc10000 lw r1,(r30) 12031 0000a900 8c210000 lw r1,(r1) 12032 0000a904 8fdffff8 lw r31,-8(r30) 12033 0000a908 001ee820 add r29,r0,r30 12034 0000a90c 8fdefffc lw r30,-4(r30) 12035 0000a910 4be00000 jr r31 12036 0000a914 54000000 nop 12037 0000a918 .endproc _QueueNext 12038 0000a918 .align 2 12039 0000a918 .proc _QueuePrev 12040 0000a918 .global _QueuePrev 12041 0000a918 _QueuePrev: 12042 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 12043 0000a918 afbefffc sw -4(r29),r30; push fp 12044 0000a91c 001df020 add r30,r0,r29; fp = sp 12045 0000a920 afbffff8 sw -8(r29),r31; push ret addr 12046 0000a924 2fbd0008 subui r29,r29,#8; alloc local storage 12047 0000a928 8fc10000 lw r1,(r30) 12048 0000a92c 8c210004 lw r1,4(r1) 12049 0000a930 8fdffff8 lw r31,-8(r30) 12050 0000a934 001ee820 add r29,r0,r30 12051 0000a938 8fdefffc lw r30,-4(r30) 12052 0000a93c 4be00000 jr r31 12053 0000a940 54000000 nop 12054 0000a944 .endproc _QueuePrev 12055 0000a944 .align 2 12056 0000a944 .proc _QueueFirst 12057 0000a944 .global _QueueFirst 12058 0000a944 _QueueFirst: 12059 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 12060 0000a944 afbefffc sw -4(r29),r30; push fp 12061 0000a948 001df020 add r30,r0,r29; fp = sp 12062 0000a94c afbffff8 sw -8(r29),r31; push ret addr 12063 0000a950 2fbd0008 subui r29,r29,#8; alloc local storage 12064 0000a954 8fc10000 lw r1,(r30) 12065 0000a958 8c210000 lw r1,(r1) 12066 0000a95c 8fdffff8 lw r31,-8(r30) 12067 0000a960 001ee820 add r29,r0,r30 12068 0000a964 8fdefffc lw r30,-4(r30) 12069 0000a968 4be00000 jr r31 12070 0000a96c 54000000 nop 12071 0000a970 .endproc _QueueFirst 12072 0000a970 .align 2 12073 0000a970 .proc _QueueLast 12074 0000a970 .global _QueueLast 12075 0000a970 _QueueLast: 12076 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 12077 0000a970 afbefffc sw -4(r29),r30; push fp 12078 0000a974 001df020 add r30,r0,r29; fp = sp 12079 0000a978 afbffff8 sw -8(r29),r31; push ret addr 12080 0000a97c 2fbd0008 subui r29,r29,#8; alloc local storage 12081 0000a980 8fc10000 lw r1,(r30) 12082 0000a984 8c210004 lw r1,4(r1) 12083 0000a988 8fdffff8 lw r31,-8(r30) 12084 0000a98c 001ee820 add r29,r0,r30 12085 0000a990 8fdefffc lw r30,-4(r30) 12086 0000a994 4be00000 jr r31 12087 0000a998 54000000 nop 12088 0000a99c .endproc _QueueLast 12089 0000a99c .align 2 12090 0000a99c .proc _QueueInsertAfter 12091 0000a99c .global _QueueInsertAfter 12092 0000a99c _QueueInsertAfter: 12093 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 12094 0000a99c afbefffc sw -4(r29),r30; push fp 12095 0000a9a0 001df020 add r30,r0,r29; fp = sp 12096 0000a9a4 afbffff8 sw -8(r29),r31; push ret addr 12097 0000a9a8 2fbd0010 subui r29,r29,#16; alloc local storage 12098 0000a9ac afa20000 sw 0(r29),r2 12099 0000a9b0 afa30004 sw 4(r29),r3 12100 0000a9b4 8fc30000 lw r3,(r30) 12101 0000a9b8 8fc20004 lw r2,4(r30) 12102 0000a9bc 8fc10008 lw r1,8(r30) 12103 0000a9c0 ac230008 sw 8(r1),r3 12104 0000a9c4 ac220004 sw 4(r1),r2 12105 0000a9c8 8c5f0000 lw r31,(r2) 12106 0000a9cc ac3f0000 sw (r1),r31 12107 0000a9d0 ac410000 sw (r2),r1 12108 0000a9d4 8c220000 lw r2,(r1) 12109 0000a9d8 ac410004 sw 4(r2),r1 12110 0000a9dc 8c610008 lw r1,8(r3) 12111 0000a9e0 20210001 addi r1,r1,#1 12112 0000a9e4 ac610008 sw 8(r3),r1 12113 0000a9e8 8fa20000 lw r2,0(r29) 12114 0000a9ec 8fa30004 lw r3,4(r29) 12115 0000a9f0 8fdffff8 lw r31,-8(r30) 12116 0000a9f4 001ee820 add r29,r0,r30 12117 0000a9f8 8fdefffc lw r30,-4(r30) 12118 0000a9fc 4be00000 jr r31 12119 0000aa00 54000000 nop 12120 0000aa04 .endproc _QueueInsertAfter 12121 0000aa04 .align 2 12122 0000aa04 .proc _QueueInsertFirst 12123 0000aa04 .global _QueueInsertFirst 12124 0000aa04 _QueueInsertFirst: 12125 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 12126 0000aa04 afbefffc sw -4(r29),r30; push fp 12127 0000aa08 001df020 add r30,r0,r29; fp = sp 12128 0000aa0c afbffff8 sw -8(r29),r31; push ret addr 12129 0000aa10 2fbd0010 subui r29,r29,#16; alloc local storage 12130 0000aa14 afa20000 sw 0(r29),r2 12131 0000aa18 afa30004 sw 4(r29),r3 12132 0000aa1c 8fc30000 lw r3,(r30) 12133 0000aa20 8fc10004 lw r1,4(r30) 12134 0000aa24 ac230008 sw 8(r1),r3 12135 0000aa28 ac230004 sw 4(r1),r3 12136 0000aa2c 8c7f0000 lw r31,(r3) 12137 0000aa30 ac3f0000 sw (r1),r31 12138 0000aa34 ac610000 sw (r3),r1 12139 0000aa38 8c220000 lw r2,(r1) 12140 0000aa3c ac410004 sw 4(r2),r1 12141 0000aa40 8c610008 lw r1,8(r3) 12142 0000aa44 20210001 addi r1,r1,#1 12143 0000aa48 ac610008 sw 8(r3),r1 12144 0000aa4c 8fa20000 lw r2,0(r29) 12145 0000aa50 8fa30004 lw r3,4(r29) 12146 0000aa54 8fdffff8 lw r31,-8(r30) 12147 0000aa58 001ee820 add r29,r0,r30 12148 0000aa5c 8fdefffc lw r30,-4(r30) 12149 0000aa60 4be00000 jr r31 12150 0000aa64 54000000 nop 12151 0000aa68 .endproc _QueueInsertFirst 12152 0000aa68 .align 2 12153 0000aa68 .proc _QueueInsertLast 12154 0000aa68 .global _QueueInsertLast 12155 0000aa68 _QueueInsertLast: 12156 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 12157 0000aa68 afbefffc sw -4(r29),r30; push fp 12158 0000aa6c 001df020 add r30,r0,r29; fp = sp 12159 0000aa70 afbffff8 sw -8(r29),r31; push ret addr 12160 0000aa74 2fbd0010 subui r29,r29,#16; alloc local storage 12161 0000aa78 afa20000 sw 0(r29),r2 12162 0000aa7c afa30004 sw 4(r29),r3 12163 0000aa80 8fc30000 lw r3,(r30) 12164 0000aa84 8fc10004 lw r1,4(r30) 12165 0000aa88 8c620004 lw r2,4(r3) 12166 0000aa8c ac230008 sw 8(r1),r3 12167 0000aa90 ac220004 sw 4(r1),r2 12168 0000aa94 8c5f0000 lw r31,(r2) 12169 0000aa98 ac3f0000 sw (r1),r31 12170 0000aa9c ac410000 sw (r2),r1 12171 0000aaa0 8c220000 lw r2,(r1) 12172 0000aaa4 ac410004 sw 4(r2),r1 12173 0000aaa8 8c610008 lw r1,8(r3) 12174 0000aaac 20210001 addi r1,r1,#1 12175 0000aab0 ac610008 sw 8(r3),r1 12176 0000aab4 8fa20000 lw r2,0(r29) 12177 0000aab8 8fa30004 lw r3,4(r29) 12178 0000aabc 8fdffff8 lw r31,-8(r30) 12179 0000aac0 001ee820 add r29,r0,r30 12180 0000aac4 8fdefffc lw r30,-4(r30) 12181 0000aac8 4be00000 jr r31 12182 0000aacc 54000000 nop 12183 0000aad0 .endproc _QueueInsertLast 12184 0000aad0 .align 2 12185 0000aad0 .proc _QueueRemove 12186 0000aad0 .global _QueueRemove 12187 0000aad0 _QueueRemove: 12188 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 12189 0000aad0 afbefffc sw -4(r29),r30; push fp 12190 0000aad4 001df020 add r30,r0,r29; fp = sp 12191 0000aad8 afbffff8 sw -8(r29),r31; push ret addr 12192 0000aadc 2fbd0010 subui r29,r29,#16; alloc local storage 12193 0000aae0 afa20000 sw 0(r29),r2 12194 0000aae4 afa30004 sw 4(r29),r3 12195 0000aae8 8fdf0000 lw r31,(r30) 12196 0000aaec 8fe10008 lw r1,8(r31) 12197 0000aaf0 8c210008 lw r1,8(r1) 12198 0000aaf4 6c210000 sgti r1,r1,#0 12199 0000aaf8 1020002c beqz r1,L44_LF9 12200 0000aafc 54000000 nop; not filled. 12201 0000ab00 8fe10004 lw r1,4(r31) 12202 0000ab04 8fe30000 lw r3,(r31) 12203 0000ab08 ac230000 sw (r1),r3 12204 0000ab0c 8fe10000 lw r1,(r31) 12205 0000ab10 8fe30004 lw r3,4(r31) 12206 0000ab14 ac230004 sw 4(r1),r3 12207 0000ab18 8fe20008 lw r2,8(r31) 12208 0000ab1c 8c410008 lw r1,8(r2) 12209 0000ab20 2021ffff addi r1,r1,#-1 12210 0000ab24 ac410008 sw 8(r2),r1 12211 0000ab28 L44_LF9: 12212 0000ab28 20030000 addi r3,r0,#0 12213 0000ab2c afe30000 sw (r31),r3 12214 0000ab30 8fa20000 lw r2,0(r29) 12215 0000ab34 8fa30004 lw r3,4(r29) 12216 0000ab38 8fdffff8 lw r31,-8(r30) 12217 0000ab3c 001ee820 add r29,r0,r30 12218 0000ab40 8fdefffc lw r30,-4(r30) 12219 0000ab44 4be00000 jr r31 12220 0000ab48 54000000 nop 12221 0000ab4c .endproc _QueueRemove 12222 0000ab4c .align 2 12223 0000ab4c .proc _QueueLength 12224 0000ab4c .global _QueueLength 12225 0000ab4c _QueueLength: 12226 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 12227 0000ab4c afbefffc sw -4(r29),r30; push fp 12228 0000ab50 001df020 add r30,r0,r29; fp = sp 12229 0000ab54 afbffff8 sw -8(r29),r31; push ret addr 12230 0000ab58 2fbd0008 subui r29,r29,#8; alloc local storage 12231 0000ab5c 8fc10000 lw r1,(r30) 12232 0000ab60 8c210008 lw r1,8(r1) 12233 0000ab64 8fdffff8 lw r31,-8(r30) 12234 0000ab68 001ee820 add r29,r0,r30 12235 0000ab6c 8fdefffc lw r30,-4(r30) 12236 0000ab70 4be00000 jr r31 12237 0000ab74 54000000 nop 12238 0000ab78 .endproc _QueueLength 12239 0000ab78 .align 2 12240 0000ab78 .proc _QueueEmpty 12241 0000ab78 .global _QueueEmpty 12242 0000ab78 _QueueEmpty: 12243 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 12244 0000ab78 afbefffc sw -4(r29),r30; push fp 12245 0000ab7c 001df020 add r30,r0,r29; fp = sp 12246 0000ab80 afbffff8 sw -8(r29),r31; push ret addr 12247 0000ab84 2fbd0008 subui r29,r29,#8; alloc local storage 12248 0000ab88 8fc10000 lw r1,(r30) 12249 0000ab8c 8c210008 lw r1,8(r1) 12250 0000ab90 60210000 seqi r1,r1,#0 12251 0000ab94 8fdffff8 lw r31,-8(r30) 12252 0000ab98 001ee820 add r29,r0,r30 12253 0000ab9c 8fdefffc lw r30,-4(r30) 12254 0000aba0 4be00000 jr r31 12255 0000aba4 54000000 nop 12256 0000aba8 .endproc _QueueEmpty 12257 0000aba8 .data 12258 00012c8b .align 2 12259 00012c8c LC0_LF9: 12260 00012c8c 50726f63 .ascii "Process #\000" 12260 00012c90 65737320 12260 00012c94 2300 12261 00012c96 .align 2 12262 00012c98 LC1_LF9: 12263 00012c98 52756e6e .ascii "Running process %d (iteration %d)!\n\000" 12263 00012c9c 696e6720 12263 00012ca0 70726f63 12263 00012ca4 65737320 12263 00012ca8 25642028 12263 00012cac 69746572 12263 00012cb0 6174696f 12263 00012cb4 6e202564 12263 00012cb8 29210a00 12264 00012cbc .text 12265 0000aba8 .align 2 12266 0000aba8 .proc _doSomething_LF9 12267 0000aba8 _doSomething_LF9: 12268 ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. 12269 0000aba8 afbefffc sw -4(r29),r30; push fp 12270 0000abac 001df020 add r30,r0,r29; fp = sp 12271 0000abb0 afbffff8 sw -8(r29),r31; push ret addr 12272 0000abb4 2fbd0078 subui r29,r29,#120; alloc local storage 12273 0000abb8 afa20000 sw 0(r29),r2 12274 0000abbc afa30004 sw 4(r29),r3 12275 0000abc0 afa40008 sw 8(r29),r4 12276 0000abc4 afa5000c sw 12(r29),r5 12277 0000abc8 afa60010 sw 16(r29),r6 12278 0000abcc afa70014 sw 20(r29),r7 12279 0000abd0 afa80018 sw 24(r29),r8 12280 0000abd4 8fc60000 lw r6,(r30) 12281 0000abd8 2001000a addi r1,r0,#10 12282 0000abdc 00c00035 movi2fp f0,r6 12283 0000abe0 00200835 movi2fp f1,r1 12284 0000abe4 0401000f div f0,f0,f1 12285 0000abe8 00001034 movfp2i r2,f0 12286 0000abec 50410002 slli r1,r2,#0x2 12287 0000abf0 00220820 add r1,r1,r2 12288 0000abf4 50210001 slli r1,r1,#0x1 12289 0000abf8 00c13822 sub r7,r6,r1 12290 0000abfc 70c10063 slei r1,r6,#99 12291 0000ac00 102000dc beqz r1,L52_LF9 12292 0000ac04 54000000 nop; not filled. 12293 0000ac08 23bdfff8 addi r29,r29,#-8 12294 0000ac0c 50e10002 slli r1,r7,#0x2 12295 0000ac10 00270820 add r1,r1,r7 12296 0000ac14 50210002 slli r1,r1,#0x2 12297 0000ac18 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12298 0000ac1c 25082d30 addui r8,r8,(_mysems_LF9)&0xffff 12299 0000ac20 00280820 add r1,r1,r8 12300 0000ac24 afa10000 sw (r29),r1 12301 0000ac28 20080001 addi r8,r0,#1 12302 0000ac2c afa80004 sw 4(r29),r8 12303 0000ac30 0fffdc34 jal _SemInit 12304 0000ac34 54000000 nop; not filled. 12305 0000ac38 20030001 addi r3,r0,#1 12306 0000ac3c 23bd0008 addi r29,r29,#8 12307 0000ac40 23c4ffd0 addi r4,r30,#-48 12308 0000ac44 23c5ffa8 addi r5,r30,#-88 12309 0000ac48 00061020 add r2,r0,r6 12310 0000ac4c L56_LF9: 12311 0000ac4c 23bdfff8 addi r29,r29,#-8 12312 0000ac50 afa40000 sw (r29),r4 12313 0000ac54 3c080001 lhi r8,((LC0_LF9)>>16)&0xffff 12314 0000ac58 25082c8c addui r8,r8,(LC0_LF9)&0xffff 12315 0000ac5c afa80004 sw 4(r29),r8 12316 0000ac60 0fff8d10 jal _dstrcpy 12317 0000ac64 54000000 nop; not filled. 12318 0000ac68 afa30000 sw (r29),r3 12319 0000ac6c afa50004 sw 4(r29),r5 12320 0000ac70 0fff923c jal _ditoa 12321 0000ac74 54000000 nop; not filled. 12322 0000ac78 afa40000 sw (r29),r4 12323 0000ac7c afa50004 sw 4(r29),r5 12324 0000ac80 0fff8de0 jal _dstrcat 12325 0000ac84 54000000 nop; not filled. 12326 0000ac88 23bdfff8 addi r29,r29,#-8 12327 0000ac8c 3c080000 lhi r8,((_doSomething_LF9)>>16)&0xffff 12328 0000ac90 2508aba8 addui r8,r8,(_doSomething_LF9)&0xffff 12329 0000ac94 afa80000 sw (r29),r8 12330 0000ac98 50410005 slli r1,r2,#0x5 12331 0000ac9c 00220822 sub r1,r1,r2 12332 0000aca0 50210002 slli r1,r1,#0x2 12333 0000aca4 00220820 add r1,r1,r2 12334 0000aca8 50210003 slli r1,r1,#0x3 12335 0000acac 00260820 add r1,r1,r6 12336 0000acb0 afa10004 sw 4(r29),r1 12337 0000acb4 afa40008 sw 8(r29),r4 12338 0000acb8 20080000 addi r8,r0,#0 12339 0000acbc afa8000c sw 12(r29),r8 12340 0000acc0 0fffa908 jal _ProcessFork 12341 0000acc4 54000000 nop; not filled. 12342 0000acc8 23bd0010 addi r29,r29,#16 12343 0000accc 00461020 add r2,r2,r6 12344 0000acd0 20630001 addi r3,r3,#1 12345 0000acd4 70610006 slei r1,r3,#6 12346 0000acd8 1420ff70 bnez r1,L56_LF9 12347 0000acdc 54000000 nop; not filled. 12348 0000ace0 L52_LF9: 12349 0000ace0 23bdfff8 addi r29,r29,#-8 12350 0000ace4 50e10002 slli r1,r7,#0x2 12351 0000ace8 00270820 add r1,r1,r7 12352 0000acec 50210002 slli r1,r1,#0x2 12353 0000acf0 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12354 0000acf4 25082d30 addui r8,r8,(_mysems_LF9)&0xffff 12355 0000acf8 00280820 add r1,r1,r8 12356 0000acfc afa10000 sw (r29),r1 12357 0000ad00 0fffdcc0 jal _SemWait 12358 0000ad04 54000000 nop; not filled. 12359 0000ad08 20030000 addi r3,r0,#0 12360 0000ad0c 23bd0008 addi r29,r29,#8 12361 0000ad10 50c20001 slli r2,r6,#0x1 12362 0000ad14 0062082a slt r1,r3,r2 12363 0000ad18 10200070 beqz r1,L59_LF9 12364 0000ad1c 54000000 nop; not filled. 12365 0000ad20 200503e8 addi r5,r0,#1000 12366 0000ad24 00022020 add r4,r0,r2 12367 0000ad28 L61_LF9: 12368 0000ad28 00600035 movi2fp f0,r3 12369 0000ad2c 00a00835 movi2fp f1,r5 12370 0000ad30 0401000f div f0,f0,f1 12371 0000ad34 00001034 movfp2i r2,f0 12372 0000ad38 50410005 slli r1,r2,#0x5 12373 0000ad3c 00220822 sub r1,r1,r2 12374 0000ad40 50210002 slli r1,r1,#0x2 12375 0000ad44 00220820 add r1,r1,r2 12376 0000ad48 50210003 slli r1,r1,#0x3 12377 0000ad4c 00610829 sne r1,r3,r1 12378 0000ad50 14200028 bnez r1,L62_LF9 12379 0000ad54 54000000 nop; not filled. 12380 0000ad58 23bdfff0 addi r29,r29,#-16 12381 0000ad5c 3c080001 lhi r8,((LC1_LF9)>>16)&0xffff 12382 0000ad60 25082c98 addui r8,r8,(LC1_LF9)&0xffff 12383 0000ad64 afa80000 sw (r29),r8 12384 0000ad68 afa60004 sw 4(r29),r6 12385 0000ad6c afa30008 sw 8(r29),r3 12386 0000ad70 0c000278 jal _printf 12387 0000ad74 54000000 nop; not filled. 12388 0000ad78 23bd0010 addi r29,r29,#16 12389 0000ad7c L62_LF9: 12390 0000ad7c 20630001 addi r3,r3,#1 12391 0000ad80 0064082a slt r1,r3,r4 12392 0000ad84 1420ffa0 bnez r1,L61_LF9 12393 0000ad88 54000000 nop; not filled. 12394 0000ad8c L59_LF9: 12395 0000ad8c 23bdfff8 addi r29,r29,#-8 12396 0000ad90 50e10002 slli r1,r7,#0x2 12397 0000ad94 00270820 add r1,r1,r7 12398 0000ad98 50210002 slli r1,r1,#0x2 12399 0000ad9c 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12400 0000ada0 25082d30 addui r8,r8,(_mysems_LF9)&0xffff 12401 0000ada4 00280820 add r1,r1,r8 12402 0000ada8 afa10000 sw (r29),r1 12403 0000adac 0fffdf24 jal _SemSignal 12404 0000adb0 54000000 nop; not filled. 12405 0000adb4 23bd0008 addi r29,r29,#8 12406 0000adb8 8fa20000 lw r2,0(r29) 12407 0000adbc 8fa30004 lw r3,4(r29) 12408 0000adc0 8fa40008 lw r4,8(r29) 12409 0000adc4 8fa5000c lw r5,12(r29) 12410 0000adc8 8fa60010 lw r6,16(r29) 12411 0000adcc 8fa70014 lw r7,20(r29) 12412 0000add0 8fa80018 lw r8,24(r29) 12413 0000add4 8fdffff8 lw r31,-8(r30) 12414 0000add8 001ee820 add r29,r0,r30 12415 0000addc 8fdefffc lw r30,-4(r30) 12416 0000ade0 4be00000 jr r31 12417 0000ade4 54000000 nop 12418 0000ade8 .endproc _doSomething_LF9 12419 0000ade8 .data 12420 00012cbc .align 2 12421 00012cbc LC2_LF9: 12422 00012cbc 63686173 .ascii "chasetail\000" 12422 00012cc0 65746169 12422 00012cc4 6c00 12423 00012cc6 .align 2 12424 00012cc8 LC3_LF9: 12425 00012cc8 43686173 .ascii "Chasing tail %d.\n\000" 12425 00012ccc 696e6720 12425 00012cd0 7461696c 12425 00012cd4 2025642e 12425 00012cd8 0a00 12426 00012cda .align 2 12427 00012cdc LC4_LF9: 12428 00012cdc 4f70656e .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" 12428 00012ce0 206f6620 12428 00012ce4 2825732c 12428 00012ce8 30782578 12428 00012cec 29207265 12428 00012cf0 7475726e 12428 00012cf4 73203078 12428 00012cf8 25782e0a 12428 00012cfc 00 12429 00012cfd .align 2 12430 00012d00 LC5_LF9: 12431 00012d00 43686173 .ascii "ChaseTail\000" 12431 00012d04 65546169 12431 00012d08 6c00 12432 00012d0a .text 12433 0000ade8 .align 2 12434 0000ade8 .proc _chaseTail_LF9 12435 0000ade8 _chaseTail_LF9: 12436 ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. 12437 0000ade8 afbefffc sw -4(r29),r30; push fp 12438 0000adec 001df020 add r30,r0,r29; fp = sp 12439 0000adf0 afbffff8 sw -8(r29),r31; push ret addr 12440 0000adf4 2fbd0018 subui r29,r29,#24; alloc local storage 12441 0000adf8 afa20000 sw 0(r29),r2 12442 0000adfc afa30004 sw 4(r29),r3 12443 0000ae00 afa40008 sw 8(r29),r4 12444 0000ae04 afa5000c sw 12(r29),r5 12445 0000ae08 8fc40000 lw r4,(r30) 12446 0000ae0c 3c030001 lhi r3,((LC2_LF9)>>16)&0xffff 12447 0000ae10 24632cbc addui r3,r3,(LC2_LF9)&0xffff 12448 0000ae14 23bdfff8 addi r29,r29,#-8 12449 0000ae18 3c050001 lhi r5,((LC3_LF9)>>16)&0xffff 12450 0000ae1c 24a52cc8 addui r5,r5,(LC3_LF9)&0xffff 12451 0000ae20 afa50000 sw (r29),r5 12452 0000ae24 afa40004 sw 4(r29),r4 12453 0000ae28 0c0001c0 jal _printf 12454 0000ae2c 54000000 nop; not filled. 12455 0000ae30 afa30000 sw (r29),r3 12456 0000ae34 20822000 addi r2,r4,#8192 12457 0000ae38 afa20004 sw 4(r29),r2 12458 0000ae3c 0c000158 jal _Open 12459 0000ae40 54000000 nop; not filled. 12460 0000ae44 23bdfff8 addi r29,r29,#-8 12461 0000ae48 3c050001 lhi r5,((LC4_LF9)>>16)&0xffff 12462 0000ae4c 24a52cdc addui r5,r5,(LC4_LF9)&0xffff 12463 0000ae50 afa50000 sw (r29),r5 12464 0000ae54 afa30004 sw 4(r29),r3 12465 0000ae58 afa20008 sw 8(r29),r2 12466 0000ae5c afa1000c sw 12(r29),r1 12467 0000ae60 0c000188 jal _printf 12468 0000ae64 54000000 nop; not filled. 12469 0000ae68 23bd0010 addi r29,r29,#16 12470 0000ae6c 70810027 slei r1,r4,#39 12471 0000ae70 1020003c beqz r1,L67_LF9 12472 0000ae74 54000000 nop; not filled. 12473 0000ae78 23bdfff0 addi r29,r29,#-16 12474 0000ae7c 3c050000 lhi r5,((_chaseTail_LF9)>>16)&0xffff 12475 0000ae80 24a5ade8 addui r5,r5,(_chaseTail_LF9)&0xffff 12476 0000ae84 afa50000 sw (r29),r5 12477 0000ae88 20810001 addi r1,r4,#1 12478 0000ae8c afa10004 sw 4(r29),r1 12479 0000ae90 3c050001 lhi r5,((LC5_LF9)>>16)&0xffff 12480 0000ae94 24a52d00 addui r5,r5,(LC5_LF9)&0xffff 12481 0000ae98 afa50008 sw 8(r29),r5 12482 0000ae9c 20050000 addi r5,r0,#0 12483 0000aea0 afa5000c sw 12(r29),r5 12484 0000aea4 0fffa724 jal _ProcessFork 12485 0000aea8 54000000 nop; not filled. 12486 0000aeac 23bd0010 addi r29,r29,#16 12487 0000aeb0 L67_LF9: 12488 0000aeb0 8fa20000 lw r2,0(r29) 12489 0000aeb4 8fa30004 lw r3,4(r29) 12490 0000aeb8 8fa40008 lw r4,8(r29) 12491 0000aebc 8fa5000c lw r5,12(r29) 12492 0000aec0 8fdffff8 lw r31,-8(r30) 12493 0000aec4 001ee820 add r29,r0,r30 12494 0000aec8 8fdefffc lw r30,-4(r30) 12495 0000aecc 4be00000 jr r31 12496 0000aed0 54000000 nop 12497 0000aed4 .endproc _chaseTail_LF9 12498 0000aed4 .data 12499 00012d0a .align 2 12500 00012d0c LC6_LF9: 12501 00012d0c 25642000 .ascii "%d \000" 12502 00012d10 .align 2 12503 00012d10 LC7_LF9: 12504 00012d10 52616e64 .ascii "Random number %02i is 0x%08x.\n\000" 12504 00012d14 6f6d206e 12504 00012d18 756d6265 12504 00012d1c 72202530 12504 00012d20 32692069 12504 00012d24 73203078 12504 00012d28 25303878 12504 00012d2c 2e0a00 12505 00012d2f .text 12506 0000aed4 .align 2 12507 0000aed4 .proc _SysprocCreateProcesses 12508 0000aed4 .global _SysprocCreateProcesses 12509 0000aed4 _SysprocCreateProcesses: 12510 ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. 12511 0000aed4 afbefffc sw -4(r29),r30; push fp 12512 0000aed8 001df020 add r30,r0,r29; fp = sp 12513 0000aedc afbffff8 sw -8(r29),r31; push ret addr 12514 0000aee0 2fbd0018 subui r29,r29,#24; alloc local storage 12515 0000aee4 afa20000 sw 0(r29),r2 12516 0000aee8 afa30004 sw 4(r29),r3 12517 0000aeec afa40008 sw 8(r29),r4 12518 0000aef0 3c020001 lhi r2,((_mysems_LF9)>>16)&0xffff 12519 0000aef4 24422d30 addui r2,r2,(_mysems_LF9)&0xffff 12520 0000aef8 204300b4 addi r3,r2,#180 12521 0000aefc L90_LF9: 12522 0000aefc 23bdfff8 addi r29,r29,#-8 12523 0000af00 afa20000 sw (r29),r2 12524 0000af04 20040001 addi r4,r0,#1 12525 0000af08 afa40004 sw 4(r29),r4 12526 0000af0c 0fffd958 jal _SemInit 12527 0000af10 54000000 nop; not filled. 12528 0000af14 23bd0008 addi r29,r29,#8 12529 0000af18 20420014 addi r2,r2,#20 12530 0000af1c 0043082c sle r1,r2,r3 12531 0000af20 1420ffd8 bnez r1,L90_LF9 12532 0000af24 54000000 nop; not filled. 12533 0000af28 8fa20000 lw r2,0(r29) 12534 0000af2c 8fa30004 lw r3,4(r29) 12535 0000af30 8fa40008 lw r4,8(r29) 12536 0000af34 8fdffff8 lw r31,-8(r30) 12537 0000af38 001ee820 add r29,r0,r30 12538 0000af3c 8fdefffc lw r30,-4(r30) 12539 0000af40 4be00000 jr r31 12540 0000af44 54000000 nop 12541 0000af48 .endproc _SysprocCreateProcesses 12542 0000af48 .data 12543 00012d2f .align 2 12544 00012d30 _mysems_LF9: 12545 00012d30 .space 200 12546 ;;; This file just includes a single variable that contains the last address 12547 ;;; in the operating system. The rest of memory is available for use by 12548 ;;; processes. 12550 00012df8 .align 2 12551 00012df8 .global _lastosaddress 12552 00012df8 _lastosaddress: 12553 00012df8 00012e00 .word _lastosaddress+8 12554 ;;; Ethan L. Miller, 1999. Released to the public domain 12555 ;;; 12556 ;;; Most of the traps are called in files from libtraps. 12558 00012dfc .text 12559 0000af48 .align 2 12560 0000af48 .proc _exit 12561 0000af48 .global _exit 12562 0000af48 _exit: 12563 0000af48 44000300 trap #0x300 12564 0000af4c 4be00000 jr r31 12565 0000af50 54000000 nop 12566 0000af54 .endproc _exit 12568 ; for the benefit of gcc. 12569 0000af54 .proc ___main 12570 0000af54 .global ___main 12571 0000af54 ___main: 12572 0000af54 4be00000 jr r31 12573 0000af58 54000000 nop 12574 0000af5c .endproc ___main 12575 ;;; 12576 ;;; Stub functions for DLX traps. 12577 ;;; 12578 ;;; Ethan L. Miller, 1999. Released to the public domain. 12579 ;;; 12580 ;;; There are two sets of traps here. The traps such as Open and Close 12581 ;;; (note the capital letters) are for use by user programs. The traps 12582 ;;; with names such as open and close (lower case) are for use by the OS. 12583 ;;; 12586 0000af5c .align 2 12587 0000af5c .proc _open 12588 0000af5c .global _open 12589 0000af5c _open: 12590 0000af5c 44002013 trap #0x2013 12591 0000af60 4be00000 jr r31 12592 0000af64 54000000 nop 12593 0000af68 .endproc _open 12595 0000af68 .proc _close 12596 0000af68 .global _close 12597 0000af68 _close: 12598 0000af68 44002014 trap #0x2014 12599 0000af6c 4be00000 jr r31 12600 0000af70 54000000 nop 12601 0000af74 .endproc _close 12603 0000af74 .proc _read 12604 0000af74 .global _read 12605 0000af74 _read: 12606 0000af74 44002010 trap #0x2010 12607 0000af78 4be00000 jr r31 12608 0000af7c 54000000 nop 12609 0000af80 .endproc _read 12611 0000af80 .proc _write 12612 0000af80 .global _write 12613 0000af80 _write: 12614 0000af80 44002011 trap #0x2011 12615 0000af84 4be00000 jr r31 12616 0000af88 54000000 nop 12617 0000af8c .endproc _write 12619 0000af8c .proc _lseek 12620 0000af8c .global _lseek 12621 0000af8c _lseek: 12622 0000af8c 44002012 trap #0x2012 12623 0000af90 4be00000 jr r31 12624 0000af94 54000000 nop 12625 0000af98 .endproc _lseek 12627 ;;; The following are the traps to be used by user-level programs 12628 ;;; 12630 0000af98 .align 2 12631 0000af98 .proc _Open 12632 0000af98 .global _Open 12633 0000af98 _Open: 12634 0000af98 44000213 trap #0x213 12635 0000af9c 4be00000 jr r31 12636 0000afa0 54000000 nop 12637 0000afa4 .endproc _Open 12639 0000afa4 .proc _Close 12640 0000afa4 .global _Close 12641 0000afa4 _Close: 12642 0000afa4 44000214 trap #0x214 12643 0000afa8 4be00000 jr r31 12644 0000afac 54000000 nop 12645 0000afb0 .endproc _Close 12647 0000afb0 .proc _Read 12648 0000afb0 .global _Read 12649 0000afb0 _Read: 12650 0000afb0 44000210 trap #0x210 12651 0000afb4 4be00000 jr r31 12652 0000afb8 54000000 nop 12653 0000afbc .endproc _Read 12655 0000afbc .proc _Write 12656 0000afbc .global _Write 12657 0000afbc _Write: 12658 0000afbc 44000211 trap #0x211 12659 0000afc0 4be00000 jr r31 12660 0000afc4 54000000 nop 12661 0000afc8 .endproc _Write 12663 0000afc8 .proc _Lseek 12664 0000afc8 .global _Lseek 12665 0000afc8 _Lseek: 12666 0000afc8 44000212 trap #0x212 12667 0000afcc 4be00000 jr r31 12668 0000afd0 54000000 nop 12669 0000afd4 .endproc _Lseek 12671 ;;; 12672 ;;; Stub functions for DLX traps. 12673 ;;; 12674 ;;; Ethan L. Miller, 1999. Released to the public domain. 12675 ;;; 12676 ;;; There are two exit traps. The first, _exitsim, actually exits the 12677 ;;; simulator. The second, _exit, simply calls a regular trap in the 12678 ;;; DLX simulator, and would be suitable for a user program that wants 12679 ;;; to signal the OS that it's exiting. 12680 ;;; 12681 ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and 12682 ;;; programs run without an OS - should call exitsim() rather than just 12683 ;;; falling through to exit. 12684 ;;; 12687 0000afd4 .align 2 12688 0000afd4 .proc _exitsim 12689 0000afd4 .global _exitsim 12690 0000afd4 _exitsim: 12691 0000afd4 44002f00 trap #0x2f00 12692 0000afd8 4be00000 jr r31 12693 0000afdc 54000000 nop 12694 0000afe0 .endproc _exitsim 12696 0000afe0 .proc _exit 12697 0000afe0 .global _exit 12698 0000afe0 _exit: 12699 0000afe0 44000300 trap #0x300 12700 0000afe4 4be00000 jr r31 12701 0000afe8 54000000 nop 12702 0000afec .endproc _exit 12704 ; 12705 ; Stub functions for DLX traps. 12706 ; 12707 ; Aaron Sawdey 1996; released to the Public Domain. 12708 ; 12710 0000afec .proc _printf 12711 0000afec .global _printf 12712 0000afec _printf: 12713 0000afec 44002001 trap #0x2001 12714 0000aff0 4be00000 jr r31 12715 0000aff4 54000000 nop 12716 0000aff8 .endproc _printf 12718 0000aff8 .text 12719 0000aff8 .global _etext 12720 0000aff8 _etext: 12721 0000aff8 .align 3 12722 0000aff8 .data 12723 00012dfc .global _edata 12724 00012dfc _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/queue.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool)>>16)&0xffff addui r2,r2,(_linkpool)&0xffff L63: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1: .ascii "%s: %s\n\000" .align 2 LC2: .ascii "QueueFreeLink\000" .align 2 LC3: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC2)>>16)&0xffff addui r1,r1,(LC2)&0xffff sw 4(r29),r1 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L77: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4: .ascii "QueueAllocLink\000" .align 2 LC5: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97: addi r4,r0,#0 sw (r3),r4 j L98 nop ; not filled. L92: addi r3,r0,#0 L98: snei r1,r3,#0 bnez r1,L100 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC4)>>16)&0xffff addui r1,r1,(LC4)&0xffff sw 4(r29),r1 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L100: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool: .space 6400

home/bshapir/cs314/project4/option1/lab4_1/src/usertraps.o

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

home/bshapir/cs314/project4/option1/lab4_1/src/syscall.h

// // syscall.h // // This file declares all of the system calls available as builtins // in the simulator. // #ifndef _syscall_h_ #define _syscall_h_ extern int open(const char *, int); extern int read(int, char *, int); extern int write(int, char *, int); extern int lseek(int, int, int); extern int close(int); #endif // _syscall_h_

home/bshapir/cs314/project4/option1/lab4_1/src/userprog.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 116 ; Text size: 3060 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\nTesting case %d\n\000" .align 2 LC1_LF0: .ascii "\nUsage: \000" .align 2 LC2_LF0: .ascii " [case id]\n\n\000" .align 2 LC3_LF0: .ascii "userprog1.dlx.obj\000" .align 2 LC4_LF0: .ascii "userprog2.dlx.obj\000" .align 2 LC5_LF0: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop; not filled. seqi r1,r2,#2 beqz r1,L14_LF0 nop; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop; not filled. add r2,r0,r1 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. addi r29,r29,#16 j L12_LF0 nop; not filled. L14_LF0: addi r29,r29,#-8 lhi r4,((LC1_LF0)>>16)&0xffff addui r4,r4,(LC1_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop; not filled. lhi r4,((LC2_LF0)>>16)&0xffff addui r4,r4,(LC2_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. jal _exit nop; not filled. L12_LF0: seqi r1,r2,#1 bnez r1,L17_LF0 nop; not filled. seqi r1,r2,#2 beqz r1,L19_LF0 nop; not filled. j L18_LF0 nop; not filled. L17_LF0: addi r29,r29,#-8 lhi r4,((LC3_LF0)>>16)&0xffff addui r4,r4,(LC3_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L18_LF0: addi r29,r29,#-8 lhi r4,((LC4_LF0)>>16)&0xffff addui r4,r4,(LC4_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L19_LF0: addi r29,r29,#-8 lhi r4,((LC5_LF0)>>16)&0xffff addui r4,r4,(LC5_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. L21_LF0: addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/queue.h

// // queue.h // // Definitions for routines used to manage queues. The queues are // doubly-linked lists so it's easier to add and remove from them. // Also, the links themselves have pointers to objects so that objects // may be on more than one queue. // #ifndef _queue_h_ #define _queue_h_ #ifndef NULL #define NULL ((void *)0) #endif #define QUEUE_MAX_LINKS 400 typedef struct Link { struct Link *next; struct Link *prev; struct Queue *queue; void *object; } Link; typedef struct Queue { struct Link *first; struct Link *last; int nitems; } Queue; inline void QueueLinkInit (Link *l, void *obj) { l->next = NULL; l->object = obj; } inline Link * QueueNext (Link *l) { return (l->next); } inline Link * QueuePrev (Link *l) { return (l->prev); } inline Link * QueueFirst (Queue *q) { return (q->first); } inline Link * QueueLast (Queue *q) { return (q->last); } inline void QueueInsertAfter (Queue *q, Link *after, Link *l) { l->queue = q; l->prev = after; l->next = after->next; after->next = l; l->next->prev = l; q->nitems += 1; } inline void QueueInsertFirst (Queue *q, Link *l) { QueueInsertAfter (q, (Link *)q, l); } inline void QueueInsertLast (Queue *q, Link *l) { QueueInsertAfter (q, QueueLast(q), l); } inline void QueueRemove (Link *l) { if (l->queue->nitems > 0) { l->prev->next = l->next; l->next->prev = l->prev; l->queue->nitems -= 1; } l->next = NULL; } inline int QueueLength (Queue *q) { return (q->nitems); } inline int QueueEmpty (Queue *q) { return (QueueLength (q) == 0); } extern void QueueModuleInit (); extern void QueueFreeLink (Link *l); extern Link *QueueAllocLink (); extern void QueueInit (Queue *q); #endif // _queue_h_

home/bshapir/cs314/project4/option1/lab4_1/src/trap_random.o

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

home/bshapir/cs314/project4/option1/lab4_1/src/userprog1.c

/* This test program touches a character pointer in 12 different pages.. This will generate 12 page faults and the output should display as Sum = 66. */ main() { int i, sem; char Sum=0; char * charPtr=(char *)0x7000 ; for(i=0;i<12;i++) *(charPtr + 8192*i)=(char )i; for(i=0;i<12;i++) Sum+= *(charPtr + 8192 * i); Printf("\n\nIn Userprog1, Sum : %d\n\n",Sum); }

home/bshapir/cs314/project4/option1/lab4_1/src/userprog1.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 27 4 ; Text size: 2864 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a0a496e .ascii "\n\nIn Userprog1, Sum : %d\n\n\000" 12 00002004 20557365 12 00002008 7270726f 12 0000200c 67312c20 12 00002010 53756d20 12 00002014 3a202564 12 00002018 0a0a00 13 0000201b .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 0 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 23 00001010 0c000b14 jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20030000 addi r3,r0,(#0x0)&0xff 26 0000101c 201f0000 addi r31,r0,#0 27 00001020 20027000 addi r2,r0,#28672 28 00001024 L16_LF0: 29 00001024 a05f0000 sb (r2),r31 30 00001028 20422000 addi r2,r2,#8192 31 0000102c 23ff0001 addi r31,r31,#1 32 00001030 73e1000b slei r1,r31,#11 33 00001034 1420ffec bnez r1,L16_LF0 34 00001038 54000000 nop; not filled. 35 0000103c 201f7000 addi r31,r0,#28672 36 00001040 3c040001 lhi r4,#1 37 00001044 24846000 addui r4,r4,#24576 38 00001048 03e41020 add r2,r31,r4 39 0000104c L21_LF0: 40 0000104c 83e40000 lb r4,(r31) 41 00001050 00831820 add r3,r4,r3 42 00001054 23ff2000 addi r31,r31,#8192 43 00001058 03e2082c sle r1,r31,r2 44 0000105c 1420ffec bnez r1,L21_LF0 45 00001060 54000000 nop; not filled. 46 00001064 23bdfff8 addi r29,r29,#-8 47 00001068 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 48 0000106c 24842000 addui r4,r4,(LC0_LF0)&0xffff 49 00001070 afa40000 sw (r29),r4 50 00001074 306100ff andi r1,r3,#0x00ff 51 00001078 afa10004 sw 4(r29),r1 52 0000107c 0c000058 jal _Printf 53 00001080 54000000 nop; not filled. 54 00001084 23bd0008 addi r29,r29,#8 55 00001088 0c000a90 jal _exit 56 0000108c 54000000 nop 57 00001090 .endproc _main 58 ;;; 59 ;;; Stub functions for DLX traps. 60 ;;; 61 ;;; Ethan L. Miller, 1999. Released to the public domain. 62 ;;; 63 ;;; The traps such as Open and Close 64 ;;; (note the capital letters) are for use by user programs. The traps 65 ;;; with names such as open and close (lower case) are for use by the OS. 66 ;;; 69 00001090 .align 2 71 ;;; The following are the traps to be used by user-level programs 72 ;;; 74 00001090 .align 2 75 00001090 .proc _Open 76 00001090 .global _Open 77 00001090 _Open: 78 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 79 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 80 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 81 00001090 44000213 trap #0x213 82 00001094 4be00000 jr r31 83 00001098 54000000 nop 84 0000109c .endproc _Open 86 0000109c .proc _Close 87 0000109c .global _Close 88 0000109c _Close: 89 0000109c 44000214 trap #0x214 90 000010a0 4be00000 jr r31 91 000010a4 54000000 nop 92 000010a8 .endproc _Close 94 000010a8 .proc _Read 95 000010a8 .global _Read 96 000010a8 _Read: 97 000010a8 44000210 trap #0x210 98 000010ac 4be00000 jr r31 99 000010b0 54000000 nop 100 000010b4 .endproc _Read 102 000010b4 .proc _Write 103 000010b4 .global _Write 104 000010b4 _Write: 105 000010b4 44000211 trap #0x211 106 000010b8 4be00000 jr r31 107 000010bc 54000000 nop 108 000010c0 .endproc _Write 110 000010c0 .proc _Lseek 111 000010c0 .global _Lseek 112 000010c0 _Lseek: 113 000010c0 44000212 trap #0x212 114 000010c4 4be00000 jr r31 115 000010c8 54000000 nop 116 000010cc .endproc _Lseek 118 000010cc .proc _Putchar 119 000010cc .global _Putchar 120 000010cc _Putchar: 121 000010cc 44000280 trap #0x280 122 000010d0 4be00000 jr r31 123 000010d4 54000000 nop 124 000010d8 .endproc _Putchar 126 000010d8 .proc _Printf 127 000010d8 .global _Printf 128 000010d8 _Printf: 129 000010d8 44000201 trap #0x201 130 000010dc 4be00000 jr r31 131 000010e0 54000000 nop 132 000010e4 .endproc _Printf 134 000010e4 .proc _getpid 135 000010e4 .global _getpid 136 000010e4 _getpid: 137 000010e4 44000431 trap #0x431 138 000010e8 4be00000 jr r31 139 000010ec 54000000 nop 140 000010f0 .endproc _getpid 142 000010f0 .proc _process_create 143 000010f0 .global _process_create 144 000010f0 _process_create: 145 000010f0 44000432 trap #0x432 146 000010f4 4be00000 jr r31 147 000010f8 54000000 nop 148 000010fc .endproc _process_create 151 000010fc .proc _sem_create 152 000010fc .global _sem_create 153 000010fc _sem_create: 154 000010fc 44000450 trap #0x450 155 00001100 4be00000 jr r31 156 00001104 54000000 nop 157 00001108 .endproc _sem_create 159 00001108 .proc _sem_wait 160 00001108 .global _sem_wait 161 00001108 _sem_wait: 162 00001108 44000451 trap #0x451 163 0000110c 4be00000 jr r31 164 00001110 54000000 nop 165 00001114 .endproc _sem_wait 167 00001114 .proc _sem_signal 168 00001114 .global _sem_signal 169 00001114 _sem_signal: 170 00001114 44000452 trap #0x452 171 00001118 4be00000 jr r31 172 0000111c 54000000 nop 173 00001120 .endproc _sem_signal 176 ; Compiled by GCC 178 00001120 .align 2 179 00001120 .proc _isspace 180 00001120 .global _isspace 181 00001120 _isspace: 182 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 183 00001120 afbefffc sw -4(r29),r30; push fp 184 00001124 001df020 add r30,r0,r29; fp = sp 185 00001128 afbffff8 sw -8(r29),r31; push ret addr 186 0000112c 2fbd0010 subui r29,r29,#16; alloc local storage 187 00001130 afa20000 sw 0(r29),r2 188 00001134 83c20003 lb r2,3(r30) 189 00001138 201f0000 addi r31,r0,#0 190 0000113c 304100ff andi r1,r2,#0x00ff 191 00001140 60210020 seqi r1,r1,#32 192 00001144 14200018 bnez r1,L6_LF2 193 00001148 54000000 nop; not filled. 194 0000114c 2041fff7 addi r1,r2,#-9 195 00001150 302100ff andi r1,r1,#0x00ff 196 00001154 70210001 sleui r1,r1,#1 197 00001158 10200008 beqz r1,L5_LF2 198 0000115c 54000000 nop; not filled. 199 00001160 L6_LF2: 200 00001160 201f0001 addi r31,r0,#1 201 00001164 L5_LF2: 202 00001164 001f0820 add r1,r0,r31 203 00001168 8fa20000 lw r2,0(r29) 204 0000116c 8fdffff8 lw r31,-8(r30) 205 00001170 001ee820 add r29,r0,r30 206 00001174 8fdefffc lw r30,-4(r30) 207 00001178 4be00000 jr r31 208 0000117c 54000000 nop 209 00001180 .endproc _isspace 210 00001180 .align 2 211 00001180 .proc _isxdigit 212 00001180 .global _isxdigit 213 00001180 _isxdigit: 214 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 215 00001180 afbefffc sw -4(r29),r30; push fp 216 00001184 001df020 add r30,r0,r29; fp = sp 217 00001188 afbffff8 sw -8(r29),r31; push ret addr 218 0000118c 2fbd0010 subui r29,r29,#16; alloc local storage 219 00001190 afa20000 sw 0(r29),r2 220 00001194 83df0003 lb r31,3(r30) 221 00001198 20020000 addi r2,r0,#0 222 0000119c 23e1ffd0 addi r1,r31,#-48 223 000011a0 302100ff andi r1,r1,#0x00ff 224 000011a4 70210009 sleui r1,r1,#9 225 000011a8 14200028 bnez r1,L12_LF2 226 000011ac 54000000 nop; not filled. 227 000011b0 23e1ff9f addi r1,r31,#-97 228 000011b4 302100ff andi r1,r1,#0x00ff 229 000011b8 70210005 sleui r1,r1,#5 230 000011bc 14200014 bnez r1,L12_LF2 231 000011c0 54000000 nop; not filled. 232 000011c4 33e100ff andi r1,r31,#0x00ff 233 000011c8 64210041 snei r1,r1,#65 234 000011cc 14200008 bnez r1,L11_LF2 235 000011d0 54000000 nop; not filled. 236 000011d4 L12_LF2: 237 000011d4 20020001 addi r2,r0,#1 238 000011d8 L11_LF2: 239 000011d8 00020820 add r1,r0,r2 240 000011dc 8fa20000 lw r2,0(r29) 241 000011e0 8fdffff8 lw r31,-8(r30) 242 000011e4 001ee820 add r29,r0,r30 243 000011e8 8fdefffc lw r30,-4(r30) 244 000011ec 4be00000 jr r31 245 000011f0 54000000 nop 246 000011f4 .endproc _isxdigit 247 000011f4 .align 2 248 000011f4 .proc _dstrcpy 249 000011f4 .global _dstrcpy 250 000011f4 _dstrcpy: 251 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 252 000011f4 afbefffc sw -4(r29),r30; push fp 253 000011f8 001df020 add r30,r0,r29; fp = sp 254 000011fc afbffff8 sw -8(r29),r31; push ret addr 255 00001200 2fbd0010 subui r29,r29,#16; alloc local storage 256 00001204 afa20000 sw 0(r29),r2 257 00001208 afa30004 sw 4(r29),r3 258 0000120c 8fdf0000 lw r31,(r30) 259 00001210 8fc20004 lw r2,4(r30) 260 00001214 001f1820 add r3,r0,r31 261 00001218 L19_LF2: 262 00001218 80410000 lb r1,(r2) 263 0000121c a3e10000 sb (r31),r1 264 00001220 20420001 addi r2,r2,#1 265 00001224 23ff0001 addi r31,r31,#1 266 00001228 302100ff andi r1,r1,#0x00ff 267 0000122c 64210000 snei r1,r1,#0 268 00001230 1420ffe4 bnez r1,L19_LF2 269 00001234 54000000 nop; not filled. 270 00001238 00030820 add r1,r0,r3 271 0000123c 8fa20000 lw r2,0(r29) 272 00001240 8fa30004 lw r3,4(r29) 273 00001244 8fdffff8 lw r31,-8(r30) 274 00001248 001ee820 add r29,r0,r30 275 0000124c 8fdefffc lw r30,-4(r30) 276 00001250 4be00000 jr r31 277 00001254 54000000 nop 278 00001258 .endproc _dstrcpy 279 00001258 .align 2 280 00001258 .proc _dstrncpy 281 00001258 .global _dstrncpy 282 00001258 _dstrncpy: 283 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 284 00001258 afbefffc sw -4(r29),r30; push fp 285 0000125c 001df020 add r30,r0,r29; fp = sp 286 00001260 afbffff8 sw -8(r29),r31; push ret addr 287 00001264 2fbd0018 subui r29,r29,#24; alloc local storage 288 00001268 afa20000 sw 0(r29),r2 289 0000126c afa30004 sw 4(r29),r3 290 00001270 afa40008 sw 8(r29),r4 291 00001274 8fc20000 lw r2,(r30) 292 00001278 8fc30004 lw r3,4(r30) 293 0000127c 8fdf0008 lw r31,8(r30) 294 00001280 00022020 add r4,r0,r2 295 00001284 08000024 j L37_LF2 296 00001288 54000000 nop; not filled. 297 0000128c L34_LF2: 298 0000128c 80610000 lb r1,(r3) 299 00001290 a0410000 sb (r2),r1 300 00001294 20630001 addi r3,r3,#1 301 00001298 20420001 addi r2,r2,#1 302 0000129c 302100ff andi r1,r1,#0x00ff 303 000012a0 64210000 snei r1,r1,#0 304 000012a4 10200018 beqz r1,L32_LF2 305 000012a8 54000000 nop; not filled. 306 000012ac L37_LF2: 307 000012ac 001f0820 add r1,r0,r31 308 000012b0 23ffffff addi r31,r31,#-1 309 000012b4 70210000 slei r1,r1,#0 310 000012b8 1020ffd0 beqz r1,L34_LF2 311 000012bc 54000000 nop; not filled. 312 000012c0 L32_LF2: 313 000012c0 00040820 add r1,r0,r4 314 000012c4 8fa20000 lw r2,0(r29) 315 000012c8 8fa30004 lw r3,4(r29) 316 000012cc 8fa40008 lw r4,8(r29) 317 000012d0 8fdffff8 lw r31,-8(r30) 318 000012d4 001ee820 add r29,r0,r30 319 000012d8 8fdefffc lw r30,-4(r30) 320 000012dc 4be00000 jr r31 321 000012e0 54000000 nop 322 000012e4 .endproc _dstrncpy 323 000012e4 .align 2 324 000012e4 .proc _dstrcat 325 000012e4 .global _dstrcat 326 000012e4 _dstrcat: 327 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 328 000012e4 afbefffc sw -4(r29),r30; push fp 329 000012e8 001df020 add r30,r0,r29; fp = sp 330 000012ec afbffff8 sw -8(r29),r31; push ret addr 331 000012f0 2fbd0010 subui r29,r29,#16; alloc local storage 332 000012f4 afa20000 sw 0(r29),r2 333 000012f8 afa30004 sw 4(r29),r3 334 000012fc 8fdf0000 lw r31,(r30) 335 00001300 001f1820 add r3,r0,r31 336 00001304 90610000 lbu r1,(r3) 337 00001308 64210000 snei r1,r1,#0 338 0000130c 10200018 beqz r1,L50_LF2 339 00001310 54000000 nop; not filled. 340 00001314 L51_LF2: 341 00001314 23ff0001 addi r31,r31,#1 342 00001318 93e10000 lbu r1,(r31) 343 0000131c 64210000 snei r1,r1,#0 344 00001320 1420fff0 bnez r1,L51_LF2 345 00001324 54000000 nop; not filled. 346 00001328 L50_LF2: 347 00001328 001f1020 add r2,r0,r31 348 0000132c 8fdf0004 lw r31,4(r30) 349 00001330 L54_LF2: 350 00001330 83e10000 lb r1,(r31) 351 00001334 a0410000 sb (r2),r1 352 00001338 23ff0001 addi r31,r31,#1 353 0000133c 20420001 addi r2,r2,#1 354 00001340 302100ff andi r1,r1,#0x00ff 355 00001344 64210000 snei r1,r1,#0 356 00001348 1420ffe4 bnez r1,L54_LF2 357 0000134c 54000000 nop; not filled. 358 00001350 00030820 add r1,r0,r3 359 00001354 8fa20000 lw r2,0(r29) 360 00001358 8fa30004 lw r3,4(r29) 361 0000135c 8fdffff8 lw r31,-8(r30) 362 00001360 001ee820 add r29,r0,r30 363 00001364 8fdefffc lw r30,-4(r30) 364 00001368 4be00000 jr r31 365 0000136c 54000000 nop 366 00001370 .endproc _dstrcat 367 00001370 .align 2 368 00001370 .proc _dstrncmp 369 00001370 .global _dstrncmp 370 00001370 _dstrncmp: 371 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 372 00001370 afbefffc sw -4(r29),r30; push fp 373 00001374 001df020 add r30,r0,r29; fp = sp 374 00001378 afbffff8 sw -8(r29),r31; push ret addr 375 0000137c 2fbd0018 subui r29,r29,#24; alloc local storage 376 00001380 afa20000 sw 0(r29),r2 377 00001384 afa30004 sw 4(r29),r3 378 00001388 afa40008 sw 8(r29),r4 379 0000138c afa5000c sw 12(r29),r5 380 00001390 8fc30000 lw r3,(r30) 381 00001394 8fc40004 lw r4,4(r30) 382 00001398 8fc50008 lw r5,8(r30) 383 0000139c 20020000 addi r2,r0,#0 384 000013a0 0045082a slt r1,r2,r5 385 000013a4 1020003c beqz r1,L73_LF2 386 000013a8 54000000 nop; not filled. 387 000013ac L75_LF2: 388 000013ac 909f0000 lbu r31,(r4) 389 000013b0 67e10000 snei r1,r31,#0 390 000013b4 10200038 beqz r1,L86_LF2 391 000013b8 54000000 nop; not filled. 392 000013bc 90610000 lbu r1,(r3) 393 000013c0 003f0829 sne r1,r1,r31 394 000013c4 1420001c bnez r1,L73_LF2 395 000013c8 54000000 nop; not filled. 396 000013cc 20630001 addi r3,r3,#1 397 000013d0 20840001 addi r4,r4,#1 398 000013d4 20420001 addi r2,r2,#1 399 000013d8 0045082a slt r1,r2,r5 400 000013dc 1420ffcc bnez r1,L75_LF2 401 000013e0 54000000 nop; not filled. 402 000013e4 L73_LF2: 403 000013e4 00450828 seq r1,r2,r5 404 000013e8 10200010 beqz r1,L80_LF2 405 000013ec 54000000 nop; not filled. 406 000013f0 L86_LF2: 407 000013f0 20010000 addi r1,r0,#0 408 000013f4 08000028 j L84_LF2 409 000013f8 54000000 nop; not filled. 410 000013fc L80_LF2: 411 000013fc 907f0000 lbu r31,(r3) 412 00001400 90830000 lbu r3,(r4) 413 00001404 03e30822 sub r1,r31,r3 414 00001408 74210000 sgei r1,r1,#0 415 0000140c 2002ffff addi r2,r0,#-1 416 00001410 10200008 beqz r1,L82_LF2 417 00001414 54000000 nop; not filled. 418 00001418 03e31029 sne r2,r31,r3 419 0000141c L82_LF2: 420 0000141c 00020820 add r1,r0,r2 421 00001420 L84_LF2: 422 00001420 8fa20000 lw r2,0(r29) 423 00001424 8fa30004 lw r3,4(r29) 424 00001428 8fa40008 lw r4,8(r29) 425 0000142c 8fa5000c lw r5,12(r29) 426 00001430 8fdffff8 lw r31,-8(r30) 427 00001434 001ee820 add r29,r0,r30 428 00001438 8fdefffc lw r30,-4(r30) 429 0000143c 4be00000 jr r31 430 00001440 54000000 nop 431 00001444 .endproc _dstrncmp 432 00001444 .align 2 433 00001444 .proc _dstrlen 434 00001444 .global _dstrlen 435 00001444 _dstrlen: 436 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 437 00001444 afbefffc sw -4(r29),r30; push fp 438 00001448 001df020 add r30,r0,r29; fp = sp 439 0000144c afbffff8 sw -8(r29),r31; push ret addr 440 00001450 2fbd0010 subui r29,r29,#16; alloc local storage 441 00001454 afa20000 sw 0(r29),r2 442 00001458 8fdf0000 lw r31,(r30) 443 0000145c 20020000 addi r2,r0,#0 444 00001460 08000008 j L97_LF2 445 00001464 54000000 nop; not filled. 446 00001468 L95_LF2: 447 00001468 20420001 addi r2,r2,#1 448 0000146c L97_LF2: 449 0000146c 93e10000 lbu r1,(r31) 450 00001470 23ff0001 addi r31,r31,#1 451 00001474 64210000 snei r1,r1,#0 452 00001478 1420ffec bnez r1,L95_LF2 453 0000147c 54000000 nop; not filled. 454 00001480 00020820 add r1,r0,r2 455 00001484 8fa20000 lw r2,0(r29) 456 00001488 8fdffff8 lw r31,-8(r30) 457 0000148c 001ee820 add r29,r0,r30 458 00001490 8fdefffc lw r30,-4(r30) 459 00001494 4be00000 jr r31 460 00001498 54000000 nop 461 0000149c .endproc _dstrlen 462 0000149c .align 2 463 0000149c .proc _dstrstr 464 0000149c .global _dstrstr 465 0000149c _dstrstr: 466 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 467 0000149c afbefffc sw -4(r29),r30; push fp 468 000014a0 001df020 add r30,r0,r29; fp = sp 469 000014a4 afbffff8 sw -8(r29),r31; push ret addr 470 000014a8 2fbd0020 subui r29,r29,#32; alloc local storage 471 000014ac afa20000 sw 0(r29),r2 472 000014b0 afa30004 sw 4(r29),r3 473 000014b4 afa40008 sw 8(r29),r4 474 000014b8 afa5000c sw 12(r29),r5 475 000014bc afa60010 sw 16(r29),r6 476 000014c0 afa70014 sw 20(r29),r7 477 000014c4 8fc50000 lw r5,(r30) 478 000014c8 8fc70004 lw r7,4(r30) 479 000014cc 20030000 addi r3,r0,#0 480 000014d0 90e10000 lbu r1,(r7) 481 000014d4 20e20001 addi r2,r7,#1 482 000014d8 64210000 snei r1,r1,#0 483 000014dc 1020001c beqz r1,L125_LF2 484 000014e0 54000000 nop; not filled. 485 000014e4 L126_LF2: 486 000014e4 20630001 addi r3,r3,#1 487 000014e8 90410000 lbu r1,(r2) 488 000014ec 20420001 addi r2,r2,#1 489 000014f0 64210000 snei r1,r1,#0 490 000014f4 1420ffec bnez r1,L126_LF2 491 000014f8 54000000 nop; not filled. 492 000014fc L125_LF2: 493 000014fc 00033020 add r6,r0,r3 494 00001500 080000ac j L149_LF2 495 00001504 54000000 nop; not filled. 496 00001508 L130_LF2: 497 00001508 00051820 add r3,r0,r5 498 0000150c 00072020 add r4,r0,r7 499 00001510 20020000 addi r2,r0,#0 500 00001514 0046082a slt r1,r2,r6 501 00001518 1020003c beqz r1,L134_LF2 502 0000151c 54000000 nop; not filled. 503 00001520 L136_LF2: 504 00001520 909f0000 lbu r31,(r4) 505 00001524 67e10000 snei r1,r31,#0 506 00001528 10200038 beqz r1,L150_LF2 507 0000152c 54000000 nop; not filled. 508 00001530 90610000 lbu r1,(r3) 509 00001534 003f0829 sne r1,r1,r31 510 00001538 1420001c bnez r1,L134_LF2 511 0000153c 54000000 nop; not filled. 512 00001540 20630001 addi r3,r3,#1 513 00001544 20840001 addi r4,r4,#1 514 00001548 20420001 addi r2,r2,#1 515 0000154c 0046082a slt r1,r2,r6 516 00001550 1420ffcc bnez r1,L136_LF2 517 00001554 54000000 nop; not filled. 518 00001558 L134_LF2: 519 00001558 00460828 seq r1,r2,r6 520 0000155c 10200010 beqz r1,L141_LF2 521 00001560 54000000 nop; not filled. 522 00001564 L150_LF2: 523 00001564 20010000 addi r1,r0,#0 524 00001568 08000028 j L132_LF2 525 0000156c 54000000 nop; not filled. 526 00001570 L141_LF2: 527 00001570 90630000 lbu r3,(r3) 528 00001574 90820000 lbu r2,(r4) 529 00001578 00620822 sub r1,r3,r2 530 0000157c 74210000 sgei r1,r1,#0 531 00001580 201fffff addi r31,r0,#-1 532 00001584 10200008 beqz r1,L143_LF2 533 00001588 54000000 nop; not filled. 534 0000158c 0062f829 sne r31,r3,r2 535 00001590 L143_LF2: 536 00001590 001f0820 add r1,r0,r31 537 00001594 L132_LF2: 538 00001594 64210000 snei r1,r1,#0 539 00001598 14200010 bnez r1,L131_LF2 540 0000159c 54000000 nop; not filled. 541 000015a0 00050820 add r1,r0,r5 542 000015a4 0800001c j L146_LF2 543 000015a8 54000000 nop; not filled. 544 000015ac L131_LF2: 545 000015ac 20a50001 addi r5,r5,#1 546 000015b0 L149_LF2: 547 000015b0 90a10000 lbu r1,(r5) 548 000015b4 64210000 snei r1,r1,#0 549 000015b8 1420ff4c bnez r1,L130_LF2 550 000015bc 54000000 nop; not filled. 551 000015c0 20010000 addi r1,r0,#0 552 000015c4 L146_LF2: 553 000015c4 8fa20000 lw r2,0(r29) 554 000015c8 8fa30004 lw r3,4(r29) 555 000015cc 8fa40008 lw r4,8(r29) 556 000015d0 8fa5000c lw r5,12(r29) 557 000015d4 8fa60010 lw r6,16(r29) 558 000015d8 8fa70014 lw r7,20(r29) 559 000015dc 8fdffff8 lw r31,-8(r30) 560 000015e0 001ee820 add r29,r0,r30 561 000015e4 8fdefffc lw r30,-4(r30) 562 000015e8 4be00000 jr r31 563 000015ec 54000000 nop 564 000015f0 .endproc _dstrstr 565 000015f0 .align 2 566 000015f0 .proc _dmindex 567 000015f0 .global _dmindex 568 000015f0 _dmindex: 569 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 570 000015f0 afbefffc sw -4(r29),r30; push fp 571 000015f4 001df020 add r30,r0,r29; fp = sp 572 000015f8 afbffff8 sw -8(r29),r31; push ret addr 573 000015fc 2fbd0020 subui r29,r29,#32; alloc local storage 574 00001600 afa20000 sw 0(r29),r2 575 00001604 afa30004 sw 4(r29),r3 576 00001608 afa40008 sw 8(r29),r4 577 0000160c afa5000c sw 12(r29),r5 578 00001610 afa60010 sw 16(r29),r6 579 00001614 8fc40000 lw r4,(r30) 580 00001618 8fc60004 lw r6,4(r30) 581 0000161c 90810000 lbu r1,(r4) 582 00001620 64210000 snei r1,r1,#0 583 00001624 10200060 beqz r1,L164_LF2 584 00001628 54000000 nop; not filled. 585 0000162c 00012820 add r5,r0,r1 586 00001630 L165_LF2: 587 00001630 00061020 add r2,r0,r6 588 00001634 80df0000 lb r31,(r6) 589 00001638 33e100ff andi r1,r31,#0x00ff 590 0000163c 64210000 snei r1,r1,#0 591 00001640 1020003c beqz r1,L163_LF2 592 00001644 54000000 nop; not filled. 593 00001648 90830000 lbu r3,(r4) 594 0000164c L169_LF2: 595 0000164c 33e100ff andi r1,r31,#0x00ff 596 00001650 00610828 seq r1,r3,r1 597 00001654 10200010 beqz r1,L168_LF2 598 00001658 54000000 nop; not filled. 599 0000165c 00040820 add r1,r0,r4 600 00001660 08000028 j L173_LF2 601 00001664 54000000 nop; not filled. 602 00001668 L168_LF2: 603 00001668 20420001 addi r2,r2,#1 604 0000166c 805f0000 lb r31,(r2) 605 00001670 33e100ff andi r1,r31,#0x00ff 606 00001674 64210000 snei r1,r1,#0 607 00001678 1420ffd0 bnez r1,L169_LF2 608 0000167c 54000000 nop; not filled. 609 00001680 L163_LF2: 610 00001680 14a0ffac bnez r5,L165_LF2 611 00001684 54000000 nop; not filled. 612 00001688 L164_LF2: 613 00001688 20010000 addi r1,r0,#0 614 0000168c L173_LF2: 615 0000168c 8fa20000 lw r2,0(r29) 616 00001690 8fa30004 lw r3,4(r29) 617 00001694 8fa40008 lw r4,8(r29) 618 00001698 8fa5000c lw r5,12(r29) 619 0000169c 8fa60010 lw r6,16(r29) 620 000016a0 8fdffff8 lw r31,-8(r30) 621 000016a4 001ee820 add r29,r0,r30 622 000016a8 8fdefffc lw r30,-4(r30) 623 000016ac 4be00000 jr r31 624 000016b0 54000000 nop 625 000016b4 .endproc _dmindex 626 000016b4 .align 2 627 000016b4 .proc _dindex 628 000016b4 .global _dindex 629 000016b4 _dindex: 630 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 631 000016b4 afbefffc sw -4(r29),r30; push fp 632 000016b8 001df020 add r30,r0,r29; fp = sp 633 000016bc afbffff8 sw -8(r29),r31; push ret addr 634 000016c0 2fbd0010 subui r29,r29,#16; alloc local storage 635 000016c4 afa20000 sw 0(r29),r2 636 000016c8 afa30004 sw 4(r29),r3 637 000016cc 8fc20000 lw r2,(r30) 638 000016d0 8fc30004 lw r3,4(r30) 639 000016d4 08000024 j L187_LF2 640 000016d8 54000000 nop; not filled. 641 000016dc L183_LF2: 642 000016dc 33e100ff andi r1,r31,#0x00ff 643 000016e0 00230828 seq r1,r1,r3 644 000016e4 10200010 beqz r1,L184_LF2 645 000016e8 54000000 nop; not filled. 646 000016ec 00020820 add r1,r0,r2 647 000016f0 08000020 j L186_LF2 648 000016f4 54000000 nop; not filled. 649 000016f8 L184_LF2: 650 000016f8 20420001 addi r2,r2,#1 651 000016fc L187_LF2: 652 000016fc 805f0000 lb r31,(r2) 653 00001700 33e100ff andi r1,r31,#0x00ff 654 00001704 64210000 snei r1,r1,#0 655 00001708 1420ffd0 bnez r1,L183_LF2 656 0000170c 54000000 nop; not filled. 657 00001710 20010000 addi r1,r0,#0 658 00001714 L186_LF2: 659 00001714 8fa20000 lw r2,0(r29) 660 00001718 8fa30004 lw r3,4(r29) 661 0000171c 8fdffff8 lw r31,-8(r30) 662 00001720 001ee820 add r29,r0,r30 663 00001724 8fdefffc lw r30,-4(r30) 664 00001728 4be00000 jr r31 665 0000172c 54000000 nop 666 00001730 .endproc _dindex 667 00001730 .align 2 668 00001730 .proc _ditoa 669 00001730 .global _ditoa 670 00001730 _ditoa: 671 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 672 00001730 afbefffc sw -4(r29),r30; push fp 673 00001734 001df020 add r30,r0,r29; fp = sp 674 00001738 afbffff8 sw -8(r29),r31; push ret addr 675 0000173c 2fbd0020 subui r29,r29,#32; alloc local storage 676 00001740 afa20000 sw 0(r29),r2 677 00001744 afa30004 sw 4(r29),r3 678 00001748 afa40008 sw 8(r29),r4 679 0000174c afa5000c sw 12(r29),r5 680 00001750 afa60010 sw 16(r29),r6 681 00001754 8fc30000 lw r3,(r30) 682 00001758 8fc40004 lw r4,4(r30) 683 0000175c 68610000 slti r1,r3,#0 684 00001760 10200010 beqz r1,L203_LF2 685 00001764 54000000 nop; not filled. 686 00001768 2006002d addi r6,r0,(#0x2d)&0xff 687 0000176c 08000014 j L216_LF2 688 00001770 54000000 nop; not filled. 689 00001774 L203_LF2: 690 00001774 64610000 snei r1,r3,#0 691 00001778 14200018 bnez r1,L205_LF2 692 0000177c 54000000 nop; not filled. 693 00001780 20060030 addi r6,r0,(#0x30)&0xff 694 00001784 L216_LF2: 695 00001784 a0860000 sb (r4),r6 696 00001788 20840001 addi r4,r4,#1 697 0000178c 0800007c j L204_LF2 698 00001790 54000000 nop; not filled. 699 00001794 L205_LF2: 700 00001794 201f0001 addi r31,r0,#1 701 00001798 03e3082c sle r1,r31,r3 702 0000179c 1020001c beqz r1,L208_LF2 703 000017a0 54000000 nop; not filled. 704 000017a4 L209_LF2: 705 000017a4 53e10002 slli r1,r31,#0x2 706 000017a8 003f0820 add r1,r1,r31 707 000017ac 503f0001 slli r31,r1,#0x1 708 000017b0 03e3082c sle r1,r31,r3 709 000017b4 1420ffec bnez r1,L209_LF2 710 000017b8 54000000 nop; not filled. 711 000017bc L208_LF2: 712 000017bc 2005000a addi r5,r0,#10 713 000017c0 L212_LF2: 714 000017c0 03e00035 movi2fp f0,r31 715 000017c4 00a00835 movi2fp f1,r5 716 000017c8 0401000f div f0,f0,f1 717 000017cc 0000f834 movfp2i r31,f0 718 000017d0 00600035 movi2fp f0,r3 719 000017d4 03e00835 movi2fp f1,r31 720 000017d8 0401000f div f0,f0,f1 721 000017dc 00001034 movfp2i r2,f0 722 000017e0 20410030 addi r1,r2,#48 723 000017e4 a0810000 sb (r4),r1 724 000017e8 20840001 addi r4,r4,#1 725 000017ec 00400035 movi2fp f0,r2 726 000017f0 03e00835 movi2fp f1,r31 727 000017f4 0401000e mult f0,f0,f1 728 000017f8 00000834 movfp2i r1,f0 729 000017fc 00611822 sub r3,r3,r1 730 00001800 6fe10001 sgti r1,r31,#1 731 00001804 1420ffb8 bnez r1,L212_LF2 732 00001808 54000000 nop; not filled. 733 0000180c L204_LF2: 734 0000180c 20060000 addi r6,r0,(#0x0)&0xff 735 00001810 a0860000 sb (r4),r6 736 00001814 8fa20000 lw r2,0(r29) 737 00001818 8fa30004 lw r3,4(r29) 738 0000181c 8fa40008 lw r4,8(r29) 739 00001820 8fa5000c lw r5,12(r29) 740 00001824 8fa60010 lw r6,16(r29) 741 00001828 8fdffff8 lw r31,-8(r30) 742 0000182c 001ee820 add r29,r0,r30 743 00001830 8fdefffc lw r30,-4(r30) 744 00001834 4be00000 jr r31 745 00001838 54000000 nop 746 0000183c .endproc _ditoa 747 0000183c .align 2 748 0000183c .proc _dstrtol 749 0000183c .global _dstrtol 750 0000183c _dstrtol: 751 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 752 0000183c afbefffc sw -4(r29),r30; push fp 753 00001840 001df020 add r30,r0,r29; fp = sp 754 00001844 afbffff8 sw -8(r29),r31; push ret addr 755 00001848 2fbd0020 subui r29,r29,#32; alloc local storage 756 0000184c afa20000 sw 0(r29),r2 757 00001850 afa30004 sw 4(r29),r3 758 00001854 afa40008 sw 8(r29),r4 759 00001858 afa5000c sw 12(r29),r5 760 0000185c afa60010 sw 16(r29),r6 761 00001860 8fc20000 lw r2,(r30) 762 00001864 8fc50004 lw r5,4(r30) 763 00001868 8fc40008 lw r4,8(r30) 764 0000186c 20030000 addi r3,r0,#0 765 00001870 08000008 j L247_LF2 766 00001874 54000000 nop; not filled. 767 00001878 L220_LF2: 768 00001878 20420001 addi r2,r2,#1 769 0000187c L247_LF2: 770 0000187c 805f0000 lb r31,(r2) 771 00001880 33e100ff andi r1,r31,#0x00ff 772 00001884 60210020 seqi r1,r1,#32 773 00001888 1420ffec bnez r1,L220_LF2 774 0000188c 54000000 nop; not filled. 775 00001890 23e1fff7 addi r1,r31,#-9 776 00001894 302100ff andi r1,r1,#0x00ff 777 00001898 70210001 sleui r1,r1,#1 778 0000189c 1420ffd8 bnez r1,L220_LF2 779 000018a0 54000000 nop; not filled. 780 000018a4 64a10000 snei r1,r5,#0 781 000018a8 10200008 beqz r1,L222_LF2 782 000018ac 54000000 nop; not filled. 783 000018b0 aca20000 sw (r5),r2 784 000018b4 L222_LF2: 785 000018b4 905f0000 lbu r31,(r2) 786 000018b8 67e10000 snei r1,r31,#0 787 000018bc 10200090 beqz r1,L248_LF2 788 000018c0 54000000 nop; not filled. 789 000018c4 63e1002d seqi r1,r31,#45 790 000018c8 10200014 beqz r1,L224_LF2 791 000018cc 54000000 nop; not filled. 792 000018d0 2006ffff addi r6,r0,#-1 793 000018d4 20420001 addi r2,r2,#1 794 000018d8 08000008 j L225_LF2 795 000018dc 54000000 nop; not filled. 796 000018e0 L224_LF2: 797 000018e0 20060001 addi r6,r0,#1 798 000018e4 L225_LF2: 799 000018e4 64810000 snei r1,r4,#0 800 000018e8 14200054 bnez r1,L226_LF2 801 000018ec 54000000 nop; not filled. 802 000018f0 90410000 lbu r1,(r2) 803 000018f4 60210030 seqi r1,r1,#48 804 000018f8 10200040 beqz r1,L227_LF2 805 000018fc 54000000 nop; not filled. 806 00001900 20420001 addi r2,r2,#1 807 00001904 905f0000 lbu r31,(r2) 808 00001908 63e10078 seqi r1,r31,#120 809 0000190c 14200010 bnez r1,L229_LF2 810 00001910 54000000 nop; not filled. 811 00001914 63e10058 seqi r1,r31,#88 812 00001918 10200014 beqz r1,L228_LF2 813 0000191c 54000000 nop; not filled. 814 00001920 L229_LF2: 815 00001920 20040010 addi r4,r0,#16 816 00001924 20420001 addi r2,r2,#1 817 00001928 08000014 j L226_LF2 818 0000192c 54000000 nop; not filled. 819 00001930 L228_LF2: 820 00001930 20040008 addi r4,r0,#8 821 00001934 08000008 j L226_LF2 822 00001938 54000000 nop; not filled. 823 0000193c L227_LF2: 824 0000193c 2004000a addi r4,r0,#10 825 00001940 L226_LF2: 826 00001940 2081ffff addi r1,r4,#-1 827 00001944 6c21000f sgtui r1,r1,#15 828 00001948 10200010 beqz r1,L233_LF2 829 0000194c 54000000 nop; not filled. 830 00001950 L248_LF2: 831 00001950 00030820 add r1,r0,r3 832 00001954 080000c4 j L245_LF2 833 00001958 54000000 nop; not filled. 834 0000195c L233_LF2: 835 0000195c 805f0000 lb r31,(r2) 836 00001960 23e1ffd0 addi r1,r31,#-48 837 00001964 302100ff andi r1,r1,#0x00ff 838 00001968 70210009 sleui r1,r1,#9 839 0000196c 10200014 beqz r1,L236_LF2 840 00001970 54000000 nop; not filled. 841 00001974 33e100ff andi r1,r31,#0x00ff 842 00001978 2021ffd0 addi r1,r1,#-48 843 0000197c 08000050 j L237_LF2 844 00001980 54000000 nop; not filled. 845 00001984 L236_LF2: 846 00001984 23e1ff9f addi r1,r31,#-97 847 00001988 302100ff andi r1,r1,#0x00ff 848 0000198c 70210019 sleui r1,r1,#25 849 00001990 10200014 beqz r1,L238_LF2 850 00001994 54000000 nop; not filled. 851 00001998 33e100ff andi r1,r31,#0x00ff 852 0000199c 2021ffa9 addi r1,r1,#-87 853 000019a0 0800002c j L237_LF2 854 000019a4 54000000 nop; not filled. 855 000019a8 L238_LF2: 856 000019a8 23e1ffbf addi r1,r31,#-65 857 000019ac 302100ff andi r1,r1,#0x00ff 858 000019b0 70210019 sleui r1,r1,#25 859 000019b4 10200014 beqz r1,L240_LF2 860 000019b8 54000000 nop; not filled. 861 000019bc 33e100ff andi r1,r31,#0x00ff 862 000019c0 2021ffc9 addi r1,r1,#-55 863 000019c4 08000008 j L237_LF2 864 000019c8 54000000 nop; not filled. 865 000019cc L240_LF2: 866 000019cc 200103e8 addi r1,r0,#1000 867 000019d0 L237_LF2: 868 000019d0 0024f82a slt r31,r1,r4 869 000019d4 13e00024 beqz r31,L246_LF2 870 000019d8 54000000 nop; not filled. 871 000019dc 00600035 movi2fp f0,r3 872 000019e0 00800835 movi2fp f1,r4 873 000019e4 0401000e mult f0,f0,f1 874 000019e8 00001834 movfp2i r3,f0 875 000019ec 00611820 add r3,r3,r1 876 000019f0 20420001 addi r2,r2,#1 877 000019f4 17e0ff64 bnez r31,L233_LF2 878 000019f8 54000000 nop; not filled. 879 000019fc L246_LF2: 880 000019fc 64a10000 snei r1,r5,#0 881 00001a00 10200008 beqz r1,L244_LF2 882 00001a04 54000000 nop; not filled. 883 00001a08 aca20000 sw (r5),r2 884 00001a0c L244_LF2: 885 00001a0c 00600035 movi2fp f0,r3 886 00001a10 00c00835 movi2fp f1,r6 887 00001a14 0401000e mult f0,f0,f1 888 00001a18 00000834 movfp2i r1,f0 889 00001a1c L245_LF2: 890 00001a1c 8fa20000 lw r2,0(r29) 891 00001a20 8fa30004 lw r3,4(r29) 892 00001a24 8fa40008 lw r4,8(r29) 893 00001a28 8fa5000c lw r5,12(r29) 894 00001a2c 8fa60010 lw r6,16(r29) 895 00001a30 8fdffff8 lw r31,-8(r30) 896 00001a34 001ee820 add r29,r0,r30 897 00001a38 8fdefffc lw r30,-4(r30) 898 00001a3c 4be00000 jr r31 899 00001a40 54000000 nop 900 00001a44 .endproc _dstrtol 901 00001a44 .align 2 902 00001a44 .proc _bcopy 903 00001a44 .global _bcopy 904 00001a44 _bcopy: 905 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 906 00001a44 afbefffc sw -4(r29),r30; push fp 907 00001a48 001df020 add r30,r0,r29; fp = sp 908 00001a4c afbffff8 sw -8(r29),r31; push ret addr 909 00001a50 2fbd0018 subui r29,r29,#24; alloc local storage 910 00001a54 afa20000 sw 0(r29),r2 911 00001a58 afa30004 sw 4(r29),r3 912 00001a5c afa40008 sw 8(r29),r4 913 00001a60 8fc30000 lw r3,(r30) 914 00001a64 8fc20004 lw r2,4(r30) 915 00001a68 8fdf0008 lw r31,8(r30) 916 00001a6c 08000014 j L259_LF2 917 00001a70 54000000 nop; not filled. 918 00001a74 L257_LF2: 919 00001a74 80640000 lb r4,(r3) 920 00001a78 a0440000 sb (r2),r4 921 00001a7c 20630001 addi r3,r3,#1 922 00001a80 20420001 addi r2,r2,#1 923 00001a84 L259_LF2: 924 00001a84 001f0820 add r1,r0,r31 925 00001a88 23ffffff addi r31,r31,#-1 926 00001a8c 6c210000 sgti r1,r1,#0 927 00001a90 1420ffe0 bnez r1,L257_LF2 928 00001a94 54000000 nop; not filled. 929 00001a98 8fa20000 lw r2,0(r29) 930 00001a9c 8fa30004 lw r3,4(r29) 931 00001aa0 8fa40008 lw r4,8(r29) 932 00001aa4 8fdffff8 lw r31,-8(r30) 933 00001aa8 001ee820 add r29,r0,r30 934 00001aac 8fdefffc lw r30,-4(r30) 935 00001ab0 4be00000 jr r31 936 00001ab4 54000000 nop 937 00001ab8 .endproc _bcopy 938 00001ab8 .align 2 939 00001ab8 .proc _bzero 940 00001ab8 .global _bzero 941 00001ab8 _bzero: 942 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 943 00001ab8 afbefffc sw -4(r29),r30; push fp 944 00001abc 001df020 add r30,r0,r29; fp = sp 945 00001ac0 afbffff8 sw -8(r29),r31; push ret addr 946 00001ac4 2fbd0010 subui r29,r29,#16; alloc local storage 947 00001ac8 afa20000 sw 0(r29),r2 948 00001acc afa30004 sw 4(r29),r3 949 00001ad0 8fc20000 lw r2,(r30) 950 00001ad4 8fdf0004 lw r31,4(r30) 951 00001ad8 08000010 j L270_LF2 952 00001adc 54000000 nop; not filled. 953 00001ae0 L268_LF2: 954 00001ae0 20030000 addi r3,r0,(#0x0)&0xff 955 00001ae4 a0430000 sb (r2),r3 956 00001ae8 20420001 addi r2,r2,#1 957 00001aec L270_LF2: 958 00001aec 001f0820 add r1,r0,r31 959 00001af0 23ffffff addi r31,r31,#-1 960 00001af4 6c210000 sgti r1,r1,#0 961 00001af8 1420ffe4 bnez r1,L268_LF2 962 00001afc 54000000 nop; not filled. 963 00001b00 8fa20000 lw r2,0(r29) 964 00001b04 8fa30004 lw r3,4(r29) 965 00001b08 8fdffff8 lw r31,-8(r30) 966 00001b0c 001ee820 add r29,r0,r30 967 00001b10 8fdefffc lw r30,-4(r30) 968 00001b14 4be00000 jr r31 969 00001b18 54000000 nop 970 00001b1c .endproc _bzero 971 ;;; Ethan L. Miller, 1999. Released to the public domain 972 ;;; 973 ;;; Most of the traps are called in files from libtraps. 976 00001b1c .align 2 977 00001b1c .proc _exit 978 00001b1c .global _exit 979 00001b1c _exit: 980 00001b1c 44000300 trap #0x300 981 00001b20 4be00000 jr r31 982 00001b24 54000000 nop 983 00001b28 .endproc _exit 985 ; for the benefit of gcc. 986 00001b28 .proc ___main 987 00001b28 .global ___main 988 00001b28 ___main: 989 00001b28 4be00000 jr r31 990 00001b2c 54000000 nop 991 00001b30 .endproc ___main 992 00001b30 .text 993 00001b30 .global _etext 994 00001b30 _etext: 995 00001b30 .align 3 996 00001b30 .data 997 0000201b .global _edata 998 0000201b _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/osend.s

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

home/bshapir/cs314/project4/option1/lab4_1/src/traps.c

// // traps.c // // This file handles the low-level trap stuff for an operating system // running under DLX. static char rcsid[] = "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlx.h" #include "dlxos.h" #include "traps.h" #include "process.h" //---------------------------------------------------------------------- // // TimerSet // // Set the timer to go off after a particular number of microseconds. // The number of microseconds is passed to the routine. // //---------------------------------------------------------------------- void TimerSet (int us) { *((int *)DLX_TIMER_ADDRESS) = us; } � //---------------------------------------------------------------------- // // KbdModuleInit // // Initialize the keyboard module. This involves turning on // interrupts for the keyboard. // //---------------------------------------------------------------------- void KbdModuleInit () { *((uint32 *)DLX_KBD_INTR) = 1; } //-------------------------------------------------------------------- // GetUintFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static uint32 GetUintFromTrapArg(uint32 *trapArgs, int sysmode) { uint32 arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // GetIntFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static int GetIntFromTrapArg(uint32 *trapArgs, int sysmode) { int arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // Here we support reading the arguments // Maximum 10 command-line arguments are allowed // Also the total length of the arguments including the terminating // '\0' should be less than or equal to 100 //-------------------------------------------------------------------- static void TrapProcessCreateHandler(uint32 *trapArgs, int sysmode) { char allargs[SIZE_ARG_BUFF]; char name[100]; int i=0, j=0, k=0; uint32 args[MAX_ARGS]; char *destination; // The first argument is the name of the executable file i=0; for(i=0;i<100; i++) allargs[i] = 0; i=0; if(!sysmode) { //Get the arguments into the sytem space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,name+i,1); i++; } while ((i < sizeof (name)) && (name[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], name, sizeof (name)); } name[sizeof(name)-1] = '\0'; // null terminate the name i=0; if(!sysmode) { //Copy the rest of the arguments to the system space for(j=0; (j<11)&&(args[j]!=0); j++) { k=0; do { MemoryCopyUserToSystem (currentPCB,((char*)args[j])+k,allargs+i,1); i++; k++; } while ((i<sizeof(allargs)) && (allargs[i-1]!='\0')); } } else { destination = &allargs[0]; for(j=0; (j<11)&&(args[j]!=0); j++) { k = dstrlen((char *)args[j]); //length of the argument if(&destination[k]-allargs>100) { printf("Fatal: Cumulative length of all arguments > 100\n"); exitsim(); } dstrcpy(destination, (char *)args[j]); destination[k] = '\0'; } } allargs[sizeof(allargs)-1] = '\0'; // null terminate the name ProcessFork(0, (uint32)allargs, name, 1); } � //---------------------------------------------------------------------- // // TrapPrintfHandler // // Handle a printf trap.here. This printf code will correctly // handle integers but will not correctly handle strings (yet). // Also, note that the maximum format string length is 79 characters. // Exceeding this length will cause the format to be truncated. // //---------------------------------------------------------------------- static void TrapPrintfHandler (uint32 *trapArgs, int sysMode) { char formatstr[80]; int i = 0; uint32 printfArgs[10]; uint32 args[10]; int nargs = 0; char *c; // The first argument is the print format string. Copy it to system // space, truncating if necessary. i = 0; if (!sysMode) { // Get the arguments themselves into system space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,formatstr+i,1); i++; } while ((i < sizeof (formatstr)) && (formatstr[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], formatstr, sizeof (formatstr)); } formatstr[sizeof(formatstr)-1] = '\0'; // null terminate the fmt str for (c = formatstr; *c != '\0'; c++) { if (*c == '%') { // if this is a %%, skip past second % if (*(c+1) == '%') { c++; continue; } // Get the current argument off the stack printfArgs[nargs] = args[nargs+1]; // dbprintf ('t', "Argument %d at 0x%x is %d (0x%x).\n", nargs, // args[nargs], args[nargs]); while (1) { c++; if (*c == 's') { // Handle strings here. They don't work for user programs (yet...) break; } else if (*c == 'l') { continue; } else if ((*c == 'f') || (*c == 'g') || (*c == 'e')) { // If it's a floating point number, it'll be passed as // a double, so grab the second word also. nargs += 1; printfArgs[nargs] = args[nargs+1]; break; } else if ((*c >= 'a') && (*c <= 'z')) { // If it's another formatting character, it's not // a string, but we can leave the loop anyway. break; } } nargs += 1; } } printf (formatstr,printfArgs[0],printfArgs[1],printfArgs[2], printfArgs[3], printfArgs[4], printfArgs[5], printfArgs[6], printfArgs[7]); } � //---------------------------------------------------------------------- // // doInterrupt // // Handle an interrupt or trap. // //---------------------------------------------------------------------- void dointerrupt (unsigned int cause, unsigned int iar, unsigned int isr, uint32 *trapArgs) { int result; int i; uint32 args[4]; int intrs; uint32 handle; int ihandle; dbprintf ('t',"Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n", cause, iar, isr, trapArgs); // If the TRAP_INSTR bit is set, this was from a trap instruction. // If the bit isn't set, this was a system interrupt. if (cause & TRAP_TRAP_INSTR) { cause &= ~TRAP_TRAP_INSTR; switch (cause) { case TRAP_CONTEXT_SWITCH: dbprintf ('t', "Got a context switch trap!\n"); ProcessSchedule (); break; case TRAP_EXIT: dbprintf ('t', "Got an exit trap!\n"); ProcessKill (currentPCB); break; case TRAP_PROCESS_FORK: dbprintf ('t', "Got a fork trap!\n"); break; case TRAP_PROCESS_SLEEP: dbprintf ('t', "Got a process sleep trap!\n"); ProcessSuspend (currentPCB); ProcessSchedule (); break; case TRAP_PRINTF: // Call the trap printf handler and pass the arguments and a flag // indicating whether the trap was called from system mode. dbprintf ('t', "Got a printf trap!\n"); TrapPrintfHandler (trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_OPEN: // Get the arguments to the trap handler. If this is a user mode trap, // copy them from user space. if (isr & DLX_STATUS_SYSMODE) { args[0] = trapArgs[0]; args[1] = trapArgs[1]; } else { char filename[32]; // trapArgs points to the trap arguments in user space. There are // two of them, so copy them to to system space. The first argument // is a string, so it has to be copied to system space and the // argument replaced with a pointer to the string in system space. MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof(args[0])*2); MemoryCopyUserToSystem (currentPCB, args[0], filename, 31); // Null-terminate the string in case it's longer than 31 characters. filename[31] = '\0'; // Set the argument to be the filename args[0] = (uint32)filename; } // Allow Open() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, args[1] + 0x10000); printf ("Got an open with parameters ('%s',0x%x)\n", args[0], args[1]); RestoreIntrs (intrs); break; case TRAP_CLOSE: // Allow Close() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_READ: // Allow Read() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_WRITE: // Allow Write() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_DELETE: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_SEEK: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_PROCESS_GETPID: ProcessSetResult(currentPCB, GetCurrentPid()); break; case TRAP_PROCESS_CREATE: TrapProcessCreateHandler(trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_SEM_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = SemCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_SEM_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleWait(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_SEM_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleSignal(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; default: printf ("Got an unrecognized trap (0x%x) - exiting!\n", cause); exitsim (); break; } } else { switch (cause) { case TRAP_TIMER: dbprintf ('t', "Got a timer interrupt!\n"); ProcessSchedule (); break; case TRAP_KBD: do { i = *((uint32 *)DLX_KBD_NCHARSIN); result = *((uint32 *)DLX_KBD_GETCHAR); printf ("Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n", result, result, i); } while (i > 1); break; case TRAP_ACCESS: // access beyond virtual address ProcessKill(currentPCB); break; case TRAP_ADDRESS: // illegal address access ProcessKill(currentPCB); break; case TRAP_ILLEGALINST: printf ("Exiting after illegal instruction at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_PAGEFAULT: // page fault PageFaultHandler(); break; default: printf ("Got an unrecognized system interrupt (0x%x) - exiting!\n", cause); exitsim (); break; } } dbprintf ('t',"About to return from dointerrupt.\n"); // Note that this return may schedule a new process! intrreturn (); }

home/bshapir/cs314/project4/option1/lab4_1/src/filesys.c

// // filesys.c // // This file has handlers for the file systems supported by the DLX // operating system. These include both the basic, simulator-provided // file system and the more complex file system from the file system // assignment. static char rcsid[] = "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "process.h" #include "filesys.h" // One entry for each type of file system. Currently, the file systems // are native Unix (0) and DLX (1). static Fs fs[2]; // One entry for each open file in the operating system. static FsOpenFile openfiles[FS_MAX_OPEN_FILES]; //---------------------------------------------------------------------- // // FdValid // // Return 1 if the file descriptor is valid, 0 otherwise. // //---------------------------------------------------------------------- static inline int FdValid (int fd) { return ((fd > 0) && (fd < FS_MAX_OPEN_FILES) && (openfiles[fd].flags != 0)); } //---------------------------------------------------------------------- // // FsFreeEntry // // Free an entry in the open files table. // //---------------------------------------------------------------------- static inline void FsFreeEntry (int x) { openfiles[x].flags = 0; } � //---------------------------------------------------------------------- // // FsOpen // // Open a file. The name of the file is passed, along with the file // mode (read or write). // // This function figures out which file system is desired using a // simple heuristic. Basically, if the file starts with "dlx:", it's // a DLX file system file. Otherwise, it's a UNIX file. // // Once the file system is figured out, this routine allocates a // file descriptor and calls the file-system specific open routine. // //---------------------------------------------------------------------- int FsOpen (const char *name, int mode) { int i, retval; dbprintf ('f', "Attepmting to open %s mode=%d.\n", name, mode); // Mask off all but the mode bits mode &= FS_MODE_RW; // ERROR if the caller hasn't specified a file mode. if (mode == 0) { return (-1); } for (i = 0; i < FS_MAX_OPEN_FILES; i++) { if (openfiles[i].flags == 0) { break; } } if (i >= FS_MAX_OPEN_FILES) { return (-1); } openfiles[i].flags = mode; // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxOpen. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" openfiles[i].fs = 1; } else { openfiles[i].fs = 0; } dbprintf ('f', "File %s opening in file system %d.\n",name,openfiles[i].fs); retval = fs[openfiles[i].fs].Open (i, name, mode); if (retval < 0) { // Open failed, so return error code FsFreeEntry (i); return (retval); } dbprintf ('f', "Opened %s in FS %d, mode=%d slot=%d.\n", name, openfiles[i].fs, mode, i); return (i); } //---------------------------------------------------------------------- // // FsClose // // Close an open file. Call the FS-specific routine, and then mark // the file table entry unused. // //---------------------------------------------------------------------- int FsClose (int fd) { int retval; if (!FdValid (fd)) { return (-1); } retval = fs[openfiles[fd].fs].Close (fd); FsFreeEntry (fd); return (retval); } � //---------------------------------------------------------------------- // // FsRead // // Read data from a file. // //---------------------------------------------------------------------- int FsRead (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Read (fd, buf, n)); } //---------------------------------------------------------------------- // // FsWrite // // Write data to a file. // //---------------------------------------------------------------------- int FsWrite (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Write (fd, buf, n)); } //---------------------------------------------------------------------- // // FsSeek // // Seek in a file. // //---------------------------------------------------------------------- int FsSeek (int fd, int offset, int whence) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Seek (fd, offset, whence)); } //---------------------------------------------------------------------- // // FsDelete // // Delete a file. // //---------------------------------------------------------------------- int FsDelete (const char *name) { // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxDelete. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" return (fs[1].Delete (name)); } else { return (fs[0].Delete (name)); } } � //---------------------------------------------------------------------- // // FsUnixOpen // FsUnixRead // FsUnixWrite // FsUnixSeek // FsUnixClose // // Unix file I/O routines. These are pretty simple, and just call // the simulator traps directly using the file descriptor stored in // the open file table. // //---------------------------------------------------------------------- int FsUnixOpen (int x, const char *name, int mode) { dbprintf ('f', "Attempting to open file %s into desc %d, mode %d.\n", name, x, mode); if ((openfiles[x].u.Unix.fd = open (name, mode)) < 0) { return (openfiles[x].u.Unix.fd); } return (1); } int FsUnixRead (int x, char *buf, int n) { return (read (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixWrite (int x, char *buf, int n) { return (write (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixSeek (int x, int offset, int where) { return (lseek (openfiles[x].u.Unix.fd, offset, where)); } int FsUnixClose (int x) { int retval; retval = close (openfiles[x].u.Unix.fd); return (retval); } int FsUnixDelete (const char *name) { // Refuse to delete Unix files via the simulator. This is for safety // reasons. return (-1); } � //---------------------------------------------------------------------- // // FsDlxIo // // Perform a read or a write on a DLX file. // //---------------------------------------------------------------------- int FsDlxIo (int fd, char *buf, int n, int which) { // Your code to read or write a DLX file goes here. return (1); } //---------------------------------------------------------------------- // // FsDlxRead // FsDlxWrite // // This is just a stub that calls FsDlxIo to do either a read or a // write in the DLX file system. // //---------------------------------------------------------------------- int FsDlxRead (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 0)); } int FsDlxWrite (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 1)); } � //---------------------------------------------------------------------- // // FsDlxOpen // // Open a file in the DLX file system. Currently, this just means // to set current position to 0. However, it should also check to // make sure that the file exists. // //---------------------------------------------------------------------- int FsDlxOpen (int f, const char *name, int mode) { openfiles[f].u.Dlx.curpos = 0; // You may want to put additional code here (checking to see if the // file exists, etc.) return (1); } //---------------------------------------------------------------------- // // FsDlxSeek // // Seek in a DLX file. This just requires adjusting the current // position as recorded in the open files table. // //---------------------------------------------------------------------- int FsDlxSeek (int f, int offset, int whence) { switch (whence) { case FS_SEEK_SET: break; case FS_SEEK_CUR: break; case FS_SEEK_END: break; }; return (openfiles[f].u.Dlx.curpos); } //---------------------------------------------------------------------- // // FsDlxClose // // Close a DLX file system file. //---------------------------------------------------------------------- int FsDlxClose (int f) { // You may want to add code to this routine. return (1); } � //---------------------------------------------------------------------- // // FsDlxDelete // // Delete a file in the DLX file system. // //---------------------------------------------------------------------- int FsDlxDelete (const char *file) { // Your code goes here. return (1); } � //---------------------------------------------------------------------- // // FsModuleInit // // Initialize the file system module. This consists simply of marking // all the file slots as available. // //---------------------------------------------------------------------- void FsModuleInit () { int i; for (i = 0; i < FS_MAX_OPEN_FILES; i++) { openfiles[i].flags = 0; } fs[0].Open = FsUnixOpen; fs[0].Close = FsUnixClose; fs[0].Read = FsUnixRead; fs[0].Write = FsUnixWrite; fs[0].Seek = FsUnixSeek; fs[0].Delete = FsUnixDelete; fs[1].Open = FsDlxOpen; fs[1].Close = FsDlxClose; fs[1].Read = FsDlxRead; fs[1].Write = FsDlxWrite; fs[1].Seek = FsDlxSeek; fs[1].Delete = FsDlxDelete; }

home/bshapir/cs314/project4/option1/lab4_1/src/userprog2.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 25 ; Text size: 2864 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\n in Userprog2, Sum : %d\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal ___main nop; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16_LF0: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#12 bnez r1,L16_LF0 nop; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#32768 or r2,r31,r4 L21_LF0: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_1/src/sysproc.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Process #\000" .align 2 LC1: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething _doSomething: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#120 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52 nop ; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop ; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw 4(r29),r8 jal _dstrcpy nop ; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop ; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop ; not filled. addi r29,r29,#-8 lhi r8,((_doSomething)>>16)&0xffff addui r8,r8,(_doSomething)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop ; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56 nop ; not filled. L52: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59 nop ; not filled. addi r5,r0,#1000 add r4,r0,r2 L61: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62 nop ; not filled. addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 L62: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61 nop ; not filled. L59: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething .data .align 2 LC2: .ascii "chasetail\000" .align 2 LC3: .ascii "Chasing tail %d.\n\000" .align 2 LC4: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail _chaseTail: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2)>>16)&0xffff addui r3,r3,(LC2)&0xffff addi r29,r29,#-8 lhi r5,((LC3)>>16)&0xffff addui r5,r5,(LC3)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop ; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop ; not filled. addi r29,r29,#-8 lhi r5,((LC4)>>16)&0xffff addui r5,r5,(LC4)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail)>>16)&0xffff addui r5,r5,(_chaseTail)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop ; not filled. addi r29,r29,#16 L67: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail .data .align 2 LC6: .ascii "%d \000" .align 2 LC7: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems)>>16)&0xffff addui r2,r2,(_mysems)&0xffff addi r3,r2,#180 L90: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop ; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems: .space 200

home/bshapir/cs314/project4/option1/lab4_1/src/process.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum: .word 10000 .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L52: addi r29,r29,#-8 lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff sw (r29),r2 jal _QueueInit nop ; not filled. lhi r8,((_runQueue)>>16)&0xffff addui r8,r8,(_runQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_waitQueue)>>16)&0xffff addui r8,r8,(_waitQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_zombieQueue)>>16)&0xffff addui r8,r8,(_zombieQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs)>>16)&0xffff addui r1,r1,(_pcbs)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L58: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57 nop ; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83 nop ; not filled. add r3,r0,r4 L85: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85 nop ; not filled. L83: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L91: lhi r5,((_runQueue)>>16)&0xffff addui r5,r5,(_runQueue)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94 nop ; not filled. addi r29,r29,#-8 lhi r8,((LC4)>>16)&0xffff addui r8,r8,(LC4)&0xffff sw (r29),r8 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L94: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98 nop ; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100 nop ; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105 nop ; not filled. L106: addi r29,r29,#-16 lhi r8,((LC5)>>16)&0xffff addui r8,r8,(LC5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L105: lhi r7,((_zombieQueue)>>16)&0xffff addui r7,r7,(_zombieQueue)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs)>>16)&0xffff addui r5,r5,(_freepcbs)&0xffff L107: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108 nop ; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114 nop ; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113 nop ; not filled. L114: addi r29,r29,#-8 lhi r8,((LC6)>>16)&0xffff addui r8,r8,(LC6)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop ; not filled. addi r29,r29,#8 L113: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116 nop ; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122 nop ; not filled. add r2,r0,r4 L124: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124 nop ; not filled. L122: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107 nop ; not filled. L108: addi r29,r29,#-8 lhi r1,((_processQuantum)>>16)&0xffff addui r1,r1,(_processQuantum)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127 nop ; not filled. L128: addi r29,r29,#-8 lhi r8,((LC7)>>16)&0xffff addui r8,r8,(LC7)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L127: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9: .ascii "%s: %s\n\000" .align 2 LC10: .ascii "ProcessSuspend\000" .align 2 LC11: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-16 lhi r4,((LC8)>>16)&0xffff addui r4,r4,(LC8)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L130: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC10)>>16)&0xffff addui r1,r1,(LC10)&0xffff sw 4(r29),r1 lhi r4,((LC11)>>16)&0xffff addui r4,r4,(LC11)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L133: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue)>>16)&0xffff addui r2,r2,(_waitQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13: .ascii "ProcessWakeup\000" .align 2 LC14: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141 nop ; not filled. L142: addi r29,r29,#-8 lhi r4,((LC12)>>16)&0xffff addui r4,r4,(LC12)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L141: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC13)>>16)&0xffff addui r1,r1,(LC13)&0xffff sw 4(r29),r1 lhi r4,((LC14)>>16)&0xffff addui r4,r4,(LC14)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L144: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue)>>16)&0xffff addui r2,r2,(_runQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152 nop ; not filled. L153: addi r29,r29,#-8 lhi r4,((LC15)>>16)&0xffff addui r4,r4,(LC15)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L152: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue)>>16)&0xffff addui r2,r2,(_zombieQueue)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159 nop ; not filled. L160: addi r29,r29,#-8 lhi r4,((LC16)>>16)&0xffff addui r4,r4,(LC16)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L159: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52: .space 4 .align 2 _location53: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r2 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r5,r0,#0 sw (r1),r5 L173: lhi r31,((_location53)>>16)&0xffff addui r31,r31,(_location53)&0xffff lw r3,(r31) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175 nop ; not filled. sgti r1,r3,#98 beqz r1,L174 nop ; not filled. L175: addi r1,r0,#0 j L182 nop ; not filled. L183: addi r1,r31,#1 sw (r2),r1 j L177 nop ; not filled. L174: slei r1,r3,#99 beqz r1,L177 nop ; not filled. add r4,r0,r2 add r2,r0,r31 L179: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183 nop ; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179 nop ; not filled. L177: add r1,r0,r3 L182: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26: .ascii "About to load %s\n\000" .align 2 LC27: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#728 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L187: addi r29,r29,#-8 lhi r13,((LC17)>>16)&0xffff addui r13,r13,(LC17)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L186: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188 nop ; not filled. L189: addi r29,r29,#-24 lhi r13,((LC18)>>16)&0xffff addui r13,r13,(LC18)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop ; not filled. addi r29,r29,#24 L188: lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC19)>>16)&0xffff addui r13,r13,(LC19)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L190: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194 nop ; not filled. L195: addi r29,r29,#-8 lhi r13,((LC20)>>16)&0xffff addui r13,r13,(LC20)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L194: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197 nop ; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199 nop ; not filled. L200: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC21)>>16)&0xffff addui r13,r13,(LC21)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L199: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202 nop ; not filled. L203: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC22)>>16)&0xffff addui r13,r13,(LC22)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L202: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop ; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC23)>>16)&0xffff addui r13,r13,(LC23)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L204: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop ; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC24)>>16)&0xffff addui r13,r13,(LC24)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L205: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206 nop ; not filled. L207: addi r29,r29,#-24 lhi r13,((LC25)>>16)&0xffff addui r13,r13,(LC25)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 L206: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209 nop ; not filled. L210: addi r29,r29,#-8 lhi r13,((LC26)>>16)&0xffff addui r13,r13,(LC26)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L209: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211 nop ; not filled. lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217 nop ; not filled. add r3,r0,r6 L219: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219 nop ; not filled. L217: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268 nop ; not filled. L211: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222 nop ; not filled. L223: addi r29,r29,#-16 lhi r13,((LC27)>>16)&0xffff addui r13,r13,(LC27)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L222: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224 nop ; not filled. L225: addi r29,r29,#-16 lhi r13,((LC28)>>16)&0xffff addui r13,r13,(LC28)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L224: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226 nop ; not filled. L227: addi r29,r29,#-16 lhi r13,((LC29)>>16)&0xffff addui r13,r13,(LC29)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L226: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop ; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231 nop ; not filled. L232: addi r29,r29,#-16 lhi r13,((LC30)>>16)&0xffff addui r13,r13,(LC30)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L231: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 j L228 nop ; not filled. L229: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop ; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r10 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r13,r0,#0 sw (r1),r13 L234: lhi r3,((_location53)>>16)&0xffff addui r3,r3,(_location53)&0xffff lw r4,(r3) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236 nop ; not filled. sgti r1,r4,#98 beqz r1,L235 nop ; not filled. L236: addi r3,r0,#0 j L233 nop ; not filled. L269: addi r1,r2,#1 sw (r3),r1 j L238 nop ; not filled. L235: slei r1,r4,#99 beqz r1,L238 nop ; not filled. add r5,r0,r2 L240: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269 nop ; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240 nop ; not filled. L238: add r3,r0,r4 L233: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53)>>16)&0xffff addui r4,r4,(_location53)&0xffff lhi r11,((_str52)>>16)&0xffff addui r11,r11,(_str52)&0xffff add r10,r0,r2 addi r5,r30,#4 L243: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249 nop ; not filled. sgti r1,r31,#98 beqz r1,L248 nop ; not filled. L249: addi r3,r0,#0 j L246 nop ; not filled. L270: addi r1,r3,#1 sw (r4),r1 j L251 nop ; not filled. L248: slei r1,r31,#99 beqz r1,L251 nop ; not filled. add r2,r0,r3 L253: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270 nop ; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253 nop ; not filled. L251: add r3,r0,r31 L246: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244 nop ; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243 nop ; not filled. L244: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257 nop ; not filled. L208: lhi r13,((_ProcessExit)>>16)&0xffff addui r13,r13,(_ProcessExit)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r3,((_runQueue)>>16)&0xffff addui r3,r3,(_runQueue)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264 nop ; not filled. L265: addi r29,r29,#-16 lhi r13,((LC31)>>16)&0xffff addui r13,r13,(LC31)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L264: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266 nop ; not filled. L267: addi r29,r29,#-8 lhi r13,((LC32)>>16)&0xffff addui r13,r13,(LC32)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L266: lhi r13,((_pcbs)>>16)&0xffff addui r13,r13,(_pcbs)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34: .ascii "File descriptor is now %d.\n\000" .align 2 LC35: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36: .ascii "start:\000" .align 2 LC37: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#168 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop ; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L281: addi r29,r29,#-16 lhi r12,((LC33)>>16)&0xffff addui r12,r12,(LC33)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 j L288 nop ; not filled. L279: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282 nop ; not filled. L283: addi r29,r29,#-8 lhi r12,((LC34)>>16)&0xffff addui r12,r12,(LC34)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L282: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285 nop ; not filled. L286: addi r29,r29,#-16 lhi r12,((LC35)>>16)&0xffff addui r12,r12,(LC35)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L285: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop ; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278 nop ; not filled. L284: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36)>>16)&0xffff addui r1,r1,(LC36)&0xffff sw 4(r29),r1 jal _dstrstr nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L289: addi r29,r29,#-8 lhi r12,((LC37)>>16)&0xffff addui r12,r12,(LC37)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L288: addi r1,r0,#-1 j L278 nop ; not filled. L287: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop ; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r1,r0,r3 addi r29,r29,#16 L278: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39: .ascii " terminated at %d.\n\000" .align 2 LC40: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41: .ascii "New address is 0x%x.\n\000" .align 2 LC42: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#272 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292 nop ; not filled. addi r2,r0,#200 L292: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293 nop ; not filled. addi r1,r0,#0 j L347 nop ; not filled. L293: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294 nop ; not filled. L295: addi r29,r29,#-16 lhi r12,((LC38)>>16)&0xffff addui r12,r12,(LC38)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop ; not filled. addi r29,r29,#16 L294: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350 nop ; not filled. L296: addi r2,r2,#-1 addi r5,r5,#-1 L350: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296 nop ; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300 nop ; not filled. L301: addi r29,r29,#-8 lhi r12,((LC39)>>16)&0xffff addui r12,r12,(LC39)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L300: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302 nop ; not filled. L303: addi r29,r29,#-8 lhi r12,((LC40)>>16)&0xffff addui r12,r12,(LC40)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L302: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349 nop ; not filled. sgti r1,r5,#0 bnez r1,L305 nop ; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311 nop ; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308 nop ; not filled. L311: addi r29,r29,#-8 lhi r12,((LC41)>>16)&0xffff addui r12,r12,(LC41)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L308: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305 nop ; not filled. L349: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315: lw r1,-220(r30) j L351 nop ; not filled. L318: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318 nop ; not filled. seqi r1,r31,#9 bnez r1,L318 nop ; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320 nop ; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304 nop ; not filled. L320: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326 nop ; not filled. snei r1,r3,#65 bnez r1,L325 nop ; not filled. L326: addi r2,r0,#1 L325: snei r1,r2,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329 nop ; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329 nop ; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328 nop ; not filled. L329: addi r3,r0,#1 L328: snei r1,r3,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331 nop ; not filled. add r4,r0,r31 j L330 nop ; not filled. L331: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333 nop ; not filled. addi r4,r2,#-87 j L330 nop ; not filled. L333: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330 nop ; not filled. addi r4,r3,#-55 L330: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338 nop ; not filled. add r2,r0,r31 j L337 nop ; not filled. L338: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340 nop ; not filled. addi r2,r2,#-87 j L337 nop ; not filled. L340: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337 nop ; not filled. addi r2,r3,#-55 L337: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315 nop ; not filled. L305: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345 nop ; not filled. L346: addi r29,r29,#-16 lhi r12,((LC42)>>16)&0xffff addui r12,r12,(LC42)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L345: add r1,r0,r5 L347: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64: .space 120 .align 2 LC43: .ascii "Got %d arguments.\n\000" .align 2 LC44: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC45: .ascii "Argument count is %d.\n\000" .align 2 LC46: .ascii "Argument %d is %s.\n\000" .align 2 LC47: .ascii "Converted %s to %d=%s\n\000" _buf65: .space 200 .align 2 LC48: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC49: .ascii "Option %s not recognized.\n\000" .align 2 LC50: .ascii "About to initialize queues.\n\000" .align 2 LC51: .ascii "After initializing queues.\n\000" .align 2 LC52: .ascii "After initializing memory.\n\000" .align 2 LC53: .ascii "After initializing processes.\n\000" .align 2 LC54: .ascii "After initializing synchronization tools.\n\000" .align 2 LC55: .ascii "After initializing keyboard.\n\000" .align 2 LC56: .ascii "vm\000" .align 2 LC57: .ascii "VM Descriptor is %d\n\000" .align 2 LC58: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC59: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#200 ; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop ; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb 1(r1),r21 jal _MyFuncRetZero nop ; not filled. addi r29,r29,#-8 lhi r21,((LC43)>>16)&0xffff addui r21,r21,(LC43)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. jal _MemoryGetSize nop ; not filled. addi r29,r29,#-8 lhi r21,((LC44)>>16)&0xffff addui r21,r21,(LC44)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop ; not filled. lhi r21,((LC45)>>16)&0xffff addui r21,r21,(LC45)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354 nop ; not filled. add r2,r0,r20 L356: addi r29,r29,#-16 lhi r21,((LC46)>>16)&0xffff addui r21,r21,(LC46)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop ; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356 nop ; not filled. L354: jal _FsModuleInit nop ; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359 nop ; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65)>>16)&0xffff addui r15,r15,(_buf65)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360 nop ; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366 nop ; not filled. sgti r1,r2,#102 bnez r1,L378 nop ; not filled. seqi r1,r2,#68 beqz r1,L376 nop ; not filled. j L364 nop ; not filled. L378: seqi r1,r2,#105 bnez r1,L365 nop ; not filled. seqi r1,r2,#117 beqz r1,L376 nop ; not filled. j L375 nop ; not filled. L364: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop ; not filled. j L411 nop ; not filled. L365: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop ; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop ; not filled. lhi r21,((LC47)>>16)&0xffff addui r21,r21,(LC47)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 j L363 nop ; not filled. L366: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r10,r0,r1 lhi r21,((LC27)>>16)&0xffff addui r21,r21,(LC27)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop ; not filled. lhi r21,((LC28)>>16)&0xffff addui r21,r21,(LC28)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop ; not filled. lhi r21,((LC29)>>16)&0xffff addui r21,r21,(LC29)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop ; not filled. addi r29,r29,#24 lhi r11,((_buf65+3)>>16)&0xffff addui r11,r11,(_buf65+3)&0xffff L367: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65)>>16)&0xffff addui r21,r21,(_buf65)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop ; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368 nop ; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367 nop ; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373: addi r29,r29,#-24 lhi r21,((LC48)>>16)&0xffff addui r21,r21,(LC48)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373 nop ; not filled. j L367 nop ; not filled. L368: addi r29,r29,#-8 sw (r29),r10 jal _close nop ; not filled. j L411 nop ; not filled. L375: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363 nop ; not filled. L376: addi r29,r29,#-8 lhi r21,((LC49)>>16)&0xffff addui r21,r21,(LC49)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop ; not filled. L411: addi r29,r29,#8 L363: snei r1,r16,#0 bnez r1,L359 nop ; not filled. L360: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361 nop ; not filled. L359: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381 nop ; not filled. L382: addi r29,r29,#-8 lhi r21,((LC50)>>16)&0xffff addui r21,r21,(LC50)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L381: jal _QueueModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383 nop ; not filled. L384: addi r29,r29,#-8 lhi r21,((LC51)>>16)&0xffff addui r21,r21,(LC51)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L383: jal _MemoryModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385 nop ; not filled. L386: addi r29,r29,#-8 lhi r21,((LC52)>>16)&0xffff addui r21,r21,(LC52)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L385: jal _ProcessModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387 nop ; not filled. L388: addi r29,r29,#-8 lhi r21,((LC53)>>16)&0xffff addui r21,r21,(LC53)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L387: jal _SynchModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389 nop ; not filled. L390: addi r29,r29,#-8 lhi r21,((LC54)>>16)&0xffff addui r21,r21,(LC54)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L389: jal _KbdModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391 nop ; not filled. L392: addi r29,r29,#-8 lhi r21,((LC55)>>16)&0xffff addui r21,r21,(LC55)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L391: addi r2,r30,#-128 addi r3,r30,#-29 L396: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396 nop ; not filled. addi r29,r29,#-8 lhi r21,((LC56)>>16)&0xffff addui r21,r21,(LC56)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop ; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398 nop ; not filled. L399: addi r29,r29,#-8 lhi r21,((LC57)>>16)&0xffff addui r21,r21,(LC57)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L398: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop ; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop ; not filled. sw (r29),r9 jal _FsClose nop ; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400 nop ; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402 nop ; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402 nop ; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406 nop ; not filled. L402: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop ; not filled. addi r29,r29,#48 L400: jal _SysprocCreateProcesses nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407 nop ; not filled. L408: addi r29,r29,#-8 lhi r21,((LC58)>>16)&0xffff addui r21,r21,(LC58)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L407: addi r29,r29,#-8 lhi r3,((_processQuantum)>>16)&0xffff addui r3,r3,(_processQuantum)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409 nop ; not filled. L410: addi r29,r29,#-8 lhi r21,((LC59)>>16)&0xffff addui r21,r21,(LC59)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L409: jal _intrreturn nop ; not filled. jal _exitsim nop ; not filled. jal _exit nop .endproc _main .data .align 2 LC61: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,((LC61)>>16)&0xffff addui r1,r1,(LC61)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1032 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420 nop ; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422: addi r2,r0,#0 add r3,r4,r5 L423: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423 nop ; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422 nop ; not filled. L420: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _ProcessSchedule nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs: .space 12 .align 2 _runQueue: .space 12 .align 2 _waitQueue: .space 12 .align 2 _zombieQueue: .space 12 .align 2 _pcbs: .space 3840 .text .align 2 .proc _ProcessExit _ProcessExit: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _exit nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit

home/bshapir/cs314/project4/option1/lab4_1/src/synch.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // // Semaphores are the only "native" synchronization primitive. #ifndef _synch_h_ #define _synch_h_ #include "queue.h" #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system typedef int sem_t; #define INVALID_SEM -1 #define INVALID_PROC -1 typedef struct Sem { Queue waiting; int count; uint32 inuse; //indicates whether the semaphore is being //used by any process } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); #endif //_synch_h_

home/bshapir/cs314/project4/option1/lab4_1/src/memory.h

// // memory.h // // Definitions for dealing with memory. // // // $Id: memory.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ #ifndef _memory_h_ #define _memory_h_ // We can read this address in I/O space to figure out how much memory // is available on the system. #define DLX_MEMSIZE_ADDRESS 0xffff0000 // We currently support 64 KB pages. This is done as 64 KB pages in // the level 1 page table and no level 2 page table // These two constants should be set as follows: // L1_PAGE_SIZE_BITS -> amount mapped by a single entry in the L1 table // L2_PAGE_SIZE_BITS -> amount mapped by a single entry in the L2 table // // For example, if you have 4KB pages and each L2 page table has 512 entries, // you'd have 2MB per entry in a L1 table. That would mean L1_BITS=21 and // L2_BITS=12. #define MEMORY_L1_PAGE_SIZE_BITS 16 // each entry in L1 is 64 KB #define MEMORY_L2_PAGE_SIZE_BITS 16 // if L1 == L2, there's no L2 tables #define MEMORY_PAGE_SIZE (1 << MEMORY_L2_PAGE_SIZE_BITS) #define MEMORY_PAGE_MASK (MEMORY_PAGE_SIZE-1) #define MEMORY_MAX_PAGES 0x10000 #define L1_MAX_ENTRIES 0x01 // max entries in the L1 table - 1 #define TOP_VIRTUAL_ADDRESS_SPACE L1_MAX_ENTRIES * MEMORY_PAGE_SIZE // 1 entries * 64kb = 64 kb // The PTE is valid if this bit is set in the PTE! #define MEMORY_PTE_VALID 0x00000001 // The page is dirty if this bit is set in the PTE #define MEMORY_PTE_DIRTY 0x00000002 // The page has been referenced if this bit is set in the PTE #define MEMORY_PTE_REFERENCED 0x00000004 #define MEMORY_PTE_MASK (~(MEMORY_PTE_VALID|MEMORY_PTE_DIRTY|MEMORY_PTE_REFERENCED)) extern int lastosaddress; // Defined in an assembly file extern int MemoryGetSize (); extern int MemoryAllocPage (); extern void MemoryFreePage (uint32 page); extern uint32 MemorySetupPte (uint32 page); extern void MemoryFreePte (uint32 pte); extern uint32 MemoryPteToPage (); extern void MemoryModuleInit (); extern uint32 MemoryTranslateUserToSystem (); extern int MemoryCopySystemToUser (); extern int MemoryCopyUserToSystem (); #endif // _memory_h_

home/bshapir/cs314/project4/option1/lab4_1/src/dlxos.s

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

home/bshapir/cs314/project4/option1/lab4_1/src/misc.c

// // misc.c // // Miscellaneous routines for the operating system. These include // basic routines that would be in libc if we had access to it. // #include "misc.h" //---------------------------------------------------------------------- // // dstrcpy // dstrncpy // dstrcat // // These three functions do exactly what their counterparts in the // standard C library do. // //---------------------------------------------------------------------- char* dstrcpy (char *to, const char *from) { char *tokeep = to; char last; do { last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char* dstrncpy (char *to, const char *from, int n) { char *tokeep = to; char last; int cur = 0; do { // Stop if we're exceeded the maximum string length if (n-- <= 0) { break; } last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char * dstrcat (char *onto, const char *addn) { char *konto = onto; while (*onto != '\0') { onto++; } dstrcpy (onto, addn); return (konto); } int dstrncmp (const char *s1, const char *s2, int n) { int i; for (i = 0; i < n; i++) { // If they don't match, end the loop if (*s2 == '\0') { // If the second string is NULL, we're at the end of the string and // have a match. return (0); } else if (*s1 != *s2) { break; } s1++; s2++; } if (i == n) { return (0); } else { return (((*s1 - *s2) < 0) ? -1 : ((*s1 == *s2) ? 0 : 1)); } } int dstrlen (const char *s) { int i = 0; while (*(s++) != '\0') { i++; } return (i); } const char * dstrstr (const char *buf, const char *pattern) { int n = dstrlen (pattern); while (*buf != '\0') { if (dstrncmp (buf, pattern, n) == 0) { return (buf); } buf++; } return ((char *)0); } � //---------------------------------------------------------------------- // // dindex // dmindex // // dindex is identical to the libc function index. dmindex is // similar to dindex, but it reports the index in the string of the // first match for any one of the characters passed (rather than // matching only on a single specific character). // //---------------------------------------------------------------------- const char * dmindex (const char *s, const char *match) { const char *c; while (*s != '\0') { for (c = match; *c != '\0'; c++) { if (*s == *c) { return (s); } } } return ((const char *)0); } const char* dindex (const char *s, int c) { while (*s != '\0') { if (*s == c) { return (s); } s++; } return ((char *)0); } � //---------------------------------------------------------------------- // // ditoa: Convert an integer into an ASCII number. // dstrtol: Convert ASCII into an integer // //---------------------------------------------------------------------- void ditoa (int n, char *buf) { int k; if (n < 0) { *(buf++) = '-'; n = -n; } else if (n == 0) { *(buf++) = '0'; } else { for (k = 1; k <= n; k *= 10) { } do { k /= 10; *(buf++) = (n / k) + '0'; n %= k; } while (k > 1); } *buf = '\0'; } int dstrtol (char *c, char **newpos, int base) { int v = 0; int curdigit; int sign; while ((*c == ' ') || (*c == '\t') || (*c == '\n')) { c++; } if (newpos != (char **)0) { *newpos = c; } if (*c == '\0') { return (v); } if (*c == '-') { sign = -1; c++; } else { sign = 1; } if (base == 0) { if (*c == '0') { c++; if ((*c == 'x') || (*c == 'X')) { base = 16; c++; } else { base = 8; } } else { base = 10; } } if ((base <= 0) || (base > 16)) { return (v); } do { if ((*c >= '0') && (*c <= '9')) { curdigit = (*c) - '0'; } else if ((*c >= 'a') && (*c <= 'z')) { curdigit = (*c) + 10 - 'a'; } else if ((*c >= 'A') && (*c <= 'Z')) { curdigit = (*c) + 10 - 'A'; } else { curdigit = 1000; } if (curdigit < base) { v *= base; v += curdigit; c++; } } while (curdigit < base); if (newpos != (char **)0) { *newpos = c; } v *= sign; return (v); } � //---------------------------------------------------------------------- // // bcopy: Copy bytes from one location to another. // bzero: Set all the bytes in a region to zero. // //---------------------------------------------------------------------- void bcopy (char *src, char *dst, int count) { while (count-- > 0) { *(dst++) = *(src++); } } void bzero (char *dst, int count) { while (count-- > 0) { *(dst++) = 0; } }

home/bshapir/cs314/project4/option1/lab4_1/src/memory.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61 nop ; not filled. addi r2,r3,#31 L61: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68 nop ; not filled. addui r2,r2,#65535 L68: srai r8,r2,#0x10 lhi r3,((_pagestart)>>16)&0xffff addui r3,r3,(_pagestart)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69 nop ; not filled. addui r2,r2,#65535 L69: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax)>>16)&0xffff addui r3,r3,(_freemapmax)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70 nop ; not filled. addi r2,r8,#62 L70: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-16 lhi r11,((LC1)>>16)&0xffff addui r11,r11,(LC1)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop ; not filled. addi r29,r29,#16 L71: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73 nop ; not filled. L74: addi r29,r29,#-8 lhi r11,((LC2)>>16)&0xffff addui r11,r11,(LC2)&0xffff sw (r29),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L73: addi r2,r0,#0 lhi r4,((_freemapmax)>>16)&0xffff addui r4,r4,(_freemapmax)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76 nop ; not filled. lhi r3,((_freepages)>>16)&0xffff addui r3,r3,(_freepages)&0xffff L78: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78 nop ; not filled. L76: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81 nop ; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone)>>16)&0xffff addui r9,r9,(_negativeone)&0xffff L83: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85 nop ; not filled. addi r2,r4,#31 L85: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages)>>16)&0xffff addui r11,r11,(_freepages)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82 nop ; not filled. L89: addi r29,r29,#-16 lhi r11,((LC0)>>16)&0xffff addui r11,r11,(LC0)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L82: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83 nop ; not filled. L81: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-8 lhi r11,((LC3)>>16)&0xffff addui r11,r11,(LC3)&0xffff sw (r29),r11 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42: .word 0 .align 2 LC4: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111 nop ; not filled. addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110 nop ; not filled. L111: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L112: lhi r2,((_mapnum42)>>16)&0xffff addui r2,r2,(_mapnum42)&0xffff lw r1,(r2) lhi r4,((_freepages)>>16)&0xffff addui r4,r4,(_freepages)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115 nop ; not filled. lhi r1,((_freemapmax)>>16)&0xffff addui r1,r1,(_freemapmax)&0xffff lw r3,(r1) L116: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114 nop ; not filled. addi r7,r0,#0 sw (r2),r7 L114: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116 nop ; not filled. L115: lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120 nop ; not filled. addi r2,r0,#1 L121: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121 nop ; not filled. L120: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42)>>16)&0xffff addui r5,r5,(_mapnum42)&0xffff lw r3,(r5) lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125 nop ; not filled. L126: addi r29,r29,#-16 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L125: lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129 nop ; not filled. addi r2,r6,#31 L129: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133 nop ; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128 nop ; not filled. L133: addi r29,r29,#-16 lhi r7,((LC0)>>16)&0xffff addui r7,r7,(LC0)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L128: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134 nop ; not filled. L135: addi r29,r29,#-16 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L134: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140 nop ; not filled. L139: addi r1,r0,#0 L140: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L168: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170 nop ; not filled. addi r31,r0,#0 j L169 nop ; not filled. L170: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169: snei r1,r31,#0 beqz r1,L167 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172 nop ; not filled. add r2,r0,r3 L172: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168 nop ; not filled. L167: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L192: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194 nop ; not filled. addi r31,r0,#0 j L193 nop ; not filled. L194: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193: snei r1,r31,#0 beqz r1,L191 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197 nop ; not filled. add r2,r0,r3 L197: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192 nop ; not filled. L191: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61: .word 13316 .align 2 LC8: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214 nop ; not filled. lhi r1,((_invalidOps61)>>16)&0xffff addui r1,r1,(_invalidOps61)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213 nop ; not filled. L214: addi r1,r0,#-1 j L218 nop ; not filled. L213: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215 nop ; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216 nop ; not filled. L217: addi r29,r29,#-24 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L216: add r1,r0,r4 L218: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart: .space 4 .align 2 _freemapmax: .space 4 .align 2 _nfreepages: .space 4 .align 2 _freepages: .space 8192

home/bshapir/cs314/project4/option1/lab4_1/src/synch.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r3,((LC0)>>16)&0xffff addui r3,r3,(LC0)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L52: lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff addi r2,r31,#620 L57: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59 nop ; not filled. L60: addi r29,r29,#-8 lhi r3,((LC1)>>16)&0xffff addui r3,r3,(LC1)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L59: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff L79: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79 nop ; not filled. L77: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83 nop ; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems)>>16)&0xffff addui r5,r5,(_sems)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85 nop ; not filled. L86: addi r5,r0,#1 sw 16(r31),r5 j L77 nop ; not filled. L83: addi r1,r0,#-1 L85: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop ; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89 nop ; not filled. L90: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L89: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-16 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 L91: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95 nop ; not filled. L96: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L95: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop ; not filled. L93: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105 nop ; not filled. L107: addi r1,r0,#1 j L105 nop ; not filled. L106: addi r1,r0,#1 L105: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-16 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L112: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117 nop ; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118 nop ; not filled. L119: addi r29,r29,#-8 lhi r5,((LC6)>>16)&0xffff addui r5,r5,(LC6)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L118: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L114: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125 nop ; not filled. L127: addi r1,r0,#1 j L125 nop ; not filled. L126: addi r1,r0,#1 L125: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems: .space 640

home/bshapir/cs314/project4/option1/lab4_1/src/process.h

// // process.h // // Definitions for process creation and manipulation. These include // the process control block (PCB) structure as well as information // about the stack format for a saved process. // #ifndef _process_h__ #define _process_h_ #include "dlxos.h" #include "memory.h" #include "queue.h" //#include "share_memory.h" #define PROCESS_MAX_PROCS 32 // Maximum number of active processes #define PROCESS_INIT_ISR_SYS 0x140 // Initial status reg value for system processes #define PROCESS_INIT_ISR_USER 0x100 // Initial status reg value for user processes #define PROCESS_STATUS_FREE 0x1 #define PROCESS_STATUS_RUNNABLE 0x2 #define PROCESS_STATUS_WAITING 0x4 #define PROCESS_STATUS_STARTING 0x8 #define PROCESS_STATUS_ZOMBIE 0x10 #define PROCESS_STATUS_MASK 0x3f #define PROCESS_TYPE_SYSTEM 0x100 #define PROCESS_TYPE_USER 0x200 typedef void (*VoidFunc)(); // Process control block typedef struct PCB { uint32 *currentSavedFrame; // -> current saved frame. MUST BE 1ST! uint32 *sysStackPtr; // Current system stack pointer. MUST BE 2ND! uint32 sysStackArea; // System stack area for this process unsigned int flags; char name[80]; // Process name uint32 pagetable[L1_MAX_ENTRIES]; // Statically allocated page table int npages; // Number of pages allocated to this process Link l; // Used for keeping PCB in queues } PCB; // Offsets of various registers from the stack pointer in the register // save frame. Offsets are in WORDS (4 byte chunks) #define PROCESS_STACK_IREG 10 // Offset of r0 (grows upwards) // NOTE: r0 isn't actually stored! This is for convenience - r1 is the // first stored register, and is at location PROCESS_STACK_IREG+1 #define PROCESS_STACK_FREG (PROCESS_STACK_IREG+32) // Offset of f0 #define PROCESS_STACK_IAR (PROCESS_STACK_FREG+32) // Offset of IAR #define PROCESS_STACK_ISR (PROCESS_STACK_IAR+1) #define PROCESS_STACK_CAUSE (PROCESS_STACK_IAR+2) #define PROCESS_STACK_FAULT (PROCESS_STACK_IAR+3) #define PROCESS_STACK_PTBASE (PROCESS_STACK_IAR+4) #define PROCESS_STACK_PTSIZE (PROCESS_STACK_IAR+5) #define PROCESS_STACK_PTBITS (PROCESS_STACK_IAR+6) #define PROCESS_STACK_PREV_FRAME 10 // points to previous interrupt frame #define PROCESS_STACK_FRAME_SIZE 85 // interrupt frame is 85 words #define SIZE_ARG_BUFF 1024 // Max number of characters in the // command-line arguments #define MAX_ARGS 128 // Max number of command-line // arguments extern PCB *currentPCB; extern int ProcessFork (VoidFunc, unsigned int, char *, int); extern void ProcessSchedule (); extern void ContextSwitch(void *, void *, int); extern void ProcessSuspend (PCB *); extern void ProcessWakeup (PCB *); extern void ProcessSetResult (PCB *, uint32); extern void ProcessSleep (); extern unsigned GetCurrentPid(); extern unsigned getpid(); void process_create(char *name, ...); void ProcessKill (PCB *pcb); void PageFaultHandler(); #endif /* _process_h_ */

home/bshapir/cs314/project4/option1/lab4_1/src/userprog2.c

/* This test program touches a character pointer in 13 different pages.. This will generate 13 page faults and the output should display " You have run out of memory, killing the process" */ main() { int i; char Sum=0; char * charPtr=(char *)0x7000; for(i=0;i<13;i++) *(charPtr + 8192*i)=(char )i; for(i=0;i<13;i++) Sum+= *(charPtr + 8192 * i); Printf("\n in Userprog2, Sum : %d",Sum); }

home/bshapir/cs314/project4/option1/lab4_1/src/userprog.o

; Compiled by GCC .data .align 2 LC0: .ascii "\nTesting case %d\n\000" .align 2 LC1: .ascii "\nUsage: \000" .align 2 LC2: .ascii " [case id]\n\n\000" .align 2 LC3: .ascii "userprog1.dlx.obj\000" .align 2 LC4: .ascii "userprog2.dlx.obj\000" .align 2 LC5: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop ; not filled. seqi r1,r2,#2 beqz r1,L14 nop ; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop ; not filled. add r2,r0,r1 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. addi r29,r29,#16 j L12 nop ; not filled. L14: addi r29,r29,#-8 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 jal _Printf nop ; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop ; not filled. lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 jal _Printf nop ; not filled. jal _exit nop ; not filled. L12: seqi r1,r2,#1 bnez r1,L17 nop ; not filled. seqi r1,r2,#2 beqz r1,L19 nop ; not filled. j L18 nop ; not filled. L17: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L18: addi r29,r29,#-8 lhi r4,((LC4)>>16)&0xffff addui r4,r4,(LC4)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L19: addi r29,r29,#-8 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. L21: addi r29,r29,#8 jal _exit nop .endproc _main

home/bshapir/cs314/project4/option1/lab4_1/src/synch.working.s

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L38 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L38: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .data .align 2 LC0: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC1: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L49 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L48 nop ; not filled. L49: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r3 lw r6,12(r3) sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L48: lw r1,12(r3) addi r1,r1,#-1 sw 12(r3),r1 slti r1,r1,#0 beqz r1,L50 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r6,r0,#0 sw (r2),r6 sw 12(r2),r1 addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r6,((LC1)>>16)&0xffff addui r6,r6,(LC1)&0xffff sw (r29),r6 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L52: lw r1,4(r3) sw 8(r2),r3 sw 4(r2),r1 lw r6,(r1) sw (r2),r6 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 jal _ProcessSleep nop ; not filled. L50: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .data .align 2 LC2: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC3: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 sw 4(r29),r2 lw r4,12(r2) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L58: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L60 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L63 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L63: addi r4,r0,#0 sw (r3),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r29,r29,#-8 lw r4,12(r3) sw (r29),r4 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L60: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _LockInit .global _LockInit _LockInit: ; Function 'LockInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. addi r3,r0,#1 sw 12(r2),r3 addi r29,r29,#8 addi r1,r2,#16 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 28(r2),r3 addi r29,r29,#8 sw 32(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockInit .align 2 .proc _LockAcquire .global _LockAcquire _LockAcquire: ; Function 'LockAcquire'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lw r1,(r30) sw (r29),r1 jal _SemWait nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockAcquire .align 2 .proc _LockRelease .global _LockRelease _LockRelease: ; Function 'LockRelease'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,(r30) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L78 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L80 nop ; not filled. L78: addi r29,r29,#-8 sw (r29),r31 L80: jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockRelease .align 2 .proc _CondInit .global _CondInit _CondInit: ; Function 'CondInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) sw (r2),r3 addi r1,r2,#4 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 16(r2),r3 addi r29,r29,#8 sw 20(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondInit .align 2 .proc _CondWait .global _CondWait _CondWait: ; Function 'CondWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r2,(r30) lw r1,20(r2) addi r1,r1,#1 sw 20(r2),r1 lw r31,(r2) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L89 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L91 nop ; not filled. L89: addi r29,r29,#-8 sw (r29),r31 L91: jal _SemSignal nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 addi r1,r2,#4 sw (r29),r1 jal _SemWait nop ; not filled. lw r1,(r2) addi r1,r1,#16 sw (r29),r1 jal _SemWait nop ; not filled. lw r2,(r2) lw r1,32(r2) addi r1,r1,#-1 sw 32(r2),r1 addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondWait .align 2 .proc _CondSignal .global _CondSignal _CondSignal: ; Function 'CondSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) lw r2,20(r31) sgti r1,r2,#0 beqz r1,L95 nop ; not filled. addi r1,r2,#-1 sw 20(r31),r1 lw r2,(r31) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 addi r1,r31,#4 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 L95: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondSignal .align 2 .proc _CondBroadcast .global _CondBroadcast _CondBroadcast: ; Function 'CondBroadcast'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r5,20(r4) addi r3,r0,#0 slt r1,r3,r5 beqz r1,L106 nop ; not filled. addi r6,r4,#4 L108: lw r2,20(r4) sgti r1,r2,#0 beqz r1,L107 nop ; not filled. addi r1,r2,#-1 sw 20(r4),r1 lw r2,(r4) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 sw (r29),r6 jal _SemSignal nop ; not filled. addi r29,r29,#8 L107: addi r3,r3,#1 slt r1,r3,r5 bnez r1,L108 nop ; not filled. L106: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondBroadcast

home/bshapir/cs314/project4/option1/lab4_2/execs/userprog.dlx.obj

start:00001000 00002070 00001000 00000bf8 00002000 00000070 00002000:54657374 :696e6720 :63617365 :2025640a :00 00002014:0a557361 :67653a20 :00 00002020:205b6361 :73652069 :645d0a00 0000202c:75736572 :70726f67 :312e646c :782e6f62 :6a00 00002040:75736572 :70726f67 :322e646c :782e6f62 :6a00 00002054:54657374 :20636173 :65202564 :206e6f74 :20737570 :706f7274 :65640a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :8fc20000 :8fc30004 :0c000bd0 :54000000 :60410002 :10200050 :54000000 :23bdfff0 :8c630004 :afa30000 :20040000 :afa40004 :2004000a :afa40008 :0c0008b4 :54000000 :00011020 :3c040000 :24842000 :afa40000 :afa20004 :0c000134 :54000000 :23bd0010 :08000048 :54000000 :23bdfff8 :3c040000 :24842014 :afa40000 :0c000110 :54000000 :8c630000 :afa30000 :0c000100 :54000000 :3c040000 :24842020 :afa40000 :0c0000ec :54000000 :0c000b28 :54000000 :60410001 :14200018 :54000000 :60410002 :1020005c :54000000 :0800002c :54000000 :23bdfff8 :3c040000 :2484202c :afa40000 :20040000 :afa40004 :0c0000bc :54000000 :08000048 :54000000 :23bdfff8 :3c040000 :24842040 :afa40000 :20040000 :afa40004 :0c000094 :54000000 :08000020 :54000000 :23bdfff8 :3c040000 :24842054 :afa40000 :afa20004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_2/execs/userprog1.dlx.obj

start:00001000 00002018 00001000 00000b38 00002000 00000018 00002000:496e2055 :73657270 :726f6731 :2c205375 :6d203a20 :25640a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :0c000b1c :54000000 :20030000 :3c040010 :24840000 :201f0000 :00041020 :a05f0000 :20422004 :23ff0001 :73e1000b :1420ffec :54000000 :0004f820 :3c050001 :24a5602c :03e51025 :83e50000 :00a31820 :23ff2004 :03e2082c :1420ffec :54000000 :23bdfff8 :3c050000 :24a52000 :afa50000 :306100ff :afa10004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_2/execs/userprog2.dlx.obj

start:00001000 0000201a 00001000 00000b40 00002000 0000001a 00002000:0a496e20 :55736572 :70726f67 :322c2053 :756d203a :2025640a :0a00 00001000:afbefffc :001df020 :afbffff8 :2fbd9c48 :0c000b24 :54000000 :20040000 :20020001 :3c05ffff :24a563c0 :23dffff8 :27e39c3c :03e50820 :ac220000 :20420001 :23ff07d0 :03e3082c :1420ffe8 :54000000 :3c03ffff :246363c0 :23dffff8 :27e29c3c :03e30820 :8c210000 :00812020 :23ff07d0 :03e2082c :1420ffe8 :54000000 :23bdfff8 :3c060000 :24c62000 :afa60000 :afa40004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_2/execs/os.dlx.obj

start:00001000 00013e70 00001000 0000a0e0 0000c000 00007e70 00001000:3c010000 :24211010 :00204030 :08005e34 :0060f831 :33ff0040 :17e0001c :3c1f0001 :27ff0e40 :8fff0000 :8fff0004 :affdff48 :37fd0000 :10000004 :afbdff48 :2fbd0154 :afa1002c :afa20030 :afa30034 :afa40038 :afa5003c :afa60040 :afa70044 :afa80048 :afa9004c :afaa0050 :afab0054 :afac0058 :afad005c :afae0060 :afaf0064 :afb00068 :afb1006c :afb20070 :afb30074 :afb40078 :afb5007c :afb60080 :afb70084 :afb80088 :afb9008c :afba0090 :afbb0094 :afbc0098 :afbe00a0 :00401831 :afa300a4 :bfa000a8 :bfa200b0 :bfa400b8 :bfa600c0 :bfa800c8 :bfaa00d0 :bfac00d8 :bfae00e0 :bfb000e8 :bfb200f0 :bfb400f8 :bfb60100 :bfb80108 :bfba0110 :bfbc0118 :bfbe0120 :00802031 :afa40128 :00602831 :afa5012c :00c03031 :afa60130 :01201831 :afa30134 :01801831 :afa30138 :01a01831 :afa3013c :01c01831 :afa30140 :afa60000 :afa40004 :afa50008 :8fa1009c :afa1000c :3c010001 :24210e40 :8c210000 :8c220000 :afa20028 :ac3d0000 :0800891c :54000000 :0c009758 :3c010001 :24210e40 :8c210000 :8c3d0000 :8fa20028 :ac220000 :8fa30128 :00602030 :8fa3012c :00601830 :8fa30130 :00603030 :8fa30134 :00604830 :8fa30138 :00606030 :8fa3013c :00606830 :8fa30140 :00607030 :9fa000a8 :9fa200b0 :9fa400b8 :9fa600c0 :9fa800c8 :9faa00d0 :9fac00d8 :9fae00e0 :9fb000e8 :9fb200f0 :9fb400f8 :9fb60100 :9fb80108 :9fba0110 :9fbc0118 :9fbe0120 :8fa20030 :8fa30034 :8fa40038 :8fa5003c :8fa60040 :8fa70044 :8fa80048 :8fa9004c :8faa0050 :8fab0054 :8fac0058 :8fad005c :8fae0060 :8faf0064 :8fb00068 :8fb1006c :8fb20070 :8fb30074 :8fb40078 :8fb5007c :8fb60080 :8fb70084 :8fb80088 :8fb9008c :8fba0090 :8fbb0094 :8fbc0098 :8fbe00a0 :8fbf00a4 :27bd0154 :ac3d0004 :37a10000 :8c3dff48 :8c21fed8 :40000000 :2fbd0010 :afa2000c :8fa20010 :3042000f :00a00831 :afa10008 :3021fff0 :00410825 :00202830 :8fa10008 :3021000f :8fa2000c :27bd0010 :4be00000 :54000000 :00a00831 :3021000f :4be00000 :54000000 :44000410 :54000000 :4be00000 :54000000 :44002020 :4be00000 :54000000 :44002021 :4be00000 :54000000 0000c000:3a206669 :6c657379 :732e632c :7620312e :31203230 :30302f30 :392f3230 :2030313a :35303a31 :3920656c :6d204578 :7020656c :6d203030 :30 000012fc:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0ffffe94 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0ffffe50 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0ffffe0c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000c038:41747465 :706d7469 :6e672074 :6f206f70 :656e2025 :73206d6f :64653d25 :642e0a00 0000c058:646c783a :00 0000c060:46696c65 :20257320 :6f70656e :696e6720 :696e2066 :696c6520 :73797374 :656d2025 :642e0a00 0000c084:4f70656e :65642025 :7320696e :20465320 :25642c20 :6d6f6465 :3d256420 :736c6f74 :3d25642e :0a00 00001798:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc40000 :8fc50004 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080066 :afa80004 :0c00264c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c002624 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080000 :2508c038 :afa80000 :afa40004 :afa50008 :0c009890 :54000000 :23bd0010 :30a50003 :64a10000 :10200044 :54000000 :20030000 :3c060000 :24c6c110 :00061020 :8c410004 :64210000 :10200018 :54000000 :2042010c :20630001 :7061001f :1420ffe0 :54000000 :6c61001f :10200010 :54000000 :2001ffff :08000224 :54000000 :50610004 :00230820 :50210002 :00230822 :50210002 :00261020 :ac450004 :23bdfff0 :afa40000 :3c010000 :2421c058 :afa10004 :20080004 :afa80008 :0c002210 :54000000 :23bd0010 :64210000 :14200014 :54000000 :20840004 :20080001 :08000008 :54000000 :20080000 :ac480000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080066 :afa80004 :0c00250c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0024e4 :54000000 :23bd0008 :64210000 :1020004c :54000000 :23bdfff0 :3c080000 :2508c060 :afa80000 :afa40004 :50610004 :00230820 :50210002 :00230822 :50210002 :3c080000 :2508c110 :00280820 :8c210000 :afa10008 :0c00972c :54000000 :23bd0010 :23bdfff0 :50610004 :00230820 :50210002 :00230822 :50260002 :3c080000 :2508c110 :00c83820 :8ce20000 :50410001 :00220820 :50210003 :3c080000 :2508c0e0 :00280820 :afa30000 :afa40004 :afa50008 :8c210000 :4c200000 :54000000 :00011020 :23bd0010 :68410000 :10200024 :54000000 :3c080000 :2508c110 :00c80820 :20080000 :ac280004 :00020820 :08000090 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080066 :afa80004 :0c0023e0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0023b8 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdffe8 :3c080000 :2508c084 :afa80000 :afa40004 :8ce70000 :afa70008 :afa5000c :afa30010 :0c009618 :54000000 :23bd0018 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c040000 :2484c110 :00240820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200074 :54000000 :23bdfff8 :53e10004 :003f0820 :50210002 :003f0822 :50230002 :3c040000 :2484c110 :00640820 :8c220000 :50410001 :00220820 :50210003 :3c040000 :2484c0e0 :00240820 :afbf0000 :8c210010 :4c200000 :54000000 :23bd0008 :3c040000 :2484c110 :00641020 :20040000 :ac440004 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463c0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210004 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463c0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210008 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463c0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c21000c :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff0 :afa20000 :3c010000 :2421c058 :afa10004 :20030004 :afa30008 :0c001bc4 :54000000 :23bd0010 :64210000 :1420001c :54000000 :20420004 :23bdfff8 :3c010000 :2421c10c :08000010 :54000000 :23bdfff8 :3c010000 :2421c0f4 :afa20000 :8c210000 :4c200000 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000c0ac:41747465 :6d707469 :6e672074 :6f206f70 :656e2066 :696c6520 :25732069 :6e746f20 :64657363 :2025642c :206d6f64 :65202564 :2e0a00 00001f94:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc30004 :8fc50008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20060066 :afa60004 :0c001e54 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c001e2c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6c0ac :afa60000 :afa30004 :afa40008 :afa5000c :0c009094 :54000000 :23bd0010 :23bdfff8 :afa30000 :afa50004 :0c008fec :54000000 :00011820 :50810004 :00240820 :50210002 :00240822 :50210002 :3c060000 :24c6c110 :00260820 :ac230108 :23bd0008 :68620000 :00030820 :14400008 :54000000 :20010001 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5c110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008f34 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5c110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008eb0 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5c110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008e2c :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff8 :50410004 :00220820 :50210002 :00220822 :50210002 :3c030000 :2463c110 :00230820 :8c210108 :afa10000 :0c008d90 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :2001ffff :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffc110 :003f0820 :201f0000 :ac3f0108 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffc110 :003f0820 :8c210108 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :3c1f0000 :27ffc110 :23e22074 :20030000 :afe30004 :23ff010c :03e2082c :1420ffec :54000000 :3c010000 :2421c0e0 :3c030000 :24631f94 :ac230000 :3c030000 :24632270 :ac230010 :3c030000 :246320c0 :ac230004 :3c030000 :24632150 :ac230008 :3c030000 :246321e0 :ac23000c :3c030000 :246322e0 :ac230014 :3c030000 :24632380 :ac230018 :3c030000 :24632430 :ac230028 :3c030000 :24632330 :ac23001c :3c030000 :24632358 :ac230020 :3c030000 :246323dc :ac230024 :3c030000 :24632458 :ac23002c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e290:3a206d65 :6d6f7279 :2e632c76 :20312e31 :20323030 :302f3039 :2f323020 :30313a35 :303a3139 :20656c6d :20457870 :20656c6d :20303030 00002570:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffec20 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffebdc :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffeb98 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e2c4:ffffffff 00002a0c:afbefffc :001df020 :afbffff8 :2fbd0008 :3c01ffff :24210000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e2c8:53657420 :66726565 :6d617020 :656e7472 :79202564 :20746f20 :30782578 :2e0a00 00002a3c:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fdf0004 :00031020 :74610000 :14200008 :54000000 :2062001f :5c450005 :50a10005 :00611822 :20010001 :00231004 :3c010000 :2421e2c4 :8c210000 :00411026 :50a10002 :3c060000 :24c6e438 :00262020 :8c810000 :00221024 :03e30804 :00410825 :ac810000 :23bdfff8 :3c020001 :24420d78 :afa20000 :2006006d :afa60004 :0c001354 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c00132c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6e2c8 :afa60000 :afa50004 :8c840000 :afa40008 :0c008594 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e2e8:4d617020 :68617320 :25642065 :6e747269 :65732c20 :6d656d6f :72792073 :697a6520 :69732030 :7825782e :0a00 0000e314:46726565 :20706167 :65732073 :74617274 :20776974 :68207061 :67652023 :20307825 :782e0a00 0000e338:496e6974 :69616c69 :7a656420 :25642066 :72656520 :70616765 :732e0a00 00002b6c:afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :3c01ffff :24210000 :8c220000 :74410000 :14200008 :54000000 :2442ffff :5c480010 :3c030000 :2463e42c :3c010001 :24213e6c :8c210000 :2422fffc :74410000 :14200008 :54000000 :2442ffff :5c410010 :ac610000 :3c030000 :2463e430 :2102001f :74410000 :14200008 :54000000 :2102003e :5c410005 :ac610000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200b006d :afab0004 :0c001200 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c0011d8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256be2e8 :afab0000 :8c610000 :afa10004 :afa80008 :0c008440 :54000000 :23bd0010 :23bdfff8 :3c020001 :24420d78 :afa20000 :200b006d :afab0004 :0c001180 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c001158 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256be314 :afab0000 :3c010000 :2421e42c :8c210000 :afa10004 :0c0083bc :54000000 :23bd0008 :20020000 :3c040000 :2484e430 :8c810000 :0041082a :1020002c :54000000 :3c030000 :2463e438 :200b0000 :ac6b0000 :20630004 :20420001 :8c810000 :0041082a :1420ffe4 :54000000 :3c020000 :2442e434 :200b0000 :ac4b0000 :3c010000 :2421e42c :8c240000 :0088082a :10200104 :54000000 :00023820 :200a0001 :3c090000 :2529e2c4 :8ce10000 :20210001 :ace10000 :00041020 :74810000 :14200008 :54000000 :2082001f :5c460005 :50c10005 :00810822 :01411804 :8d210000 :00611026 :50c10002 :3c0b0000 :256be438 :002b2820 :8ca10000 :00220824 :00230825 :aca10000 :23bdfff8 :3c0b0001 :256b0d78 :afab0000 :200b006d :afab0004 :0c001028 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c0b0001 :256b0d78 :afab0000 :200b002b :afab0004 :0c000ff8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256be2c8 :afab0000 :afa60004 :8ca50000 :afa50008 :0c008260 :54000000 :23bd0010 :20840001 :0088082a :1420ff14 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200b006d :afab0004 :0c000f90 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c000f68 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256be338 :afab0000 :3c010000 :2421e434 :8c210000 :afa10004 :0c0081cc :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e354:00000000 :4552524f :52204154 :20544849 :5320504f :494e540a :00 0000e370:416c6c6f :63617469 :6e67206d :656d6f72 :792c2073 :74617274 :696e6720 :77697468 :20706167 :65202564 :0a00 0000e39c:416c6c6f :63617465 :64206d65 :6d6f7279 :2c206672 :6f6d206d :61702025 :642c2070 :61676520 :25642c20 :6d61703d :30782578 :2e0a00 00002f48:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :3c010000 :2421e434 :8c210000 :64210000 :1420002c :54000000 :23bdfff8 :3c070000 :24e7e358 :afa70000 :0c008134 :54000000 :20010000 :23bd0008 :08000238 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :2007006d :afa70004 :0c000e68 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000e40 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c070000 :24e7e370 :afa70000 :3c010000 :2421e354 :8c210000 :afa10004 :0c0080a4 :54000000 :23bd0008 :3c020000 :2442e354 :8c410000 :3c040000 :2484e438 :50210002 :00240820 :8c210000 :64210000 :1420004c :54000000 :3c010000 :2421e430 :8c230000 :8c410000 :20210001 :ac410000 :0023082d :1020000c :54000000 :20070000 :ac470000 :8c410000 :50210002 :00240820 :8c210000 :64210000 :1020ffc8 :54000000 :3c010000 :2421e354 :8c210000 :50210002 :3c070000 :24e7e438 :00270820 :8c230000 :201f0000 :30610001 :14200020 :54000000 :20020001 :23ff0001 :005f0804 :00610824 :64210000 :1020ffec :54000000 :20010001 :003f1004 :3c010000 :2421e2c4 :8c210000 :00412026 :3c050000 :24a5e354 :8ca30000 :3c060000 :24c6e438 :50610002 :00261020 :8c410000 :00240824 :ac410000 :50610005 :003f1820 :23bdfff8 :3c020001 :24420d78 :afa20000 :2007006d :afa70004 :0c000cdc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000cb4 :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070000 :24e7e39c :afa70000 :8ca10000 :afa10004 :afa30008 :50210002 :00260820 :8c210000 :afa1000c :0c007f0c :54000000 :23bd0010 :3c010000 :2421e434 :8c220000 :2042ffff :ac220000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e3d0:46726565 :64207061 :67652030 :7825782c :20256420 :72656d61 :696e696e :672e0a00 00003210:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc60000 :20030001 :00061020 :74c10000 :14200008 :54000000 :20c2001f :5c450005 :50a10005 :00c10822 :00611804 :3c010000 :2421e2c4 :8c210000 :00611026 :50a10002 :3c070000 :24e7e438 :00272020 :8c810000 :00220824 :00230825 :ac810000 :23bdfff8 :3c070001 :24e70d78 :afa70000 :2007006d :afa70004 :0c000b84 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c070001 :24e70d78 :afa70000 :2007002b :afa70004 :0c000b54 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7e2c8 :afa70000 :afa50004 :8c840000 :afa40008 :0c007dbc :54000000 :23bd0010 :3c020000 :2442e434 :8c410000 :20210001 :ac410000 :23bdfff8 :3c030001 :24630d78 :afa30000 :2007006d :afa70004 :0c000ae8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0c000ac0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7e3d0 :afa70000 :afa60004 :8c420000 :afa20008 :0c007d28 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc10004 :583f0010 :3022ffff :8c610064 :03e1082b :14200024 :54000000 :53e10002 :00230820 :8c210060 :2004fff8 :00240824 :00220820 :08000008 :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50004 :8fc40008 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afa50000 :afbf0004 :afa20008 :0c000c9c :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50008 :8fc40004 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afbf0000 :afa50004 :afa20008 :0c000b74 :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :50210010 :34210001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :23bdfff8 :97c10000 :afa10000 :0ffffb14 :54000000 :23bd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :201ffff8 :003f0824 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e3f0:00003404 :4f706572 :616e6420 :666f7220 :696e7374 :72756374 :696f6e20 :25303878 :20697320 :30782578 :20287265 :673d3c25 :642c3078 :25783e29 :0a00 00003748:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc50004 :58a1001a :203fffe0 :6fe1000f :14200020 :54000000 :3c010000 :2421e3f0 :8c210000 :003f0806 :30210001 :10200010 :54000000 :2001ffff :080000c4 :54000000 :58a10015 :3026001f :30bfffff :5be1000f :10200010 :54000000 :3c07ffff :24e70000 :03e7f825 :8c420000 :50c10002 :00220820 :8c230028 :007f2020 :23bdfff8 :3c020001 :24420d78 :afa20000 :2007006d :afa70004 :0c00062c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000604 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070000 :24e7e3f4 :afa70000 :afa50004 :afa40008 :afa6000c :afa30010 :0c007868 :54000000 :23bd0018 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000038a0:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffcef4 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffceb0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffce6c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010438:00002710 :456e7465 :72696e67 :2050726f :63657373 :4d6f6475 :6c65496e :69740a00 00010458:496e6974 :69616c69 :7a696e67 :20504342 :20256420 :40203078 :25782e0a :00 00010478:4c656176 :696e6720 :50726f63 :6573734d :6f64756c :65496e69 :740a00 00004738:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff6b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff68c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080001 :2508043c :afa80000 :0c006900 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420e44 :afa20000 :0c0038d8 :54000000 :3c080001 :25080e50 :afa80000 :0c0038c4 :54000000 :3c080001 :25080e5c :afa80000 :0c0038b0 :54000000 :3c080001 :25080e68 :afa80000 :0c00389c :54000000 :20040000 :23bd0008 :3c070001 :24e70d78 :3c010001 :24210e74 :00022820 :20220068 :00011820 :00033020 :23bdfff8 :afa70000 :20080070 :afa80004 :0ffff5cc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa70000 :2008002b :afa80004 :0ffff5a4 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080001 :25080458 :afa80000 :afa40004 :afa60008 :0c006810 :54000000 :23bd0010 :20080001 :ac68000c :20080000 :ac480000 :ac43000c :ac450008 :ac450004 :8ca80000 :ac480000 :aca20000 :8c410000 :ac220004 :8ca10008 :20210001 :aca10008 :20420078 :20630078 :20c60078 :20840001 :7081001f :1420ff38 :54000000 :3c010001 :24210e40 :20080000 :ac280000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff4e8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff4c0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080001 :25080478 :afa80000 :0c006734 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8c61000c :201fffc0 :003f0824 :00220825 :ac61000c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :24630e44 :20820068 :8c610004 :ac830070 :ac81006c :8c250000 :ac450000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8c810064 :0041082a :10200038 :54000000 :00041820 :23bdfff8 :8c650060 :afa50000 :0fffec34 :54000000 :23bd0008 :20630004 :20420001 :8c810064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe738 :54000000 :23bd0008 :8c81000c :2005ffc0 :00250824 :34210001 :ac81000c :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdf0004 :ac3f002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010494:4e6f7720 :656e7465 :72696e67 :2050726f :63657373 :53636865 :64756c65 :20286375 :723d3078 :25782c20 :25642072 :65616479 :290a00 000104c8:4e6f2072 :756e6e61 :626c6520 :70726f63 :65737365 :73202d20 :65786974 :696e6721 :0a00 000104ec:41626f75 :7420746f :20737769 :74636820 :746f2050 :43422030 :7825782c :666c6167 :733d3078 :25782040 :20307825 :780a00 0001051c:46726565 :696e6720 :7a6f6d62 :69652050 :43422030 :7825782e :0a00 00010538:4c656176 :696e6720 :50726f63 :65737353 :63686564 :756c6520 :28637572 :3d307825 :78290a00 00004b4c:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff2a0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff278 :54000000 :23bd0008 :64210000 :10200040 :54000000 :3c010001 :24210e50 :8c220008 :23bdfff0 :3c080001 :25080494 :afa80000 :3c010001 :24210e40 :8c210000 :afa10004 :afa20008 :0c0064cc :54000000 :23bd0010 :3c050001 :24a50e50 :8ca10008 :60210000 :10200028 :54000000 :23bdfff8 :3c080001 :250804c8 :afa80000 :0c006498 :54000000 :0c006478 :54000000 :23bd0008 :8ca10000 :8c24000c :3c010001 :24210e40 :8c210000 :00810828 :10200078 :54000000 :20830068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8c680000 :ac280000 :8c610000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :ac680000 :8ca10004 :ac850070 :ac81006c :8c280000 :ac680000 :ac230000 :8c610000 :ac230004 :8ca10008 :20210001 :aca10008 :3c010001 :24210e50 :8c210000 :8c24000c :3c010001 :24210e40 :ac240000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff120 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff0f8 :54000000 :23bd0008 :64210000 :10200038 :54000000 :23bdfff0 :3c080001 :250804ec :afa80000 :afa40004 :8c88000c :afa80008 :8c810004 :8c210128 :afa1000c :0c006354 :54000000 :23bd0010 :3c070001 :24e70e68 :3c060001 :24c60d78 :3c050001 :24a50e44 :8ce10008 :60210000 :1420016c :54000000 :8ce10000 :8c24000c :23bdfff8 :afa60000 :20080070 :afa80004 :0ffff06c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa60000 :2008002b :afa80004 :0ffff044 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c080001 :2508051c :afa80000 :afa40004 :0c0062b4 :54000000 :23bd0008 :209f0068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8fe80000 :ac280000 :8fe10000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :afe80000 :8ca10004 :ac850070 :ac81006c :8c280000 :afe80000 :ac3f0000 :8fe10000 :ac3f0004 :8ca10008 :20210001 :aca10008 :20030000 :8c810064 :0061082a :10200038 :54000000 :00041020 :23bdfff8 :8c480060 :afa80000 :0fffe81c :54000000 :23bd0008 :20420004 :20630001 :8c810064 :0061082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe320 :54000000 :23bd0008 :8c81000c :2008ffc0 :00280824 :34210001 :ac81000c :0bfffe8c :54000000 :23bdfff8 :3c010001 :24210438 :8c210000 :afa10000 :0c0044e4 :54000000 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0fffeeec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0fffeec4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c080001 :25080538 :afa80000 :3c010001 :24210e40 :8c210000 :afa10004 :0c006128 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001055c:53757370 :656e6469 :6e672050 :43422030 :78257820 :28257329 :2e0a00 00010578:25733a20 :25730a00 00010580:50726f63 :65737353 :75737065 :6e6400 00010590:54727969 :6e672074 :6f207375 :7370656e :64206120 :6e6f6e2d :72756e6e :696e6720 :70726f63 :65737321 :0a00 00004fe0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffee18 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffedf0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c040001 :2484055c :afa40000 :afa30004 :20610010 :afa10008 :0c006058 :54000000 :23bd0010 :8064000f :58810001 :30210001 :14200038 :54000000 :23bdfff0 :3c040001 :24840578 :afa40000 :3c010001 :24210580 :afa10004 :3c040001 :24840590 :afa40008 :0c006010 :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210004 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24420e5c :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000105bc:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 000105d4:50726f63 :65737357 :616b6575 :7000 000105e4:54727969 :6e672074 :6f207761 :6b652075 :70206120 :6e6f6e2d :736c6565 :70696e67 :2070726f :63657373 :210a00 00005178:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffec80 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffec58 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :248405bc :afa40000 :afa30004 :0c005ec8 :54000000 :23bd0008 :8064000f :58810002 :30210001 :14200038 :54000000 :23bdfff0 :3c040001 :24840578 :afa40000 :3c010001 :242105d4 :afa10004 :3c040001 :248405e4 :afa40008 :0c005e80 :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210002 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24420e50 :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010610:456e7465 :72696e67 :2050726f :63657373 :44657374 :726f7920 :666f7220 :30782578 :2e0a00 00010634:4c656176 :696e6720 :50726f63 :65737344 :65737472 :6f792066 :6f722030 :7825782e :0a00 00005308:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffeaf0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffeac8 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :24840610 :afa40000 :afa30004 :0c005d38 :54000000 :23bd0008 :8c61000c :2004ffc0 :00240824 :34210010 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24420e68 :ac620070 :ac62006c :8c440000 :afe40000 :ac5f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffe9ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffe9c4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :24840634 :afa40000 :afa30004 :0c005c34 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :00000000 000054c4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :64410000 :10200020 :54000000 :3c010001 :24210658 :ac220000 :3c010001 :2421065c :20050000 :ac250000 :3c1f0001 :27ff065c :8fe30000 :3c010001 :24210658 :8c220000 :00430820 :90210000 :64210000 :10200010 :54000000 :6c610062 :10200020 :54000000 :20010000 :08000058 :54000000 :23e10001 :ac410000 :08000044 :54000000 :70610063 :10200038 :54000000 :00022020 :001f1020 :8c5f0000 :009f0820 :90210000 :64210000 :1020ffc8 :54000000 :23e10001 :ac410000 :70210063 :1420ffd8 :54000000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010660:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 00010680:456e7465 :72696e67 :2050726f :63657373 :466f726b :20617267 :733d3078 :25782030 :78257820 :25732025 :640a00 000106ac:46415441 :4c206572 :726f723a :206e6f20 :66726565 :2070726f :63657373 :6573210a :00 000106d0:476f7420 :61206c69 :6e6b2040 :20307825 :780a00 000106e4:4265666f :72652072 :6573746f :72652069 :6e746572 :72757074 :2076616c :75652069 :73203078 :25782e0a :00 00010710:4e657720 :696e7465 :72727570 :74207661 :6c756520 :69732030 :7825782e :0a00 00010730:61464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65206d65 :6d6f7279 :202d206e :6f206672 :65652070 :61676573 :210a00 00010764:62464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65207379 :7374656d :20737461 :636b202d :206e6f20 :66726565 :20706167 :6573210a :00 000107a0:53657474 :696e6720 :75702050 :43422040 :20307825 :78202873 :79732073 :7461636b :3d307825 :782c206d :656d3d30 :7825782c :2073697a :653d3078 :2578290a :00 000107e0:41626f75 :7420746f :206c6f61 :64202573 :0a00 000107f4:46696c65 :20257320 :2d3e2073 :74617274 :3d307825 :3038780a :00 00010810:46696c65 :20257320 :2d3e2063 :6f646520 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 00010838:46696c65 :20257320 :2d3e2064 :61746120 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 00010860:506c6163 :696e6720 :25642062 :79746573 :20617420 :76616464 :72202530 :38782e0a :00 00010884:53657474 :696e6720 :63757272 :656e7450 :43423d30 :7825782c :20737461 :636b6672 :616d653d :30782578 :0a00 000108b0:4c656176 :696e6720 :50726f63 :65737346 :6f726b20 :28257329 :0a00 000055cc:afbefffc :001df020 :afbffff8 :2fbd02d8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :afad002c :8fc50000 :8fca0004 :8fcc0008 :8fc4000c :200d0000 :afcdfd58 :23bdfff8 :200d000f :afad0000 :0fffbc54 :54000000 :00011820 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0049 :afad0004 :0fffe7d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe7b0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad0660 :afad0000 :afa30004 :0c005a20 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe760 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe738 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c0d0001 :25ad0680 :afad0000 :afa50004 :afaa0008 :afac000c :afa40010 :0c00599c :54000000 :23bd0018 :3c020001 :24420e44 :8c410008 :60210000 :10200028 :54000000 :23bdfff8 :3c0d0001 :25ad06ac :afad0000 :0c005968 :54000000 :0c005948 :54000000 :23bd0008 :8c490000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe69c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe674 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad06d0 :afad0000 :afa90004 :0c0058e4 :54000000 :23bd0008 :8d210008 :8c210008 :6c210000 :1020002c :54000000 :8d210004 :8d2d0000 :ac2d0000 :8d210000 :8d2d0004 :ac2d0004 :8d220008 :8c410008 :2021ffff :ac410008 :200d0000 :ad2d0000 :8d26000c :8cc1000c :200dffc0 :002d0824 :34210002 :acc1000c :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0049 :afad0004 :0fffe5c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe5a0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffba18 :54000000 :23bdfff8 :3c0d0001 :25ad06e4 :afad0000 :afa10004 :0c005808 :54000000 :23bd0008 :23bdfff8 :afa30000 :0fffb9ac :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0049 :afad0004 :0fffe534 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe50c :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffb984 :54000000 :23bdfff8 :3c0d0001 :25ad0710 :afad0000 :afa10004 :0c005774 :54000000 :23bd0008 :23bdfff8 :20c10010 :afa10000 :afac0004 :0fffdffc :54000000 :200d0001 :accd0064 :0fffd5c0 :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0001 :25ad0730 :afad0000 :0c00571c :54000000 :0c0056fc :54000000 :23bd0008 :23bdfff8 :afa20000 :0fffdcdc :54000000 :acc10060 :0fffd56c :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0001 :25ad0764 :afad0000 :0c0056c8 :54000000 :0c0056a8 :54000000 :23bd0008 :50410010 :acc10008 :3428fe8c :acc80004 :acc80000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe3ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe3c4 :54000000 :23bd0008 :64210000 :10200040 :54000000 :23bdffe8 :3c0d0001 :25ad07a0 :afad0000 :afa60004 :8ccd0008 :afad0008 :8ccd0060 :afad000c :8cc10064 :50210010 :afa10010 :0c005618 :54000000 :23bd0018 :200d0000 :ad0d0028 :20c10060 :ad010138 :8ccd0064 :ad0d013c :3c010010 :24210010 :ad010140 :64810000 :10200640 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe328 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe300 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad07e0 :afad0000 :afac0004 :0c005570 :54000000 :23bd0008 :23bdffe8 :afac0000 :23c1fd6c :afa10004 :23c1fd68 :afa10008 :23c1fd64 :afa1000c :23c1fd60 :afa10010 :23c1fd5c :afa10014 :0c0007b0 :54000000 :00012820 :23bd0018 :68a10000 :102000bc :54000000 :3c030001 :24630e44 :20c20068 :8c610004 :acc30070 :acc1006c :8c2d0000 :ac4d0000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8cc10064 :0041082a :10200038 :54000000 :00061820 :23bdfff8 :8c6d0060 :afad0000 :0fffdac8 :54000000 :23bd0008 :20630004 :20420001 :8cc10064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94c10008 :afa10000 :0fffd5cc :54000000 :23bd0008 :8cc1000c :200dffc0 :002d0824 :34210001 :acc1000c :2001ffff :080006a0 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe1ac :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe184 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0001 :25ad07f4 :afad0000 :afac0004 :8fcdfd6c :afad0008 :0c0053ec :54000000 :23bd0010 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe12c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe104 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0001 :25ad0810 :afad0000 :afac0004 :8fcdfd68 :afad0008 :8fcdfd64 :afad000c :0c005364 :54000000 :23bd0010 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe0a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe07c :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0001 :25ad0838 :afad0000 :afac0004 :8fcdfd60 :afad0008 :8fcdfd5c :afad000c :0c0052dc :54000000 :23bd0010 :23c3ff90 :23c7fd58 :3c040001 :24840d78 :23bdfff0 :afa50000 :afa30004 :afa70008 :200d0064 :afad000c :0c000984 :54000000 :00011020 :23bd0010 :6c410000 :102000b0 :54000000 :23bdfff8 :afa40000 :200d0070 :afad0004 :0fffdfe0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :200d002b :afad0004 :0fffdfb8 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0d0001 :25ad0860 :afad0000 :afa20004 :8fc1fd58 :00220822 :afa10008 :0c00521c :54000000 :23bd0010 :23bdfff0 :afa60000 :afa30004 :8fc1fd58 :00220822 :afa10008 :afa2000c :0fffd580 :54000000 :23bd0010 :0bffff24 :54000000 :23bdfff8 :afa50000 :0fffbbfc :54000000 :200d0100 :ad0d012c :240dfc00 :ad0d009c :23bdfff8 :afa60000 :afaa0004 :8d0d009c :afad0008 :200d03e0 :afad000c :0fffd530 :54000000 :23bd0010 :65410000 :10200020 :54000000 :3c010001 :24210658 :ac2a0000 :3c010001 :2421065c :200d0000 :ac2d0000 :3c030001 :2463065c :8c640000 :3c010001 :24210658 :8c220000 :00440820 :90210000 :64210000 :10200010 :54000000 :6c810062 :10200020 :54000000 :20030000 :08000054 :54000000 :20410001 :ac610000 :08000040 :54000000 :70810063 :10200034 :54000000 :00022820 :8c620000 :00a20820 :90210000 :64210000 :1020ffcc :54000000 :20410001 :ac610000 :70210063 :1420ffd8 :54000000 :00041820 :2402fc00 :00620820 :afc1fd78 :20070003 :3c040001 :2484065c :3c0b0001 :256b0658 :00025020 :23c50004 :8c9f0000 :8d630000 :007f0820 :90210000 :64210000 :10200010 :54000000 :6fe10062 :10200020 :54000000 :20030000 :08000054 :54000000 :20610001 :ac810000 :08000040 :54000000 :73e10063 :10200034 :54000000 :00031020 :8c830000 :00430820 :90210000 :64210000 :1020ffcc :54000000 :20610001 :ac810000 :70210063 :1420ffd8 :54000000 :001f1820 :006a0820 :aca1fd78 :64610000 :10200014 :54000000 :20a50004 :20e70001 :0bffff5c :54000000 :20e1fffe :afc1fd70 :50210002 :01410822 :afc1fd74 :23bdfff0 :afa60000 :23c1fd70 :afa10004 :50e20002 :8d01009c :00220822 :afa10008 :afa2000c :0fffd360 :54000000 :8d01009c :00220822 :ad01009c :8fcdfd6c :ad0d0128 :8cc1000c :34210200 :acc1000c :23bd0010 :08000038 :54000000 :3c0d0000 :25ad7ae8 :ad0d00a4 :8cc10008 :2421ffe0 :ad01009c :ac2a0000 :ad050128 :200d0140 :ad0d012c :8cc1000c :34210100 :acc1000c :23bdfff8 :200d000f :afad0000 :0fffb118 :54000000 :23bd0008 :3c030001 :24630e50 :8c620004 :ad230008 :ad220004 :8c4d0000 :ad2d0000 :ac490000 :8d220000 :ac490004 :8c620008 :20420001 :ac620008 :23bdfff8 :afa10000 :0fffb0d0 :54000000 :23bd0008 :3c010001 :24210e40 :8c210000 :64210000 :14200090 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffdc40 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdc18 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0001 :25ad0884 :afad0000 :afa60004 :8ccd0000 :afad0008 :0c004e80 :54000000 :23bd0010 :3c010001 :24210e40 :ac260000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffdbb4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdb8c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad08b0 :afad0000 :afac0004 :0c004dfc :54000000 :23bd0008 :3c0d0001 :25ad0e74 :00cd1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fad002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000108cc:50726f63 :65737347 :6574436f :6465496e :666f3a20 :6f70656e :206f6620 :25732066 :61696c65 :64202825 :64292e0a :00 000108fc:46696c65 :20646573 :63726970 :746f7220 :6973206e :6f772025 :642e0a00 00010918:50726f63 :65737347 :6574436f :6465496e :666f3a20 :72656164 :20676f74 :20256420 :286e6f74 :20256429 :20627974 :65732066 :726f6d20 :25730a00 00010950:73746172 :743a00 00010958:50726f63 :65737347 :6574436f :6465496e :666f3a20 :2573206d :69737369 :6e672073 :74617274 :206c696e :6520286e :6f742061 :20444c58 :20657865 :63757461 :626c653f :290a00 0000634c:afbefffc :001df020 :afbffff8 :2fbd00a8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc60000 :8fc70004 :8fc80008 :8fc9000c :8fca0010 :8fcb0014 :23bdfff8 :afa60000 :200c0001 :afac0004 :0fffb3e4 :54000000 :00011820 :23bd0008 :68610000 :10200088 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffda4c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffda24 :54000000 :23bd0008 :64210000 :10200224 :54000000 :23bdfff0 :3c0c0001 :258c08cc :afac0000 :afa60004 :afa30008 :0c004c90 :54000000 :23bd0010 :080001f8 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd9c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd9a0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c08fc :afac0000 :afa30004 :0c004c10 :54000000 :23bd0008 :23bdfff0 :afa30000 :23c4ff90 :afa40004 :200c0064 :afac0008 :0fffb718 :54000000 :00012820 :23bd0010 :64a10064 :102000a8 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd91c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd8f4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0c0001 :258c0918 :afac0000 :afa50004 :200c0064 :afac0008 :afa6000c :0c004b58 :54000000 :23bd0010 :23bdfff8 :afa30000 :0fffb568 :54000000 :2001ffff :23bd0008 :080001d0 :54000000 :23bdfff8 :afa40000 :3c010001 :24210950 :afa10004 :0fffd664 :54000000 :23bd0008 :64210000 :14200088 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd84c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd824 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c0958 :afac0000 :afa60004 :0c004a94 :54000000 :23bd0008 :2001ffff :08000120 :54000000 :23bdfff8 :afa40000 :200c003a :afac0004 :0fffd7d0 :54000000 :20210001 :afc1ff8c :23bdfff8 :afa10000 :23c2ff8c :afa20004 :200c0010 :afac0008 :0fffd930 :54000000 :ace10000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd910 :54000000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8f4 :54000000 :ad010000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8d4 :54000000 :ad210000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8b4 :54000000 :ad410000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd894 :54000000 :ad610000 :afa40000 :200c000a :afac0004 :0fffd6f4 :54000000 :23c2ff8f :00220822 :afa30000 :afa10004 :200c0000 :afac0008 :0fffb694 :54000000 :00030820 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001099c:476f7420 :25642062 :79746573 :20617420 :6f666673 :65742025 :64202e2e :2e00 000109bc:20746572 :6d696e61 :74656420 :61742025 :642e0a00 000109d0:42756666 :65722069 :73202725 :73270a00 000109e0:4e657720 :61646472 :65737320 :69732030 :7825782e :0a00 000109f8:5365656b :696e6720 :746f2025 :6420616e :64207265 :7475726e :696e6720 :25642062 :79746573 :210a00 000067ac:afbefffc :001df020 :afbffff8 :2fbd0110 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fca0000 :8fc70008 :8fc2000c :8fcb0004 :23c3ff28 :afc3ff24 :23bdfff0 :afaa0000 :200c0000 :afac0004 :200c0001 :afac0008 :0fffb5d8 :54000000 :00014820 :50420001 :23bd0010 :6c4100c8 :10200008 :54000000 :200200c8 :23bdfff0 :afaa0000 :afa30004 :afa20008 :0fffb3ac :54000000 :00012820 :23bd0010 :70a10000 :10200010 :54000000 :20010000 :08000594 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd5a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd57c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c0c0001 :258c099c :afac0000 :afa50004 :afa90008 :0c0047e8 :54000000 :23bd0010 :20a5ffff :23c1ff28 :00251020 :0800000c :54000000 :2042ffff :20a5ffff :90410000 :6421000a :1420ffec :54000000 :23c1ff29 :00250820 :200c005a :a02c0000 :23c1ff2a :00250820 :200c0000 :a02c0000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd4dc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd4b4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c09bc :afac0000 :afa50004 :0c004724 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd464 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd43c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c09d0 :afac0000 :23c1ff28 :afa10004 :0c0046a8 :54000000 :23bd0008 :20050000 :3c080001 :25080d78 :23bdfff8 :8fccff24 :afac0000 :200c005a :afac0004 :0fffd3e0 :54000000 :23bd0008 :64210000 :102002ec :54000000 :23bdfff8 :8fccff24 :afac0000 :200c003a :afac0004 :0fffd3b4 :54000000 :23bd0008 :64210000 :102002c0 :54000000 :8fc2ff24 :90410000 :6421003a :102000b8 :54000000 :6ca10000 :142002a0 :54000000 :23bdfff0 :afa20000 :23c1ff24 :afa10004 :200c0010 :afac0008 :0fffd4ec :54000000 :ace10000 :afa80000 :200c0066 :afac0004 :0fffd34c :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa80000 :200c002b :afac0004 :0fffd324 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c09e0 :afac0000 :8ce10000 :afa10004 :0c004590 :54000000 :23bd0008 :8fc1ff24 :90210000 :6421003a :142001f8 :54000000 :8fc1ff24 :20210001 :afc1ff24 :00ab3020 :8fc1ff24 :08000010 :54000000 :8fc1ff24 :20210001 :afc1ff24 :903f0000 :63e10020 :1420ffe8 :54000000 :63e10009 :1420ffdc :54000000 :8fc2ff24 :805f0000 :33e300ff :6061000a :10200014 :54000000 :20410001 :afc1ff24 :0bfffe78 :54000000 :20020000 :23e1ffd0 :302100ff :70210009 :14200024 :54000000 :23e1ff9f :302100ff :70210005 :14200010 :54000000 :64610041 :14200008 :54000000 :20020001 :64410000 :1020fe30 :54000000 :8fc1ff24 :80220001 :20030000 :2041ffd0 :302100ff :70210009 :14200028 :54000000 :2041ff9f :302100ff :70210005 :14200014 :54000000 :304100ff :64210041 :14200008 :54000000 :20030001 :64610000 :1020fddc :54000000 :8fc1ff24 :90220000 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f2020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2044ffa9 :0800001c :54000000 :2061ffbf :70210005 :20040000 :10200008 :54000000 :2064ffc9 :8fc1ff24 :90220001 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f1020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2042ffa9 :0800001c :54000000 :2061ffbf :70210005 :20020000 :10200008 :54000000 :2062ffc9 :50810004 :00220820 :a0c10000 :20c60001 :20a50001 :8fc1ff24 :20210002 :afc1ff24 :8ce10000 :20210001 :ace10000 :0bfffe20 :54000000 :23bdfff0 :afaa0000 :8fc1ff24 :00290820 :23c3ff28 :00230822 :afa10004 :200c0000 :afac0008 :0fffb07c :54000000 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd0a0 :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd078 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0c0001 :258c09f8 :afac0000 :8fc1ff24 :00290820 :00230822 :afa10004 :afa50008 :0c0042d8 :54000000 :23bd0010 :00050820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010a98:48692055 :6461792c :20486f77 :20617265 :20796f75 :3f0a00 00010ab0:476f7420 :25642061 :7267756d :656e7473 :2e0a00 00010ac4:41766169 :6c61626c :65206d65 :6d6f7279 :3a203078 :2578202d :3e203078 :25782e0a :00 00010ae8:41726775 :6d656e74 :20636f75 :6e742069 :73202564 :2e0a00 00010b00:41726775 :6d656e74 :20256420 :69732025 :732e0a00 00010b14:436f6e76 :65727465 :64202573 :20746f20 :25643d25 :730a00 00010bf4:25303878 :3a202530 :32782530 :32782530 :32782530 :32780a00 00010c0c:4f707469 :6f6e2025 :73206e6f :74207265 :636f676e :697a6564 :2e0a00 00010c28:41626f75 :7420746f :20696e69 :7469616c :697a6520 :71756575 :65732e0a :00 00010c48:41667465 :7220696e :69746961 :6c697a69 :6e672071 :75657565 :732e0a00 00010c64:41667465 :7220696e :69746961 :6c697a69 :6e67206d :656d6f72 :792e0a00 00010c80:41667465 :7220696e :69746961 :6c697a69 :6e672070 :726f6365 :73736573 :2e0a00 00010ca0:41667465 :7220696e :69746961 :6c697a69 :6e672073 :796e6368 :726f6e69 :7a617469 :6f6e2074 :6f6f6c73 :2e0a00 00010ccc:41667465 :7220696e :69746961 :6c697a69 :6e67206b :6579626f :6172642e :0a00 00010cec:766d00 00010cf0:564d2044 :65736372 :6970746f :72206973 :2025640a :00 00010d08:43726561 :74656420 :70726f63 :65737365 :73202d20 :61626f75 :7420746f :20736574 :2074696d :65722071 :75616e74 :756d2e0a :00 00010d3c:53657420 :74696d65 :72207175 :616e7475 :6d20746f :2025642c :2061626f :75742074 :6f207275 :6e206669 :72737420 :70726f63 :6573732e :0a00 00006e44:afbefffc :001df020 :afbffff8 :2fbd00c8 :8fce0000 :8fd40004 :0c0041d8 :54000000 :20100000 :20150000 :afd5ff50 :afd5ff54 :afd5ff58 :afd5ff5c :afd5ff60 :afd5ff64 :afd5ff68 :afd5ff6c :afd5ff70 :afd5ff74 :afd5ff78 :afd5ff7c :3c010001 :24210d78 :20150000 :a0350000 :23bdfff8 :3c150001 :26b50a98 :afb50000 :0c004210 :54000000 :0c0009e0 :54000000 :3c150001 :26b50ab0 :afb50000 :afae0004 :0c0041f0 :54000000 :0fffbb24 :54000000 :23bdfff8 :3c150001 :26b50ac4 :afb50000 :3c020001 :24423e6c :8c420000 :afa20004 :afa10008 :0c0041bc :54000000 :3c150001 :26b50ae8 :afb50000 :afae0004 :0c0041a4 :54000000 :20090000 :23bd0010 :012e082a :10200044 :54000000 :00141020 :23bdfff0 :3c150001 :26b50b00 :afb50000 :afa90004 :8c550000 :afb50008 :0c004168 :54000000 :23bd0010 :20420004 :21290001 :012e082a :1420ffc8 :54000000 :0fffb4f8 :54000000 :20090000 :012e082a :1020033c :54000000 :23ccff80 :23cdff38 :3c0f0001 :25ef0b2b :21f20001 :21f10002 :00144020 :8d020000 :90410000 :6021002d :102002f8 :54000000 :90420001 :60410066 :142000e0 :54000000 :6c410066 :14200018 :54000000 :60410044 :102002a0 :54000000 :08000024 :54000000 :60410069 :14200048 :54000000 :60410075 :10200280 :54000000 :08000260 :54000000 :23bdfff8 :3c150001 :26b50d78 :afb50000 :21080004 :21290001 :8d010000 :afa10004 :0fffc934 :54000000 :08000268 :54000000 :23bdfff0 :21080004 :21290001 :8d150000 :afb50000 :20150000 :afb50004 :afb50008 :0fffcf4c :54000000 :00011820 :afa10000 :afac0004 :0fffce2c :54000000 :3c150001 :26b50b14 :afb50000 :8d010000 :afa10004 :afa30008 :afac000c :0c004028 :54000000 :23bd0010 :08000200 :54000000 :20150000 :afd5ff38 :23bdffe8 :21080004 :21290001 :8d150000 :afb50000 :23c1ff4c :afa10004 :23c1ff48 :afa10008 :23c1ff44 :afa1000c :23c1ff40 :afa10010 :23c1ff3c :afa10014 :0ffff24c :54000000 :00015020 :3c150001 :26b507f4 :afb50000 :8d010000 :afa10004 :8fd5ff4c :afb50008 :0c003fa8 :54000000 :3c150001 :26b50810 :afb50000 :8d010000 :afa10004 :8fd5ff48 :afb50008 :8fd5ff44 :afb5000c :0c003f7c :54000000 :3c150001 :26b50838 :afb50000 :8d010000 :afa10004 :8fd5ff40 :afb50008 :8fd5ff3c :afb5000c :0c003f50 :54000000 :23bd0018 :3c0b0001 :256b0b2e :23bdfff0 :afaa0000 :3c150001 :26b50b2b :afb50004 :afad0008 :201500c8 :afb5000c :0ffff5f8 :54000000 :00011820 :23bd0010 :6c610000 :10200098 :54000000 :20020000 :0043082a :1020ffb8 :54000000 :000b3820 :00113020 :00122820 :000f2020 :23bdffe8 :3c150001 :26b50bf4 :afb50000 :8fc1ff38 :00220820 :00230822 :afa10004 :90810000 :afa10008 :90a10000 :afa1000c :90c10000 :afa10010 :90e10000 :afa10014 :0c003ea0 :54000000 :23bd0018 :20e70004 :20c60004 :20a50004 :20840004 :20420004 :0043082a :1420ff98 :54000000 :0bffff34 :54000000 :23bdfff8 :afaa0000 :0c003de0 :54000000 :0800003c :54000000 :21080004 :21290001 :8d100000 :00099820 :08000028 :54000000 :23bdfff8 :3c150001 :26b50c0c :afb50000 :8d010000 :afa10004 :0c003e24 :54000000 :23bd0008 :66010000 :14200018 :54000000 :21080004 :21290001 :012e082a :1420fce8 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffcb44 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcb1c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c28 :afb50000 :0c003d90 :54000000 :23bd0008 :0c000c64 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffcac8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcaa0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c48 :afb50000 :0c003d14 :54000000 :23bd0008 :0fffb7a4 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffca4c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffca24 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c64 :afb50000 :0c003c98 :54000000 :23bd0008 :0fffd2f4 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc9d0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc9a8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c80 :afb50000 :0c003c1c :54000000 :23bd0008 :0c00127c :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc954 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc92c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50ca0 :afb50000 :0c003ba0 :54000000 :23bd0008 :0c001f08 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc8d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc8b0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50ccc :afb50000 :0c003b24 :54000000 :23bd0008 :23c2ff80 :23c3ffe3 :20150061 :a0550000 :20420001 :0043082c :1420ffec :54000000 :23bdfff8 :3c150001 :26b50cec :afb50000 :20150002 :afb50004 :0fffa1a8 :54000000 :00014820 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc824 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc7fc :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c150001 :26b50cf0 :afb50000 :afa90004 :0c003a6c :54000000 :23bd0008 :23bdfff0 :afa90000 :20150000 :afb50004 :afb50008 :0fffa770 :54000000 :afa90000 :23c1ff80 :afa10004 :20150050 :afb50008 :0fffa658 :54000000 :afa90000 :0fffa448 :54000000 :23bd0010 :66010000 :102000c4 :54000000 :00134820 :026e082a :10200044 :54000000 :23c4fff8 :51210002 :00341820 :01331022 :7041000a :10200028 :54000000 :50410002 :00240820 :8c750000 :ac35ff58 :20630004 :21290001 :012e082a :1420ffd0 :54000000 :23bdffd0 :8fd5ff50 :afb50000 :8fc1ff54 :afa10004 :8fd5ff58 :afb50008 :8fd5ff5c :afb5000c :8fd5ff60 :afb50010 :8fd5ff64 :afb50014 :8fd5ff68 :afb50018 :8fd5ff6c :afb5001c :8fd5ff70 :afb50020 :8fd5ff74 :afb50024 :8fd5ff78 :afb50028 :8fd5ff7c :afb5002c :0c000220 :54000000 :23bd0030 :0c003834 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc690 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc668 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50d08 :afb50000 :0c0038dc :54000000 :23bd0008 :23bdfff8 :3c030001 :24630438 :8c750000 :afb50000 :0c001bfc :54000000 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc604 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc5dc :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c150001 :26b50d3c :afb50000 :8c610000 :afa10004 :0c003848 :54000000 :23bd0008 :0fff98d4 :54000000 :0c00381c :54000000 :0c003820 :54000000 00010d74:00000000 000078a8:afbefffc :001df020 :afbffff8 :2fbd0008 :3c010001 :24210d74 :98200000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :3c010001 :24210e40 :8c210000 :3c1f0001 :27ff0e74 :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :3c1f0001 :27ff0e74 :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0408 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :20040000 :8fc10000 :64210000 :1020005c :54000000 :23c5fc10 :001ef820 :20020000 :00851820 :8fe10000 :00220820 :80210000 :a0610000 :20420001 :20630001 :20840001 :8fe10000 :00410820 :9021ffff :64210000 :1420ffd0 :54000000 :23ff0004 :8fe10000 :64210000 :1420ffb4 :54000000 :23c3fc10 :00641020 :23c1fc11 :00240820 :20060000 :a0260000 :a0460000 :23bdfff0 :20060000 :afa60000 :afa30004 :8fc60000 :afa60008 :20060001 :afa6000c :0fffdb64 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0fffd0a0 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0c0035c8 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff967c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff9638 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff95f4 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011d74:496e6974 :69616c69 :7a696e67 :20717565 :7565206c :696e6b20 :25642e0a :00 00007fb0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :3c050001 :24a51de0 :afa50000 :0c0000e0 :54000000 :20030000 :23bd0008 :3c040001 :24840d78 :3c020001 :24421dec :23bdfff8 :afa40000 :20050069 :afa50004 :0fffbe20 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2005002b :afa50004 :0fffbdf8 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c050001 :24a51d74 :afa50000 :afa30004 :0c003068 :54000000 :23bd0008 :20050000 :ac450000 :23bdfff8 :afa20000 :0c000078 :54000000 :23bd0008 :20420010 :20630001 :7061018f :1420ff64 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :ac210000 :ac210004 :201f0000 :ac3f0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011d94:25733a20 :25730a00 00011d9c:51756575 :65467265 :654c696e :6b00 00011dac:4c696e6b :206e6f74 :20656d70 :747900 000080fc:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8c610000 :64210000 :10200038 :54000000 :23bdfff0 :3c040001 :24841d94 :afa40000 :3c010001 :24211d9c :afa10004 :3c040001 :24841dac :afa40008 :0c002f78 :54000000 :23bd0010 :3c020001 :24421de0 :8c410004 :ac620008 :ac610004 :8c240000 :ac640000 :ac230000 :8c610000 :ac230004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011dbc:51756575 :65416c6c :6f634c69 :6e6b00 00011dcc:4c696e6b :206e6f74 :20616c6c :6f636174 :65642100 000081b4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24421de0 :8c410008 :60210000 :14200054 :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c640000 :ac240000 :8c610000 :8c640004 :ac240004 :8c620008 :8c410008 :2021ffff :ac410008 :20040000 :ac640000 :08000008 :54000000 :20030000 :64610000 :14200038 :54000000 :23bdfff0 :3c040001 :24841d94 :afa40000 :3c010001 :24211dbc :afa10004 :3c040001 :24841dcc :afa40008 :0c002e5c :54000000 :23bd0010 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff8ef0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff8eac :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8e68 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000136ec:456e7465 :72696e67 :2053796e :63684d6f :64756c65 :496e6974 :0a00 00013708:4c656176 :696e6720 :53796e63 :684d6f64 :756c6549 :6e69740a :00 0000873c:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :23bdfff8 :3c020001 :24420d78 :afa20000 :20030070 :afa30004 :0fffb6c4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb69c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :246336ec :afa30000 :0c002910 :54000000 :23bd0008 :3c1f0001 :27ff37d0 :23e2026c :20030000 :afe30010 :23ff0014 :03e2082c :1420ffec :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20030070 :afa30004 :0fffb62c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb604 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :24633708 :afa30000 :0c002878 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :23bdfff8 :afa20000 :0ffff81c :54000000 :ac43000c :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :2005000f :afa50000 :0fff8988 :54000000 :00012020 :23bd0008 :20030000 :3c1f0001 :27ff37d0 :001f1020 :8fe10010 :64210000 :10200078 :54000000 :205f0014 :20630001 :7061001f :1420ffdc :54000000 :23bdfff8 :afa40000 :0fff893c :54000000 :23bd0008 :60610020 :14200054 :54000000 :50610002 :00230820 :50210002 :3c050001 :24a537d0 :00251020 :23bdfff8 :afa20000 :0ffff740 :54000000 :8fc50000 :ac45000c :23bd0008 :00030820 :08000018 :54000000 :20050001 :afe50010 :0bffff94 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013724:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 00013744:50726f63 :20307825 :78207761 :6974696e :67206f6e :2073656d :20307825 :782c2063 :6f756e74 :3d25642e :0a00 00013770:53757370 :656e6469 :6e672063 :75727265 :6e742070 :726f6320 :28307825 :78292e0a :00 000089d8:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc40000 :23bdfff8 :2007000f :afa70000 :0fff8874 :54000000 :00013020 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070049 :afa70004 :0fffb3f8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb3d0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c070001 :24e73724 :afa70000 :afa60004 :0c002640 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070073 :afa70004 :0fffb380 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb358 :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070001 :24e73744 :afa70000 :3c010001 :24210e40 :8c210000 :afa10004 :afa40008 :8c87000c :afa7000c :0c0025b0 :54000000 :23bd0010 :8c81000c :2021ffff :ac81000c :68210000 :102000d8 :54000000 :0ffff670 :54000000 :00011020 :3c050001 :24a50e40 :8ca10000 :20070000 :ac470000 :ac41000c :23bdfff8 :3c030001 :24630d78 :afa30000 :20070073 :afa70004 :0fffb2b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0fffb28c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c070001 :24e73770 :afa70000 :8ca10000 :afa10004 :0c0024f8 :54000000 :23bd0008 :8c810004 :ac440008 :ac410004 :8c270000 :ac470000 :ac220000 :8c410000 :ac220004 :8c810008 :20210001 :ac810008 :0fff86c4 :54000000 :23bdfff8 :afa60000 :0fff8668 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244237d0 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffd2c :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013794:5369676e :616c6c69 :6e67206f :6e207365 :6d203078 :25782c20 :636f756e :743d2564 :2e0a00 000137b8:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 00008ce8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :23bdfff8 :2005000f :afa50000 :0fff856c :54000000 :00012020 :23bd0008 :23bdfff8 :3c030001 :24630d78 :afa30000 :20050073 :afa50004 :0fffb0f0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2005002b :afa50004 :0fffb0c8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c050001 :24a53794 :afa50000 :afa20004 :8c45000c :afa50008 :0c002330 :54000000 :23bd0010 :8c41000c :20210001 :ac41000c :70210000 :102000ec :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c650000 :ac250000 :8c610000 :8c650004 :ac250004 :8c620008 :8c410008 :2021ffff :ac410008 :20050000 :ac650000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20050073 :afa50004 :0fffb010 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2005002b :afa50004 :0fffafe8 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c050001 :24a537b8 :afa50000 :8c61000c :afa10004 :0c002254 :54000000 :23bd0008 :23bdfff8 :8c65000c :afa50000 :0fffc2e4 :54000000 :afa30000 :0ffff25c :54000000 :23bd0008 :23bdfff8 :afa40000 :0fff83d4 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244237d0 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffdb0 :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013a50:3a207472 :6170732e :632c7620 :312e3120 :32303030 :2f30392f :32302030 :313a3530 :3a313920 :656c6d20 :45787020 :656c6d20 :303030 00008f74:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff821c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff81d8 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8194 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :24210010 :8fdf0000 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :242101c0 :201f0001 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013a84:46617461 :6c3a2043 :756d756c :61746976 :65206c65 :6e677468 :206f6620 :616c6c20 :61726775 :6d656e74 :73203e20 :3130300a :00 00009478:afbefffc :001df020 :afbffff8 :2fbd06a0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc40000 :8fc60004 :23c2fbf8 :23c3fc5b :200c0000 :a04c0000 :20420001 :0043082c :1420ffec :54000000 :20050000 :64c10000 :142000a0 :54000000 :23bdfff0 :3c020001 :24420e40 :8c4c0000 :afac0000 :afa40004 :23c1f990 :afa10008 :200c0200 :afac000c :0fffa06c :54000000 :23bd0010 :23c4fb8f :23c3fb90 :23bdfff0 :8c4c0000 :afac0000 :8fc1f990 :00250820 :afa10004 :afa30008 :200c0001 :afac000c :0fffa034 :54000000 :20840001 :20630001 :20a50001 :23bd0010 :70a10063 :10200060 :54000000 :90810000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1f990 :afa10004 :200c0200 :afac0008 :0fffac20 :54000000 :8fccf990 :afac0000 :23c1fb90 :afa10004 :200c0064 :afac0008 :0fffa414 :54000000 :23bd0010 :200c0000 :a3ccfbf3 :20050000 :64c10000 :142000b0 :54000000 :3c080001 :25080e40 :23cbfbf8 :23cafbf7 :23c6fff8 :23c90020 :8cc1f998 :64210000 :1020012c :54000000 :20020000 :00063820 :00aa2020 :00ab1820 :23bdfff0 :8d0c0000 :afac0000 :8ce1f998 :00220820 :afa10004 :afa30008 :200c0001 :afac000c :0fff9f40 :54000000 :20840001 :20630001 :20a50001 :20420001 :23bd0010 :70a103ff :10200014 :54000000 :90810000 :64210000 :1420ffa8 :54000000 :20c60004 :00c9082c :102000b0 :54000000 :0bffff70 :54000000 :23c5fbf8 :00053820 :23c3fff8 :23c60020 :2064f998 :8c820000 :64410000 :10200084 :54000000 :23bdfff8 :afa20000 :0fffa504 :54000000 :00a11020 :00470822 :23bd0008 :6c210064 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c3a84 :afac0000 :0c0019e0 :54000000 :0c0019c0 :54000000 :23bd0008 :23bdfff8 :afa50000 :8c810000 :afa10004 :0fffa260 :54000000 :200c0000 :a04c0000 :23bd0008 :20630004 :0066082c :1420ff70 :54000000 :200c0000 :a3ccfff7 :23bdfff0 :200c0000 :afac0000 :23c1fbf8 :afa10004 :23c1fb90 :afa10008 :200c0001 :afac000c :0fffbe68 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd00d0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :8fc40000 :8fc10004 :20080000 :00081820 :64210000 :142000a0 :54000000 :23bdfff0 :3c020001 :24420e40 :8c4b0000 :afab0000 :afa40004 :23c1ff58 :afa10008 :200b0028 :afab000c :0fff9d58 :54000000 :23bd0010 :23c5ffa7 :23c4ffa8 :23bdfff0 :8c4b0000 :afab0000 :8fc1ff58 :00230820 :afa10004 :afa40008 :200b0001 :afab000c :0fff9d20 :54000000 :20a50001 :20840001 :20630001 :23bd0010 :7061004f :10200060 :54000000 :90a10000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1ff58 :afa10004 :200b0028 :afab0008 :0fffa90c :54000000 :8fcbff58 :afab0000 :23c1ffa8 :afa10004 :200b0050 :afab0008 :0fffa100 :54000000 :23bd0010 :200b0000 :a3cbfff7 :23c3ffa8 :80620000 :304100ff :64210000 :102000f0 :54000000 :23cafff8 :23c9ff5c :51010002 :00293820 :002a3020 :304100ff :60210025 :102000b4 :54000000 :90610001 :60210025 :10200010 :54000000 :20630001 :08000098 :54000000 :8ceb0000 :accbff88 :51010002 :00292820 :002a2020 :20630001 :807f0000 :33e200ff :60410073 :14200060 :54000000 :6041006c :1420ffe0 :54000000 :23e1ff9a :302100ff :70210001 :14200010 :54000000 :60410065 :10200020 :54000000 :20e70004 :20c60004 :21080001 :8ca50004 :ac85ff8c :08000018 :54000000 :23e1ff9f :302100ff :70210019 :1020ff90 :54000000 :20e70004 :20c60004 :21080001 :20630001 :80620000 :304100ff :64210000 :1420ff2c :54000000 :23bdffd8 :23c1ffa8 :afa10000 :8fc1ff80 :afa10004 :8fcbff84 :afab0008 :8fcbff88 :afab000c :8fcbff8c :afab0010 :8fcbff90 :afab0014 :8fcbff94 :afab0018 :8fcbff98 :afab001c :8fcbff9c :afab0020 :0c001694 :54000000 :23bd0028 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013ab8:496e7465 :72727570 :74206361 :7573653d :30782578 :20696172 :3d307825 :78206973 :723d3078 :25782061 :7267733d :30782530 :38782e0a :00 00013af0:476f7420 :6120636f :6e746578 :74207377 :69746368 :20747261 :70210a00 00013b0c:476f7420 :616e2065 :78697420 :74726170 :210a00 00013b20:476f7420 :6120666f :726b2074 :72617021 :0a00 00013b34:476f7420 :61207072 :6f636573 :7320736c :65657020 :74726170 :210a00 00013b50:476f7420 :61207072 :696e7466 :20747261 :70210a00 00013b64:476f7420 :616e206f :70656e20 :77697468 :20706172 :616d6574 :65727320 :28272573 :272c3078 :2578290a :00 00013b90:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :74726170 :20283078 :25782920 :2d206578 :6974696e :67210a00 00013bbc:476f7420 :61207469 :6d657220 :696e7465 :72727570 :74210a00 00013bd4:476f7420 :61206b65 :79626f61 :72642069 :6e746572 :72757074 :20286368 :61723d30 :78257828 :2563292c :206e6c65 :66743d25 :6429210a :00 00013c0c:54726170 :20616363 :6573730a :00 00013c1c:43757272 :656e7420 :50524f43 :2025730a :00 00013c30:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c206164 :64726573 :73206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 00013c68:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c20696e :73747275 :6374696f :6e206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 00013ca4:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :73797374 :656d2069 :6e746572 :72757074 :20283078 :25782920 :2d206578 :6974696e :67210a00 00013cdc:41626f75 :7420746f :20726574 :75726e20 :66726f6d :20646f69 :6e746572 :72757074 :2e0a00 00009a80:afbefffc :001df020 :afbffff8 :2fbd0058 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc60004 :8fc50008 :8fc3000c :23bdfff8 :3c040001 :24840d78 :afa40000 :20070074 :afa70004 :0fffa360 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2007002b :afa70004 :0fffa338 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070001 :24e73ab8 :afa70000 :afa20004 :afa60008 :afa5000c :afa30010 :0c00159c :54000000 :23bd0018 :3c070800 :24e70000 :00470824 :64210000 :10200998 :54000000 :3c07f7ff :24e7ffff :00471024 :60410400 :14200110 :54000000 :6c410400 :14200074 :54000000 :60410212 :142006ac :54000000 :6c410212 :14200030 :54000000 :60410210 :14200580 :54000000 :6c410210 :142005d0 :54000000 :60410201 :10200924 :54000000 :08000350 :54000000 :60410214 :142004f8 :54000000 :68410214 :142003cc :54000000 :60410300 :102008f8 :54000000 :08000100 :54000000 :60410432 :142006cc :54000000 :6c410432 :14200030 :54000000 :60410430 :142001e8 :54000000 :6c410430 :14200674 :54000000 :60410410 :102008b4 :54000000 :08000240 :54000000 :60410451 :14200750 :54000000 :6c410451 :14200018 :54000000 :60410450 :10200888 :54000000 :08000688 :54000000 :60410452 :142007cc :54000000 :60410580 :10200868 :54000000 :0800055c :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa1a0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa178 :54000000 :23bd0008 :64210000 :10200908 :54000000 :23bdfff8 :3c070001 :24e73af0 :080008e4 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa134 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa10c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b0c :afa70000 :0c001380 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa0c0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa098 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b0c :afa70000 :0c00130c :54000000 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :0fffdcb4 :54000000 :08000958 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa028 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa000 :54000000 :23bd0008 :64210000 :10200904 :54000000 :23bdfff8 :3c070001 :24e73b20 :afa70000 :0c001274 :54000000 :080008e0 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff9fb0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9f88 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b34 :afa70000 :0c0011fc :54000000 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :0fffb0ec :54000000 :0fffac50 :54000000 :08000840 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff9f10 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9ee8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b50 :afa70000 :0c00115c :54000000 :23bd0008 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff81c :54000000 :080007ac :54000000 :30a10040 :64210000 :1020001c :54000000 :8c670000 :afc7ffe8 :8c630004 :afc3ffec :0800006c :54000000 :23bdfff0 :3c020001 :24420e40 :8c470000 :afa70000 :afa30004 :23c1ffe8 :afa10008 :20070008 :afa7000c :0fff9594 :54000000 :8c420000 :afa20000 :8fc1ffe8 :afa10004 :23c2ffc8 :afa20008 :2007001f :afa7000c :0fff956c :54000000 :20070000 :a3c7ffe7 :afc2ffe8 :23bd0010 :23bdfff8 :20070000 :afa70000 :0fff724c :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :8fc1ffec :3c070001 :24e70000 :00270820 :afa10004 :0fffaaa4 :54000000 :23bdfff8 :3c070001 :24e73b64 :afa70000 :8fc1ffe8 :afa10004 :8fc7ffec :afa70008 :0c001034 :54000000 :23bd0010 :23bdfff8 :afa20000 :0fff71d8 :54000000 :0800068c :54000000 :23bdfff8 :20070000 :afa70000 :0fff71bc :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffaa20 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff717c :54000000 :08000630 :54000000 :23bdfff8 :20070000 :afa70000 :0fff7160 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa9c4 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7120 :54000000 :080005d4 :54000000 :23bdfff8 :20070000 :afa70000 :0fff7104 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa968 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff70c4 :54000000 :08000578 :54000000 :23bdfff8 :20070000 :afa70000 :0fff70a8 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa90c :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7068 :54000000 :0800051c :54000000 :23bdfff8 :20070000 :afa70000 :0fff704c :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa8b0 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff700c :54000000 :080004c0 :54000000 :0fffd64c :54000000 :00011020 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa868 :54000000 :0800048c :54000000 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff1a8 :54000000 :0800046c :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24210e40 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff926c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9e84 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe578 :54000000 :00011020 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa7a0 :54000000 :080003c4 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24210e40 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff91c4 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9ddc :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe854 :54000000 :00011020 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa6f8 :54000000 :0800031c :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24210e40 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff911c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9d34 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffea38 :54000000 :00011020 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa650 :54000000 :08000274 :54000000 :23bdfff8 :3c070001 :24e73b90 :08000248 :54000000 :60410003 :14200148 :54000000 :6c410003 :14200024 :54000000 :60410001 :142001a8 :54000000 :60410002 :1020020c :54000000 :08000154 :54000000 :60410040 :14200038 :54000000 :6c410040 :14200018 :54000000 :60410020 :102001e0 :54000000 :080001c8 :54000000 :60410048 :102001cc :54000000 :08000088 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff98b8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9890 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73bbc :afa70000 :0c000b04 :54000000 :23bd0008 :0fffa574 :54000000 :08000168 :54000000 :3c04fff0 :248401a0 :3c03fff0 :24630180 :8c820000 :8c610000 :23bdfff0 :3c070001 :24e73bd4 :afa70000 :afa10004 :afa10008 :afa2000c :0c000ab4 :54000000 :23bd0010 :6c410001 :1020011c :54000000 :0bffffc0 :54000000 :23bdfff8 :3c070001 :24e73c0c :afa70000 :0c000a84 :54000000 :3c010001 :24210e40 :8c210000 :afa10000 :0fffd434 :54000000 :080000d8 :54000000 :3c010001 :24210e40 :8c210000 :23bdfff8 :3c070001 :24e73c1c :afa70000 :20210010 :afa10004 :0c000a38 :54000000 :23bdfff8 :3c070001 :24e73c30 :0800003c :54000000 :3c010001 :24210e40 :8c210000 :23bdfff8 :3c070001 :24e73c1c :afa70000 :20210010 :afa10004 :0c0009f8 :54000000 :23bdfff8 :3c070001 :24e73c68 :afa70000 :afa60004 :afa50008 :0c0009d8 :54000000 :0c0009b8 :54000000 :23bd0010 :0800003c :54000000 :0fffd3b0 :54000000 :0800002c :54000000 :23bdfff8 :3c070001 :24e73ca4 :afa70000 :afa20004 :0c000998 :54000000 :0c000978 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff96d0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff96a8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73cdc :afa70000 :0c00091c :54000000 :23bd0008 :0fff69a8 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff69a0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff695c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff6918 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013d00:50726f63 :65737320 :2300 00013d0c:52756e6e :696e6720 :70726f63 :65737320 :25642028 :69746572 :6174696f :6e202564 :29210a00 0000ac8c:afbefffc :001df020 :afbffff8 :2fbd0078 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc60000 :2001000a :00c00035 :00200835 :0401000f :00001034 :50410002 :00220820 :50210001 :00c13822 :70c10063 :102000dc :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25083da4 :00280820 :afa10000 :20080001 :afa80004 :0fffdb64 :54000000 :20030001 :23bd0008 :23c4ffd0 :23c5ffa8 :00061020 :23bdfff8 :afa40000 :3c080001 :25083d00 :afa80004 :0fff8c2c :54000000 :afa30000 :afa50004 :0fff9158 :54000000 :afa40000 :afa50004 :0fff8cfc :54000000 :23bdfff8 :3c080000 :2508ac8c :afa80000 :50410005 :00220822 :50210002 :00220820 :50210003 :00260820 :afa10004 :afa40008 :20080000 :afa8000c :0fffa824 :54000000 :23bd0010 :00461020 :20630001 :70610006 :1420ff70 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25083da4 :00280820 :afa10000 :0fffdbf0 :54000000 :20030000 :23bd0008 :50c20001 :0062082a :10200070 :54000000 :200503e8 :00022020 :00600035 :00a00835 :0401000f :00001034 :50410005 :00220822 :50210002 :00220820 :50210003 :00610829 :14200028 :54000000 :23bdfff0 :3c080001 :25083d0c :afa80000 :afa60004 :afa30008 :0c000278 :54000000 :23bd0010 :20630001 :0064082a :1420ffa0 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25083da4 :00280820 :afa10000 :0fffde54 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013d30:63686173 :65746169 :6c00 00013d3c:43686173 :696e6720 :7461696c :2025642e :0a00 00013d50:4f70656e :206f6620 :2825732c :30782578 :29207265 :7475726e :73203078 :25782e0a :00 00013d74:43686173 :65546169 :6c00 0000aecc:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :24633d30 :23bdfff8 :3c050001 :24a53d3c :afa50000 :afa40004 :0c0001c0 :54000000 :afa30000 :20822000 :afa20004 :0c000158 :54000000 :23bdfff8 :3c050001 :24a53d50 :afa50000 :afa30004 :afa20008 :afa1000c :0c000188 :54000000 :23bd0010 :70810027 :1020003c :54000000 :23bdfff0 :3c050000 :24a5aecc :afa50000 :20810001 :afa10004 :3c050001 :24a53d74 :afa50008 :20050000 :afa5000c :0fffa640 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013d80:25642000 :52616e64 :6f6d206e :756d6265 :72202530 :32692069 :73203078 :25303878 :2e0a00 0000afb8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24423da4 :204300b4 :23bdfff8 :afa20000 :20040001 :afa40004 :0fffd888 :54000000 :23bd0008 :20420014 :0043082c :1420ffd8 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013e6c:00013e74 0000b02c:44000300 :4be00000 :54000000 :4be00000 :54000000 :44002013 :4be00000 :54000000 :44002014 :4be00000 :54000000 :44002010 :4be00000 :54000000 :44002011 :4be00000 :54000000 :44002012 :4be00000 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44002f00 :4be00000 :54000000 :44000300 :4be00000 :54000000 :44002001 :4be00000 :54000000

home/bshapir/cs314/project4/option1/lab4_2/lab4.ppt

Lab 4: Memory Management

Lab 4

  • Part 1: Dynamic one-level paging
  • Part 2: Dynamic two-level paging
  • Part 3: Shared memory

lab4-1: Dynamic one-level page

  • DLXOS so far
  • Static one-level page table
  • Single 64KB page
  • memory.h:
  • #define MEMORY_L1_PAGE_SIZE_BITS 16
  • #define L1_MAX_ENTRIES 0x01
  • process.c: ProcessFork()
  • pcb->npages = 1;

lab4-1: Dynamic one-level page

  • Page size: 8kb
  • 256 total pages, 2mb total space
  • Max 512kb virtual space per process
  • Max 16 physical pages per process
  • Track using PCB->npages
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Lab4-1: The Translation

Page 0

Page 1

Page 2

Page N-2

Page N-1

Frame

Number

Valid

Flag

page table

Virtual Address

offset

Physical Address

offset

(512KB  19bit)

Frame Number

(2MB  21bit)

Page Number

Lab4-1: To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, …
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address using page table
  • process.c: ProcessFork()
  • Allocate initial pages (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exits.

Lab4-1: More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

Utility functions

  • MemoryAllocPage()
  • Allocate a page of memory and return page number.
  • MemorySetupPte()
  • Given a page number, return the page table entry.
  • MemoryFreePage()
  • Given a page table entry, free the page.

Lab4-2: Dynamic two-level paging

  • Virtual address space per process: 16MB
  • How many bits is virtual address?
  • Page size: 8kb
  • How many pages one process has?
  • One L1 page table entry corresponds to 512kb
  • How many entries in L1, L2 page tables?
  • Max 1MB physical space per process
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Two Level Paging

L1

Virtual Memory

16MB

0

L2

To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, L2_MAX_ENTRIES …
  • process.c: ProcessFork()
  • Allocate initial L2 page table and initial page (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exit.
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address

More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix L1, L2 page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

home/bshapir/cs314/project4/option1/lab4_2/src/synch.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r3,((LC0)>>16)&0xffff addui r3,r3,(LC0)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L52: lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff addi r2,r31,#620 L57: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59 nop ; not filled. L60: addi r29,r29,#-8 lhi r3,((LC1)>>16)&0xffff addui r3,r3,(LC1)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L59: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff L79: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79 nop ; not filled. L77: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83 nop ; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems)>>16)&0xffff addui r5,r5,(_sems)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85 nop ; not filled. L86: addi r5,r0,#1 sw 16(r31),r5 j L77 nop ; not filled. L83: addi r1,r0,#-1 L85: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop ; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89 nop ; not filled. L90: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L89: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-16 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 L91: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95 nop ; not filled. L96: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L95: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop ; not filled. L93: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105 nop ; not filled. L107: addi r1,r0,#1 j L105 nop ; not filled. L106: addi r1,r0,#1 L105: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-16 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L112: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117 nop ; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118 nop ; not filled. L119: addi r29,r29,#-8 lhi r5,((LC6)>>16)&0xffff addui r5,r5,(LC6)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L118: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L114: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125 nop ; not filled. L127: addi r1,r0,#1 j L125 nop ; not filled. L126: addi r1,r0,#1 L125: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems: .space 640

home/bshapir/cs314/project4/option1/lab4_2/src/userprog.c

#include "lab4.h" #define MAIN_TEST main(int argc, char *argv[]) { int TestcaseId=0; switch(argc) { case 2: TestcaseId=dstrtol(argv[1],NULL,10); Printf("Testing case %d\n",TestcaseId); break; default: Printf("\nUsage: "); Printf(argv[0]); Printf(" [case id]\n"); exit(); } switch(TestcaseId) { case 1: process_create("userprog1.dlx.obj",NULL); break; case 2: process_create("userprog2.dlx.obj",NULL); break; default: Printf("Test case %d not supported\n",TestcaseId); break; } }

home/bshapir/cs314/project4/option1/lab4_2/src/usertraps.o

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

home/bshapir/cs314/project4/option1/lab4_2/src/userprog1.c

// This test case should generate 12 page faults and display output as Sum=66. main() { int i; char Sum=0; char * charPtr= (char *)0x0100000; for(i=0;i<12;i++) *(charPtr + 8196*i)=(char )i; for(i=0;i<12;i++) Sum+= *(charPtr + 8196 *i); Printf("In Userprog1, Sum : %d\n",Sum); }

home/bshapir/cs314/project4/option1/lab4_2/src/trap_random.o

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

home/bshapir/cs314/project4/option1/lab4_2/src/dlx.h

// // Definitions of flags and other things defined by the DLX processor. // #ifndef _dlx_h_ #define _dlx_h_ #define DLX_STATUS_INTRMASK 0x0f // up to 16 interrupt levels #define DLX_STATUS_FPTRUE 0x20 // Set if last FP comparison was true #define DLX_STATUS_SYSMODE 0x40 // Set if CPU is in system mode #define DLX_STATUS_PAGE_TABLE 0x100 // Set -> use a page table #define DLX_STATUS_TLB 0x200 // Set -> use a software-loaded TLB #endif // _dlx_h_

home/bshapir/cs314/project4/option1/lab4_2/src/osend.s

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

home/bshapir/cs314/project4/option1/lab4_2/src/traps.c

// // traps.c // // This file handles the low-level trap stuff for an operating system // running under DLX. static char rcsid[] = "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlx.h" #include "dlxos.h" #include "traps.h" #include "process.h" //---------------------------------------------------------------------- // // TimerSet // // Set the timer to go off after a particular number of microseconds. // The number of microseconds is passed to the routine. // //---------------------------------------------------------------------- void TimerSet (int us) { *((int *)DLX_TIMER_ADDRESS) = us; } � //---------------------------------------------------------------------- // // KbdModuleInit // // Initialize the keyboard module. This involves turning on // interrupts for the keyboard. // //---------------------------------------------------------------------- void KbdModuleInit () { *((uint32 *)DLX_KBD_INTR) = 1; } //-------------------------------------------------------------------- // GetUintFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static uint32 GetUintFromTrapArg(uint32 *trapArgs, int sysmode) { uint32 arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // GetIntFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static int GetIntFromTrapArg(uint32 *trapArgs, int sysmode) { int arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // Here we support reading the arguments // Maximum 10 command-line arguments are allowed // Also the total length of the arguments including the terminating // '\0' should be less than or equal to 100 //-------------------------------------------------------------------- static void TrapProcessCreateHandler(uint32 *trapArgs, int sysmode) { char allargs[SIZE_ARG_BUFF]; char name[100]; int i=0, j=0, k=0; uint32 args[MAX_ARGS]; char *destination; // The first argument is the name of the executable file i=0; for(i=0;i<100; i++) allargs[i] = 0; i=0; if(!sysmode) { //Get the arguments into the sytem space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,name+i,1); i++; } while ((i < sizeof (name)) && (name[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], name, sizeof (name)); } name[sizeof(name)-1] = '\0'; // null terminate the name i=0; if(!sysmode) { //Copy the rest of the arguments to the system space for(j=0; (j<11)&&(args[j]!=0); j++) { k=0; do { MemoryCopyUserToSystem (currentPCB,((char*)args[j])+k,allargs+i,1); i++; k++; } while ((i<sizeof(allargs)) && (allargs[i-1]!='\0')); } } else { destination = &allargs[0]; for(j=0; (j<11)&&(args[j]!=0); j++) { k = dstrlen((char *)args[j]); //length of the argument if(&destination[k]-allargs>100) { printf("Fatal: Cumulative length of all arguments > 100\n"); exitsim(); } dstrcpy(destination, (char *)args[j]); destination[k] = '\0'; } } allargs[sizeof(allargs)-1] = '\0'; // null terminate the name ProcessFork(0, (uint32)allargs, name, 1); } � //---------------------------------------------------------------------- // // TrapPrintfHandler // // Handle a printf trap.here. This printf code will correctly // handle integers but will not correctly handle strings (yet). // Also, note that the maximum format string length is 79 characters. // Exceeding this length will cause the format to be truncated. // //---------------------------------------------------------------------- static void TrapPrintfHandler (uint32 *trapArgs, int sysMode) { char formatstr[80]; int i = 0; uint32 printfArgs[10]; uint32 args[10]; int nargs = 0; char *c; // The first argument is the print format string. Copy it to system // space, truncating if necessary. i = 0; if (!sysMode) { // Get the arguments themselves into system space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,formatstr+i,1); i++; } while ((i < sizeof (formatstr)) && (formatstr[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], formatstr, sizeof (formatstr)); } formatstr[sizeof(formatstr)-1] = '\0'; // null terminate the fmt str for (c = formatstr; *c != '\0'; c++) { if (*c == '%') { // if this is a %%, skip past second % if (*(c+1) == '%') { c++; continue; } // Get the current argument off the stack printfArgs[nargs] = args[nargs+1]; // dbprintf ('t', "Argument %d at 0x%x is %d (0x%x).\n", nargs, // args[nargs], args[nargs]); while (1) { c++; if (*c == 's') { // Handle strings here. They don't work for user programs (yet...) break; } else if (*c == 'l') { continue; } else if ((*c == 'f') || (*c == 'g') || (*c == 'e')) { // If it's a floating point number, it'll be passed as // a double, so grab the second word also. nargs += 1; printfArgs[nargs] = args[nargs+1]; break; } else if ((*c >= 'a') && (*c <= 'z')) { // If it's another formatting character, it's not // a string, but we can leave the loop anyway. break; } } nargs += 1; } } printf (formatstr,printfArgs[0],printfArgs[1],printfArgs[2], printfArgs[3], printfArgs[4], printfArgs[5], printfArgs[6], printfArgs[7]); } � //---------------------------------------------------------------------- // // doInterrupt // // Handle an interrupt or trap. // //---------------------------------------------------------------------- void dointerrupt (unsigned int cause, unsigned int iar, unsigned int isr, uint32 *trapArgs) { int result; int i; uint32 args[4]; int intrs; uint32 handle; int ihandle; PCB *pcb; dbprintf ('t',"Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n", cause, iar, isr, trapArgs); // If the TRAP_INSTR bit is set, this was from a trap instruction. // If the bit isn't set, this was a system interrupt. if (cause & TRAP_TRAP_INSTR) { cause &= ~TRAP_TRAP_INSTR; switch (cause) { case TRAP_CONTEXT_SWITCH: dbprintf ('t', "Got a context switch trap!\n"); ProcessSchedule (); break; case TRAP_EXIT: dbprintf ('t', "Got an exit trap!\n"); dbprintf ('t', "Got an exit trap!\n"); ProcessKill (currentPCB); break; case TRAP_PROCESS_FORK: dbprintf ('t', "Got a fork trap!\n"); break; case TRAP_PROCESS_SLEEP: dbprintf ('t', "Got a process sleep trap!\n"); ProcessSuspend (currentPCB); ProcessSchedule (); break; case TRAP_PRINTF: // Call the trap printf handler and pass the arguments and a flag // indicating whether the trap was called from system mode. dbprintf ('t', "Got a printf trap!\n"); TrapPrintfHandler (trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_OPEN: // Get the arguments to the trap handler. If this is a user mode trap, // copy them from user space. if (isr & DLX_STATUS_SYSMODE) { args[0] = trapArgs[0]; args[1] = trapArgs[1]; } else { char filename[32]; // trapArgs points to the trap arguments in user space. There are // two of them, so copy them to to system space. The first argument // is a string, so it has to be copied to system space and the // argument replaced with a pointer to the string in system space. MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof(args[0])*2); MemoryCopyUserToSystem (currentPCB, args[0], filename, 31); // Null-terminate the string in case it's longer than 31 characters. filename[31] = '\0'; // Set the argument to be the filename args[0] = (uint32)filename; } // Allow Open() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, args[1] + 0x10000); printf ("Got an open with parameters ('%s',0x%x)\n", args[0], args[1]); RestoreIntrs (intrs); break; case TRAP_CLOSE: // Allow Close() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_READ: // Allow Read() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_WRITE: // Allow Write() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_DELETE: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_SEEK: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_PROCESS_GETPID: ProcessSetResult(currentPCB, GetCurrentPid()); break; case TRAP_PROCESS_CREATE: TrapProcessCreateHandler(trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_SEM_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = SemCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_SEM_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleWait(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_SEM_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleSignal(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; default: printf ("Got an unrecognized trap (0x%x) - exiting!\n", cause); exitsim (); break; } } else { switch (cause) { case TRAP_TIMER: dbprintf ('t', "Got a timer interrupt!\n"); ProcessSchedule (); break; case TRAP_KBD: do { i = *((uint32 *)DLX_KBD_NCHARSIN); result = *((uint32 *)DLX_KBD_GETCHAR); printf ("Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n", result, result, i); } while (i > 1); break; case TRAP_ACCESS: //printf ("Exiting after illegal access at iar=0x%x, isr=0x%x\n", //iar, isr); printf("Trap access\n"); //exitsim (); ProcessKill(currentPCB); break; case TRAP_ADDRESS: pcb = currentPCB; printf("Current PROC %s\n", pcb->name); printf ("Exiting after illegal address at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_ILLEGALINST: pcb = currentPCB; printf("Current PROC %s\n", pcb->name); printf ("Exiting after illegal instruction at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_PAGEFAULT: //printf("In page fault handler\n"); PageFaultHandler(); break; default: printf ("Got an unrecognized system interrupt (0x%x) - exiting!\n", cause); exitsim (); break; } } dbprintf ('t',"About to return from dointerrupt.\n"); // Note that this return may schedule a new process! intrreturn (); }

home/bshapir/cs314/project4/option1/lab4_2/src/userprog.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 112 4 ; Text size: 3060 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 54657374 .ascii "Testing case %d\n\000" 12 00002004 696e6720 12 00002008 63617365 12 0000200c 2025640a 12 00002010 00 13 00002011 .align 2 14 00002014 LC1_LF0: 15 00002014 0a557361 .ascii "\nUsage: \000" 15 00002018 67653a20 15 0000201c 00 16 0000201d .align 2 17 00002020 LC2_LF0: 18 00002020 205b6361 .ascii " [case id]\n\000" 18 00002024 73652069 18 00002028 645d0a00 19 0000202c .align 2 20 0000202c LC3_LF0: 21 0000202c 75736572 .ascii "userprog1.dlx.obj\000" 21 00002030 70726f67 21 00002034 312e646c 21 00002038 782e6f62 21 0000203c 6a00 22 0000203e .align 2 23 00002040 LC4_LF0: 24 00002040 75736572 .ascii "userprog2.dlx.obj\000" 24 00002044 70726f67 24 00002048 322e646c 24 0000204c 782e6f62 24 00002050 6a00 25 00002052 .align 2 26 00002054 LC5_LF0: 27 00002054 54657374 .ascii "Test case %d not supported\n\000" 27 00002058 20636173 27 0000205c 65202564 27 00002060 206e6f74 27 00002064 20737570 27 00002068 706f7274 27 0000206c 65640a00 28 00002070 .text 29 00001000 .align 2 30 00001000 .proc _main 31 00001000 .global _main 32 00001000 _main: 33 ; Function 'main'; 0 bytes of locals, 0 regs to save. 34 00001000 afbefffc sw -4(r29),r30; push fp 35 00001004 001df020 add r30,r0,r29; fp = sp 36 00001008 afbffff8 sw -8(r29),r31; push ret addr 37 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 38 00001010 8fc20000 lw r2,(r30) 39 00001014 8fc30004 lw r3,4(r30) 40 00001018 0c000bd0 jal ___main 41 0000101c 54000000 nop; not filled. 42 00001020 60410002 seqi r1,r2,#2 43 00001024 10200050 beqz r1,L14_LF0 44 00001028 54000000 nop; not filled. 45 0000102c 23bdfff0 addi r29,r29,#-16 46 00001030 8c630004 lw r3,4(r3) 47 00001034 afa30000 sw (r29),r3 48 00001038 20040000 addi r4,r0,#0 49 0000103c afa40004 sw 4(r29),r4 50 00001040 2004000a addi r4,r0,#10 51 00001044 afa40008 sw 8(r29),r4 52 00001048 0c0008b4 jal _dstrtol 53 0000104c 54000000 nop; not filled. 54 00001050 00011020 add r2,r0,r1 55 00001054 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 56 00001058 24842000 addui r4,r4,(LC0_LF0)&0xffff 57 0000105c afa40000 sw (r29),r4 58 00001060 afa20004 sw 4(r29),r2 59 00001064 0c000134 jal _Printf 60 00001068 54000000 nop; not filled. 61 0000106c 23bd0010 addi r29,r29,#16 62 00001070 08000048 j L12_LF0 63 00001074 54000000 nop; not filled. 64 00001078 L14_LF0: 65 00001078 23bdfff8 addi r29,r29,#-8 66 0000107c 3c040000 lhi r4,((LC1_LF0)>>16)&0xffff 67 00001080 24842014 addui r4,r4,(LC1_LF0)&0xffff 68 00001084 afa40000 sw (r29),r4 69 00001088 0c000110 jal _Printf 70 0000108c 54000000 nop; not filled. 71 00001090 8c630000 lw r3,(r3) 72 00001094 afa30000 sw (r29),r3 73 00001098 0c000100 jal _Printf 74 0000109c 54000000 nop; not filled. 75 000010a0 3c040000 lhi r4,((LC2_LF0)>>16)&0xffff 76 000010a4 24842020 addui r4,r4,(LC2_LF0)&0xffff 77 000010a8 afa40000 sw (r29),r4 78 000010ac 0c0000ec jal _Printf 79 000010b0 54000000 nop; not filled. 80 000010b4 0c000b28 jal _exit 81 000010b8 54000000 nop; not filled. 82 000010bc L12_LF0: 83 000010bc 60410001 seqi r1,r2,#1 84 000010c0 14200018 bnez r1,L17_LF0 85 000010c4 54000000 nop; not filled. 86 000010c8 60410002 seqi r1,r2,#2 87 000010cc 1020005c beqz r1,L19_LF0 88 000010d0 54000000 nop; not filled. 89 000010d4 0800002c j L18_LF0 90 000010d8 54000000 nop; not filled. 91 000010dc L17_LF0: 92 000010dc 23bdfff8 addi r29,r29,#-8 93 000010e0 3c040000 lhi r4,((LC3_LF0)>>16)&0xffff 94 000010e4 2484202c addui r4,r4,(LC3_LF0)&0xffff 95 000010e8 afa40000 sw (r29),r4 96 000010ec 20040000 addi r4,r0,#0 97 000010f0 afa40004 sw 4(r29),r4 98 000010f4 0c0000bc jal _process_create 99 000010f8 54000000 nop; not filled. 100 000010fc 08000048 j L21_LF0 101 00001100 54000000 nop; not filled. 102 00001104 L18_LF0: 103 00001104 23bdfff8 addi r29,r29,#-8 104 00001108 3c040000 lhi r4,((LC4_LF0)>>16)&0xffff 105 0000110c 24842040 addui r4,r4,(LC4_LF0)&0xffff 106 00001110 afa40000 sw (r29),r4 107 00001114 20040000 addi r4,r0,#0 108 00001118 afa40004 sw 4(r29),r4 109 0000111c 0c000094 jal _process_create 110 00001120 54000000 nop; not filled. 111 00001124 08000020 j L21_LF0 112 00001128 54000000 nop; not filled. 113 0000112c L19_LF0: 114 0000112c 23bdfff8 addi r29,r29,#-8 115 00001130 3c040000 lhi r4,((LC5_LF0)>>16)&0xffff 116 00001134 24842054 addui r4,r4,(LC5_LF0)&0xffff 117 00001138 afa40000 sw (r29),r4 118 0000113c afa20004 sw 4(r29),r2 119 00001140 0c000058 jal _Printf 120 00001144 54000000 nop; not filled. 121 00001148 L21_LF0: 122 00001148 23bd0008 addi r29,r29,#8 123 0000114c 0c000a90 jal _exit 124 00001150 54000000 nop 125 00001154 .endproc _main 126 ;;; 127 ;;; Stub functions for DLX traps. 128 ;;; 129 ;;; Ethan L. Miller, 1999. Released to the public domain. 130 ;;; 131 ;;; The traps such as Open and Close 132 ;;; (note the capital letters) are for use by user programs. The traps 133 ;;; with names such as open and close (lower case) are for use by the OS. 134 ;;; 137 00001154 .align 2 139 ;;; The following are the traps to be used by user-level programs 140 ;;; 142 00001154 .align 2 143 00001154 .proc _Open 144 00001154 .global _Open 145 00001154 _Open: 146 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 147 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 148 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 149 00001154 44000213 trap #0x213 150 00001158 4be00000 jr r31 151 0000115c 54000000 nop 152 00001160 .endproc _Open 154 00001160 .proc _Close 155 00001160 .global _Close 156 00001160 _Close: 157 00001160 44000214 trap #0x214 158 00001164 4be00000 jr r31 159 00001168 54000000 nop 160 0000116c .endproc _Close 162 0000116c .proc _Read 163 0000116c .global _Read 164 0000116c _Read: 165 0000116c 44000210 trap #0x210 166 00001170 4be00000 jr r31 167 00001174 54000000 nop 168 00001178 .endproc _Read 170 00001178 .proc _Write 171 00001178 .global _Write 172 00001178 _Write: 173 00001178 44000211 trap #0x211 174 0000117c 4be00000 jr r31 175 00001180 54000000 nop 176 00001184 .endproc _Write 178 00001184 .proc _Lseek 179 00001184 .global _Lseek 180 00001184 _Lseek: 181 00001184 44000212 trap #0x212 182 00001188 4be00000 jr r31 183 0000118c 54000000 nop 184 00001190 .endproc _Lseek 186 00001190 .proc _Putchar 187 00001190 .global _Putchar 188 00001190 _Putchar: 189 00001190 44000280 trap #0x280 190 00001194 4be00000 jr r31 191 00001198 54000000 nop 192 0000119c .endproc _Putchar 194 0000119c .proc _Printf 195 0000119c .global _Printf 196 0000119c _Printf: 197 0000119c 44000201 trap #0x201 198 000011a0 4be00000 jr r31 199 000011a4 54000000 nop 200 000011a8 .endproc _Printf 202 000011a8 .proc _getpid 203 000011a8 .global _getpid 204 000011a8 _getpid: 205 000011a8 44000431 trap #0x431 206 000011ac 4be00000 jr r31 207 000011b0 54000000 nop 208 000011b4 .endproc _getpid 210 000011b4 .proc _process_create 211 000011b4 .global _process_create 212 000011b4 _process_create: 213 000011b4 44000432 trap #0x432 214 000011b8 4be00000 jr r31 215 000011bc 54000000 nop 216 000011c0 .endproc _process_create 219 000011c0 .proc _sem_create 220 000011c0 .global _sem_create 221 000011c0 _sem_create: 222 000011c0 44000450 trap #0x450 223 000011c4 4be00000 jr r31 224 000011c8 54000000 nop 225 000011cc .endproc _sem_create 227 000011cc .proc _sem_wait 228 000011cc .global _sem_wait 229 000011cc _sem_wait: 230 000011cc 44000451 trap #0x451 231 000011d0 4be00000 jr r31 232 000011d4 54000000 nop 233 000011d8 .endproc _sem_wait 235 000011d8 .proc _sem_signal 236 000011d8 .global _sem_signal 237 000011d8 _sem_signal: 238 000011d8 44000452 trap #0x452 239 000011dc 4be00000 jr r31 240 000011e0 54000000 nop 241 000011e4 .endproc _sem_signal 244 ; Compiled by GCC 246 000011e4 .align 2 247 000011e4 .proc _isspace 248 000011e4 .global _isspace 249 000011e4 _isspace: 250 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 251 000011e4 afbefffc sw -4(r29),r30; push fp 252 000011e8 001df020 add r30,r0,r29; fp = sp 253 000011ec afbffff8 sw -8(r29),r31; push ret addr 254 000011f0 2fbd0010 subui r29,r29,#16; alloc local storage 255 000011f4 afa20000 sw 0(r29),r2 256 000011f8 83c20003 lb r2,3(r30) 257 000011fc 201f0000 addi r31,r0,#0 258 00001200 304100ff andi r1,r2,#0x00ff 259 00001204 60210020 seqi r1,r1,#32 260 00001208 14200018 bnez r1,L6_LF2 261 0000120c 54000000 nop; not filled. 262 00001210 2041fff7 addi r1,r2,#-9 263 00001214 302100ff andi r1,r1,#0x00ff 264 00001218 70210001 sleui r1,r1,#1 265 0000121c 10200008 beqz r1,L5_LF2 266 00001220 54000000 nop; not filled. 267 00001224 L6_LF2: 268 00001224 201f0001 addi r31,r0,#1 269 00001228 L5_LF2: 270 00001228 001f0820 add r1,r0,r31 271 0000122c 8fa20000 lw r2,0(r29) 272 00001230 8fdffff8 lw r31,-8(r30) 273 00001234 001ee820 add r29,r0,r30 274 00001238 8fdefffc lw r30,-4(r30) 275 0000123c 4be00000 jr r31 276 00001240 54000000 nop 277 00001244 .endproc _isspace 278 00001244 .align 2 279 00001244 .proc _isxdigit 280 00001244 .global _isxdigit 281 00001244 _isxdigit: 282 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 283 00001244 afbefffc sw -4(r29),r30; push fp 284 00001248 001df020 add r30,r0,r29; fp = sp 285 0000124c afbffff8 sw -8(r29),r31; push ret addr 286 00001250 2fbd0010 subui r29,r29,#16; alloc local storage 287 00001254 afa20000 sw 0(r29),r2 288 00001258 83df0003 lb r31,3(r30) 289 0000125c 20020000 addi r2,r0,#0 290 00001260 23e1ffd0 addi r1,r31,#-48 291 00001264 302100ff andi r1,r1,#0x00ff 292 00001268 70210009 sleui r1,r1,#9 293 0000126c 14200028 bnez r1,L12_LF2 294 00001270 54000000 nop; not filled. 295 00001274 23e1ff9f addi r1,r31,#-97 296 00001278 302100ff andi r1,r1,#0x00ff 297 0000127c 70210005 sleui r1,r1,#5 298 00001280 14200014 bnez r1,L12_LF2 299 00001284 54000000 nop; not filled. 300 00001288 33e100ff andi r1,r31,#0x00ff 301 0000128c 64210041 snei r1,r1,#65 302 00001290 14200008 bnez r1,L11_LF2 303 00001294 54000000 nop; not filled. 304 00001298 L12_LF2: 305 00001298 20020001 addi r2,r0,#1 306 0000129c L11_LF2: 307 0000129c 00020820 add r1,r0,r2 308 000012a0 8fa20000 lw r2,0(r29) 309 000012a4 8fdffff8 lw r31,-8(r30) 310 000012a8 001ee820 add r29,r0,r30 311 000012ac 8fdefffc lw r30,-4(r30) 312 000012b0 4be00000 jr r31 313 000012b4 54000000 nop 314 000012b8 .endproc _isxdigit 315 000012b8 .align 2 316 000012b8 .proc _dstrcpy 317 000012b8 .global _dstrcpy 318 000012b8 _dstrcpy: 319 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 320 000012b8 afbefffc sw -4(r29),r30; push fp 321 000012bc 001df020 add r30,r0,r29; fp = sp 322 000012c0 afbffff8 sw -8(r29),r31; push ret addr 323 000012c4 2fbd0010 subui r29,r29,#16; alloc local storage 324 000012c8 afa20000 sw 0(r29),r2 325 000012cc afa30004 sw 4(r29),r3 326 000012d0 8fdf0000 lw r31,(r30) 327 000012d4 8fc20004 lw r2,4(r30) 328 000012d8 001f1820 add r3,r0,r31 329 000012dc L19_LF2: 330 000012dc 80410000 lb r1,(r2) 331 000012e0 a3e10000 sb (r31),r1 332 000012e4 20420001 addi r2,r2,#1 333 000012e8 23ff0001 addi r31,r31,#1 334 000012ec 302100ff andi r1,r1,#0x00ff 335 000012f0 64210000 snei r1,r1,#0 336 000012f4 1420ffe4 bnez r1,L19_LF2 337 000012f8 54000000 nop; not filled. 338 000012fc 00030820 add r1,r0,r3 339 00001300 8fa20000 lw r2,0(r29) 340 00001304 8fa30004 lw r3,4(r29) 341 00001308 8fdffff8 lw r31,-8(r30) 342 0000130c 001ee820 add r29,r0,r30 343 00001310 8fdefffc lw r30,-4(r30) 344 00001314 4be00000 jr r31 345 00001318 54000000 nop 346 0000131c .endproc _dstrcpy 347 0000131c .align 2 348 0000131c .proc _dstrncpy 349 0000131c .global _dstrncpy 350 0000131c _dstrncpy: 351 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 352 0000131c afbefffc sw -4(r29),r30; push fp 353 00001320 001df020 add r30,r0,r29; fp = sp 354 00001324 afbffff8 sw -8(r29),r31; push ret addr 355 00001328 2fbd0018 subui r29,r29,#24; alloc local storage 356 0000132c afa20000 sw 0(r29),r2 357 00001330 afa30004 sw 4(r29),r3 358 00001334 afa40008 sw 8(r29),r4 359 00001338 8fc20000 lw r2,(r30) 360 0000133c 8fc30004 lw r3,4(r30) 361 00001340 8fdf0008 lw r31,8(r30) 362 00001344 00022020 add r4,r0,r2 363 00001348 08000024 j L37_LF2 364 0000134c 54000000 nop; not filled. 365 00001350 L34_LF2: 366 00001350 80610000 lb r1,(r3) 367 00001354 a0410000 sb (r2),r1 368 00001358 20630001 addi r3,r3,#1 369 0000135c 20420001 addi r2,r2,#1 370 00001360 302100ff andi r1,r1,#0x00ff 371 00001364 64210000 snei r1,r1,#0 372 00001368 10200018 beqz r1,L32_LF2 373 0000136c 54000000 nop; not filled. 374 00001370 L37_LF2: 375 00001370 001f0820 add r1,r0,r31 376 00001374 23ffffff addi r31,r31,#-1 377 00001378 70210000 slei r1,r1,#0 378 0000137c 1020ffd0 beqz r1,L34_LF2 379 00001380 54000000 nop; not filled. 380 00001384 L32_LF2: 381 00001384 00040820 add r1,r0,r4 382 00001388 8fa20000 lw r2,0(r29) 383 0000138c 8fa30004 lw r3,4(r29) 384 00001390 8fa40008 lw r4,8(r29) 385 00001394 8fdffff8 lw r31,-8(r30) 386 00001398 001ee820 add r29,r0,r30 387 0000139c 8fdefffc lw r30,-4(r30) 388 000013a0 4be00000 jr r31 389 000013a4 54000000 nop 390 000013a8 .endproc _dstrncpy 391 000013a8 .align 2 392 000013a8 .proc _dstrcat 393 000013a8 .global _dstrcat 394 000013a8 _dstrcat: 395 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 396 000013a8 afbefffc sw -4(r29),r30; push fp 397 000013ac 001df020 add r30,r0,r29; fp = sp 398 000013b0 afbffff8 sw -8(r29),r31; push ret addr 399 000013b4 2fbd0010 subui r29,r29,#16; alloc local storage 400 000013b8 afa20000 sw 0(r29),r2 401 000013bc afa30004 sw 4(r29),r3 402 000013c0 8fdf0000 lw r31,(r30) 403 000013c4 001f1820 add r3,r0,r31 404 000013c8 90610000 lbu r1,(r3) 405 000013cc 64210000 snei r1,r1,#0 406 000013d0 10200018 beqz r1,L50_LF2 407 000013d4 54000000 nop; not filled. 408 000013d8 L51_LF2: 409 000013d8 23ff0001 addi r31,r31,#1 410 000013dc 93e10000 lbu r1,(r31) 411 000013e0 64210000 snei r1,r1,#0 412 000013e4 1420fff0 bnez r1,L51_LF2 413 000013e8 54000000 nop; not filled. 414 000013ec L50_LF2: 415 000013ec 001f1020 add r2,r0,r31 416 000013f0 8fdf0004 lw r31,4(r30) 417 000013f4 L54_LF2: 418 000013f4 83e10000 lb r1,(r31) 419 000013f8 a0410000 sb (r2),r1 420 000013fc 23ff0001 addi r31,r31,#1 421 00001400 20420001 addi r2,r2,#1 422 00001404 302100ff andi r1,r1,#0x00ff 423 00001408 64210000 snei r1,r1,#0 424 0000140c 1420ffe4 bnez r1,L54_LF2 425 00001410 54000000 nop; not filled. 426 00001414 00030820 add r1,r0,r3 427 00001418 8fa20000 lw r2,0(r29) 428 0000141c 8fa30004 lw r3,4(r29) 429 00001420 8fdffff8 lw r31,-8(r30) 430 00001424 001ee820 add r29,r0,r30 431 00001428 8fdefffc lw r30,-4(r30) 432 0000142c 4be00000 jr r31 433 00001430 54000000 nop 434 00001434 .endproc _dstrcat 435 00001434 .align 2 436 00001434 .proc _dstrncmp 437 00001434 .global _dstrncmp 438 00001434 _dstrncmp: 439 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 440 00001434 afbefffc sw -4(r29),r30; push fp 441 00001438 001df020 add r30,r0,r29; fp = sp 442 0000143c afbffff8 sw -8(r29),r31; push ret addr 443 00001440 2fbd0018 subui r29,r29,#24; alloc local storage 444 00001444 afa20000 sw 0(r29),r2 445 00001448 afa30004 sw 4(r29),r3 446 0000144c afa40008 sw 8(r29),r4 447 00001450 afa5000c sw 12(r29),r5 448 00001454 8fc30000 lw r3,(r30) 449 00001458 8fc40004 lw r4,4(r30) 450 0000145c 8fc50008 lw r5,8(r30) 451 00001460 20020000 addi r2,r0,#0 452 00001464 0045082a slt r1,r2,r5 453 00001468 1020003c beqz r1,L73_LF2 454 0000146c 54000000 nop; not filled. 455 00001470 L75_LF2: 456 00001470 909f0000 lbu r31,(r4) 457 00001474 67e10000 snei r1,r31,#0 458 00001478 10200038 beqz r1,L86_LF2 459 0000147c 54000000 nop; not filled. 460 00001480 90610000 lbu r1,(r3) 461 00001484 003f0829 sne r1,r1,r31 462 00001488 1420001c bnez r1,L73_LF2 463 0000148c 54000000 nop; not filled. 464 00001490 20630001 addi r3,r3,#1 465 00001494 20840001 addi r4,r4,#1 466 00001498 20420001 addi r2,r2,#1 467 0000149c 0045082a slt r1,r2,r5 468 000014a0 1420ffcc bnez r1,L75_LF2 469 000014a4 54000000 nop; not filled. 470 000014a8 L73_LF2: 471 000014a8 00450828 seq r1,r2,r5 472 000014ac 10200010 beqz r1,L80_LF2 473 000014b0 54000000 nop; not filled. 474 000014b4 L86_LF2: 475 000014b4 20010000 addi r1,r0,#0 476 000014b8 08000028 j L84_LF2 477 000014bc 54000000 nop; not filled. 478 000014c0 L80_LF2: 479 000014c0 907f0000 lbu r31,(r3) 480 000014c4 90830000 lbu r3,(r4) 481 000014c8 03e30822 sub r1,r31,r3 482 000014cc 74210000 sgei r1,r1,#0 483 000014d0 2002ffff addi r2,r0,#-1 484 000014d4 10200008 beqz r1,L82_LF2 485 000014d8 54000000 nop; not filled. 486 000014dc 03e31029 sne r2,r31,r3 487 000014e0 L82_LF2: 488 000014e0 00020820 add r1,r0,r2 489 000014e4 L84_LF2: 490 000014e4 8fa20000 lw r2,0(r29) 491 000014e8 8fa30004 lw r3,4(r29) 492 000014ec 8fa40008 lw r4,8(r29) 493 000014f0 8fa5000c lw r5,12(r29) 494 000014f4 8fdffff8 lw r31,-8(r30) 495 000014f8 001ee820 add r29,r0,r30 496 000014fc 8fdefffc lw r30,-4(r30) 497 00001500 4be00000 jr r31 498 00001504 54000000 nop 499 00001508 .endproc _dstrncmp 500 00001508 .align 2 501 00001508 .proc _dstrlen 502 00001508 .global _dstrlen 503 00001508 _dstrlen: 504 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 505 00001508 afbefffc sw -4(r29),r30; push fp 506 0000150c 001df020 add r30,r0,r29; fp = sp 507 00001510 afbffff8 sw -8(r29),r31; push ret addr 508 00001514 2fbd0010 subui r29,r29,#16; alloc local storage 509 00001518 afa20000 sw 0(r29),r2 510 0000151c 8fdf0000 lw r31,(r30) 511 00001520 20020000 addi r2,r0,#0 512 00001524 08000008 j L97_LF2 513 00001528 54000000 nop; not filled. 514 0000152c L95_LF2: 515 0000152c 20420001 addi r2,r2,#1 516 00001530 L97_LF2: 517 00001530 93e10000 lbu r1,(r31) 518 00001534 23ff0001 addi r31,r31,#1 519 00001538 64210000 snei r1,r1,#0 520 0000153c 1420ffec bnez r1,L95_LF2 521 00001540 54000000 nop; not filled. 522 00001544 00020820 add r1,r0,r2 523 00001548 8fa20000 lw r2,0(r29) 524 0000154c 8fdffff8 lw r31,-8(r30) 525 00001550 001ee820 add r29,r0,r30 526 00001554 8fdefffc lw r30,-4(r30) 527 00001558 4be00000 jr r31 528 0000155c 54000000 nop 529 00001560 .endproc _dstrlen 530 00001560 .align 2 531 00001560 .proc _dstrstr 532 00001560 .global _dstrstr 533 00001560 _dstrstr: 534 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 535 00001560 afbefffc sw -4(r29),r30; push fp 536 00001564 001df020 add r30,r0,r29; fp = sp 537 00001568 afbffff8 sw -8(r29),r31; push ret addr 538 0000156c 2fbd0020 subui r29,r29,#32; alloc local storage 539 00001570 afa20000 sw 0(r29),r2 540 00001574 afa30004 sw 4(r29),r3 541 00001578 afa40008 sw 8(r29),r4 542 0000157c afa5000c sw 12(r29),r5 543 00001580 afa60010 sw 16(r29),r6 544 00001584 afa70014 sw 20(r29),r7 545 00001588 8fc50000 lw r5,(r30) 546 0000158c 8fc70004 lw r7,4(r30) 547 00001590 20030000 addi r3,r0,#0 548 00001594 90e10000 lbu r1,(r7) 549 00001598 20e20001 addi r2,r7,#1 550 0000159c 64210000 snei r1,r1,#0 551 000015a0 1020001c beqz r1,L125_LF2 552 000015a4 54000000 nop; not filled. 553 000015a8 L126_LF2: 554 000015a8 20630001 addi r3,r3,#1 555 000015ac 90410000 lbu r1,(r2) 556 000015b0 20420001 addi r2,r2,#1 557 000015b4 64210000 snei r1,r1,#0 558 000015b8 1420ffec bnez r1,L126_LF2 559 000015bc 54000000 nop; not filled. 560 000015c0 L125_LF2: 561 000015c0 00033020 add r6,r0,r3 562 000015c4 080000ac j L149_LF2 563 000015c8 54000000 nop; not filled. 564 000015cc L130_LF2: 565 000015cc 00051820 add r3,r0,r5 566 000015d0 00072020 add r4,r0,r7 567 000015d4 20020000 addi r2,r0,#0 568 000015d8 0046082a slt r1,r2,r6 569 000015dc 1020003c beqz r1,L134_LF2 570 000015e0 54000000 nop; not filled. 571 000015e4 L136_LF2: 572 000015e4 909f0000 lbu r31,(r4) 573 000015e8 67e10000 snei r1,r31,#0 574 000015ec 10200038 beqz r1,L150_LF2 575 000015f0 54000000 nop; not filled. 576 000015f4 90610000 lbu r1,(r3) 577 000015f8 003f0829 sne r1,r1,r31 578 000015fc 1420001c bnez r1,L134_LF2 579 00001600 54000000 nop; not filled. 580 00001604 20630001 addi r3,r3,#1 581 00001608 20840001 addi r4,r4,#1 582 0000160c 20420001 addi r2,r2,#1 583 00001610 0046082a slt r1,r2,r6 584 00001614 1420ffcc bnez r1,L136_LF2 585 00001618 54000000 nop; not filled. 586 0000161c L134_LF2: 587 0000161c 00460828 seq r1,r2,r6 588 00001620 10200010 beqz r1,L141_LF2 589 00001624 54000000 nop; not filled. 590 00001628 L150_LF2: 591 00001628 20010000 addi r1,r0,#0 592 0000162c 08000028 j L132_LF2 593 00001630 54000000 nop; not filled. 594 00001634 L141_LF2: 595 00001634 90630000 lbu r3,(r3) 596 00001638 90820000 lbu r2,(r4) 597 0000163c 00620822 sub r1,r3,r2 598 00001640 74210000 sgei r1,r1,#0 599 00001644 201fffff addi r31,r0,#-1 600 00001648 10200008 beqz r1,L143_LF2 601 0000164c 54000000 nop; not filled. 602 00001650 0062f829 sne r31,r3,r2 603 00001654 L143_LF2: 604 00001654 001f0820 add r1,r0,r31 605 00001658 L132_LF2: 606 00001658 64210000 snei r1,r1,#0 607 0000165c 14200010 bnez r1,L131_LF2 608 00001660 54000000 nop; not filled. 609 00001664 00050820 add r1,r0,r5 610 00001668 0800001c j L146_LF2 611 0000166c 54000000 nop; not filled. 612 00001670 L131_LF2: 613 00001670 20a50001 addi r5,r5,#1 614 00001674 L149_LF2: 615 00001674 90a10000 lbu r1,(r5) 616 00001678 64210000 snei r1,r1,#0 617 0000167c 1420ff4c bnez r1,L130_LF2 618 00001680 54000000 nop; not filled. 619 00001684 20010000 addi r1,r0,#0 620 00001688 L146_LF2: 621 00001688 8fa20000 lw r2,0(r29) 622 0000168c 8fa30004 lw r3,4(r29) 623 00001690 8fa40008 lw r4,8(r29) 624 00001694 8fa5000c lw r5,12(r29) 625 00001698 8fa60010 lw r6,16(r29) 626 0000169c 8fa70014 lw r7,20(r29) 627 000016a0 8fdffff8 lw r31,-8(r30) 628 000016a4 001ee820 add r29,r0,r30 629 000016a8 8fdefffc lw r30,-4(r30) 630 000016ac 4be00000 jr r31 631 000016b0 54000000 nop 632 000016b4 .endproc _dstrstr 633 000016b4 .align 2 634 000016b4 .proc _dmindex 635 000016b4 .global _dmindex 636 000016b4 _dmindex: 637 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 638 000016b4 afbefffc sw -4(r29),r30; push fp 639 000016b8 001df020 add r30,r0,r29; fp = sp 640 000016bc afbffff8 sw -8(r29),r31; push ret addr 641 000016c0 2fbd0020 subui r29,r29,#32; alloc local storage 642 000016c4 afa20000 sw 0(r29),r2 643 000016c8 afa30004 sw 4(r29),r3 644 000016cc afa40008 sw 8(r29),r4 645 000016d0 afa5000c sw 12(r29),r5 646 000016d4 afa60010 sw 16(r29),r6 647 000016d8 8fc40000 lw r4,(r30) 648 000016dc 8fc60004 lw r6,4(r30) 649 000016e0 90810000 lbu r1,(r4) 650 000016e4 64210000 snei r1,r1,#0 651 000016e8 10200060 beqz r1,L164_LF2 652 000016ec 54000000 nop; not filled. 653 000016f0 00012820 add r5,r0,r1 654 000016f4 L165_LF2: 655 000016f4 00061020 add r2,r0,r6 656 000016f8 80df0000 lb r31,(r6) 657 000016fc 33e100ff andi r1,r31,#0x00ff 658 00001700 64210000 snei r1,r1,#0 659 00001704 1020003c beqz r1,L163_LF2 660 00001708 54000000 nop; not filled. 661 0000170c 90830000 lbu r3,(r4) 662 00001710 L169_LF2: 663 00001710 33e100ff andi r1,r31,#0x00ff 664 00001714 00610828 seq r1,r3,r1 665 00001718 10200010 beqz r1,L168_LF2 666 0000171c 54000000 nop; not filled. 667 00001720 00040820 add r1,r0,r4 668 00001724 08000028 j L173_LF2 669 00001728 54000000 nop; not filled. 670 0000172c L168_LF2: 671 0000172c 20420001 addi r2,r2,#1 672 00001730 805f0000 lb r31,(r2) 673 00001734 33e100ff andi r1,r31,#0x00ff 674 00001738 64210000 snei r1,r1,#0 675 0000173c 1420ffd0 bnez r1,L169_LF2 676 00001740 54000000 nop; not filled. 677 00001744 L163_LF2: 678 00001744 14a0ffac bnez r5,L165_LF2 679 00001748 54000000 nop; not filled. 680 0000174c L164_LF2: 681 0000174c 20010000 addi r1,r0,#0 682 00001750 L173_LF2: 683 00001750 8fa20000 lw r2,0(r29) 684 00001754 8fa30004 lw r3,4(r29) 685 00001758 8fa40008 lw r4,8(r29) 686 0000175c 8fa5000c lw r5,12(r29) 687 00001760 8fa60010 lw r6,16(r29) 688 00001764 8fdffff8 lw r31,-8(r30) 689 00001768 001ee820 add r29,r0,r30 690 0000176c 8fdefffc lw r30,-4(r30) 691 00001770 4be00000 jr r31 692 00001774 54000000 nop 693 00001778 .endproc _dmindex 694 00001778 .align 2 695 00001778 .proc _dindex 696 00001778 .global _dindex 697 00001778 _dindex: 698 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 699 00001778 afbefffc sw -4(r29),r30; push fp 700 0000177c 001df020 add r30,r0,r29; fp = sp 701 00001780 afbffff8 sw -8(r29),r31; push ret addr 702 00001784 2fbd0010 subui r29,r29,#16; alloc local storage 703 00001788 afa20000 sw 0(r29),r2 704 0000178c afa30004 sw 4(r29),r3 705 00001790 8fc20000 lw r2,(r30) 706 00001794 8fc30004 lw r3,4(r30) 707 00001798 08000024 j L187_LF2 708 0000179c 54000000 nop; not filled. 709 000017a0 L183_LF2: 710 000017a0 33e100ff andi r1,r31,#0x00ff 711 000017a4 00230828 seq r1,r1,r3 712 000017a8 10200010 beqz r1,L184_LF2 713 000017ac 54000000 nop; not filled. 714 000017b0 00020820 add r1,r0,r2 715 000017b4 08000020 j L186_LF2 716 000017b8 54000000 nop; not filled. 717 000017bc L184_LF2: 718 000017bc 20420001 addi r2,r2,#1 719 000017c0 L187_LF2: 720 000017c0 805f0000 lb r31,(r2) 721 000017c4 33e100ff andi r1,r31,#0x00ff 722 000017c8 64210000 snei r1,r1,#0 723 000017cc 1420ffd0 bnez r1,L183_LF2 724 000017d0 54000000 nop; not filled. 725 000017d4 20010000 addi r1,r0,#0 726 000017d8 L186_LF2: 727 000017d8 8fa20000 lw r2,0(r29) 728 000017dc 8fa30004 lw r3,4(r29) 729 000017e0 8fdffff8 lw r31,-8(r30) 730 000017e4 001ee820 add r29,r0,r30 731 000017e8 8fdefffc lw r30,-4(r30) 732 000017ec 4be00000 jr r31 733 000017f0 54000000 nop 734 000017f4 .endproc _dindex 735 000017f4 .align 2 736 000017f4 .proc _ditoa 737 000017f4 .global _ditoa 738 000017f4 _ditoa: 739 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 740 000017f4 afbefffc sw -4(r29),r30; push fp 741 000017f8 001df020 add r30,r0,r29; fp = sp 742 000017fc afbffff8 sw -8(r29),r31; push ret addr 743 00001800 2fbd0020 subui r29,r29,#32; alloc local storage 744 00001804 afa20000 sw 0(r29),r2 745 00001808 afa30004 sw 4(r29),r3 746 0000180c afa40008 sw 8(r29),r4 747 00001810 afa5000c sw 12(r29),r5 748 00001814 afa60010 sw 16(r29),r6 749 00001818 8fc30000 lw r3,(r30) 750 0000181c 8fc40004 lw r4,4(r30) 751 00001820 68610000 slti r1,r3,#0 752 00001824 10200010 beqz r1,L203_LF2 753 00001828 54000000 nop; not filled. 754 0000182c 2006002d addi r6,r0,(#0x2d)&0xff 755 00001830 08000014 j L216_LF2 756 00001834 54000000 nop; not filled. 757 00001838 L203_LF2: 758 00001838 64610000 snei r1,r3,#0 759 0000183c 14200018 bnez r1,L205_LF2 760 00001840 54000000 nop; not filled. 761 00001844 20060030 addi r6,r0,(#0x30)&0xff 762 00001848 L216_LF2: 763 00001848 a0860000 sb (r4),r6 764 0000184c 20840001 addi r4,r4,#1 765 00001850 0800007c j L204_LF2 766 00001854 54000000 nop; not filled. 767 00001858 L205_LF2: 768 00001858 201f0001 addi r31,r0,#1 769 0000185c 03e3082c sle r1,r31,r3 770 00001860 1020001c beqz r1,L208_LF2 771 00001864 54000000 nop; not filled. 772 00001868 L209_LF2: 773 00001868 53e10002 slli r1,r31,#0x2 774 0000186c 003f0820 add r1,r1,r31 775 00001870 503f0001 slli r31,r1,#0x1 776 00001874 03e3082c sle r1,r31,r3 777 00001878 1420ffec bnez r1,L209_LF2 778 0000187c 54000000 nop; not filled. 779 00001880 L208_LF2: 780 00001880 2005000a addi r5,r0,#10 781 00001884 L212_LF2: 782 00001884 03e00035 movi2fp f0,r31 783 00001888 00a00835 movi2fp f1,r5 784 0000188c 0401000f div f0,f0,f1 785 00001890 0000f834 movfp2i r31,f0 786 00001894 00600035 movi2fp f0,r3 787 00001898 03e00835 movi2fp f1,r31 788 0000189c 0401000f div f0,f0,f1 789 000018a0 00001034 movfp2i r2,f0 790 000018a4 20410030 addi r1,r2,#48 791 000018a8 a0810000 sb (r4),r1 792 000018ac 20840001 addi r4,r4,#1 793 000018b0 00400035 movi2fp f0,r2 794 000018b4 03e00835 movi2fp f1,r31 795 000018b8 0401000e mult f0,f0,f1 796 000018bc 00000834 movfp2i r1,f0 797 000018c0 00611822 sub r3,r3,r1 798 000018c4 6fe10001 sgti r1,r31,#1 799 000018c8 1420ffb8 bnez r1,L212_LF2 800 000018cc 54000000 nop; not filled. 801 000018d0 L204_LF2: 802 000018d0 20060000 addi r6,r0,(#0x0)&0xff 803 000018d4 a0860000 sb (r4),r6 804 000018d8 8fa20000 lw r2,0(r29) 805 000018dc 8fa30004 lw r3,4(r29) 806 000018e0 8fa40008 lw r4,8(r29) 807 000018e4 8fa5000c lw r5,12(r29) 808 000018e8 8fa60010 lw r6,16(r29) 809 000018ec 8fdffff8 lw r31,-8(r30) 810 000018f0 001ee820 add r29,r0,r30 811 000018f4 8fdefffc lw r30,-4(r30) 812 000018f8 4be00000 jr r31 813 000018fc 54000000 nop 814 00001900 .endproc _ditoa 815 00001900 .align 2 816 00001900 .proc _dstrtol 817 00001900 .global _dstrtol 818 00001900 _dstrtol: 819 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 820 00001900 afbefffc sw -4(r29),r30; push fp 821 00001904 001df020 add r30,r0,r29; fp = sp 822 00001908 afbffff8 sw -8(r29),r31; push ret addr 823 0000190c 2fbd0020 subui r29,r29,#32; alloc local storage 824 00001910 afa20000 sw 0(r29),r2 825 00001914 afa30004 sw 4(r29),r3 826 00001918 afa40008 sw 8(r29),r4 827 0000191c afa5000c sw 12(r29),r5 828 00001920 afa60010 sw 16(r29),r6 829 00001924 8fc20000 lw r2,(r30) 830 00001928 8fc50004 lw r5,4(r30) 831 0000192c 8fc40008 lw r4,8(r30) 832 00001930 20030000 addi r3,r0,#0 833 00001934 08000008 j L247_LF2 834 00001938 54000000 nop; not filled. 835 0000193c L220_LF2: 836 0000193c 20420001 addi r2,r2,#1 837 00001940 L247_LF2: 838 00001940 805f0000 lb r31,(r2) 839 00001944 33e100ff andi r1,r31,#0x00ff 840 00001948 60210020 seqi r1,r1,#32 841 0000194c 1420ffec bnez r1,L220_LF2 842 00001950 54000000 nop; not filled. 843 00001954 23e1fff7 addi r1,r31,#-9 844 00001958 302100ff andi r1,r1,#0x00ff 845 0000195c 70210001 sleui r1,r1,#1 846 00001960 1420ffd8 bnez r1,L220_LF2 847 00001964 54000000 nop; not filled. 848 00001968 64a10000 snei r1,r5,#0 849 0000196c 10200008 beqz r1,L222_LF2 850 00001970 54000000 nop; not filled. 851 00001974 aca20000 sw (r5),r2 852 00001978 L222_LF2: 853 00001978 905f0000 lbu r31,(r2) 854 0000197c 67e10000 snei r1,r31,#0 855 00001980 10200090 beqz r1,L248_LF2 856 00001984 54000000 nop; not filled. 857 00001988 63e1002d seqi r1,r31,#45 858 0000198c 10200014 beqz r1,L224_LF2 859 00001990 54000000 nop; not filled. 860 00001994 2006ffff addi r6,r0,#-1 861 00001998 20420001 addi r2,r2,#1 862 0000199c 08000008 j L225_LF2 863 000019a0 54000000 nop; not filled. 864 000019a4 L224_LF2: 865 000019a4 20060001 addi r6,r0,#1 866 000019a8 L225_LF2: 867 000019a8 64810000 snei r1,r4,#0 868 000019ac 14200054 bnez r1,L226_LF2 869 000019b0 54000000 nop; not filled. 870 000019b4 90410000 lbu r1,(r2) 871 000019b8 60210030 seqi r1,r1,#48 872 000019bc 10200040 beqz r1,L227_LF2 873 000019c0 54000000 nop; not filled. 874 000019c4 20420001 addi r2,r2,#1 875 000019c8 905f0000 lbu r31,(r2) 876 000019cc 63e10078 seqi r1,r31,#120 877 000019d0 14200010 bnez r1,L229_LF2 878 000019d4 54000000 nop; not filled. 879 000019d8 63e10058 seqi r1,r31,#88 880 000019dc 10200014 beqz r1,L228_LF2 881 000019e0 54000000 nop; not filled. 882 000019e4 L229_LF2: 883 000019e4 20040010 addi r4,r0,#16 884 000019e8 20420001 addi r2,r2,#1 885 000019ec 08000014 j L226_LF2 886 000019f0 54000000 nop; not filled. 887 000019f4 L228_LF2: 888 000019f4 20040008 addi r4,r0,#8 889 000019f8 08000008 j L226_LF2 890 000019fc 54000000 nop; not filled. 891 00001a00 L227_LF2: 892 00001a00 2004000a addi r4,r0,#10 893 00001a04 L226_LF2: 894 00001a04 2081ffff addi r1,r4,#-1 895 00001a08 6c21000f sgtui r1,r1,#15 896 00001a0c 10200010 beqz r1,L233_LF2 897 00001a10 54000000 nop; not filled. 898 00001a14 L248_LF2: 899 00001a14 00030820 add r1,r0,r3 900 00001a18 080000c4 j L245_LF2 901 00001a1c 54000000 nop; not filled. 902 00001a20 L233_LF2: 903 00001a20 805f0000 lb r31,(r2) 904 00001a24 23e1ffd0 addi r1,r31,#-48 905 00001a28 302100ff andi r1,r1,#0x00ff 906 00001a2c 70210009 sleui r1,r1,#9 907 00001a30 10200014 beqz r1,L236_LF2 908 00001a34 54000000 nop; not filled. 909 00001a38 33e100ff andi r1,r31,#0x00ff 910 00001a3c 2021ffd0 addi r1,r1,#-48 911 00001a40 08000050 j L237_LF2 912 00001a44 54000000 nop; not filled. 913 00001a48 L236_LF2: 914 00001a48 23e1ff9f addi r1,r31,#-97 915 00001a4c 302100ff andi r1,r1,#0x00ff 916 00001a50 70210019 sleui r1,r1,#25 917 00001a54 10200014 beqz r1,L238_LF2 918 00001a58 54000000 nop; not filled. 919 00001a5c 33e100ff andi r1,r31,#0x00ff 920 00001a60 2021ffa9 addi r1,r1,#-87 921 00001a64 0800002c j L237_LF2 922 00001a68 54000000 nop; not filled. 923 00001a6c L238_LF2: 924 00001a6c 23e1ffbf addi r1,r31,#-65 925 00001a70 302100ff andi r1,r1,#0x00ff 926 00001a74 70210019 sleui r1,r1,#25 927 00001a78 10200014 beqz r1,L240_LF2 928 00001a7c 54000000 nop; not filled. 929 00001a80 33e100ff andi r1,r31,#0x00ff 930 00001a84 2021ffc9 addi r1,r1,#-55 931 00001a88 08000008 j L237_LF2 932 00001a8c 54000000 nop; not filled. 933 00001a90 L240_LF2: 934 00001a90 200103e8 addi r1,r0,#1000 935 00001a94 L237_LF2: 936 00001a94 0024f82a slt r31,r1,r4 937 00001a98 13e00024 beqz r31,L246_LF2 938 00001a9c 54000000 nop; not filled. 939 00001aa0 00600035 movi2fp f0,r3 940 00001aa4 00800835 movi2fp f1,r4 941 00001aa8 0401000e mult f0,f0,f1 942 00001aac 00001834 movfp2i r3,f0 943 00001ab0 00611820 add r3,r3,r1 944 00001ab4 20420001 addi r2,r2,#1 945 00001ab8 17e0ff64 bnez r31,L233_LF2 946 00001abc 54000000 nop; not filled. 947 00001ac0 L246_LF2: 948 00001ac0 64a10000 snei r1,r5,#0 949 00001ac4 10200008 beqz r1,L244_LF2 950 00001ac8 54000000 nop; not filled. 951 00001acc aca20000 sw (r5),r2 952 00001ad0 L244_LF2: 953 00001ad0 00600035 movi2fp f0,r3 954 00001ad4 00c00835 movi2fp f1,r6 955 00001ad8 0401000e mult f0,f0,f1 956 00001adc 00000834 movfp2i r1,f0 957 00001ae0 L245_LF2: 958 00001ae0 8fa20000 lw r2,0(r29) 959 00001ae4 8fa30004 lw r3,4(r29) 960 00001ae8 8fa40008 lw r4,8(r29) 961 00001aec 8fa5000c lw r5,12(r29) 962 00001af0 8fa60010 lw r6,16(r29) 963 00001af4 8fdffff8 lw r31,-8(r30) 964 00001af8 001ee820 add r29,r0,r30 965 00001afc 8fdefffc lw r30,-4(r30) 966 00001b00 4be00000 jr r31 967 00001b04 54000000 nop 968 00001b08 .endproc _dstrtol 969 00001b08 .align 2 970 00001b08 .proc _bcopy 971 00001b08 .global _bcopy 972 00001b08 _bcopy: 973 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 974 00001b08 afbefffc sw -4(r29),r30; push fp 975 00001b0c 001df020 add r30,r0,r29; fp = sp 976 00001b10 afbffff8 sw -8(r29),r31; push ret addr 977 00001b14 2fbd0018 subui r29,r29,#24; alloc local storage 978 00001b18 afa20000 sw 0(r29),r2 979 00001b1c afa30004 sw 4(r29),r3 980 00001b20 afa40008 sw 8(r29),r4 981 00001b24 8fc30000 lw r3,(r30) 982 00001b28 8fc20004 lw r2,4(r30) 983 00001b2c 8fdf0008 lw r31,8(r30) 984 00001b30 08000014 j L259_LF2 985 00001b34 54000000 nop; not filled. 986 00001b38 L257_LF2: 987 00001b38 80640000 lb r4,(r3) 988 00001b3c a0440000 sb (r2),r4 989 00001b40 20630001 addi r3,r3,#1 990 00001b44 20420001 addi r2,r2,#1 991 00001b48 L259_LF2: 992 00001b48 001f0820 add r1,r0,r31 993 00001b4c 23ffffff addi r31,r31,#-1 994 00001b50 6c210000 sgti r1,r1,#0 995 00001b54 1420ffe0 bnez r1,L257_LF2 996 00001b58 54000000 nop; not filled. 997 00001b5c 8fa20000 lw r2,0(r29) 998 00001b60 8fa30004 lw r3,4(r29) 999 00001b64 8fa40008 lw r4,8(r29) 1000 00001b68 8fdffff8 lw r31,-8(r30) 1001 00001b6c 001ee820 add r29,r0,r30 1002 00001b70 8fdefffc lw r30,-4(r30) 1003 00001b74 4be00000 jr r31 1004 00001b78 54000000 nop 1005 00001b7c .endproc _bcopy 1006 00001b7c .align 2 1007 00001b7c .proc _bzero 1008 00001b7c .global _bzero 1009 00001b7c _bzero: 1010 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 1011 00001b7c afbefffc sw -4(r29),r30; push fp 1012 00001b80 001df020 add r30,r0,r29; fp = sp 1013 00001b84 afbffff8 sw -8(r29),r31; push ret addr 1014 00001b88 2fbd0010 subui r29,r29,#16; alloc local storage 1015 00001b8c afa20000 sw 0(r29),r2 1016 00001b90 afa30004 sw 4(r29),r3 1017 00001b94 8fc20000 lw r2,(r30) 1018 00001b98 8fdf0004 lw r31,4(r30) 1019 00001b9c 08000010 j L270_LF2 1020 00001ba0 54000000 nop; not filled. 1021 00001ba4 L268_LF2: 1022 00001ba4 20030000 addi r3,r0,(#0x0)&0xff 1023 00001ba8 a0430000 sb (r2),r3 1024 00001bac 20420001 addi r2,r2,#1 1025 00001bb0 L270_LF2: 1026 00001bb0 001f0820 add r1,r0,r31 1027 00001bb4 23ffffff addi r31,r31,#-1 1028 00001bb8 6c210000 sgti r1,r1,#0 1029 00001bbc 1420ffe4 bnez r1,L268_LF2 1030 00001bc0 54000000 nop; not filled. 1031 00001bc4 8fa20000 lw r2,0(r29) 1032 00001bc8 8fa30004 lw r3,4(r29) 1033 00001bcc 8fdffff8 lw r31,-8(r30) 1034 00001bd0 001ee820 add r29,r0,r30 1035 00001bd4 8fdefffc lw r30,-4(r30) 1036 00001bd8 4be00000 jr r31 1037 00001bdc 54000000 nop 1038 00001be0 .endproc _bzero 1039 ;;; Ethan L. Miller, 1999. Released to the public domain 1040 ;;; 1041 ;;; Most of the traps are called in files from libtraps. 1044 00001be0 .align 2 1045 00001be0 .proc _exit 1046 00001be0 .global _exit 1047 00001be0 _exit: 1048 00001be0 44000300 trap #0x300 1049 00001be4 4be00000 jr r31 1050 00001be8 54000000 nop 1051 00001bec .endproc _exit 1053 ; for the benefit of gcc. 1054 00001bec .proc ___main 1055 00001bec .global ___main 1056 00001bec ___main: 1057 00001bec 4be00000 jr r31 1058 00001bf0 54000000 nop 1059 00001bf4 .endproc ___main 1060 00001bf4 .text 1061 00001bf4 .global _etext 1062 00001bf4 _etext: 1063 00001bf4 .align 3 1064 00001bf8 .data 1065 00002070 .global _edata 1066 00002070 _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/os.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 90112 3 ; Data size: 32376 4 ; Text size: 41180 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0xc000 8 ;;; 9 ;;; Initialization code for programs running in the DLX simulator. 10 ;;; Copyright (c) 1999 by Ethan Miller 11 ;;; 12 ;;; 14 0000c000 .text 15 00001000 .align 2 17 ;;;---------------------------------------------------------------------- 18 ;;; osinit 19 ;;; 20 ;;; This is the first function called by the simulator, even before main. 21 ;;; Since it's called BEFORE any "real" routines, we can use any registers 22 ;;; we want as long as we don't mess up the stack or frame pointers. 23 ;;; 24 ;;; This routine loads the interrupt vector to point to the interrupt 25 ;;; handler later in this file. It should never return, because _main 26 ;;; should call exitsim() or exit() rather than returning here. 27 ;;; 28 ;;; After initialization is done, this routine jumps to _main to start the 29 ;;; C code portion of the operating system. 30 ;;;---------------------------------------------------------------------- 31 00001000 .proc _osinit 32 00001000 .global _osinit 33 00001000 _osinit: 34 ;; Set up the interrupt handler 35 00001000 3c010000 lhi r1,(_intrhandler>>16)&0xffff 36 00001004 24211010 addui r1,r1,_intrhandler&0xffff 37 00001008 00204030 movi2s intrvec,r1 38 ;; Never returns because exitsim is called first 39 0000100c 08005e34 j _main 40 00001010 .endproc _osinit 42 ;;;---------------------------------------------------------------------- 43 ;;; intrhandler 44 ;;; 45 ;;; Called when an interrupt or trap is received by the CPU. It stores the 46 ;;; current register set on the system stack. It then pushes the parameters 47 ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE 48 ;;; registers along with the original stack pointer. The C interrupt 49 ;;; handler can then copy arguments from the original stack, performing 50 ;;; user -> system translations if necessary. 51 ;;; 52 ;;;---------------------------------------------------------------------- 53 00001010 .proc _intrhandler 54 00001010 .global _intrhandler 55 00001010 _intrhandler: 56 ;; We can use r31 as scratch space because its value was saved in 57 ;; ir31. However, we must save the "real" value of r31 on the 58 ;; stack. 60 ;; Always store the registers on the system stack. This way, we don't 61 ;; have to worry about translating things from user -> system. We 62 ;; use r31 as the base register because its value was saved in ir31. 64 ;; If this was a user process, load r29 with the current system 65 ;; stack pointer. If it was a system process, just use the 66 ;; current stack pointer. 67 00001010 0060f831 movs2i r31,isr 68 00001014 33ff0040 andi r31,r31,0x40 69 00001018 17e0001c bnez r31,intrSystem_LF0 70 0000101c 3c1f0001 lhi r31,(_currentPCB>>16)&0xffff 71 00001020 27ff0e40 addui r31,r31,_currentPCB&0xffff 72 00001024 8fff0000 lw r31,(r31) 73 00001028 8fff0004 lw r31,4(r31) 74 ;; Save the original (user) stack pointer 75 0000102c affdff48 sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 76 ;; Copy the system stack pointer into r29 (current stack pointer) 77 00001030 37fd0000 ori r29,r31,0 78 00001034 10000004 beqz r0,intrSaveReg_LF0; skip over the system part.... 79 00001038 intrSystem_LF0: 80 ;; Use the stack pointer we're already using 81 ;; Save r29 because we won't save it later 82 00001038 afbdff48 sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 83 0000103c intrSaveReg_LF0: 84 ;; Adjust stack pointer for all the stuff we're going to push. This 85 ;; is a bit more space than we need currently, but it leaves room 86 ;; for more stuff if needed. 87 0000103c 2fbd0154 subui r29,r29,#340 88 ;; Push all the stuff onto the stack 89 00001040 afa1002c sw 44(r29),r1 90 00001044 afa20030 sw 48(r29),r2 91 00001048 afa30034 sw 52(r29),r3 92 0000104c afa40038 sw 56(r29),r4 93 00001050 afa5003c sw 60(r29),r5 94 00001054 afa60040 sw 64(r29),r6 95 00001058 afa70044 sw 68(r29),r7 96 0000105c afa80048 sw 72(r29),r8 97 00001060 afa9004c sw 76(r29),r9 98 00001064 afaa0050 sw 80(r29),r10 99 00001068 afab0054 sw 84(r29),r11 100 0000106c afac0058 sw 88(r29),r12 101 00001070 afad005c sw 92(r29),r13 102 00001074 afae0060 sw 96(r29),r14 103 00001078 afaf0064 sw 100(r29),r15 104 0000107c afb00068 sw 104(r29),r16 105 00001080 afb1006c sw 108(r29),r17 106 00001084 afb20070 sw 112(r29),r18 107 00001088 afb30074 sw 116(r29),r19 108 0000108c afb40078 sw 120(r29),r20 109 00001090 afb5007c sw 124(r29),r21 110 00001094 afb60080 sw 128(r29),r22 111 00001098 afb70084 sw 132(r29),r23 112 0000109c afb80088 sw 136(r29),r24 113 000010a0 afb9008c sw 140(r29),r25 114 000010a4 afba0090 sw 144(r29),r26 115 000010a8 afbb0094 sw 148(r29),r27 116 000010ac afbc0098 sw 152(r29),r28 117 ;; Skip r29 - stored earlier! 118 000010b0 afbe00a0 sw 160(r29),r30 119 ;; Load the value of r31 from the special register and then save it 120 000010b4 00401831 movs2i r3,ir31 121 000010b8 afa300a4 sw 164(r29),r3 122 ;; Store the floating-point registers 123 000010bc bfa000a8 sd 168(r29),f0 124 000010c0 bfa200b0 sd 176(r29),f2 125 000010c4 bfa400b8 sd 184(r29),f4 126 000010c8 bfa600c0 sd 192(r29),f6 127 000010cc bfa800c8 sd 200(r29),f8 128 000010d0 bfaa00d0 sd 208(r29),f10 129 000010d4 bfac00d8 sd 216(r29),f12 130 000010d8 bfae00e0 sd 224(r29),f14 131 000010dc bfb000e8 sd 232(r29),f16 132 000010e0 bfb200f0 sd 240(r29),f18 133 000010e4 bfb400f8 sd 248(r29),f20 134 000010e8 bfb60100 sd 256(r29),f22 135 000010ec bfb80108 sd 264(r29),f24 136 000010f0 bfba0110 sd 272(r29),f26 137 000010f4 bfbc0118 sd 280(r29),f28 138 000010f8 bfbe0120 sd 288(r29),f30 139 ;; NOTE: we don't save the interrupt vector register because it 140 ;; doesn't change from process to process. 141 ;; NOTE: we don't save the status register because most of the flags 142 ;; are the same from process to process if they're in the interrupt 143 ;; handler. Of course, we DO save the ISR. 144 000010fc 00802031 movs2i r4,iar 145 00001100 afa40128 sw 296(r29),r4 146 00001104 00602831 movs2i r5,isr 147 00001108 afa5012c sw 300(r29),r5 148 0000110c 00c03031 movs2i r6,cause 149 00001110 afa60130 sw 304(r29),r6 150 00001114 01201831 movs2i r3,fault 151 00001118 afa30134 sw 308(r29),r3 152 0000111c 01801831 movs2i r3,ptbase 153 00001120 afa30138 sw 312(r29),r3 154 00001124 01a01831 movs2i r3,ptsize 155 00001128 afa3013c sw 316(r29),r3 156 0000112c 01c01831 movs2i r3,ptbits 157 00001130 afa30140 sw 320(r29),r3 159 ;; Push the interrupt information onto the stack 160 00001134 afa60000 sw 0(r29),r6; push CAUSE 161 00001138 afa40004 sw 4(r29),r4; push IAR 162 0000113c afa50008 sw 8(r29),r5; push ISR 163 ;; Get the original stack pointer 164 00001140 8fa1009c lw r1,156(r29) 165 00001144 afa1000c sw 12(r29),r1 166 ;; Save the previous interrupt stack frame address in the current frame 167 00001148 3c010001 lhi r1,(_currentPCB>>16)&0xffff 168 0000114c 24210e40 addui r1,r1,_currentPCB&0xffff 169 00001150 8c210000 lw r1,(r1) 170 00001154 8c220000 lw r2,0(r1) 171 00001158 afa20028 sw 40(r29),r2 172 ;; Save this frame address in the PCB. This is used so the OS can 173 ;; easily access the current interrupt save frame 174 0000115c ac3d0000 sw 0(r1),r29 175 ;; Call the "real" interrupt handler. This will possibly switch 176 ;; contexts. This call never returns; instead, a separate routine 177 ;; (_intrreturn) is called to return from interrupts after restoring 178 ;; the current context. 179 00001160 0800891c j _dointerrupt 180 00001164 54000000 nop 181 00001168 .endproc _intrhandler 183 ;;;---------------------------------------------------------------------- 184 ;;; intrreturn 185 ;;; 186 ;;; Return from an interrupt or trap. This restores all of the previously 187 ;;; saved registers and then returns to where the program left off. The 188 ;;; current contents of the registers are destroyed. This routine uses 189 ;;; the saved interrupt frame pointer, so the stack pointer need not 190 ;;; be correct. Note, though, that the register contents from the previous 191 ;;; process must have previously been saved - in other words, call this 192 ;;; routine from a trap or interrupt handler. 193 ;;;---------------------------------------------------------------------- 194 00001168 .proc _intrreturn 195 00001168 .global _intrreturn 196 00001168 _intrreturn: 197 ;; Disable interrupts - this routine must be atomic, and interrupts 198 ;; may not be currently disabled. Don't worry about saving registers 199 ;; because we're about to reload them anyway. 200 00001168 0c009758 jal _DisableIntrs 201 ;; Get our interrupt stack frame location and load it into the stack 202 ;; pointer. 203 0000116c 3c010001 lhi r1,(_currentPCB>>16)&0xffff 204 00001170 24210e40 addui r1,r1,_currentPCB&0xffff 205 00001174 8c210000 lw r1,0(r1) 206 00001178 8c3d0000 lw r29,0(r1) 207 ;; Get the previous interrupt stack frame location and make it the 208 ;; current interrupt save frame. 209 0000117c 8fa20028 lw r2,40(r29) 210 00001180 ac220000 sw 0(r1),r2 212 ;; Reload the registers for the new process. We don't have to 213 ;; load in the exact opposite order as long as we're careful to 214 ;; get the right values back in. 215 00001184 8fa30128 lw r3,296(r29) 216 00001188 00602030 movi2s iar,r3 217 0000118c 8fa3012c lw r3,300(r29) 218 00001190 00601830 movi2s isr,r3 219 00001194 8fa30130 lw r3,304(r29) 220 00001198 00603030 movi2s cause,r3 221 0000119c 8fa30134 lw r3,308(r29) 222 000011a0 00604830 movi2s fault,r3 223 000011a4 8fa30138 lw r3,312(r29) 224 000011a8 00606030 movi2s ptbase,r3 225 000011ac 8fa3013c lw r3,316(r29) 226 000011b0 00606830 movi2s ptsize,r3 227 000011b4 8fa30140 lw r3,320(r29) 228 000011b8 00607030 movi2s ptbits,r3 230 ;; Reload the floating point registers 231 000011bc 9fa000a8 ld f0,168(r29) 232 000011c0 9fa200b0 ld f2,176(r29) 233 000011c4 9fa400b8 ld f4,184(r29) 234 000011c8 9fa600c0 ld f6,192(r29) 235 000011cc 9fa800c8 ld f8,200(r29) 236 000011d0 9faa00d0 ld f10,208(r29) 237 000011d4 9fac00d8 ld f12,216(r29) 238 000011d8 9fae00e0 ld f14,224(r29) 239 000011dc 9fb000e8 ld f16,232(r29) 240 000011e0 9fb200f0 ld f18,240(r29) 241 000011e4 9fb400f8 ld f20,248(r29) 242 000011e8 9fb60100 ld f22,256(r29) 243 000011ec 9fb80108 ld f24,264(r29) 244 000011f0 9fba0110 ld f26,272(r29) 245 000011f4 9fbc0118 ld f28,280(r29) 246 000011f8 9fbe0120 ld f30,288(r29) 248 ;; Reload the integer registers. We don't reload r0 because it's 249 ;; always 0. We won't reload r29 here because we're using it as 250 ;; the stack pointer. The same goes for r1, which we'll use as 251 ;; scratch so we can store r29. 252 ;; Skip r1 - restored later 253 000011fc 8fa20030 lw r2,48(r29) 254 00001200 8fa30034 lw r3,52(r29) 255 00001204 8fa40038 lw r4,56(r29) 256 00001208 8fa5003c lw r5,60(r29) 257 0000120c 8fa60040 lw r6,64(r29) 258 00001210 8fa70044 lw r7,68(r29) 259 00001214 8fa80048 lw r8,72(r29) 260 00001218 8fa9004c lw r9,76(r29) 261 0000121c 8faa0050 lw r10,80(r29) 262 00001220 8fab0054 lw r11,84(r29) 263 00001224 8fac0058 lw r12,88(r29) 264 00001228 8fad005c lw r13,92(r29) 265 0000122c 8fae0060 lw r14,96(r29) 266 00001230 8faf0064 lw r15,100(r29) 267 00001234 8fb00068 lw r16,104(r29) 268 00001238 8fb1006c lw r17,108(r29) 269 0000123c 8fb20070 lw r18,112(r29) 270 00001240 8fb30074 lw r19,116(r29) 271 00001244 8fb40078 lw r20,120(r29) 272 00001248 8fb5007c lw r21,124(r29) 273 0000124c 8fb60080 lw r22,128(r29) 274 00001250 8fb70084 lw r23,132(r29) 275 00001254 8fb80088 lw r24,136(r29) 276 00001258 8fb9008c lw r25,140(r29) 277 0000125c 8fba0090 lw r26,144(r29) 278 00001260 8fbb0094 lw r27,148(r29) 279 00001264 8fbc0098 lw r28,152(r29) 280 ;; Skip r29 - restored later 281 00001268 8fbe00a0 lw r30,160(r29) 282 0000126c 8fbf00a4 lw r31,164(r29) 284 00001270 27bd0154 addui r29,r29,#340 285 ;; Save the current value of the stack pointer after adjusting it 286 ;; Note that this will "destroy" the stack values below this interrupt 287 ;; stack frame. This is exactly what we want! 288 00001274 ac3d0004 sw 4(r1),r29 289 00001278 37a10000 ori r1,r29,#0 290 0000127c 8c3dff48 lw r29,-184(r1); 156-340 = -184 291 00001280 8c21fed8 lw r1,-296(r1); 44-340 = -296 292 00001284 40000000 rfe 293 00001288 .endproc _intrreturn 295 ;;;---------------------------------------------------------------------- 296 ;;; SetIntrs 297 ;;; 298 ;;; This routine sets the interrupt level to the value passed (0 -> all 299 ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the 300 ;;; former value for the interrupt flags. 301 ;;;---------------------------------------------------------------------- 302 00001288 .proc _SetIntrs 303 00001288 .global _SetIntrs 304 00001288 _SetIntrs: 305 00001288 2fbd0010 subui r29,r29,#16 306 0000128c afa2000c sw 12(r29),r2; save r2 307 00001290 8fa20010 lw r2,16(r29); Get the new interrupt level 308 00001294 3042000f andi r2,r2,#0x0f; Mask off interrupt levels 309 00001298 00a00831 movs2i r1,status 310 0000129c afa10008 sw 8(r29),r1; Store the old interrupt values 311 000012a0 3021fff0 andi r1,r1,#0xfff0; Mask off old interrupt level 312 000012a4 00410825 or r1,r2,r1; OR in new interrupt level 313 000012a8 00202830 movi2s status,r1 314 000012ac 8fa10008 lw r1,8(r29); Get back the original interrupt level 315 000012b0 3021000f andi r1,r1,#0x0f; Mask off all but interrupt levels 316 000012b4 8fa2000c lw r2,12(r29); restore r2 317 000012b8 27bd0010 addui r29,r29,#16; restore stack pointer 318 000012bc 4be00000 jr r31 319 000012c0 54000000 nop 320 000012c4 .endproc _SetIntrs 322 000012c4 .proc _CurrentIntrs 323 000012c4 .global _CurrentIntrs 324 000012c4 _CurrentIntrs: 325 000012c4 00a00831 movs2i r1,status 326 000012c8 3021000f andi r1,r1,#0xf 327 000012cc 4be00000 jr r31 328 000012d0 54000000 nop 329 000012d4 .endproc _CurrentIntrs 330 ;;;---------------------------------------------------------------------- 331 ;;; _ProcessSleep 332 ;;; 333 ;;; If a context switch from elsewhere in the kernel is desired, take a 334 ;;; trap and call this routine from the trap handler. 335 ;;;---------------------------------------------------------------------- 336 000012d4 .proc _ProcessSleep 337 000012d4 .global _ProcessSleep 338 000012d4 _ProcessSleep: 339 000012d4 44000410 trap #0x410; This is a process sleep trap 340 000012d8 54000000 nop 341 000012dc 4be00000 jr r31 342 000012e0 54000000 nop 343 000012e4 .endproc _ProcessSleep 344 ; 345 ; Stub functions for DLX traps. 346 ; 347 ; Aaron Sawdey 1996; released to the Public Domain. 348 ; 350 000012e4 .align 2 351 000012e4 .proc _random 352 000012e4 .global _random 353 000012e4 _random: 354 000012e4 44002020 trap #0x2020 355 000012e8 4be00000 jr r31 356 000012ec 54000000 nop 357 000012f0 .endproc _random 359 000012f0 .proc _srandom 360 000012f0 .global _srandom 361 000012f0 _srandom: 362 000012f0 44002021 trap #0x2021 363 000012f4 4be00000 jr r31 364 000012f8 54000000 nop 365 000012fc .endproc _srandom 367 ; Compiled by GCC 368 000012fc .data 369 0000c000 .align 2 370 0000c000 _rcsid_LF2: 371 0000c000 3a206669 .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 371 0000c004 6c657379 371 0000c008 732e632c 371 0000c00c 7620312e 371 0000c010 31203230 371 0000c014 30302f30 371 0000c018 392f3230 371 0000c01c 2030313a 371 0000c020 35303a31 371 0000c024 3920656c 371 0000c028 6d204578 371 0000c02c 7020656c 371 0000c030 6d203030 371 0000c034 30 372 0000c035 .text 373 000012fc .align 2 374 000012fc .proc _isspace 375 000012fc .global _isspace 376 000012fc _isspace: 377 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 378 000012fc afbefffc sw -4(r29),r30; push fp 379 00001300 001df020 add r30,r0,r29; fp = sp 380 00001304 afbffff8 sw -8(r29),r31; push ret addr 381 00001308 2fbd0010 subui r29,r29,#16; alloc local storage 382 0000130c afa20000 sw 0(r29),r2 383 00001310 83c20003 lb r2,3(r30) 384 00001314 201f0000 addi r31,r0,#0 385 00001318 304100ff andi r1,r2,#0x00ff 386 0000131c 60210020 seqi r1,r1,#32 387 00001320 14200018 bnez r1,L6_LF2 388 00001324 54000000 nop; not filled. 389 00001328 2041fff7 addi r1,r2,#-9 390 0000132c 302100ff andi r1,r1,#0x00ff 391 00001330 70210001 sleui r1,r1,#1 392 00001334 10200008 beqz r1,L5_LF2 393 00001338 54000000 nop; not filled. 394 0000133c L6_LF2: 395 0000133c 201f0001 addi r31,r0,#1 396 00001340 L5_LF2: 397 00001340 001f0820 add r1,r0,r31 398 00001344 8fa20000 lw r2,0(r29) 399 00001348 8fdffff8 lw r31,-8(r30) 400 0000134c 001ee820 add r29,r0,r30 401 00001350 8fdefffc lw r30,-4(r30) 402 00001354 4be00000 jr r31 403 00001358 54000000 nop 404 0000135c .endproc _isspace 405 0000135c .align 2 406 0000135c .proc _isxdigit 407 0000135c .global _isxdigit 408 0000135c _isxdigit: 409 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 410 0000135c afbefffc sw -4(r29),r30; push fp 411 00001360 001df020 add r30,r0,r29; fp = sp 412 00001364 afbffff8 sw -8(r29),r31; push ret addr 413 00001368 2fbd0010 subui r29,r29,#16; alloc local storage 414 0000136c afa20000 sw 0(r29),r2 415 00001370 83df0003 lb r31,3(r30) 416 00001374 20020000 addi r2,r0,#0 417 00001378 23e1ffd0 addi r1,r31,#-48 418 0000137c 302100ff andi r1,r1,#0x00ff 419 00001380 70210009 sleui r1,r1,#9 420 00001384 14200028 bnez r1,L12_LF2 421 00001388 54000000 nop; not filled. 422 0000138c 23e1ff9f addi r1,r31,#-97 423 00001390 302100ff andi r1,r1,#0x00ff 424 00001394 70210005 sleui r1,r1,#5 425 00001398 14200014 bnez r1,L12_LF2 426 0000139c 54000000 nop; not filled. 427 000013a0 33e100ff andi r1,r31,#0x00ff 428 000013a4 64210041 snei r1,r1,#65 429 000013a8 14200008 bnez r1,L11_LF2 430 000013ac 54000000 nop; not filled. 431 000013b0 L12_LF2: 432 000013b0 20020001 addi r2,r0,#1 433 000013b4 L11_LF2: 434 000013b4 00020820 add r1,r0,r2 435 000013b8 8fa20000 lw r2,0(r29) 436 000013bc 8fdffff8 lw r31,-8(r30) 437 000013c0 001ee820 add r29,r0,r30 438 000013c4 8fdefffc lw r30,-4(r30) 439 000013c8 4be00000 jr r31 440 000013cc 54000000 nop 441 000013d0 .endproc _isxdigit 442 000013d0 .align 2 443 000013d0 .proc _DisableIntrs 444 000013d0 .global _DisableIntrs 445 000013d0 _DisableIntrs: 446 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 447 000013d0 afbefffc sw -4(r29),r30; push fp 448 000013d4 001df020 add r30,r0,r29; fp = sp 449 000013d8 afbffff8 sw -8(r29),r31; push ret addr 450 000013dc 2fbd0010 subui r29,r29,#16; alloc local storage 451 000013e0 afa20000 sw 0(r29),r2 452 000013e4 23bdfff8 addi r29,r29,#-8 453 000013e8 2002000f addi r2,r0,#15 454 000013ec afa20000 sw (r29),r2 455 000013f0 0ffffe94 jal _SetIntrs 456 000013f4 54000000 nop; not filled. 457 000013f8 23bd0008 addi r29,r29,#8 458 000013fc 8fa20000 lw r2,0(r29) 459 00001400 8fdffff8 lw r31,-8(r30) 460 00001404 001ee820 add r29,r0,r30 461 00001408 8fdefffc lw r30,-4(r30) 462 0000140c 4be00000 jr r31 463 00001410 54000000 nop 464 00001414 .endproc _DisableIntrs 465 00001414 .align 2 466 00001414 .proc _EnableIntrs 467 00001414 .global _EnableIntrs 468 00001414 _EnableIntrs: 469 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 470 00001414 afbefffc sw -4(r29),r30; push fp 471 00001418 001df020 add r30,r0,r29; fp = sp 472 0000141c afbffff8 sw -8(r29),r31; push ret addr 473 00001420 2fbd0010 subui r29,r29,#16; alloc local storage 474 00001424 afa20000 sw 0(r29),r2 475 00001428 23bdfff8 addi r29,r29,#-8 476 0000142c 20020000 addi r2,r0,#0 477 00001430 afa20000 sw (r29),r2 478 00001434 0ffffe50 jal _SetIntrs 479 00001438 54000000 nop; not filled. 480 0000143c 23bd0008 addi r29,r29,#8 481 00001440 8fa20000 lw r2,0(r29) 482 00001444 8fdffff8 lw r31,-8(r30) 483 00001448 001ee820 add r29,r0,r30 484 0000144c 8fdefffc lw r30,-4(r30) 485 00001450 4be00000 jr r31 486 00001454 54000000 nop 487 00001458 .endproc _EnableIntrs 488 00001458 .align 2 489 00001458 .proc _RestoreIntrs 490 00001458 .global _RestoreIntrs 491 00001458 _RestoreIntrs: 492 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 493 00001458 afbefffc sw -4(r29),r30; push fp 494 0000145c 001df020 add r30,r0,r29; fp = sp 495 00001460 afbffff8 sw -8(r29),r31; push ret addr 496 00001464 2fbd0010 subui r29,r29,#16; alloc local storage 497 00001468 afa20000 sw 0(r29),r2 498 0000146c 23bdfff8 addi r29,r29,#-8 499 00001470 8fc20000 lw r2,(r30) 500 00001474 afa20000 sw (r29),r2 501 00001478 0ffffe0c jal _SetIntrs 502 0000147c 54000000 nop; not filled. 503 00001480 23bd0008 addi r29,r29,#8 504 00001484 8fa20000 lw r2,0(r29) 505 00001488 8fdffff8 lw r31,-8(r30) 506 0000148c 001ee820 add r29,r0,r30 507 00001490 8fdefffc lw r30,-4(r30) 508 00001494 4be00000 jr r31 509 00001498 54000000 nop 510 0000149c .endproc _RestoreIntrs 511 0000149c .align 2 512 0000149c .proc _QueueLinkInit 513 0000149c .global _QueueLinkInit 514 0000149c _QueueLinkInit: 515 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 516 0000149c afbefffc sw -4(r29),r30; push fp 517 000014a0 001df020 add r30,r0,r29; fp = sp 518 000014a4 afbffff8 sw -8(r29),r31; push ret addr 519 000014a8 2fbd0010 subui r29,r29,#16; alloc local storage 520 000014ac afa20000 sw 0(r29),r2 521 000014b0 8fc10000 lw r1,(r30) 522 000014b4 8fc20004 lw r2,4(r30) 523 000014b8 201f0000 addi r31,r0,#0 524 000014bc ac3f0000 sw (r1),r31 525 000014c0 ac22000c sw 12(r1),r2 526 000014c4 8fa20000 lw r2,0(r29) 527 000014c8 8fdffff8 lw r31,-8(r30) 528 000014cc 001ee820 add r29,r0,r30 529 000014d0 8fdefffc lw r30,-4(r30) 530 000014d4 4be00000 jr r31 531 000014d8 54000000 nop 532 000014dc .endproc _QueueLinkInit 533 000014dc .align 2 534 000014dc .proc _QueueNext 535 000014dc .global _QueueNext 536 000014dc _QueueNext: 537 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 538 000014dc afbefffc sw -4(r29),r30; push fp 539 000014e0 001df020 add r30,r0,r29; fp = sp 540 000014e4 afbffff8 sw -8(r29),r31; push ret addr 541 000014e8 2fbd0008 subui r29,r29,#8; alloc local storage 542 000014ec 8fc10000 lw r1,(r30) 543 000014f0 8c210000 lw r1,(r1) 544 000014f4 8fdffff8 lw r31,-8(r30) 545 000014f8 001ee820 add r29,r0,r30 546 000014fc 8fdefffc lw r30,-4(r30) 547 00001500 4be00000 jr r31 548 00001504 54000000 nop 549 00001508 .endproc _QueueNext 550 00001508 .align 2 551 00001508 .proc _QueuePrev 552 00001508 .global _QueuePrev 553 00001508 _QueuePrev: 554 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 555 00001508 afbefffc sw -4(r29),r30; push fp 556 0000150c 001df020 add r30,r0,r29; fp = sp 557 00001510 afbffff8 sw -8(r29),r31; push ret addr 558 00001514 2fbd0008 subui r29,r29,#8; alloc local storage 559 00001518 8fc10000 lw r1,(r30) 560 0000151c 8c210004 lw r1,4(r1) 561 00001520 8fdffff8 lw r31,-8(r30) 562 00001524 001ee820 add r29,r0,r30 563 00001528 8fdefffc lw r30,-4(r30) 564 0000152c 4be00000 jr r31 565 00001530 54000000 nop 566 00001534 .endproc _QueuePrev 567 00001534 .align 2 568 00001534 .proc _QueueFirst 569 00001534 .global _QueueFirst 570 00001534 _QueueFirst: 571 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 572 00001534 afbefffc sw -4(r29),r30; push fp 573 00001538 001df020 add r30,r0,r29; fp = sp 574 0000153c afbffff8 sw -8(r29),r31; push ret addr 575 00001540 2fbd0008 subui r29,r29,#8; alloc local storage 576 00001544 8fc10000 lw r1,(r30) 577 00001548 8c210000 lw r1,(r1) 578 0000154c 8fdffff8 lw r31,-8(r30) 579 00001550 001ee820 add r29,r0,r30 580 00001554 8fdefffc lw r30,-4(r30) 581 00001558 4be00000 jr r31 582 0000155c 54000000 nop 583 00001560 .endproc _QueueFirst 584 00001560 .align 2 585 00001560 .proc _QueueLast 586 00001560 .global _QueueLast 587 00001560 _QueueLast: 588 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 589 00001560 afbefffc sw -4(r29),r30; push fp 590 00001564 001df020 add r30,r0,r29; fp = sp 591 00001568 afbffff8 sw -8(r29),r31; push ret addr 592 0000156c 2fbd0008 subui r29,r29,#8; alloc local storage 593 00001570 8fc10000 lw r1,(r30) 594 00001574 8c210004 lw r1,4(r1) 595 00001578 8fdffff8 lw r31,-8(r30) 596 0000157c 001ee820 add r29,r0,r30 597 00001580 8fdefffc lw r30,-4(r30) 598 00001584 4be00000 jr r31 599 00001588 54000000 nop 600 0000158c .endproc _QueueLast 601 0000158c .align 2 602 0000158c .proc _QueueInsertAfter 603 0000158c .global _QueueInsertAfter 604 0000158c _QueueInsertAfter: 605 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 606 0000158c afbefffc sw -4(r29),r30; push fp 607 00001590 001df020 add r30,r0,r29; fp = sp 608 00001594 afbffff8 sw -8(r29),r31; push ret addr 609 00001598 2fbd0010 subui r29,r29,#16; alloc local storage 610 0000159c afa20000 sw 0(r29),r2 611 000015a0 afa30004 sw 4(r29),r3 612 000015a4 8fc30000 lw r3,(r30) 613 000015a8 8fc20004 lw r2,4(r30) 614 000015ac 8fc10008 lw r1,8(r30) 615 000015b0 ac230008 sw 8(r1),r3 616 000015b4 ac220004 sw 4(r1),r2 617 000015b8 8c5f0000 lw r31,(r2) 618 000015bc ac3f0000 sw (r1),r31 619 000015c0 ac410000 sw (r2),r1 620 000015c4 8c220000 lw r2,(r1) 621 000015c8 ac410004 sw 4(r2),r1 622 000015cc 8c610008 lw r1,8(r3) 623 000015d0 20210001 addi r1,r1,#1 624 000015d4 ac610008 sw 8(r3),r1 625 000015d8 8fa20000 lw r2,0(r29) 626 000015dc 8fa30004 lw r3,4(r29) 627 000015e0 8fdffff8 lw r31,-8(r30) 628 000015e4 001ee820 add r29,r0,r30 629 000015e8 8fdefffc lw r30,-4(r30) 630 000015ec 4be00000 jr r31 631 000015f0 54000000 nop 632 000015f4 .endproc _QueueInsertAfter 633 000015f4 .align 2 634 000015f4 .proc _QueueInsertFirst 635 000015f4 .global _QueueInsertFirst 636 000015f4 _QueueInsertFirst: 637 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 638 000015f4 afbefffc sw -4(r29),r30; push fp 639 000015f8 001df020 add r30,r0,r29; fp = sp 640 000015fc afbffff8 sw -8(r29),r31; push ret addr 641 00001600 2fbd0010 subui r29,r29,#16; alloc local storage 642 00001604 afa20000 sw 0(r29),r2 643 00001608 afa30004 sw 4(r29),r3 644 0000160c 8fc30000 lw r3,(r30) 645 00001610 8fc10004 lw r1,4(r30) 646 00001614 ac230008 sw 8(r1),r3 647 00001618 ac230004 sw 4(r1),r3 648 0000161c 8c7f0000 lw r31,(r3) 649 00001620 ac3f0000 sw (r1),r31 650 00001624 ac610000 sw (r3),r1 651 00001628 8c220000 lw r2,(r1) 652 0000162c ac410004 sw 4(r2),r1 653 00001630 8c610008 lw r1,8(r3) 654 00001634 20210001 addi r1,r1,#1 655 00001638 ac610008 sw 8(r3),r1 656 0000163c 8fa20000 lw r2,0(r29) 657 00001640 8fa30004 lw r3,4(r29) 658 00001644 8fdffff8 lw r31,-8(r30) 659 00001648 001ee820 add r29,r0,r30 660 0000164c 8fdefffc lw r30,-4(r30) 661 00001650 4be00000 jr r31 662 00001654 54000000 nop 663 00001658 .endproc _QueueInsertFirst 664 00001658 .align 2 665 00001658 .proc _QueueInsertLast 666 00001658 .global _QueueInsertLast 667 00001658 _QueueInsertLast: 668 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 669 00001658 afbefffc sw -4(r29),r30; push fp 670 0000165c 001df020 add r30,r0,r29; fp = sp 671 00001660 afbffff8 sw -8(r29),r31; push ret addr 672 00001664 2fbd0010 subui r29,r29,#16; alloc local storage 673 00001668 afa20000 sw 0(r29),r2 674 0000166c afa30004 sw 4(r29),r3 675 00001670 8fc30000 lw r3,(r30) 676 00001674 8fc10004 lw r1,4(r30) 677 00001678 8c620004 lw r2,4(r3) 678 0000167c ac230008 sw 8(r1),r3 679 00001680 ac220004 sw 4(r1),r2 680 00001684 8c5f0000 lw r31,(r2) 681 00001688 ac3f0000 sw (r1),r31 682 0000168c ac410000 sw (r2),r1 683 00001690 8c220000 lw r2,(r1) 684 00001694 ac410004 sw 4(r2),r1 685 00001698 8c610008 lw r1,8(r3) 686 0000169c 20210001 addi r1,r1,#1 687 000016a0 ac610008 sw 8(r3),r1 688 000016a4 8fa20000 lw r2,0(r29) 689 000016a8 8fa30004 lw r3,4(r29) 690 000016ac 8fdffff8 lw r31,-8(r30) 691 000016b0 001ee820 add r29,r0,r30 692 000016b4 8fdefffc lw r30,-4(r30) 693 000016b8 4be00000 jr r31 694 000016bc 54000000 nop 695 000016c0 .endproc _QueueInsertLast 696 000016c0 .align 2 697 000016c0 .proc _QueueRemove 698 000016c0 .global _QueueRemove 699 000016c0 _QueueRemove: 700 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 701 000016c0 afbefffc sw -4(r29),r30; push fp 702 000016c4 001df020 add r30,r0,r29; fp = sp 703 000016c8 afbffff8 sw -8(r29),r31; push ret addr 704 000016cc 2fbd0010 subui r29,r29,#16; alloc local storage 705 000016d0 afa20000 sw 0(r29),r2 706 000016d4 afa30004 sw 4(r29),r3 707 000016d8 8fdf0000 lw r31,(r30) 708 000016dc 8fe10008 lw r1,8(r31) 709 000016e0 8c210008 lw r1,8(r1) 710 000016e4 6c210000 sgti r1,r1,#0 711 000016e8 1020002c beqz r1,L44_LF2 712 000016ec 54000000 nop; not filled. 713 000016f0 8fe10004 lw r1,4(r31) 714 000016f4 8fe30000 lw r3,(r31) 715 000016f8 ac230000 sw (r1),r3 716 000016fc 8fe10000 lw r1,(r31) 717 00001700 8fe30004 lw r3,4(r31) 718 00001704 ac230004 sw 4(r1),r3 719 00001708 8fe20008 lw r2,8(r31) 720 0000170c 8c410008 lw r1,8(r2) 721 00001710 2021ffff addi r1,r1,#-1 722 00001714 ac410008 sw 8(r2),r1 723 00001718 L44_LF2: 724 00001718 20030000 addi r3,r0,#0 725 0000171c afe30000 sw (r31),r3 726 00001720 8fa20000 lw r2,0(r29) 727 00001724 8fa30004 lw r3,4(r29) 728 00001728 8fdffff8 lw r31,-8(r30) 729 0000172c 001ee820 add r29,r0,r30 730 00001730 8fdefffc lw r30,-4(r30) 731 00001734 4be00000 jr r31 732 00001738 54000000 nop 733 0000173c .endproc _QueueRemove 734 0000173c .align 2 735 0000173c .proc _QueueLength 736 0000173c .global _QueueLength 737 0000173c _QueueLength: 738 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 739 0000173c afbefffc sw -4(r29),r30; push fp 740 00001740 001df020 add r30,r0,r29; fp = sp 741 00001744 afbffff8 sw -8(r29),r31; push ret addr 742 00001748 2fbd0008 subui r29,r29,#8; alloc local storage 743 0000174c 8fc10000 lw r1,(r30) 744 00001750 8c210008 lw r1,8(r1) 745 00001754 8fdffff8 lw r31,-8(r30) 746 00001758 001ee820 add r29,r0,r30 747 0000175c 8fdefffc lw r30,-4(r30) 748 00001760 4be00000 jr r31 749 00001764 54000000 nop 750 00001768 .endproc _QueueLength 751 00001768 .align 2 752 00001768 .proc _QueueEmpty 753 00001768 .global _QueueEmpty 754 00001768 _QueueEmpty: 755 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 756 00001768 afbefffc sw -4(r29),r30; push fp 757 0000176c 001df020 add r30,r0,r29; fp = sp 758 00001770 afbffff8 sw -8(r29),r31; push ret addr 759 00001774 2fbd0008 subui r29,r29,#8; alloc local storage 760 00001778 8fc10000 lw r1,(r30) 761 0000177c 8c210008 lw r1,8(r1) 762 00001780 60210000 seqi r1,r1,#0 763 00001784 8fdffff8 lw r31,-8(r30) 764 00001788 001ee820 add r29,r0,r30 765 0000178c 8fdefffc lw r30,-4(r30) 766 00001790 4be00000 jr r31 767 00001794 54000000 nop 768 00001798 .endproc _QueueEmpty 769 00001798 .data 770 0000c035 .align 2 771 0000c038 LC0_LF2: 772 0000c038 41747465 .ascii "Attepmting to open %s mode=%d.\n\000" 772 0000c03c 706d7469 772 0000c040 6e672074 772 0000c044 6f206f70 772 0000c048 656e2025 772 0000c04c 73206d6f 772 0000c050 64653d25 772 0000c054 642e0a00 773 0000c058 .align 2 774 0000c058 LC1_LF2: 775 0000c058 646c783a .ascii "dlx:\000" 775 0000c05c 00 776 0000c05d .align 2 777 0000c060 LC2_LF2: 778 0000c060 46696c65 .ascii "File %s opening in file system %d.\n\000" 778 0000c064 20257320 778 0000c068 6f70656e 778 0000c06c 696e6720 778 0000c070 696e2066 778 0000c074 696c6520 778 0000c078 73797374 778 0000c07c 656d2025 778 0000c080 642e0a00 779 0000c084 .align 2 780 0000c084 LC3_LF2: 781 0000c084 4f70656e .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" 781 0000c088 65642025 781 0000c08c 7320696e 781 0000c090 20465320 781 0000c094 25642c20 781 0000c098 6d6f6465 781 0000c09c 3d256420 781 0000c0a0 736c6f74 781 0000c0a4 3d25642e 781 0000c0a8 0a00 782 0000c0aa .text 783 00001798 .align 2 784 00001798 .proc _FsOpen 785 00001798 .global _FsOpen 786 00001798 _FsOpen: 787 ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. 788 00001798 afbefffc sw -4(r29),r30; push fp 789 0000179c 001df020 add r30,r0,r29; fp = sp 790 000017a0 afbffff8 sw -8(r29),r31; push ret addr 791 000017a4 2fbd0028 subui r29,r29,#40; alloc local storage 792 000017a8 afa20000 sw 0(r29),r2 793 000017ac afa30004 sw 4(r29),r3 794 000017b0 afa40008 sw 8(r29),r4 795 000017b4 afa5000c sw 12(r29),r5 796 000017b8 afa60010 sw 16(r29),r6 797 000017bc afa70014 sw 20(r29),r7 798 000017c0 afa80018 sw 24(r29),r8 799 000017c4 8fc40000 lw r4,(r30) 800 000017c8 8fc50004 lw r5,4(r30) 801 000017cc 23bdfff8 addi r29,r29,#-8 802 000017d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 803 000017d4 24420d78 addui r2,r2,(_debugstr)&0xffff 804 000017d8 afa20000 sw (r29),r2 805 000017dc 20080066 addi r8,r0,#102 806 000017e0 afa80004 sw 4(r29),r8 807 000017e4 0c00264c jal _dindex 808 000017e8 54000000 nop; not filled. 809 000017ec 23bd0008 addi r29,r29,#8 810 000017f0 64210000 snei r1,r1,#0 811 000017f4 1420002c bnez r1,L56_LF2 812 000017f8 54000000 nop; not filled. 813 000017fc 23bdfff8 addi r29,r29,#-8 814 00001800 afa20000 sw (r29),r2 815 00001804 2008002b addi r8,r0,#43 816 00001808 afa80004 sw 4(r29),r8 817 0000180c 0c002624 jal _dindex 818 00001810 54000000 nop; not filled. 819 00001814 23bd0008 addi r29,r29,#8 820 00001818 64210000 snei r1,r1,#0 821 0000181c 10200028 beqz r1,L55_LF2 822 00001820 54000000 nop; not filled. 823 00001824 L56_LF2: 824 00001824 23bdfff0 addi r29,r29,#-16 825 00001828 3c080000 lhi r8,((LC0_LF2)>>16)&0xffff 826 0000182c 2508c038 addui r8,r8,(LC0_LF2)&0xffff 827 00001830 afa80000 sw (r29),r8 828 00001834 afa40004 sw 4(r29),r4 829 00001838 afa50008 sw 8(r29),r5 830 0000183c 0c009890 jal _printf 831 00001840 54000000 nop; not filled. 832 00001844 23bd0010 addi r29,r29,#16 833 00001848 L55_LF2: 834 00001848 30a50003 andi r5,r5,#3 835 0000184c 64a10000 snei r1,r5,#0 836 00001850 10200044 beqz r1,L74_LF2 837 00001854 54000000 nop; not filled. 838 00001858 20030000 addi r3,r0,#0 839 0000185c 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 840 00001860 24c6c110 addui r6,r6,(_openfiles_LF2)&0xffff 841 00001864 00061020 add r2,r0,r6 842 00001868 L61_LF2: 843 00001868 8c410004 lw r1,4(r2) 844 0000186c 64210000 snei r1,r1,#0 845 00001870 10200018 beqz r1,L59_LF2 846 00001874 54000000 nop; not filled. 847 00001878 2042010c addi r2,r2,#268 848 0000187c 20630001 addi r3,r3,#1 849 00001880 7061001f slei r1,r3,#31 850 00001884 1420ffe0 bnez r1,L61_LF2 851 00001888 54000000 nop; not filled. 852 0000188c L59_LF2: 853 0000188c 6c61001f sgti r1,r3,#31 854 00001890 10200010 beqz r1,L64_LF2 855 00001894 54000000 nop; not filled. 856 00001898 L74_LF2: 857 00001898 2001ffff addi r1,r0,#-1 858 0000189c 08000224 j L73_LF2 859 000018a0 54000000 nop; not filled. 860 000018a4 L64_LF2: 861 000018a4 50610004 slli r1,r3,#0x4 862 000018a8 00230820 add r1,r1,r3 863 000018ac 50210002 slli r1,r1,#0x2 864 000018b0 00230822 sub r1,r1,r3 865 000018b4 50210002 slli r1,r1,#0x2 866 000018b8 00261020 add r2,r1,r6 867 000018bc ac450004 sw 4(r2),r5 868 000018c0 23bdfff0 addi r29,r29,#-16 869 000018c4 afa40000 sw (r29),r4 870 000018c8 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 871 000018cc 2421c058 addui r1,r1,(LC1_LF2)&0xffff 872 000018d0 afa10004 sw 4(r29),r1 873 000018d4 20080004 addi r8,r0,#4 874 000018d8 afa80008 sw 8(r29),r8 875 000018dc 0c002210 jal _dstrncmp 876 000018e0 54000000 nop; not filled. 877 000018e4 23bd0010 addi r29,r29,#16 878 000018e8 64210000 snei r1,r1,#0 879 000018ec 14200014 bnez r1,L65_LF2 880 000018f0 54000000 nop; not filled. 881 000018f4 20840004 addi r4,r4,#4 882 000018f8 20080001 addi r8,r0,#1 883 000018fc 08000008 j L75_LF2 884 00001900 54000000 nop; not filled. 885 00001904 L65_LF2: 886 00001904 20080000 addi r8,r0,#0 887 00001908 L75_LF2: 888 00001908 ac480000 sw (r2),r8 889 0000190c 23bdfff8 addi r29,r29,#-8 890 00001910 3c020001 lhi r2,((_debugstr)>>16)&0xffff 891 00001914 24420d78 addui r2,r2,(_debugstr)&0xffff 892 00001918 afa20000 sw (r29),r2 893 0000191c 20080066 addi r8,r0,#102 894 00001920 afa80004 sw 4(r29),r8 895 00001924 0c00250c jal _dindex 896 00001928 54000000 nop; not filled. 897 0000192c 23bd0008 addi r29,r29,#8 898 00001930 64210000 snei r1,r1,#0 899 00001934 1420002c bnez r1,L68_LF2 900 00001938 54000000 nop; not filled. 901 0000193c 23bdfff8 addi r29,r29,#-8 902 00001940 afa20000 sw (r29),r2 903 00001944 2008002b addi r8,r0,#43 904 00001948 afa80004 sw 4(r29),r8 905 0000194c 0c0024e4 jal _dindex 906 00001950 54000000 nop; not filled. 907 00001954 23bd0008 addi r29,r29,#8 908 00001958 64210000 snei r1,r1,#0 909 0000195c 1020004c beqz r1,L67_LF2 910 00001960 54000000 nop; not filled. 911 00001964 L68_LF2: 912 00001964 23bdfff0 addi r29,r29,#-16 913 00001968 3c080000 lhi r8,((LC2_LF2)>>16)&0xffff 914 0000196c 2508c060 addui r8,r8,(LC2_LF2)&0xffff 915 00001970 afa80000 sw (r29),r8 916 00001974 afa40004 sw 4(r29),r4 917 00001978 50610004 slli r1,r3,#0x4 918 0000197c 00230820 add r1,r1,r3 919 00001980 50210002 slli r1,r1,#0x2 920 00001984 00230822 sub r1,r1,r3 921 00001988 50210002 slli r1,r1,#0x2 922 0000198c 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 923 00001990 2508c110 addui r8,r8,(_openfiles_LF2)&0xffff 924 00001994 00280820 add r1,r1,r8 925 00001998 8c210000 lw r1,(r1) 926 0000199c afa10008 sw 8(r29),r1 927 000019a0 0c00972c jal _printf 928 000019a4 54000000 nop; not filled. 929 000019a8 23bd0010 addi r29,r29,#16 930 000019ac L67_LF2: 931 000019ac 23bdfff0 addi r29,r29,#-16 932 000019b0 50610004 slli r1,r3,#0x4 933 000019b4 00230820 add r1,r1,r3 934 000019b8 50210002 slli r1,r1,#0x2 935 000019bc 00230822 sub r1,r1,r3 936 000019c0 50260002 slli r6,r1,#0x2 937 000019c4 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 938 000019c8 2508c110 addui r8,r8,(_openfiles_LF2)&0xffff 939 000019cc 00c83820 add r7,r6,r8 940 000019d0 8ce20000 lw r2,(r7) 941 000019d4 50410001 slli r1,r2,#0x1 942 000019d8 00220820 add r1,r1,r2 943 000019dc 50210003 slli r1,r1,#0x3 944 000019e0 3c080000 lhi r8,((_fs_LF2)>>16)&0xffff 945 000019e4 2508c0e0 addui r8,r8,(_fs_LF2)&0xffff 946 000019e8 00280820 add r1,r1,r8 947 000019ec afa30000 sw (r29),r3 948 000019f0 afa40004 sw 4(r29),r4 949 000019f4 afa50008 sw 8(r29),r5 950 000019f8 8c210000 lw r1,(r1) 951 000019fc 4c200000 jalr r1 952 00001a00 54000000 nop; not filled. 953 00001a04 00011020 add r2,r0,r1 954 00001a08 23bd0010 addi r29,r29,#16 955 00001a0c 68410000 slti r1,r2,#0 956 00001a10 10200024 beqz r1,L69_LF2 957 00001a14 54000000 nop; not filled. 958 00001a18 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 959 00001a1c 2508c110 addui r8,r8,(_openfiles_LF2)&0xffff 960 00001a20 00c80820 add r1,r6,r8 961 00001a24 20080000 addi r8,r0,#0 962 00001a28 ac280004 sw 4(r1),r8 963 00001a2c 00020820 add r1,r0,r2 964 00001a30 08000090 j L73_LF2 965 00001a34 54000000 nop; not filled. 966 00001a38 L69_LF2: 967 00001a38 23bdfff8 addi r29,r29,#-8 968 00001a3c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 969 00001a40 24420d78 addui r2,r2,(_debugstr)&0xffff 970 00001a44 afa20000 sw (r29),r2 971 00001a48 20080066 addi r8,r0,#102 972 00001a4c afa80004 sw 4(r29),r8 973 00001a50 0c0023e0 jal _dindex 974 00001a54 54000000 nop; not filled. 975 00001a58 23bd0008 addi r29,r29,#8 976 00001a5c 64210000 snei r1,r1,#0 977 00001a60 1420002c bnez r1,L72_LF2 978 00001a64 54000000 nop; not filled. 979 00001a68 23bdfff8 addi r29,r29,#-8 980 00001a6c afa20000 sw (r29),r2 981 00001a70 2008002b addi r8,r0,#43 982 00001a74 afa80004 sw 4(r29),r8 983 00001a78 0c0023b8 jal _dindex 984 00001a7c 54000000 nop; not filled. 985 00001a80 23bd0008 addi r29,r29,#8 986 00001a84 64210000 snei r1,r1,#0 987 00001a88 10200034 beqz r1,L71_LF2 988 00001a8c 54000000 nop; not filled. 989 00001a90 L72_LF2: 990 00001a90 23bdffe8 addi r29,r29,#-24 991 00001a94 3c080000 lhi r8,((LC3_LF2)>>16)&0xffff 992 00001a98 2508c084 addui r8,r8,(LC3_LF2)&0xffff 993 00001a9c afa80000 sw (r29),r8 994 00001aa0 afa40004 sw 4(r29),r4 995 00001aa4 8ce70000 lw r7,(r7) 996 00001aa8 afa70008 sw 8(r29),r7 997 00001aac afa5000c sw 12(r29),r5 998 00001ab0 afa30010 sw 16(r29),r3 999 00001ab4 0c009618 jal _printf 1000 00001ab8 54000000 nop; not filled. 1001 00001abc 23bd0018 addi r29,r29,#24 1002 00001ac0 L71_LF2: 1003 00001ac0 00030820 add r1,r0,r3 1004 00001ac4 L73_LF2: 1005 00001ac4 8fa20000 lw r2,0(r29) 1006 00001ac8 8fa30004 lw r3,4(r29) 1007 00001acc 8fa40008 lw r4,8(r29) 1008 00001ad0 8fa5000c lw r5,12(r29) 1009 00001ad4 8fa60010 lw r6,16(r29) 1010 00001ad8 8fa70014 lw r7,20(r29) 1011 00001adc 8fa80018 lw r8,24(r29) 1012 00001ae0 8fdffff8 lw r31,-8(r30) 1013 00001ae4 001ee820 add r29,r0,r30 1014 00001ae8 8fdefffc lw r30,-4(r30) 1015 00001aec 4be00000 jr r31 1016 00001af0 54000000 nop 1017 00001af4 .endproc _FsOpen 1018 00001af4 .align 2 1019 00001af4 .proc _FsClose 1020 00001af4 .global _FsClose 1021 00001af4 _FsClose: 1022 ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. 1023 00001af4 afbefffc sw -4(r29),r30; push fp 1024 00001af8 001df020 add r30,r0,r29; fp = sp 1025 00001afc afbffff8 sw -8(r29),r31; push ret addr 1026 00001b00 2fbd0018 subui r29,r29,#24; alloc local storage 1027 00001b04 afa20000 sw 0(r29),r2 1028 00001b08 afa30004 sw 4(r29),r3 1029 00001b0c afa40008 sw 8(r29),r4 1030 00001b10 8fdf0000 lw r31,(r30) 1031 00001b14 20020000 addi r2,r0,#0 1032 00001b18 23e1ffff addi r1,r31,#-1 1033 00001b1c 7021001e sleui r1,r1,#30 1034 00001b20 10200038 beqz r1,L84_LF2 1035 00001b24 54000000 nop; not filled. 1036 00001b28 53e10004 slli r1,r31,#0x4 1037 00001b2c 003f0820 add r1,r1,r31 1038 00001b30 50210002 slli r1,r1,#0x2 1039 00001b34 003f0822 sub r1,r1,r31 1040 00001b38 50210002 slli r1,r1,#0x2 1041 00001b3c 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1042 00001b40 2484c110 addui r4,r4,(_openfiles_LF2)&0xffff 1043 00001b44 00240820 add r1,r1,r4 1044 00001b48 8c210004 lw r1,4(r1) 1045 00001b4c 64210000 snei r1,r1,#0 1046 00001b50 10200008 beqz r1,L84_LF2 1047 00001b54 54000000 nop; not filled. 1048 00001b58 20020001 addi r2,r0,#1 1049 00001b5c L84_LF2: 1050 00001b5c 64410000 snei r1,r2,#0 1051 00001b60 10200074 beqz r1,L82_LF2 1052 00001b64 54000000 nop; not filled. 1053 00001b68 23bdfff8 addi r29,r29,#-8 1054 00001b6c 53e10004 slli r1,r31,#0x4 1055 00001b70 003f0820 add r1,r1,r31 1056 00001b74 50210002 slli r1,r1,#0x2 1057 00001b78 003f0822 sub r1,r1,r31 1058 00001b7c 50230002 slli r3,r1,#0x2 1059 00001b80 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1060 00001b84 2484c110 addui r4,r4,(_openfiles_LF2)&0xffff 1061 00001b88 00640820 add r1,r3,r4 1062 00001b8c 8c220000 lw r2,(r1) 1063 00001b90 50410001 slli r1,r2,#0x1 1064 00001b94 00220820 add r1,r1,r2 1065 00001b98 50210003 slli r1,r1,#0x3 1066 00001b9c 3c040000 lhi r4,((_fs_LF2)>>16)&0xffff 1067 00001ba0 2484c0e0 addui r4,r4,(_fs_LF2)&0xffff 1068 00001ba4 00240820 add r1,r1,r4 1069 00001ba8 afbf0000 sw (r29),r31 1070 00001bac 8c210010 lw r1,16(r1) 1071 00001bb0 4c200000 jalr r1 1072 00001bb4 54000000 nop; not filled. 1073 00001bb8 23bd0008 addi r29,r29,#8 1074 00001bbc 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1075 00001bc0 2484c110 addui r4,r4,(_openfiles_LF2)&0xffff 1076 00001bc4 00641020 add r2,r3,r4 1077 00001bc8 20040000 addi r4,r0,#0 1078 00001bcc ac440004 sw 4(r2),r4 1079 00001bd0 08000008 j L86_LF2 1080 00001bd4 54000000 nop; not filled. 1081 00001bd8 L82_LF2: 1082 00001bd8 2001ffff addi r1,r0,#-1 1083 00001bdc L86_LF2: 1084 00001bdc 8fa20000 lw r2,0(r29) 1085 00001be0 8fa30004 lw r3,4(r29) 1086 00001be4 8fa40008 lw r4,8(r29) 1087 00001be8 8fdffff8 lw r31,-8(r30) 1088 00001bec 001ee820 add r29,r0,r30 1089 00001bf0 8fdefffc lw r30,-4(r30) 1090 00001bf4 4be00000 jr r31 1091 00001bf8 54000000 nop 1092 00001bfc .endproc _FsClose 1093 00001bfc .align 2 1094 00001bfc .proc _FsRead 1095 00001bfc .global _FsRead 1096 00001bfc _FsRead: 1097 ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. 1098 00001bfc afbefffc sw -4(r29),r30; push fp 1099 00001c00 001df020 add r30,r0,r29; fp = sp 1100 00001c04 afbffff8 sw -8(r29),r31; push ret addr 1101 00001c08 2fbd0010 subui r29,r29,#16; alloc local storage 1102 00001c0c afa20000 sw 0(r29),r2 1103 00001c10 afa30004 sw 4(r29),r3 1104 00001c14 8fdf0000 lw r31,(r30) 1105 00001c18 20020000 addi r2,r0,#0 1106 00001c1c 23e1ffff addi r1,r31,#-1 1107 00001c20 7021001e sleui r1,r1,#30 1108 00001c24 10200038 beqz r1,L94_LF2 1109 00001c28 54000000 nop; not filled. 1110 00001c2c 53e10004 slli r1,r31,#0x4 1111 00001c30 003f0820 add r1,r1,r31 1112 00001c34 50210002 slli r1,r1,#0x2 1113 00001c38 003f0822 sub r1,r1,r31 1114 00001c3c 50210002 slli r1,r1,#0x2 1115 00001c40 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1116 00001c44 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1117 00001c48 00230820 add r1,r1,r3 1118 00001c4c 8c210004 lw r1,4(r1) 1119 00001c50 64210000 snei r1,r1,#0 1120 00001c54 10200008 beqz r1,L94_LF2 1121 00001c58 54000000 nop; not filled. 1122 00001c5c 20020001 addi r2,r0,#1 1123 00001c60 L94_LF2: 1124 00001c60 64410000 snei r1,r2,#0 1125 00001c64 10200070 beqz r1,L92_LF2 1126 00001c68 54000000 nop; not filled. 1127 00001c6c 23bdfff0 addi r29,r29,#-16 1128 00001c70 53e10004 slli r1,r31,#0x4 1129 00001c74 003f0820 add r1,r1,r31 1130 00001c78 50210002 slli r1,r1,#0x2 1131 00001c7c 003f0822 sub r1,r1,r31 1132 00001c80 50210002 slli r1,r1,#0x2 1133 00001c84 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1134 00001c88 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1135 00001c8c 00230820 add r1,r1,r3 1136 00001c90 8c220000 lw r2,(r1) 1137 00001c94 50410001 slli r1,r2,#0x1 1138 00001c98 00220820 add r1,r1,r2 1139 00001c9c 50210003 slli r1,r1,#0x3 1140 00001ca0 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1141 00001ca4 2463c0e0 addui r3,r3,(_fs_LF2)&0xffff 1142 00001ca8 00230820 add r1,r1,r3 1143 00001cac afbf0000 sw (r29),r31 1144 00001cb0 8fc30004 lw r3,4(r30) 1145 00001cb4 afa30004 sw 4(r29),r3 1146 00001cb8 8fc30008 lw r3,8(r30) 1147 00001cbc afa30008 sw 8(r29),r3 1148 00001cc0 8c210004 lw r1,4(r1) 1149 00001cc4 4c200000 jalr r1 1150 00001cc8 54000000 nop; not filled. 1151 00001ccc 23bd0010 addi r29,r29,#16 1152 00001cd0 08000008 j L91_LF2 1153 00001cd4 54000000 nop; not filled. 1154 00001cd8 L92_LF2: 1155 00001cd8 2001ffff addi r1,r0,#-1 1156 00001cdc L91_LF2: 1157 00001cdc 8fa20000 lw r2,0(r29) 1158 00001ce0 8fa30004 lw r3,4(r29) 1159 00001ce4 8fdffff8 lw r31,-8(r30) 1160 00001ce8 001ee820 add r29,r0,r30 1161 00001cec 8fdefffc lw r30,-4(r30) 1162 00001cf0 4be00000 jr r31 1163 00001cf4 54000000 nop 1164 00001cf8 .endproc _FsRead 1165 00001cf8 .align 2 1166 00001cf8 .proc _FsWrite 1167 00001cf8 .global _FsWrite 1168 00001cf8 _FsWrite: 1169 ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. 1170 00001cf8 afbefffc sw -4(r29),r30; push fp 1171 00001cfc 001df020 add r30,r0,r29; fp = sp 1172 00001d00 afbffff8 sw -8(r29),r31; push ret addr 1173 00001d04 2fbd0010 subui r29,r29,#16; alloc local storage 1174 00001d08 afa20000 sw 0(r29),r2 1175 00001d0c afa30004 sw 4(r29),r3 1176 00001d10 8fdf0000 lw r31,(r30) 1177 00001d14 20020000 addi r2,r0,#0 1178 00001d18 23e1ffff addi r1,r31,#-1 1179 00001d1c 7021001e sleui r1,r1,#30 1180 00001d20 10200038 beqz r1,L103_LF2 1181 00001d24 54000000 nop; not filled. 1182 00001d28 53e10004 slli r1,r31,#0x4 1183 00001d2c 003f0820 add r1,r1,r31 1184 00001d30 50210002 slli r1,r1,#0x2 1185 00001d34 003f0822 sub r1,r1,r31 1186 00001d38 50210002 slli r1,r1,#0x2 1187 00001d3c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1188 00001d40 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1189 00001d44 00230820 add r1,r1,r3 1190 00001d48 8c210004 lw r1,4(r1) 1191 00001d4c 64210000 snei r1,r1,#0 1192 00001d50 10200008 beqz r1,L103_LF2 1193 00001d54 54000000 nop; not filled. 1194 00001d58 20020001 addi r2,r0,#1 1195 00001d5c L103_LF2: 1196 00001d5c 64410000 snei r1,r2,#0 1197 00001d60 10200070 beqz r1,L101_LF2 1198 00001d64 54000000 nop; not filled. 1199 00001d68 23bdfff0 addi r29,r29,#-16 1200 00001d6c 53e10004 slli r1,r31,#0x4 1201 00001d70 003f0820 add r1,r1,r31 1202 00001d74 50210002 slli r1,r1,#0x2 1203 00001d78 003f0822 sub r1,r1,r31 1204 00001d7c 50210002 slli r1,r1,#0x2 1205 00001d80 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1206 00001d84 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1207 00001d88 00230820 add r1,r1,r3 1208 00001d8c 8c220000 lw r2,(r1) 1209 00001d90 50410001 slli r1,r2,#0x1 1210 00001d94 00220820 add r1,r1,r2 1211 00001d98 50210003 slli r1,r1,#0x3 1212 00001d9c 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1213 00001da0 2463c0e0 addui r3,r3,(_fs_LF2)&0xffff 1214 00001da4 00230820 add r1,r1,r3 1215 00001da8 afbf0000 sw (r29),r31 1216 00001dac 8fc30004 lw r3,4(r30) 1217 00001db0 afa30004 sw 4(r29),r3 1218 00001db4 8fc30008 lw r3,8(r30) 1219 00001db8 afa30008 sw 8(r29),r3 1220 00001dbc 8c210008 lw r1,8(r1) 1221 00001dc0 4c200000 jalr r1 1222 00001dc4 54000000 nop; not filled. 1223 00001dc8 23bd0010 addi r29,r29,#16 1224 00001dcc 08000008 j L100_LF2 1225 00001dd0 54000000 nop; not filled. 1226 00001dd4 L101_LF2: 1227 00001dd4 2001ffff addi r1,r0,#-1 1228 00001dd8 L100_LF2: 1229 00001dd8 8fa20000 lw r2,0(r29) 1230 00001ddc 8fa30004 lw r3,4(r29) 1231 00001de0 8fdffff8 lw r31,-8(r30) 1232 00001de4 001ee820 add r29,r0,r30 1233 00001de8 8fdefffc lw r30,-4(r30) 1234 00001dec 4be00000 jr r31 1235 00001df0 54000000 nop 1236 00001df4 .endproc _FsWrite 1237 00001df4 .align 2 1238 00001df4 .proc _FsSeek 1239 00001df4 .global _FsSeek 1240 00001df4 _FsSeek: 1241 ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. 1242 00001df4 afbefffc sw -4(r29),r30; push fp 1243 00001df8 001df020 add r30,r0,r29; fp = sp 1244 00001dfc afbffff8 sw -8(r29),r31; push ret addr 1245 00001e00 2fbd0010 subui r29,r29,#16; alloc local storage 1246 00001e04 afa20000 sw 0(r29),r2 1247 00001e08 afa30004 sw 4(r29),r3 1248 00001e0c 8fdf0000 lw r31,(r30) 1249 00001e10 20020000 addi r2,r0,#0 1250 00001e14 23e1ffff addi r1,r31,#-1 1251 00001e18 7021001e sleui r1,r1,#30 1252 00001e1c 10200038 beqz r1,L112_LF2 1253 00001e20 54000000 nop; not filled. 1254 00001e24 53e10004 slli r1,r31,#0x4 1255 00001e28 003f0820 add r1,r1,r31 1256 00001e2c 50210002 slli r1,r1,#0x2 1257 00001e30 003f0822 sub r1,r1,r31 1258 00001e34 50210002 slli r1,r1,#0x2 1259 00001e38 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1260 00001e3c 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1261 00001e40 00230820 add r1,r1,r3 1262 00001e44 8c210004 lw r1,4(r1) 1263 00001e48 64210000 snei r1,r1,#0 1264 00001e4c 10200008 beqz r1,L112_LF2 1265 00001e50 54000000 nop; not filled. 1266 00001e54 20020001 addi r2,r0,#1 1267 00001e58 L112_LF2: 1268 00001e58 64410000 snei r1,r2,#0 1269 00001e5c 10200070 beqz r1,L110_LF2 1270 00001e60 54000000 nop; not filled. 1271 00001e64 23bdfff0 addi r29,r29,#-16 1272 00001e68 53e10004 slli r1,r31,#0x4 1273 00001e6c 003f0820 add r1,r1,r31 1274 00001e70 50210002 slli r1,r1,#0x2 1275 00001e74 003f0822 sub r1,r1,r31 1276 00001e78 50210002 slli r1,r1,#0x2 1277 00001e7c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1278 00001e80 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1279 00001e84 00230820 add r1,r1,r3 1280 00001e88 8c220000 lw r2,(r1) 1281 00001e8c 50410001 slli r1,r2,#0x1 1282 00001e90 00220820 add r1,r1,r2 1283 00001e94 50210003 slli r1,r1,#0x3 1284 00001e98 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1285 00001e9c 2463c0e0 addui r3,r3,(_fs_LF2)&0xffff 1286 00001ea0 00230820 add r1,r1,r3 1287 00001ea4 afbf0000 sw (r29),r31 1288 00001ea8 8fc30004 lw r3,4(r30) 1289 00001eac afa30004 sw 4(r29),r3 1290 00001eb0 8fc30008 lw r3,8(r30) 1291 00001eb4 afa30008 sw 8(r29),r3 1292 00001eb8 8c21000c lw r1,12(r1) 1293 00001ebc 4c200000 jalr r1 1294 00001ec0 54000000 nop; not filled. 1295 00001ec4 23bd0010 addi r29,r29,#16 1296 00001ec8 08000008 j L109_LF2 1297 00001ecc 54000000 nop; not filled. 1298 00001ed0 L110_LF2: 1299 00001ed0 2001ffff addi r1,r0,#-1 1300 00001ed4 L109_LF2: 1301 00001ed4 8fa20000 lw r2,0(r29) 1302 00001ed8 8fa30004 lw r3,4(r29) 1303 00001edc 8fdffff8 lw r31,-8(r30) 1304 00001ee0 001ee820 add r29,r0,r30 1305 00001ee4 8fdefffc lw r30,-4(r30) 1306 00001ee8 4be00000 jr r31 1307 00001eec 54000000 nop 1308 00001ef0 .endproc _FsSeek 1309 00001ef0 .align 2 1310 00001ef0 .proc _FsDelete 1311 00001ef0 .global _FsDelete 1312 00001ef0 _FsDelete: 1313 ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. 1314 00001ef0 afbefffc sw -4(r29),r30; push fp 1315 00001ef4 001df020 add r30,r0,r29; fp = sp 1316 00001ef8 afbffff8 sw -8(r29),r31; push ret addr 1317 00001efc 2fbd0010 subui r29,r29,#16; alloc local storage 1318 00001f00 afa20000 sw 0(r29),r2 1319 00001f04 afa30004 sw 4(r29),r3 1320 00001f08 8fc20000 lw r2,(r30) 1321 00001f0c 23bdfff0 addi r29,r29,#-16 1322 00001f10 afa20000 sw (r29),r2 1323 00001f14 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 1324 00001f18 2421c058 addui r1,r1,(LC1_LF2)&0xffff 1325 00001f1c afa10004 sw 4(r29),r1 1326 00001f20 20030004 addi r3,r0,#4 1327 00001f24 afa30008 sw 8(r29),r3 1328 00001f28 0c001bc4 jal _dstrncmp 1329 00001f2c 54000000 nop; not filled. 1330 00001f30 23bd0010 addi r29,r29,#16 1331 00001f34 64210000 snei r1,r1,#0 1332 00001f38 1420001c bnez r1,L118_LF2 1333 00001f3c 54000000 nop; not filled. 1334 00001f40 20420004 addi r2,r2,#4 1335 00001f44 23bdfff8 addi r29,r29,#-8 1336 00001f48 3c010000 lhi r1,((_fs_LF2+44)>>16)&0xffff 1337 00001f4c 2421c10c addui r1,r1,(_fs_LF2+44)&0xffff 1338 00001f50 08000010 j L120_LF2 1339 00001f54 54000000 nop; not filled. 1340 00001f58 L118_LF2: 1341 00001f58 23bdfff8 addi r29,r29,#-8 1342 00001f5c 3c010000 lhi r1,((_fs_LF2+20)>>16)&0xffff 1343 00001f60 2421c0f4 addui r1,r1,(_fs_LF2+20)&0xffff 1344 00001f64 L120_LF2: 1345 00001f64 afa20000 sw (r29),r2 1346 00001f68 8c210000 lw r1,(r1) 1347 00001f6c 4c200000 jalr r1 1348 00001f70 54000000 nop; not filled. 1349 00001f74 23bd0008 addi r29,r29,#8 1350 00001f78 8fa20000 lw r2,0(r29) 1351 00001f7c 8fa30004 lw r3,4(r29) 1352 00001f80 8fdffff8 lw r31,-8(r30) 1353 00001f84 001ee820 add r29,r0,r30 1354 00001f88 8fdefffc lw r30,-4(r30) 1355 00001f8c 4be00000 jr r31 1356 00001f90 54000000 nop 1357 00001f94 .endproc _FsDelete 1358 00001f94 .data 1359 0000c0aa .align 2 1360 0000c0ac LC4_LF2: 1361 0000c0ac 41747465 .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" 1361 0000c0b0 6d707469 1361 0000c0b4 6e672074 1361 0000c0b8 6f206f70 1361 0000c0bc 656e2066 1361 0000c0c0 696c6520 1361 0000c0c4 25732069 1361 0000c0c8 6e746f20 1361 0000c0cc 64657363 1361 0000c0d0 2025642c 1361 0000c0d4 206d6f64 1361 0000c0d8 65202564 1361 0000c0dc 2e0a00 1362 0000c0df .text 1363 00001f94 .align 2 1364 00001f94 .proc _FsUnixOpen 1365 00001f94 .global _FsUnixOpen 1366 00001f94 _FsUnixOpen: 1367 ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. 1368 00001f94 afbefffc sw -4(r29),r30; push fp 1369 00001f98 001df020 add r30,r0,r29; fp = sp 1370 00001f9c afbffff8 sw -8(r29),r31; push ret addr 1371 00001fa0 2fbd0020 subui r29,r29,#32; alloc local storage 1372 00001fa4 afa20000 sw 0(r29),r2 1373 00001fa8 afa30004 sw 4(r29),r3 1374 00001fac afa40008 sw 8(r29),r4 1375 00001fb0 afa5000c sw 12(r29),r5 1376 00001fb4 afa60010 sw 16(r29),r6 1377 00001fb8 8fc40000 lw r4,(r30) 1378 00001fbc 8fc30004 lw r3,4(r30) 1379 00001fc0 8fc50008 lw r5,8(r30) 1380 00001fc4 23bdfff8 addi r29,r29,#-8 1381 00001fc8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 1382 00001fcc 24420d78 addui r2,r2,(_debugstr)&0xffff 1383 00001fd0 afa20000 sw (r29),r2 1384 00001fd4 20060066 addi r6,r0,#102 1385 00001fd8 afa60004 sw 4(r29),r6 1386 00001fdc 0c001e54 jal _dindex 1387 00001fe0 54000000 nop; not filled. 1388 00001fe4 23bd0008 addi r29,r29,#8 1389 00001fe8 64210000 snei r1,r1,#0 1390 00001fec 1420002c bnez r1,L127_LF2 1391 00001ff0 54000000 nop; not filled. 1392 00001ff4 23bdfff8 addi r29,r29,#-8 1393 00001ff8 afa20000 sw (r29),r2 1394 00001ffc 2006002b addi r6,r0,#43 1395 00002000 afa60004 sw 4(r29),r6 1396 00002004 0c001e2c jal _dindex 1397 00002008 54000000 nop; not filled. 1398 0000200c 23bd0008 addi r29,r29,#8 1399 00002010 64210000 snei r1,r1,#0 1400 00002014 1020002c beqz r1,L126_LF2 1401 00002018 54000000 nop; not filled. 1402 0000201c L127_LF2: 1403 0000201c 23bdfff0 addi r29,r29,#-16 1404 00002020 3c060000 lhi r6,((LC4_LF2)>>16)&0xffff 1405 00002024 24c6c0ac addui r6,r6,(LC4_LF2)&0xffff 1406 00002028 afa60000 sw (r29),r6 1407 0000202c afa30004 sw 4(r29),r3 1408 00002030 afa40008 sw 8(r29),r4 1409 00002034 afa5000c sw 12(r29),r5 1410 00002038 0c009094 jal _printf 1411 0000203c 54000000 nop; not filled. 1412 00002040 23bd0010 addi r29,r29,#16 1413 00002044 L126_LF2: 1414 00002044 23bdfff8 addi r29,r29,#-8 1415 00002048 afa30000 sw (r29),r3 1416 0000204c afa50004 sw 4(r29),r5 1417 00002050 0c008fec jal _open 1418 00002054 54000000 nop; not filled. 1419 00002058 00011820 add r3,r0,r1 1420 0000205c 50810004 slli r1,r4,#0x4 1421 00002060 00240820 add r1,r1,r4 1422 00002064 50210002 slli r1,r1,#0x2 1423 00002068 00240822 sub r1,r1,r4 1424 0000206c 50210002 slli r1,r1,#0x2 1425 00002070 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 1426 00002074 24c6c110 addui r6,r6,(_openfiles_LF2)&0xffff 1427 00002078 00260820 add r1,r1,r6 1428 0000207c ac230108 sw 264(r1),r3 1429 00002080 23bd0008 addi r29,r29,#8 1430 00002084 68620000 slti r2,r3,#0 1431 00002088 00030820 add r1,r0,r3 1432 0000208c 14400008 bnez r2,L128_LF2 1433 00002090 54000000 nop; not filled. 1434 00002094 20010001 addi r1,r0,#1 1435 00002098 L128_LF2: 1436 00002098 8fa20000 lw r2,0(r29) 1437 0000209c 8fa30004 lw r3,4(r29) 1438 000020a0 8fa40008 lw r4,8(r29) 1439 000020a4 8fa5000c lw r5,12(r29) 1440 000020a8 8fa60010 lw r6,16(r29) 1441 000020ac 8fdffff8 lw r31,-8(r30) 1442 000020b0 001ee820 add r29,r0,r30 1443 000020b4 8fdefffc lw r30,-4(r30) 1444 000020b8 4be00000 jr r31 1445 000020bc 54000000 nop 1446 000020c0 .endproc _FsUnixOpen 1447 000020c0 .align 2 1448 000020c0 .proc _FsUnixRead 1449 000020c0 .global _FsUnixRead 1450 000020c0 _FsUnixRead: 1451 ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. 1452 000020c0 afbefffc sw -4(r29),r30; push fp 1453 000020c4 001df020 add r30,r0,r29; fp = sp 1454 000020c8 afbffff8 sw -8(r29),r31; push ret addr 1455 000020cc 2fbd0018 subui r29,r29,#24; alloc local storage 1456 000020d0 afa20000 sw 0(r29),r2 1457 000020d4 afa30004 sw 4(r29),r3 1458 000020d8 afa40008 sw 8(r29),r4 1459 000020dc afa5000c sw 12(r29),r5 1460 000020e0 8fc20000 lw r2,(r30) 1461 000020e4 8fc30004 lw r3,4(r30) 1462 000020e8 8fc40008 lw r4,8(r30) 1463 000020ec 23bdfff0 addi r29,r29,#-16 1464 000020f0 50410004 slli r1,r2,#0x4 1465 000020f4 00220820 add r1,r1,r2 1466 000020f8 50210002 slli r1,r1,#0x2 1467 000020fc 00220822 sub r1,r1,r2 1468 00002100 50210002 slli r1,r1,#0x2 1469 00002104 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1470 00002108 24a5c110 addui r5,r5,(_openfiles_LF2)&0xffff 1471 0000210c 00250820 add r1,r1,r5 1472 00002110 8c210108 lw r1,264(r1) 1473 00002114 afa10000 sw (r29),r1 1474 00002118 afa30004 sw 4(r29),r3 1475 0000211c afa40008 sw 8(r29),r4 1476 00002120 0c008f34 jal _read 1477 00002124 54000000 nop; not filled. 1478 00002128 23bd0010 addi r29,r29,#16 1479 0000212c 8fa20000 lw r2,0(r29) 1480 00002130 8fa30004 lw r3,4(r29) 1481 00002134 8fa40008 lw r4,8(r29) 1482 00002138 8fa5000c lw r5,12(r29) 1483 0000213c 8fdffff8 lw r31,-8(r30) 1484 00002140 001ee820 add r29,r0,r30 1485 00002144 8fdefffc lw r30,-4(r30) 1486 00002148 4be00000 jr r31 1487 0000214c 54000000 nop 1488 00002150 .endproc _FsUnixRead 1489 00002150 .align 2 1490 00002150 .proc _FsUnixWrite 1491 00002150 .global _FsUnixWrite 1492 00002150 _FsUnixWrite: 1493 ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. 1494 00002150 afbefffc sw -4(r29),r30; push fp 1495 00002154 001df020 add r30,r0,r29; fp = sp 1496 00002158 afbffff8 sw -8(r29),r31; push ret addr 1497 0000215c 2fbd0018 subui r29,r29,#24; alloc local storage 1498 00002160 afa20000 sw 0(r29),r2 1499 00002164 afa30004 sw 4(r29),r3 1500 00002168 afa40008 sw 8(r29),r4 1501 0000216c afa5000c sw 12(r29),r5 1502 00002170 8fc20000 lw r2,(r30) 1503 00002174 8fc30004 lw r3,4(r30) 1504 00002178 8fc40008 lw r4,8(r30) 1505 0000217c 23bdfff0 addi r29,r29,#-16 1506 00002180 50410004 slli r1,r2,#0x4 1507 00002184 00220820 add r1,r1,r2 1508 00002188 50210002 slli r1,r1,#0x2 1509 0000218c 00220822 sub r1,r1,r2 1510 00002190 50210002 slli r1,r1,#0x2 1511 00002194 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1512 00002198 24a5c110 addui r5,r5,(_openfiles_LF2)&0xffff 1513 0000219c 00250820 add r1,r1,r5 1514 000021a0 8c210108 lw r1,264(r1) 1515 000021a4 afa10000 sw (r29),r1 1516 000021a8 afa30004 sw 4(r29),r3 1517 000021ac afa40008 sw 8(r29),r4 1518 000021b0 0c008eb0 jal _write 1519 000021b4 54000000 nop; not filled. 1520 000021b8 23bd0010 addi r29,r29,#16 1521 000021bc 8fa20000 lw r2,0(r29) 1522 000021c0 8fa30004 lw r3,4(r29) 1523 000021c4 8fa40008 lw r4,8(r29) 1524 000021c8 8fa5000c lw r5,12(r29) 1525 000021cc 8fdffff8 lw r31,-8(r30) 1526 000021d0 001ee820 add r29,r0,r30 1527 000021d4 8fdefffc lw r30,-4(r30) 1528 000021d8 4be00000 jr r31 1529 000021dc 54000000 nop 1530 000021e0 .endproc _FsUnixWrite 1531 000021e0 .align 2 1532 000021e0 .proc _FsUnixSeek 1533 000021e0 .global _FsUnixSeek 1534 000021e0 _FsUnixSeek: 1535 ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. 1536 000021e0 afbefffc sw -4(r29),r30; push fp 1537 000021e4 001df020 add r30,r0,r29; fp = sp 1538 000021e8 afbffff8 sw -8(r29),r31; push ret addr 1539 000021ec 2fbd0018 subui r29,r29,#24; alloc local storage 1540 000021f0 afa20000 sw 0(r29),r2 1541 000021f4 afa30004 sw 4(r29),r3 1542 000021f8 afa40008 sw 8(r29),r4 1543 000021fc afa5000c sw 12(r29),r5 1544 00002200 8fc20000 lw r2,(r30) 1545 00002204 8fc30004 lw r3,4(r30) 1546 00002208 8fc40008 lw r4,8(r30) 1547 0000220c 23bdfff0 addi r29,r29,#-16 1548 00002210 50410004 slli r1,r2,#0x4 1549 00002214 00220820 add r1,r1,r2 1550 00002218 50210002 slli r1,r1,#0x2 1551 0000221c 00220822 sub r1,r1,r2 1552 00002220 50210002 slli r1,r1,#0x2 1553 00002224 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1554 00002228 24a5c110 addui r5,r5,(_openfiles_LF2)&0xffff 1555 0000222c 00250820 add r1,r1,r5 1556 00002230 8c210108 lw r1,264(r1) 1557 00002234 afa10000 sw (r29),r1 1558 00002238 afa30004 sw 4(r29),r3 1559 0000223c afa40008 sw 8(r29),r4 1560 00002240 0c008e2c jal _lseek 1561 00002244 54000000 nop; not filled. 1562 00002248 23bd0010 addi r29,r29,#16 1563 0000224c 8fa20000 lw r2,0(r29) 1564 00002250 8fa30004 lw r3,4(r29) 1565 00002254 8fa40008 lw r4,8(r29) 1566 00002258 8fa5000c lw r5,12(r29) 1567 0000225c 8fdffff8 lw r31,-8(r30) 1568 00002260 001ee820 add r29,r0,r30 1569 00002264 8fdefffc lw r30,-4(r30) 1570 00002268 4be00000 jr r31 1571 0000226c 54000000 nop 1572 00002270 .endproc _FsUnixSeek 1573 00002270 .align 2 1574 00002270 .proc _FsUnixClose 1575 00002270 .global _FsUnixClose 1576 00002270 _FsUnixClose: 1577 ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. 1578 00002270 afbefffc sw -4(r29),r30; push fp 1579 00002274 001df020 add r30,r0,r29; fp = sp 1580 00002278 afbffff8 sw -8(r29),r31; push ret addr 1581 0000227c 2fbd0010 subui r29,r29,#16; alloc local storage 1582 00002280 afa20000 sw 0(r29),r2 1583 00002284 afa30004 sw 4(r29),r3 1584 00002288 8fc20000 lw r2,(r30) 1585 0000228c 23bdfff8 addi r29,r29,#-8 1586 00002290 50410004 slli r1,r2,#0x4 1587 00002294 00220820 add r1,r1,r2 1588 00002298 50210002 slli r1,r1,#0x2 1589 0000229c 00220822 sub r1,r1,r2 1590 000022a0 50210002 slli r1,r1,#0x2 1591 000022a4 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1592 000022a8 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1593 000022ac 00230820 add r1,r1,r3 1594 000022b0 8c210108 lw r1,264(r1) 1595 000022b4 afa10000 sw (r29),r1 1596 000022b8 0c008d90 jal _close 1597 000022bc 54000000 nop; not filled. 1598 000022c0 23bd0008 addi r29,r29,#8 1599 000022c4 8fa20000 lw r2,0(r29) 1600 000022c8 8fa30004 lw r3,4(r29) 1601 000022cc 8fdffff8 lw r31,-8(r30) 1602 000022d0 001ee820 add r29,r0,r30 1603 000022d4 8fdefffc lw r30,-4(r30) 1604 000022d8 4be00000 jr r31 1605 000022dc 54000000 nop 1606 000022e0 .endproc _FsUnixClose 1607 000022e0 .align 2 1608 000022e0 .proc _FsUnixDelete 1609 000022e0 .global _FsUnixDelete 1610 000022e0 _FsUnixDelete: 1611 ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. 1612 000022e0 afbefffc sw -4(r29),r30; push fp 1613 000022e4 001df020 add r30,r0,r29; fp = sp 1614 000022e8 afbffff8 sw -8(r29),r31; push ret addr 1615 000022ec 2fbd0008 subui r29,r29,#8; alloc local storage 1616 000022f0 2001ffff addi r1,r0,#-1 1617 000022f4 8fdffff8 lw r31,-8(r30) 1618 000022f8 001ee820 add r29,r0,r30 1619 000022fc 8fdefffc lw r30,-4(r30) 1620 00002300 4be00000 jr r31 1621 00002304 54000000 nop 1622 00002308 .endproc _FsUnixDelete 1623 00002308 .align 2 1624 00002308 .proc _FsDlxIo 1625 00002308 .global _FsDlxIo 1626 00002308 _FsDlxIo: 1627 ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. 1628 00002308 afbefffc sw -4(r29),r30; push fp 1629 0000230c 001df020 add r30,r0,r29; fp = sp 1630 00002310 afbffff8 sw -8(r29),r31; push ret addr 1631 00002314 2fbd0008 subui r29,r29,#8; alloc local storage 1632 00002318 20010001 addi r1,r0,#1 1633 0000231c 8fdffff8 lw r31,-8(r30) 1634 00002320 001ee820 add r29,r0,r30 1635 00002324 8fdefffc lw r30,-4(r30) 1636 00002328 4be00000 jr r31 1637 0000232c 54000000 nop 1638 00002330 .endproc _FsDlxIo 1639 00002330 .align 2 1640 00002330 .proc _FsDlxRead 1641 00002330 .global _FsDlxRead 1642 00002330 _FsDlxRead: 1643 ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. 1644 00002330 afbefffc sw -4(r29),r30; push fp 1645 00002334 001df020 add r30,r0,r29; fp = sp 1646 00002338 afbffff8 sw -8(r29),r31; push ret addr 1647 0000233c 2fbd0008 subui r29,r29,#8; alloc local storage 1648 00002340 20010001 addi r1,r0,#1 1649 00002344 8fdffff8 lw r31,-8(r30) 1650 00002348 001ee820 add r29,r0,r30 1651 0000234c 8fdefffc lw r30,-4(r30) 1652 00002350 4be00000 jr r31 1653 00002354 54000000 nop 1654 00002358 .endproc _FsDlxRead 1655 00002358 .align 2 1656 00002358 .proc _FsDlxWrite 1657 00002358 .global _FsDlxWrite 1658 00002358 _FsDlxWrite: 1659 ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. 1660 00002358 afbefffc sw -4(r29),r30; push fp 1661 0000235c 001df020 add r30,r0,r29; fp = sp 1662 00002360 afbffff8 sw -8(r29),r31; push ret addr 1663 00002364 2fbd0008 subui r29,r29,#8; alloc local storage 1664 00002368 20010001 addi r1,r0,#1 1665 0000236c 8fdffff8 lw r31,-8(r30) 1666 00002370 001ee820 add r29,r0,r30 1667 00002374 8fdefffc lw r30,-4(r30) 1668 00002378 4be00000 jr r31 1669 0000237c 54000000 nop 1670 00002380 .endproc _FsDlxWrite 1671 00002380 .align 2 1672 00002380 .proc _FsDlxOpen 1673 00002380 .global _FsDlxOpen 1674 00002380 _FsDlxOpen: 1675 ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. 1676 00002380 afbefffc sw -4(r29),r30; push fp 1677 00002384 001df020 add r30,r0,r29; fp = sp 1678 00002388 afbffff8 sw -8(r29),r31; push ret addr 1679 0000238c 2fbd0010 subui r29,r29,#16; alloc local storage 1680 00002390 afa20000 sw 0(r29),r2 1681 00002394 8fc10000 lw r1,(r30) 1682 00002398 50220004 slli r2,r1,#0x4 1683 0000239c 00411020 add r2,r2,r1 1684 000023a0 50420002 slli r2,r2,#0x2 1685 000023a4 00410822 sub r1,r2,r1 1686 000023a8 50210002 slli r1,r1,#0x2 1687 000023ac 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1688 000023b0 27ffc110 addui r31,r31,(_openfiles_LF2)&0xffff 1689 000023b4 003f0820 add r1,r1,r31 1690 000023b8 201f0000 addi r31,r0,#0 1691 000023bc ac3f0108 sw 264(r1),r31 1692 000023c0 20010001 addi r1,r0,#1 1693 000023c4 8fa20000 lw r2,0(r29) 1694 000023c8 8fdffff8 lw r31,-8(r30) 1695 000023cc 001ee820 add r29,r0,r30 1696 000023d0 8fdefffc lw r30,-4(r30) 1697 000023d4 4be00000 jr r31 1698 000023d8 54000000 nop 1699 000023dc .endproc _FsDlxOpen 1700 000023dc .align 2 1701 000023dc .proc _FsDlxSeek 1702 000023dc .global _FsDlxSeek 1703 000023dc _FsDlxSeek: 1704 ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. 1705 000023dc afbefffc sw -4(r29),r30; push fp 1706 000023e0 001df020 add r30,r0,r29; fp = sp 1707 000023e4 afbffff8 sw -8(r29),r31; push ret addr 1708 000023e8 2fbd0010 subui r29,r29,#16; alloc local storage 1709 000023ec afa20000 sw 0(r29),r2 1710 000023f0 8fc10000 lw r1,(r30) 1711 000023f4 50220004 slli r2,r1,#0x4 1712 000023f8 00411020 add r2,r2,r1 1713 000023fc 50420002 slli r2,r2,#0x2 1714 00002400 00410822 sub r1,r2,r1 1715 00002404 50210002 slli r1,r1,#0x2 1716 00002408 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1717 0000240c 27ffc110 addui r31,r31,(_openfiles_LF2)&0xffff 1718 00002410 003f0820 add r1,r1,r31 1719 00002414 8c210108 lw r1,264(r1) 1720 00002418 8fa20000 lw r2,0(r29) 1721 0000241c 8fdffff8 lw r31,-8(r30) 1722 00002420 001ee820 add r29,r0,r30 1723 00002424 8fdefffc lw r30,-4(r30) 1724 00002428 4be00000 jr r31 1725 0000242c 54000000 nop 1726 00002430 .endproc _FsDlxSeek 1727 00002430 .align 2 1728 00002430 .proc _FsDlxClose 1729 00002430 .global _FsDlxClose 1730 00002430 _FsDlxClose: 1731 ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. 1732 00002430 afbefffc sw -4(r29),r30; push fp 1733 00002434 001df020 add r30,r0,r29; fp = sp 1734 00002438 afbffff8 sw -8(r29),r31; push ret addr 1735 0000243c 2fbd0008 subui r29,r29,#8; alloc local storage 1736 00002440 20010001 addi r1,r0,#1 1737 00002444 8fdffff8 lw r31,-8(r30) 1738 00002448 001ee820 add r29,r0,r30 1739 0000244c 8fdefffc lw r30,-4(r30) 1740 00002450 4be00000 jr r31 1741 00002454 54000000 nop 1742 00002458 .endproc _FsDlxClose 1743 00002458 .align 2 1744 00002458 .proc _FsDlxDelete 1745 00002458 .global _FsDlxDelete 1746 00002458 _FsDlxDelete: 1747 ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. 1748 00002458 afbefffc sw -4(r29),r30; push fp 1749 0000245c 001df020 add r30,r0,r29; fp = sp 1750 00002460 afbffff8 sw -8(r29),r31; push ret addr 1751 00002464 2fbd0008 subui r29,r29,#8; alloc local storage 1752 00002468 20010001 addi r1,r0,#1 1753 0000246c 8fdffff8 lw r31,-8(r30) 1754 00002470 001ee820 add r29,r0,r30 1755 00002474 8fdefffc lw r30,-4(r30) 1756 00002478 4be00000 jr r31 1757 0000247c 54000000 nop 1758 00002480 .endproc _FsDlxDelete 1759 00002480 .align 2 1760 00002480 .proc _FsModuleInit 1761 00002480 .global _FsModuleInit 1762 00002480 _FsModuleInit: 1763 ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. 1764 00002480 afbefffc sw -4(r29),r30; push fp 1765 00002484 001df020 add r30,r0,r29; fp = sp 1766 00002488 afbffff8 sw -8(r29),r31; push ret addr 1767 0000248c 2fbd0010 subui r29,r29,#16; alloc local storage 1768 00002490 afa20000 sw 0(r29),r2 1769 00002494 afa30004 sw 4(r29),r3 1770 00002498 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1771 0000249c 27ffc110 addui r31,r31,(_openfiles_LF2)&0xffff 1772 000024a0 23e22074 addi r2,r31,#8308 1773 000024a4 L182_LF2: 1774 000024a4 20030000 addi r3,r0,#0 1775 000024a8 afe30004 sw 4(r31),r3 1776 000024ac 23ff010c addi r31,r31,#268 1777 000024b0 03e2082c sle r1,r31,r2 1778 000024b4 1420ffec bnez r1,L182_LF2 1779 000024b8 54000000 nop; not filled. 1780 000024bc 3c010000 lhi r1,((_fs_LF2)>>16)&0xffff 1781 000024c0 2421c0e0 addui r1,r1,(_fs_LF2)&0xffff 1782 000024c4 3c030000 lhi r3,((_FsUnixOpen)>>16)&0xffff 1783 000024c8 24631f94 addui r3,r3,(_FsUnixOpen)&0xffff 1784 000024cc ac230000 sw (r1),r3 1785 000024d0 3c030000 lhi r3,((_FsUnixClose)>>16)&0xffff 1786 000024d4 24632270 addui r3,r3,(_FsUnixClose)&0xffff 1787 000024d8 ac230010 sw 16(r1),r3 1788 000024dc 3c030000 lhi r3,((_FsUnixRead)>>16)&0xffff 1789 000024e0 246320c0 addui r3,r3,(_FsUnixRead)&0xffff 1790 000024e4 ac230004 sw 4(r1),r3 1791 000024e8 3c030000 lhi r3,((_FsUnixWrite)>>16)&0xffff 1792 000024ec 24632150 addui r3,r3,(_FsUnixWrite)&0xffff 1793 000024f0 ac230008 sw 8(r1),r3 1794 000024f4 3c030000 lhi r3,((_FsUnixSeek)>>16)&0xffff 1795 000024f8 246321e0 addui r3,r3,(_FsUnixSeek)&0xffff 1796 000024fc ac23000c sw 12(r1),r3 1797 00002500 3c030000 lhi r3,((_FsUnixDelete)>>16)&0xffff 1798 00002504 246322e0 addui r3,r3,(_FsUnixDelete)&0xffff 1799 00002508 ac230014 sw 20(r1),r3 1800 0000250c 3c030000 lhi r3,((_FsDlxOpen)>>16)&0xffff 1801 00002510 24632380 addui r3,r3,(_FsDlxOpen)&0xffff 1802 00002514 ac230018 sw 24(r1),r3 1803 00002518 3c030000 lhi r3,((_FsDlxClose)>>16)&0xffff 1804 0000251c 24632430 addui r3,r3,(_FsDlxClose)&0xffff 1805 00002520 ac230028 sw 40(r1),r3 1806 00002524 3c030000 lhi r3,((_FsDlxRead)>>16)&0xffff 1807 00002528 24632330 addui r3,r3,(_FsDlxRead)&0xffff 1808 0000252c ac23001c sw 28(r1),r3 1809 00002530 3c030000 lhi r3,((_FsDlxWrite)>>16)&0xffff 1810 00002534 24632358 addui r3,r3,(_FsDlxWrite)&0xffff 1811 00002538 ac230020 sw 32(r1),r3 1812 0000253c 3c030000 lhi r3,((_FsDlxSeek)>>16)&0xffff 1813 00002540 246323dc addui r3,r3,(_FsDlxSeek)&0xffff 1814 00002544 ac230024 sw 36(r1),r3 1815 00002548 3c030000 lhi r3,((_FsDlxDelete)>>16)&0xffff 1816 0000254c 24632458 addui r3,r3,(_FsDlxDelete)&0xffff 1817 00002550 ac23002c sw 44(r1),r3 1818 00002554 8fa20000 lw r2,0(r29) 1819 00002558 8fa30004 lw r3,4(r29) 1820 0000255c 8fdffff8 lw r31,-8(r30) 1821 00002560 001ee820 add r29,r0,r30 1822 00002564 8fdefffc lw r30,-4(r30) 1823 00002568 4be00000 jr r31 1824 0000256c 54000000 nop 1825 00002570 .endproc _FsModuleInit 1826 00002570 .data 1827 0000c0df .align 2 1828 0000c0e0 _fs_LF2: 1829 0000c0e0 .space 48 1830 0000c110 .align 2 1831 0000c110 _openfiles_LF2: 1832 0000c110 .space 8576 1833 ; Compiled by GCC 1835 0000e290 .align 2 1836 0000e290 _rcsid_LF3: 1837 0000e290 3a206d65 .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 1837 0000e294 6d6f7279 1837 0000e298 2e632c76 1837 0000e29c 20312e31 1837 0000e2a0 20323030 1837 0000e2a4 302f3039 1837 0000e2a8 2f323020 1837 0000e2ac 30313a35 1837 0000e2b0 303a3139 1837 0000e2b4 20656c6d 1837 0000e2b8 20457870 1837 0000e2bc 20656c6d 1837 0000e2c0 20303030 1838 0000e2c4 .text 1839 00002570 .align 2 1840 00002570 .proc _isspace 1841 00002570 .global _isspace 1842 00002570 _isspace: 1843 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 1844 00002570 afbefffc sw -4(r29),r30; push fp 1845 00002574 001df020 add r30,r0,r29; fp = sp 1846 00002578 afbffff8 sw -8(r29),r31; push ret addr 1847 0000257c 2fbd0010 subui r29,r29,#16; alloc local storage 1848 00002580 afa20000 sw 0(r29),r2 1849 00002584 83c20003 lb r2,3(r30) 1850 00002588 201f0000 addi r31,r0,#0 1851 0000258c 304100ff andi r1,r2,#0x00ff 1852 00002590 60210020 seqi r1,r1,#32 1853 00002594 14200018 bnez r1,L6_LF3 1854 00002598 54000000 nop; not filled. 1855 0000259c 2041fff7 addi r1,r2,#-9 1856 000025a0 302100ff andi r1,r1,#0x00ff 1857 000025a4 70210001 sleui r1,r1,#1 1858 000025a8 10200008 beqz r1,L5_LF3 1859 000025ac 54000000 nop; not filled. 1860 000025b0 L6_LF3: 1861 000025b0 201f0001 addi r31,r0,#1 1862 000025b4 L5_LF3: 1863 000025b4 001f0820 add r1,r0,r31 1864 000025b8 8fa20000 lw r2,0(r29) 1865 000025bc 8fdffff8 lw r31,-8(r30) 1866 000025c0 001ee820 add r29,r0,r30 1867 000025c4 8fdefffc lw r30,-4(r30) 1868 000025c8 4be00000 jr r31 1869 000025cc 54000000 nop 1870 000025d0 .endproc _isspace 1871 000025d0 .align 2 1872 000025d0 .proc _isxdigit 1873 000025d0 .global _isxdigit 1874 000025d0 _isxdigit: 1875 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 1876 000025d0 afbefffc sw -4(r29),r30; push fp 1877 000025d4 001df020 add r30,r0,r29; fp = sp 1878 000025d8 afbffff8 sw -8(r29),r31; push ret addr 1879 000025dc 2fbd0010 subui r29,r29,#16; alloc local storage 1880 000025e0 afa20000 sw 0(r29),r2 1881 000025e4 83df0003 lb r31,3(r30) 1882 000025e8 20020000 addi r2,r0,#0 1883 000025ec 23e1ffd0 addi r1,r31,#-48 1884 000025f0 302100ff andi r1,r1,#0x00ff 1885 000025f4 70210009 sleui r1,r1,#9 1886 000025f8 14200028 bnez r1,L12_LF3 1887 000025fc 54000000 nop; not filled. 1888 00002600 23e1ff9f addi r1,r31,#-97 1889 00002604 302100ff andi r1,r1,#0x00ff 1890 00002608 70210005 sleui r1,r1,#5 1891 0000260c 14200014 bnez r1,L12_LF3 1892 00002610 54000000 nop; not filled. 1893 00002614 33e100ff andi r1,r31,#0x00ff 1894 00002618 64210041 snei r1,r1,#65 1895 0000261c 14200008 bnez r1,L11_LF3 1896 00002620 54000000 nop; not filled. 1897 00002624 L12_LF3: 1898 00002624 20020001 addi r2,r0,#1 1899 00002628 L11_LF3: 1900 00002628 00020820 add r1,r0,r2 1901 0000262c 8fa20000 lw r2,0(r29) 1902 00002630 8fdffff8 lw r31,-8(r30) 1903 00002634 001ee820 add r29,r0,r30 1904 00002638 8fdefffc lw r30,-4(r30) 1905 0000263c 4be00000 jr r31 1906 00002640 54000000 nop 1907 00002644 .endproc _isxdigit 1908 00002644 .align 2 1909 00002644 .proc _DisableIntrs 1910 00002644 .global _DisableIntrs 1911 00002644 _DisableIntrs: 1912 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 1913 00002644 afbefffc sw -4(r29),r30; push fp 1914 00002648 001df020 add r30,r0,r29; fp = sp 1915 0000264c afbffff8 sw -8(r29),r31; push ret addr 1916 00002650 2fbd0010 subui r29,r29,#16; alloc local storage 1917 00002654 afa20000 sw 0(r29),r2 1918 00002658 23bdfff8 addi r29,r29,#-8 1919 0000265c 2002000f addi r2,r0,#15 1920 00002660 afa20000 sw (r29),r2 1921 00002664 0fffec20 jal _SetIntrs 1922 00002668 54000000 nop; not filled. 1923 0000266c 23bd0008 addi r29,r29,#8 1924 00002670 8fa20000 lw r2,0(r29) 1925 00002674 8fdffff8 lw r31,-8(r30) 1926 00002678 001ee820 add r29,r0,r30 1927 0000267c 8fdefffc lw r30,-4(r30) 1928 00002680 4be00000 jr r31 1929 00002684 54000000 nop 1930 00002688 .endproc _DisableIntrs 1931 00002688 .align 2 1932 00002688 .proc _EnableIntrs 1933 00002688 .global _EnableIntrs 1934 00002688 _EnableIntrs: 1935 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 1936 00002688 afbefffc sw -4(r29),r30; push fp 1937 0000268c 001df020 add r30,r0,r29; fp = sp 1938 00002690 afbffff8 sw -8(r29),r31; push ret addr 1939 00002694 2fbd0010 subui r29,r29,#16; alloc local storage 1940 00002698 afa20000 sw 0(r29),r2 1941 0000269c 23bdfff8 addi r29,r29,#-8 1942 000026a0 20020000 addi r2,r0,#0 1943 000026a4 afa20000 sw (r29),r2 1944 000026a8 0fffebdc jal _SetIntrs 1945 000026ac 54000000 nop; not filled. 1946 000026b0 23bd0008 addi r29,r29,#8 1947 000026b4 8fa20000 lw r2,0(r29) 1948 000026b8 8fdffff8 lw r31,-8(r30) 1949 000026bc 001ee820 add r29,r0,r30 1950 000026c0 8fdefffc lw r30,-4(r30) 1951 000026c4 4be00000 jr r31 1952 000026c8 54000000 nop 1953 000026cc .endproc _EnableIntrs 1954 000026cc .align 2 1955 000026cc .proc _RestoreIntrs 1956 000026cc .global _RestoreIntrs 1957 000026cc _RestoreIntrs: 1958 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 1959 000026cc afbefffc sw -4(r29),r30; push fp 1960 000026d0 001df020 add r30,r0,r29; fp = sp 1961 000026d4 afbffff8 sw -8(r29),r31; push ret addr 1962 000026d8 2fbd0010 subui r29,r29,#16; alloc local storage 1963 000026dc afa20000 sw 0(r29),r2 1964 000026e0 23bdfff8 addi r29,r29,#-8 1965 000026e4 8fc20000 lw r2,(r30) 1966 000026e8 afa20000 sw (r29),r2 1967 000026ec 0fffeb98 jal _SetIntrs 1968 000026f0 54000000 nop; not filled. 1969 000026f4 23bd0008 addi r29,r29,#8 1970 000026f8 8fa20000 lw r2,0(r29) 1971 000026fc 8fdffff8 lw r31,-8(r30) 1972 00002700 001ee820 add r29,r0,r30 1973 00002704 8fdefffc lw r30,-4(r30) 1974 00002708 4be00000 jr r31 1975 0000270c 54000000 nop 1976 00002710 .endproc _RestoreIntrs 1977 00002710 .align 2 1978 00002710 .proc _QueueLinkInit 1979 00002710 .global _QueueLinkInit 1980 00002710 _QueueLinkInit: 1981 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 1982 00002710 afbefffc sw -4(r29),r30; push fp 1983 00002714 001df020 add r30,r0,r29; fp = sp 1984 00002718 afbffff8 sw -8(r29),r31; push ret addr 1985 0000271c 2fbd0010 subui r29,r29,#16; alloc local storage 1986 00002720 afa20000 sw 0(r29),r2 1987 00002724 8fc10000 lw r1,(r30) 1988 00002728 8fc20004 lw r2,4(r30) 1989 0000272c 201f0000 addi r31,r0,#0 1990 00002730 ac3f0000 sw (r1),r31 1991 00002734 ac22000c sw 12(r1),r2 1992 00002738 8fa20000 lw r2,0(r29) 1993 0000273c 8fdffff8 lw r31,-8(r30) 1994 00002740 001ee820 add r29,r0,r30 1995 00002744 8fdefffc lw r30,-4(r30) 1996 00002748 4be00000 jr r31 1997 0000274c 54000000 nop 1998 00002750 .endproc _QueueLinkInit 1999 00002750 .align 2 2000 00002750 .proc _QueueNext 2001 00002750 .global _QueueNext 2002 00002750 _QueueNext: 2003 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 2004 00002750 afbefffc sw -4(r29),r30; push fp 2005 00002754 001df020 add r30,r0,r29; fp = sp 2006 00002758 afbffff8 sw -8(r29),r31; push ret addr 2007 0000275c 2fbd0008 subui r29,r29,#8; alloc local storage 2008 00002760 8fc10000 lw r1,(r30) 2009 00002764 8c210000 lw r1,(r1) 2010 00002768 8fdffff8 lw r31,-8(r30) 2011 0000276c 001ee820 add r29,r0,r30 2012 00002770 8fdefffc lw r30,-4(r30) 2013 00002774 4be00000 jr r31 2014 00002778 54000000 nop 2015 0000277c .endproc _QueueNext 2016 0000277c .align 2 2017 0000277c .proc _QueuePrev 2018 0000277c .global _QueuePrev 2019 0000277c _QueuePrev: 2020 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 2021 0000277c afbefffc sw -4(r29),r30; push fp 2022 00002780 001df020 add r30,r0,r29; fp = sp 2023 00002784 afbffff8 sw -8(r29),r31; push ret addr 2024 00002788 2fbd0008 subui r29,r29,#8; alloc local storage 2025 0000278c 8fc10000 lw r1,(r30) 2026 00002790 8c210004 lw r1,4(r1) 2027 00002794 8fdffff8 lw r31,-8(r30) 2028 00002798 001ee820 add r29,r0,r30 2029 0000279c 8fdefffc lw r30,-4(r30) 2030 000027a0 4be00000 jr r31 2031 000027a4 54000000 nop 2032 000027a8 .endproc _QueuePrev 2033 000027a8 .align 2 2034 000027a8 .proc _QueueFirst 2035 000027a8 .global _QueueFirst 2036 000027a8 _QueueFirst: 2037 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 2038 000027a8 afbefffc sw -4(r29),r30; push fp 2039 000027ac 001df020 add r30,r0,r29; fp = sp 2040 000027b0 afbffff8 sw -8(r29),r31; push ret addr 2041 000027b4 2fbd0008 subui r29,r29,#8; alloc local storage 2042 000027b8 8fc10000 lw r1,(r30) 2043 000027bc 8c210000 lw r1,(r1) 2044 000027c0 8fdffff8 lw r31,-8(r30) 2045 000027c4 001ee820 add r29,r0,r30 2046 000027c8 8fdefffc lw r30,-4(r30) 2047 000027cc 4be00000 jr r31 2048 000027d0 54000000 nop 2049 000027d4 .endproc _QueueFirst 2050 000027d4 .align 2 2051 000027d4 .proc _QueueLast 2052 000027d4 .global _QueueLast 2053 000027d4 _QueueLast: 2054 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 2055 000027d4 afbefffc sw -4(r29),r30; push fp 2056 000027d8 001df020 add r30,r0,r29; fp = sp 2057 000027dc afbffff8 sw -8(r29),r31; push ret addr 2058 000027e0 2fbd0008 subui r29,r29,#8; alloc local storage 2059 000027e4 8fc10000 lw r1,(r30) 2060 000027e8 8c210004 lw r1,4(r1) 2061 000027ec 8fdffff8 lw r31,-8(r30) 2062 000027f0 001ee820 add r29,r0,r30 2063 000027f4 8fdefffc lw r30,-4(r30) 2064 000027f8 4be00000 jr r31 2065 000027fc 54000000 nop 2066 00002800 .endproc _QueueLast 2067 00002800 .align 2 2068 00002800 .proc _QueueInsertAfter 2069 00002800 .global _QueueInsertAfter 2070 00002800 _QueueInsertAfter: 2071 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 2072 00002800 afbefffc sw -4(r29),r30; push fp 2073 00002804 001df020 add r30,r0,r29; fp = sp 2074 00002808 afbffff8 sw -8(r29),r31; push ret addr 2075 0000280c 2fbd0010 subui r29,r29,#16; alloc local storage 2076 00002810 afa20000 sw 0(r29),r2 2077 00002814 afa30004 sw 4(r29),r3 2078 00002818 8fc30000 lw r3,(r30) 2079 0000281c 8fc20004 lw r2,4(r30) 2080 00002820 8fc10008 lw r1,8(r30) 2081 00002824 ac230008 sw 8(r1),r3 2082 00002828 ac220004 sw 4(r1),r2 2083 0000282c 8c5f0000 lw r31,(r2) 2084 00002830 ac3f0000 sw (r1),r31 2085 00002834 ac410000 sw (r2),r1 2086 00002838 8c220000 lw r2,(r1) 2087 0000283c ac410004 sw 4(r2),r1 2088 00002840 8c610008 lw r1,8(r3) 2089 00002844 20210001 addi r1,r1,#1 2090 00002848 ac610008 sw 8(r3),r1 2091 0000284c 8fa20000 lw r2,0(r29) 2092 00002850 8fa30004 lw r3,4(r29) 2093 00002854 8fdffff8 lw r31,-8(r30) 2094 00002858 001ee820 add r29,r0,r30 2095 0000285c 8fdefffc lw r30,-4(r30) 2096 00002860 4be00000 jr r31 2097 00002864 54000000 nop 2098 00002868 .endproc _QueueInsertAfter 2099 00002868 .align 2 2100 00002868 .proc _QueueInsertFirst 2101 00002868 .global _QueueInsertFirst 2102 00002868 _QueueInsertFirst: 2103 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 2104 00002868 afbefffc sw -4(r29),r30; push fp 2105 0000286c 001df020 add r30,r0,r29; fp = sp 2106 00002870 afbffff8 sw -8(r29),r31; push ret addr 2107 00002874 2fbd0010 subui r29,r29,#16; alloc local storage 2108 00002878 afa20000 sw 0(r29),r2 2109 0000287c afa30004 sw 4(r29),r3 2110 00002880 8fc30000 lw r3,(r30) 2111 00002884 8fc10004 lw r1,4(r30) 2112 00002888 ac230008 sw 8(r1),r3 2113 0000288c ac230004 sw 4(r1),r3 2114 00002890 8c7f0000 lw r31,(r3) 2115 00002894 ac3f0000 sw (r1),r31 2116 00002898 ac610000 sw (r3),r1 2117 0000289c 8c220000 lw r2,(r1) 2118 000028a0 ac410004 sw 4(r2),r1 2119 000028a4 8c610008 lw r1,8(r3) 2120 000028a8 20210001 addi r1,r1,#1 2121 000028ac ac610008 sw 8(r3),r1 2122 000028b0 8fa20000 lw r2,0(r29) 2123 000028b4 8fa30004 lw r3,4(r29) 2124 000028b8 8fdffff8 lw r31,-8(r30) 2125 000028bc 001ee820 add r29,r0,r30 2126 000028c0 8fdefffc lw r30,-4(r30) 2127 000028c4 4be00000 jr r31 2128 000028c8 54000000 nop 2129 000028cc .endproc _QueueInsertFirst 2130 000028cc .align 2 2131 000028cc .proc _QueueInsertLast 2132 000028cc .global _QueueInsertLast 2133 000028cc _QueueInsertLast: 2134 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 2135 000028cc afbefffc sw -4(r29),r30; push fp 2136 000028d0 001df020 add r30,r0,r29; fp = sp 2137 000028d4 afbffff8 sw -8(r29),r31; push ret addr 2138 000028d8 2fbd0010 subui r29,r29,#16; alloc local storage 2139 000028dc afa20000 sw 0(r29),r2 2140 000028e0 afa30004 sw 4(r29),r3 2141 000028e4 8fc30000 lw r3,(r30) 2142 000028e8 8fc10004 lw r1,4(r30) 2143 000028ec 8c620004 lw r2,4(r3) 2144 000028f0 ac230008 sw 8(r1),r3 2145 000028f4 ac220004 sw 4(r1),r2 2146 000028f8 8c5f0000 lw r31,(r2) 2147 000028fc ac3f0000 sw (r1),r31 2148 00002900 ac410000 sw (r2),r1 2149 00002904 8c220000 lw r2,(r1) 2150 00002908 ac410004 sw 4(r2),r1 2151 0000290c 8c610008 lw r1,8(r3) 2152 00002910 20210001 addi r1,r1,#1 2153 00002914 ac610008 sw 8(r3),r1 2154 00002918 8fa20000 lw r2,0(r29) 2155 0000291c 8fa30004 lw r3,4(r29) 2156 00002920 8fdffff8 lw r31,-8(r30) 2157 00002924 001ee820 add r29,r0,r30 2158 00002928 8fdefffc lw r30,-4(r30) 2159 0000292c 4be00000 jr r31 2160 00002930 54000000 nop 2161 00002934 .endproc _QueueInsertLast 2162 00002934 .align 2 2163 00002934 .proc _QueueRemove 2164 00002934 .global _QueueRemove 2165 00002934 _QueueRemove: 2166 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 2167 00002934 afbefffc sw -4(r29),r30; push fp 2168 00002938 001df020 add r30,r0,r29; fp = sp 2169 0000293c afbffff8 sw -8(r29),r31; push ret addr 2170 00002940 2fbd0010 subui r29,r29,#16; alloc local storage 2171 00002944 afa20000 sw 0(r29),r2 2172 00002948 afa30004 sw 4(r29),r3 2173 0000294c 8fdf0000 lw r31,(r30) 2174 00002950 8fe10008 lw r1,8(r31) 2175 00002954 8c210008 lw r1,8(r1) 2176 00002958 6c210000 sgti r1,r1,#0 2177 0000295c 1020002c beqz r1,L44_LF3 2178 00002960 54000000 nop; not filled. 2179 00002964 8fe10004 lw r1,4(r31) 2180 00002968 8fe30000 lw r3,(r31) 2181 0000296c ac230000 sw (r1),r3 2182 00002970 8fe10000 lw r1,(r31) 2183 00002974 8fe30004 lw r3,4(r31) 2184 00002978 ac230004 sw 4(r1),r3 2185 0000297c 8fe20008 lw r2,8(r31) 2186 00002980 8c410008 lw r1,8(r2) 2187 00002984 2021ffff addi r1,r1,#-1 2188 00002988 ac410008 sw 8(r2),r1 2189 0000298c L44_LF3: 2190 0000298c 20030000 addi r3,r0,#0 2191 00002990 afe30000 sw (r31),r3 2192 00002994 8fa20000 lw r2,0(r29) 2193 00002998 8fa30004 lw r3,4(r29) 2194 0000299c 8fdffff8 lw r31,-8(r30) 2195 000029a0 001ee820 add r29,r0,r30 2196 000029a4 8fdefffc lw r30,-4(r30) 2197 000029a8 4be00000 jr r31 2198 000029ac 54000000 nop 2199 000029b0 .endproc _QueueRemove 2200 000029b0 .align 2 2201 000029b0 .proc _QueueLength 2202 000029b0 .global _QueueLength 2203 000029b0 _QueueLength: 2204 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 2205 000029b0 afbefffc sw -4(r29),r30; push fp 2206 000029b4 001df020 add r30,r0,r29; fp = sp 2207 000029b8 afbffff8 sw -8(r29),r31; push ret addr 2208 000029bc 2fbd0008 subui r29,r29,#8; alloc local storage 2209 000029c0 8fc10000 lw r1,(r30) 2210 000029c4 8c210008 lw r1,8(r1) 2211 000029c8 8fdffff8 lw r31,-8(r30) 2212 000029cc 001ee820 add r29,r0,r30 2213 000029d0 8fdefffc lw r30,-4(r30) 2214 000029d4 4be00000 jr r31 2215 000029d8 54000000 nop 2216 000029dc .endproc _QueueLength 2217 000029dc .align 2 2218 000029dc .proc _QueueEmpty 2219 000029dc .global _QueueEmpty 2220 000029dc _QueueEmpty: 2221 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 2222 000029dc afbefffc sw -4(r29),r30; push fp 2223 000029e0 001df020 add r30,r0,r29; fp = sp 2224 000029e4 afbffff8 sw -8(r29),r31; push ret addr 2225 000029e8 2fbd0008 subui r29,r29,#8; alloc local storage 2226 000029ec 8fc10000 lw r1,(r30) 2227 000029f0 8c210008 lw r1,8(r1) 2228 000029f4 60210000 seqi r1,r1,#0 2229 000029f8 8fdffff8 lw r31,-8(r30) 2230 000029fc 001ee820 add r29,r0,r30 2231 00002a00 8fdefffc lw r30,-4(r30) 2232 00002a04 4be00000 jr r31 2233 00002a08 54000000 nop 2234 00002a0c .endproc _QueueEmpty 2235 00002a0c .data 2236 0000e2c4 .align 2 2237 0000e2c4 _negativeone_LF3: 2238 0000e2c4 ffffffff .word -1 2239 0000e2c8 .text 2240 00002a0c .align 2 2241 00002a0c .proc _MemoryGetSize 2242 00002a0c .global _MemoryGetSize 2243 00002a0c _MemoryGetSize: 2244 ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. 2245 00002a0c afbefffc sw -4(r29),r30; push fp 2246 00002a10 001df020 add r30,r0,r29; fp = sp 2247 00002a14 afbffff8 sw -8(r29),r31; push ret addr 2248 00002a18 2fbd0008 subui r29,r29,#8; alloc local storage 2249 00002a1c 3c01ffff lhi r1,#-1 2250 00002a20 24210000 addui r1,r1,#0 2251 00002a24 8c210000 lw r1,(r1) 2252 00002a28 8fdffff8 lw r31,-8(r30) 2253 00002a2c 001ee820 add r29,r0,r30 2254 00002a30 8fdefffc lw r30,-4(r30) 2255 00002a34 4be00000 jr r31 2256 00002a38 54000000 nop 2257 00002a3c .endproc _MemoryGetSize 2258 00002a3c .data 2259 0000e2c8 .align 2 2260 0000e2c8 LC0_LF3: 2261 0000e2c8 53657420 .ascii "Set freemap entry %d to 0x%x.\n\000" 2261 0000e2cc 66726565 2261 0000e2d0 6d617020 2261 0000e2d4 656e7472 2261 0000e2d8 79202564 2261 0000e2dc 20746f20 2261 0000e2e0 30782578 2261 0000e2e4 2e0a00 2262 0000e2e7 .text 2263 00002a3c .align 2 2264 00002a3c .proc _MemorySetFreemap 2265 00002a3c .global _MemorySetFreemap 2266 00002a3c _MemorySetFreemap: 2267 ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. 2268 00002a3c afbefffc sw -4(r29),r30; push fp 2269 00002a40 001df020 add r30,r0,r29; fp = sp 2270 00002a44 afbffff8 sw -8(r29),r31; push ret addr 2271 00002a48 2fbd0020 subui r29,r29,#32; alloc local storage 2272 00002a4c afa20000 sw 0(r29),r2 2273 00002a50 afa30004 sw 4(r29),r3 2274 00002a54 afa40008 sw 8(r29),r4 2275 00002a58 afa5000c sw 12(r29),r5 2276 00002a5c afa60010 sw 16(r29),r6 2277 00002a60 8fc30000 lw r3,(r30) 2278 00002a64 8fdf0004 lw r31,4(r30) 2279 00002a68 00031020 add r2,r0,r3 2280 00002a6c 74610000 sgei r1,r3,#0 2281 00002a70 14200008 bnez r1,L61_LF3 2282 00002a74 54000000 nop; not filled. 2283 00002a78 2062001f addi r2,r3,#31 2284 00002a7c L61_LF3: 2285 00002a7c 5c450005 srai r5,r2,#0x5 2286 00002a80 50a10005 slli r1,r5,#0x5 2287 00002a84 00611822 sub r3,r3,r1 2288 00002a88 20010001 addi r1,r0,#1 2289 00002a8c 00231004 sll r2,r1,r3 2290 00002a90 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2291 00002a94 2421e2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2292 00002a98 8c210000 lw r1,(r1) 2293 00002a9c 00411026 xor r2,r2,r1 2294 00002aa0 50a10002 slli r1,r5,#0x2 2295 00002aa4 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2296 00002aa8 24c6e438 addui r6,r6,(_freepages_LF3)&0xffff 2297 00002aac 00262020 add r4,r1,r6 2298 00002ab0 8c810000 lw r1,(r4) 2299 00002ab4 00221024 and r2,r1,r2 2300 00002ab8 03e30804 sll r1,r31,r3 2301 00002abc 00410825 or r1,r2,r1 2302 00002ac0 ac810000 sw (r4),r1 2303 00002ac4 23bdfff8 addi r29,r29,#-8 2304 00002ac8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2305 00002acc 24420d78 addui r2,r2,(_debugstr)&0xffff 2306 00002ad0 afa20000 sw (r29),r2 2307 00002ad4 2006006d addi r6,r0,#109 2308 00002ad8 afa60004 sw 4(r29),r6 2309 00002adc 0c001354 jal _dindex 2310 00002ae0 54000000 nop; not filled. 2311 00002ae4 23bd0008 addi r29,r29,#8 2312 00002ae8 64210000 snei r1,r1,#0 2313 00002aec 1420002c bnez r1,L65_LF3 2314 00002af0 54000000 nop; not filled. 2315 00002af4 23bdfff8 addi r29,r29,#-8 2316 00002af8 afa20000 sw (r29),r2 2317 00002afc 2006002b addi r6,r0,#43 2318 00002b00 afa60004 sw 4(r29),r6 2319 00002b04 0c00132c jal _dindex 2320 00002b08 54000000 nop; not filled. 2321 00002b0c 23bd0008 addi r29,r29,#8 2322 00002b10 64210000 snei r1,r1,#0 2323 00002b14 1020002c beqz r1,L64_LF3 2324 00002b18 54000000 nop; not filled. 2325 00002b1c L65_LF3: 2326 00002b1c 23bdfff0 addi r29,r29,#-16 2327 00002b20 3c060000 lhi r6,((LC0_LF3)>>16)&0xffff 2328 00002b24 24c6e2c8 addui r6,r6,(LC0_LF3)&0xffff 2329 00002b28 afa60000 sw (r29),r6 2330 00002b2c afa50004 sw 4(r29),r5 2331 00002b30 8c840000 lw r4,(r4) 2332 00002b34 afa40008 sw 8(r29),r4 2333 00002b38 0c008594 jal _printf 2334 00002b3c 54000000 nop; not filled. 2335 00002b40 23bd0010 addi r29,r29,#16 2336 00002b44 L64_LF3: 2337 00002b44 8fa20000 lw r2,0(r29) 2338 00002b48 8fa30004 lw r3,4(r29) 2339 00002b4c 8fa40008 lw r4,8(r29) 2340 00002b50 8fa5000c lw r5,12(r29) 2341 00002b54 8fa60010 lw r6,16(r29) 2342 00002b58 8fdffff8 lw r31,-8(r30) 2343 00002b5c 001ee820 add r29,r0,r30 2344 00002b60 8fdefffc lw r30,-4(r30) 2345 00002b64 4be00000 jr r31 2346 00002b68 54000000 nop 2347 00002b6c .endproc _MemorySetFreemap 2348 00002b6c .data 2349 0000e2e7 .align 2 2350 0000e2e8 LC1_LF3: 2351 0000e2e8 4d617020 .ascii "Map has %d entries, memory size is 0x%x.\n\000" 2351 0000e2ec 68617320 2351 0000e2f0 25642065 2351 0000e2f4 6e747269 2351 0000e2f8 65732c20 2351 0000e2fc 6d656d6f 2351 0000e300 72792073 2351 0000e304 697a6520 2351 0000e308 69732030 2351 0000e30c 7825782e 2351 0000e310 0a00 2352 0000e312 .align 2 2353 0000e314 LC2_LF3: 2354 0000e314 46726565 .ascii "Free pages start with page # 0x%x.\n\000" 2354 0000e318 20706167 2354 0000e31c 65732073 2354 0000e320 74617274 2354 0000e324 20776974 2354 0000e328 68207061 2354 0000e32c 67652023 2354 0000e330 20307825 2354 0000e334 782e0a00 2355 0000e338 .align 2 2356 0000e338 LC3_LF3: 2357 0000e338 496e6974 .ascii "Initialized %d free pages.\n\000" 2357 0000e33c 69616c69 2357 0000e340 7a656420 2357 0000e344 25642066 2357 0000e348 72656520 2357 0000e34c 70616765 2357 0000e350 732e0a00 2358 0000e354 .text 2359 00002b6c .align 2 2360 00002b6c .proc _MemoryModuleInit 2361 00002b6c .global _MemoryModuleInit 2362 00002b6c _MemoryModuleInit: 2363 ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. 2364 00002b6c afbefffc sw -4(r29),r30; push fp 2365 00002b70 001df020 add r30,r0,r29; fp = sp 2366 00002b74 afbffff8 sw -8(r29),r31; push ret addr 2367 00002b78 2fbd0030 subui r29,r29,#48; alloc local storage 2368 00002b7c afa20000 sw 0(r29),r2 2369 00002b80 afa30004 sw 4(r29),r3 2370 00002b84 afa40008 sw 8(r29),r4 2371 00002b88 afa5000c sw 12(r29),r5 2372 00002b8c afa60010 sw 16(r29),r6 2373 00002b90 afa70014 sw 20(r29),r7 2374 00002b94 afa80018 sw 24(r29),r8 2375 00002b98 afa9001c sw 28(r29),r9 2376 00002b9c afaa0020 sw 32(r29),r10 2377 00002ba0 afab0024 sw 36(r29),r11 2378 00002ba4 3c01ffff lhi r1,#-1 2379 00002ba8 24210000 addui r1,r1,#0 2380 00002bac 8c220000 lw r2,(r1) 2381 00002bb0 74410000 sgei r1,r2,#0 2382 00002bb4 14200008 bnez r1,L68_LF3 2383 00002bb8 54000000 nop; not filled. 2384 00002bbc 2442ffff addui r2,r2,#65535 2385 00002bc0 L68_LF3: 2386 00002bc0 5c480010 srai r8,r2,#0x10 2387 00002bc4 3c030000 lhi r3,((_pagestart_LF3)>>16)&0xffff 2388 00002bc8 2463e42c addui r3,r3,(_pagestart_LF3)&0xffff 2389 00002bcc 3c010001 lhi r1,((_lastosaddress)>>16)&0xffff 2390 00002bd0 24213e6c addui r1,r1,(_lastosaddress)&0xffff 2391 00002bd4 8c210000 lw r1,(r1) 2392 00002bd8 2422fffc addui r2,r1,#65532 2393 00002bdc 74410000 sgei r1,r2,#0 2394 00002be0 14200008 bnez r1,L69_LF3 2395 00002be4 54000000 nop; not filled. 2396 00002be8 2442ffff addui r2,r2,#65535 2397 00002bec L69_LF3: 2398 00002bec 5c410010 srai r1,r2,#0x10 2399 00002bf0 ac610000 sw (r3),r1 2400 00002bf4 3c030000 lhi r3,((_freemapmax_LF3)>>16)&0xffff 2401 00002bf8 2463e430 addui r3,r3,(_freemapmax_LF3)&0xffff 2402 00002bfc 2102001f addi r2,r8,#31 2403 00002c00 74410000 sgei r1,r2,#0 2404 00002c04 14200008 bnez r1,L70_LF3 2405 00002c08 54000000 nop; not filled. 2406 00002c0c 2102003e addi r2,r8,#62 2407 00002c10 L70_LF3: 2408 00002c10 5c410005 srai r1,r2,#0x5 2409 00002c14 ac610000 sw (r3),r1 2410 00002c18 23bdfff8 addi r29,r29,#-8 2411 00002c1c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2412 00002c20 24420d78 addui r2,r2,(_debugstr)&0xffff 2413 00002c24 afa20000 sw (r29),r2 2414 00002c28 200b006d addi r11,r0,#109 2415 00002c2c afab0004 sw 4(r29),r11 2416 00002c30 0c001200 jal _dindex 2417 00002c34 54000000 nop; not filled. 2418 00002c38 23bd0008 addi r29,r29,#8 2419 00002c3c 64210000 snei r1,r1,#0 2420 00002c40 1420002c bnez r1,L72_LF3 2421 00002c44 54000000 nop; not filled. 2422 00002c48 23bdfff8 addi r29,r29,#-8 2423 00002c4c afa20000 sw (r29),r2 2424 00002c50 200b002b addi r11,r0,#43 2425 00002c54 afab0004 sw 4(r29),r11 2426 00002c58 0c0011d8 jal _dindex 2427 00002c5c 54000000 nop; not filled. 2428 00002c60 23bd0008 addi r29,r29,#8 2429 00002c64 64210000 snei r1,r1,#0 2430 00002c68 1020002c beqz r1,L71_LF3 2431 00002c6c 54000000 nop; not filled. 2432 00002c70 L72_LF3: 2433 00002c70 23bdfff0 addi r29,r29,#-16 2434 00002c74 3c0b0000 lhi r11,((LC1_LF3)>>16)&0xffff 2435 00002c78 256be2e8 addui r11,r11,(LC1_LF3)&0xffff 2436 00002c7c afab0000 sw (r29),r11 2437 00002c80 8c610000 lw r1,(r3) 2438 00002c84 afa10004 sw 4(r29),r1 2439 00002c88 afa80008 sw 8(r29),r8 2440 00002c8c 0c008440 jal _printf 2441 00002c90 54000000 nop; not filled. 2442 00002c94 23bd0010 addi r29,r29,#16 2443 00002c98 L71_LF3: 2444 00002c98 23bdfff8 addi r29,r29,#-8 2445 00002c9c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2446 00002ca0 24420d78 addui r2,r2,(_debugstr)&0xffff 2447 00002ca4 afa20000 sw (r29),r2 2448 00002ca8 200b006d addi r11,r0,#109 2449 00002cac afab0004 sw 4(r29),r11 2450 00002cb0 0c001180 jal _dindex 2451 00002cb4 54000000 nop; not filled. 2452 00002cb8 23bd0008 addi r29,r29,#8 2453 00002cbc 64210000 snei r1,r1,#0 2454 00002cc0 1420002c bnez r1,L74_LF3 2455 00002cc4 54000000 nop; not filled. 2456 00002cc8 23bdfff8 addi r29,r29,#-8 2457 00002ccc afa20000 sw (r29),r2 2458 00002cd0 200b002b addi r11,r0,#43 2459 00002cd4 afab0004 sw 4(r29),r11 2460 00002cd8 0c001158 jal _dindex 2461 00002cdc 54000000 nop; not filled. 2462 00002ce0 23bd0008 addi r29,r29,#8 2463 00002ce4 64210000 snei r1,r1,#0 2464 00002ce8 10200030 beqz r1,L73_LF3 2465 00002cec 54000000 nop; not filled. 2466 00002cf0 L74_LF3: 2467 00002cf0 23bdfff8 addi r29,r29,#-8 2468 00002cf4 3c0b0000 lhi r11,((LC2_LF3)>>16)&0xffff 2469 00002cf8 256be314 addui r11,r11,(LC2_LF3)&0xffff 2470 00002cfc afab0000 sw (r29),r11 2471 00002d00 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2472 00002d04 2421e42c addui r1,r1,(_pagestart_LF3)&0xffff 2473 00002d08 8c210000 lw r1,(r1) 2474 00002d0c afa10004 sw 4(r29),r1 2475 00002d10 0c0083bc jal _printf 2476 00002d14 54000000 nop; not filled. 2477 00002d18 23bd0008 addi r29,r29,#8 2478 00002d1c L73_LF3: 2479 00002d1c 20020000 addi r2,r0,#0 2480 00002d20 3c040000 lhi r4,((_freemapmax_LF3)>>16)&0xffff 2481 00002d24 2484e430 addui r4,r4,(_freemapmax_LF3)&0xffff 2482 00002d28 8c810000 lw r1,(r4) 2483 00002d2c 0041082a slt r1,r2,r1 2484 00002d30 1020002c beqz r1,L76_LF3 2485 00002d34 54000000 nop; not filled. 2486 00002d38 3c030000 lhi r3,((_freepages_LF3)>>16)&0xffff 2487 00002d3c 2463e438 addui r3,r3,(_freepages_LF3)&0xffff 2488 00002d40 L78_LF3: 2489 00002d40 200b0000 addi r11,r0,#0 2490 00002d44 ac6b0000 sw (r3),r11 2491 00002d48 20630004 addi r3,r3,#4 2492 00002d4c 20420001 addi r2,r2,#1 2493 00002d50 8c810000 lw r1,(r4) 2494 00002d54 0041082a slt r1,r2,r1 2495 00002d58 1420ffe4 bnez r1,L78_LF3 2496 00002d5c 54000000 nop; not filled. 2497 00002d60 L76_LF3: 2498 00002d60 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2499 00002d64 2442e434 addui r2,r2,(_nfreepages_LF3)&0xffff 2500 00002d68 200b0000 addi r11,r0,#0 2501 00002d6c ac4b0000 sw (r2),r11 2502 00002d70 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2503 00002d74 2421e42c addui r1,r1,(_pagestart_LF3)&0xffff 2504 00002d78 8c240000 lw r4,(r1) 2505 00002d7c 0088082a slt r1,r4,r8 2506 00002d80 10200104 beqz r1,L81_LF3 2507 00002d84 54000000 nop; not filled. 2508 00002d88 00023820 add r7,r0,r2 2509 00002d8c 200a0001 addi r10,r0,#1 2510 00002d90 3c090000 lhi r9,((_negativeone_LF3)>>16)&0xffff 2511 00002d94 2529e2c4 addui r9,r9,(_negativeone_LF3)&0xffff 2512 00002d98 L83_LF3: 2513 00002d98 8ce10000 lw r1,(r7) 2514 00002d9c 20210001 addi r1,r1,#1 2515 00002da0 ace10000 sw (r7),r1 2516 00002da4 00041020 add r2,r0,r4 2517 00002da8 74810000 sgei r1,r4,#0 2518 00002dac 14200008 bnez r1,L85_LF3 2519 00002db0 54000000 nop; not filled. 2520 00002db4 2082001f addi r2,r4,#31 2521 00002db8 L85_LF3: 2522 00002db8 5c460005 srai r6,r2,#0x5 2523 00002dbc 50c10005 slli r1,r6,#0x5 2524 00002dc0 00810822 sub r1,r4,r1 2525 00002dc4 01411804 sll r3,r10,r1 2526 00002dc8 8d210000 lw r1,(r9) 2527 00002dcc 00611026 xor r2,r3,r1 2528 00002dd0 50c10002 slli r1,r6,#0x2 2529 00002dd4 3c0b0000 lhi r11,((_freepages_LF3)>>16)&0xffff 2530 00002dd8 256be438 addui r11,r11,(_freepages_LF3)&0xffff 2531 00002ddc 002b2820 add r5,r1,r11 2532 00002de0 8ca10000 lw r1,(r5) 2533 00002de4 00220824 and r1,r1,r2 2534 00002de8 00230825 or r1,r1,r3 2535 00002dec aca10000 sw (r5),r1 2536 00002df0 23bdfff8 addi r29,r29,#-8 2537 00002df4 3c0b0001 lhi r11,((_debugstr)>>16)&0xffff 2538 00002df8 256b0d78 addui r11,r11,(_debugstr)&0xffff 2539 00002dfc afab0000 sw (r29),r11 2540 00002e00 200b006d addi r11,r0,#109 2541 00002e04 afab0004 sw 4(r29),r11 2542 00002e08 0c001028 jal _dindex 2543 00002e0c 54000000 nop; not filled. 2544 00002e10 23bd0008 addi r29,r29,#8 2545 00002e14 64210000 snei r1,r1,#0 2546 00002e18 14200034 bnez r1,L89_LF3 2547 00002e1c 54000000 nop; not filled. 2548 00002e20 23bdfff8 addi r29,r29,#-8 2549 00002e24 3c0b0001 lhi r11,((_debugstr)>>16)&0xffff 2550 00002e28 256b0d78 addui r11,r11,(_debugstr)&0xffff 2551 00002e2c afab0000 sw (r29),r11 2552 00002e30 200b002b addi r11,r0,#43 2553 00002e34 afab0004 sw 4(r29),r11 2554 00002e38 0c000ff8 jal _dindex 2555 00002e3c 54000000 nop; not filled. 2556 00002e40 23bd0008 addi r29,r29,#8 2557 00002e44 64210000 snei r1,r1,#0 2558 00002e48 1020002c beqz r1,L82_LF3 2559 00002e4c 54000000 nop; not filled. 2560 00002e50 L89_LF3: 2561 00002e50 23bdfff0 addi r29,r29,#-16 2562 00002e54 3c0b0000 lhi r11,((LC0_LF3)>>16)&0xffff 2563 00002e58 256be2c8 addui r11,r11,(LC0_LF3)&0xffff 2564 00002e5c afab0000 sw (r29),r11 2565 00002e60 afa60004 sw 4(r29),r6 2566 00002e64 8ca50000 lw r5,(r5) 2567 00002e68 afa50008 sw 8(r29),r5 2568 00002e6c 0c008260 jal _printf 2569 00002e70 54000000 nop; not filled. 2570 00002e74 23bd0010 addi r29,r29,#16 2571 00002e78 L82_LF3: 2572 00002e78 20840001 addi r4,r4,#1 2573 00002e7c 0088082a slt r1,r4,r8 2574 00002e80 1420ff14 bnez r1,L83_LF3 2575 00002e84 54000000 nop; not filled. 2576 00002e88 L81_LF3: 2577 00002e88 23bdfff8 addi r29,r29,#-8 2578 00002e8c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2579 00002e90 24420d78 addui r2,r2,(_debugstr)&0xffff 2580 00002e94 afa20000 sw (r29),r2 2581 00002e98 200b006d addi r11,r0,#109 2582 00002e9c afab0004 sw 4(r29),r11 2583 00002ea0 0c000f90 jal _dindex 2584 00002ea4 54000000 nop; not filled. 2585 00002ea8 23bd0008 addi r29,r29,#8 2586 00002eac 64210000 snei r1,r1,#0 2587 00002eb0 1420002c bnez r1,L92_LF3 2588 00002eb4 54000000 nop; not filled. 2589 00002eb8 23bdfff8 addi r29,r29,#-8 2590 00002ebc afa20000 sw (r29),r2 2591 00002ec0 200b002b addi r11,r0,#43 2592 00002ec4 afab0004 sw 4(r29),r11 2593 00002ec8 0c000f68 jal _dindex 2594 00002ecc 54000000 nop; not filled. 2595 00002ed0 23bd0008 addi r29,r29,#8 2596 00002ed4 64210000 snei r1,r1,#0 2597 00002ed8 10200030 beqz r1,L91_LF3 2598 00002edc 54000000 nop; not filled. 2599 00002ee0 L92_LF3: 2600 00002ee0 23bdfff8 addi r29,r29,#-8 2601 00002ee4 3c0b0000 lhi r11,((LC3_LF3)>>16)&0xffff 2602 00002ee8 256be338 addui r11,r11,(LC3_LF3)&0xffff 2603 00002eec afab0000 sw (r29),r11 2604 00002ef0 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2605 00002ef4 2421e434 addui r1,r1,(_nfreepages_LF3)&0xffff 2606 00002ef8 8c210000 lw r1,(r1) 2607 00002efc afa10004 sw 4(r29),r1 2608 00002f00 0c0081cc jal _printf 2609 00002f04 54000000 nop; not filled. 2610 00002f08 23bd0008 addi r29,r29,#8 2611 00002f0c L91_LF3: 2612 00002f0c 8fa20000 lw r2,0(r29) 2613 00002f10 8fa30004 lw r3,4(r29) 2614 00002f14 8fa40008 lw r4,8(r29) 2615 00002f18 8fa5000c lw r5,12(r29) 2616 00002f1c 8fa60010 lw r6,16(r29) 2617 00002f20 8fa70014 lw r7,20(r29) 2618 00002f24 8fa80018 lw r8,24(r29) 2619 00002f28 8fa9001c lw r9,28(r29) 2620 00002f2c 8faa0020 lw r10,32(r29) 2621 00002f30 8fab0024 lw r11,36(r29) 2622 00002f34 8fdffff8 lw r31,-8(r30) 2623 00002f38 001ee820 add r29,r0,r30 2624 00002f3c 8fdefffc lw r30,-4(r30) 2625 00002f40 4be00000 jr r31 2626 00002f44 54000000 nop 2627 00002f48 .endproc _MemoryModuleInit 2628 00002f48 .data 2629 0000e354 .align 2 2630 0000e354 _mapnum42_LF3: 2631 0000e354 00000000 .word 0 2632 0000e358 .align 2 2633 0000e358 LC4_LF3: 2634 0000e358 4552524f .ascii "ERROR AT THIS POINT\n\000" 2634 0000e35c 52204154 2634 0000e360 20544849 2634 0000e364 5320504f 2634 0000e368 494e540a 2634 0000e36c 00 2635 0000e36d .align 2 2636 0000e370 LC5_LF3: 2637 0000e370 416c6c6f .ascii "Allocating memory, starting with page %d\n\000" 2637 0000e374 63617469 2637 0000e378 6e67206d 2637 0000e37c 656d6f72 2637 0000e380 792c2073 2637 0000e384 74617274 2637 0000e388 696e6720 2637 0000e38c 77697468 2637 0000e390 20706167 2637 0000e394 65202564 2637 0000e398 0a00 2638 0000e39a .align 2 2639 0000e39c LC6_LF3: 2640 0000e39c 416c6c6f .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" 2640 0000e3a0 63617465 2640 0000e3a4 64206d65 2640 0000e3a8 6d6f7279 2640 0000e3ac 2c206672 2640 0000e3b0 6f6d206d 2640 0000e3b4 61702025 2640 0000e3b8 642c2070 2640 0000e3bc 61676520 2640 0000e3c0 25642c20 2640 0000e3c4 6d61703d 2640 0000e3c8 30782578 2640 0000e3cc 2e0a00 2641 0000e3cf .text 2642 00002f48 .align 2 2643 00002f48 .proc _MemoryAllocPage 2644 00002f48 .global _MemoryAllocPage 2645 00002f48 _MemoryAllocPage: 2646 ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. 2647 00002f48 afbefffc sw -4(r29),r30; push fp 2648 00002f4c 001df020 add r30,r0,r29; fp = sp 2649 00002f50 afbffff8 sw -8(r29),r31; push ret addr 2650 00002f54 2fbd0020 subui r29,r29,#32; alloc local storage 2651 00002f58 afa20000 sw 0(r29),r2 2652 00002f5c afa30004 sw 4(r29),r3 2653 00002f60 afa40008 sw 8(r29),r4 2654 00002f64 afa5000c sw 12(r29),r5 2655 00002f68 afa60010 sw 16(r29),r6 2656 00002f6c afa70014 sw 20(r29),r7 2657 00002f70 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2658 00002f74 2421e434 addui r1,r1,(_nfreepages_LF3)&0xffff 2659 00002f78 8c210000 lw r1,(r1) 2660 00002f7c 64210000 snei r1,r1,#0 2661 00002f80 1420002c bnez r1,L111_LF3 2662 00002f84 54000000 nop; not filled. 2663 00002f88 23bdfff8 addi r29,r29,#-8 2664 00002f8c 3c070000 lhi r7,((LC4_LF3)>>16)&0xffff 2665 00002f90 24e7e358 addui r7,r7,(LC4_LF3)&0xffff 2666 00002f94 afa70000 sw (r29),r7 2667 00002f98 0c008134 jal _printf 2668 00002f9c 54000000 nop; not filled. 2669 00002fa0 20010000 addi r1,r0,#0 2670 00002fa4 23bd0008 addi r29,r29,#8 2671 00002fa8 08000238 j L110_LF3 2672 00002fac 54000000 nop; not filled. 2673 00002fb0 L111_LF3: 2674 00002fb0 23bdfff8 addi r29,r29,#-8 2675 00002fb4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2676 00002fb8 24420d78 addui r2,r2,(_debugstr)&0xffff 2677 00002fbc afa20000 sw (r29),r2 2678 00002fc0 2007006d addi r7,r0,#109 2679 00002fc4 afa70004 sw 4(r29),r7 2680 00002fc8 0c000e68 jal _dindex 2681 00002fcc 54000000 nop; not filled. 2682 00002fd0 23bd0008 addi r29,r29,#8 2683 00002fd4 64210000 snei r1,r1,#0 2684 00002fd8 1420002c bnez r1,L113_LF3 2685 00002fdc 54000000 nop; not filled. 2686 00002fe0 23bdfff8 addi r29,r29,#-8 2687 00002fe4 afa20000 sw (r29),r2 2688 00002fe8 2007002b addi r7,r0,#43 2689 00002fec afa70004 sw 4(r29),r7 2690 00002ff0 0c000e40 jal _dindex 2691 00002ff4 54000000 nop; not filled. 2692 00002ff8 23bd0008 addi r29,r29,#8 2693 00002ffc 64210000 snei r1,r1,#0 2694 00003000 10200030 beqz r1,L112_LF3 2695 00003004 54000000 nop; not filled. 2696 00003008 L113_LF3: 2697 00003008 23bdfff8 addi r29,r29,#-8 2698 0000300c 3c070000 lhi r7,((LC5_LF3)>>16)&0xffff 2699 00003010 24e7e370 addui r7,r7,(LC5_LF3)&0xffff 2700 00003014 afa70000 sw (r29),r7 2701 00003018 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2702 0000301c 2421e354 addui r1,r1,(_mapnum42_LF3)&0xffff 2703 00003020 8c210000 lw r1,(r1) 2704 00003024 afa10004 sw 4(r29),r1 2705 00003028 0c0080a4 jal _printf 2706 0000302c 54000000 nop; not filled. 2707 00003030 23bd0008 addi r29,r29,#8 2708 00003034 L112_LF3: 2709 00003034 3c020000 lhi r2,((_mapnum42_LF3)>>16)&0xffff 2710 00003038 2442e354 addui r2,r2,(_mapnum42_LF3)&0xffff 2711 0000303c 8c410000 lw r1,(r2) 2712 00003040 3c040000 lhi r4,((_freepages_LF3)>>16)&0xffff 2713 00003044 2484e438 addui r4,r4,(_freepages_LF3)&0xffff 2714 00003048 50210002 slli r1,r1,#0x2 2715 0000304c 00240820 add r1,r1,r4 2716 00003050 8c210000 lw r1,(r1) 2717 00003054 64210000 snei r1,r1,#0 2718 00003058 1420004c bnez r1,L115_LF3 2719 0000305c 54000000 nop; not filled. 2720 00003060 3c010000 lhi r1,((_freemapmax_LF3)>>16)&0xffff 2721 00003064 2421e430 addui r1,r1,(_freemapmax_LF3)&0xffff 2722 00003068 8c230000 lw r3,(r1) 2723 0000306c L116_LF3: 2724 0000306c 8c410000 lw r1,(r2) 2725 00003070 20210001 addi r1,r1,#1 2726 00003074 ac410000 sw (r2),r1 2727 00003078 0023082d sge r1,r1,r3 2728 0000307c 1020000c beqz r1,L114_LF3 2729 00003080 54000000 nop; not filled. 2730 00003084 20070000 addi r7,r0,#0 2731 00003088 ac470000 sw (r2),r7 2732 0000308c L114_LF3: 2733 0000308c 8c410000 lw r1,(r2) 2734 00003090 50210002 slli r1,r1,#0x2 2735 00003094 00240820 add r1,r1,r4 2736 00003098 8c210000 lw r1,(r1) 2737 0000309c 64210000 snei r1,r1,#0 2738 000030a0 1020ffc8 beqz r1,L116_LF3 2739 000030a4 54000000 nop; not filled. 2740 000030a8 L115_LF3: 2741 000030a8 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2742 000030ac 2421e354 addui r1,r1,(_mapnum42_LF3)&0xffff 2743 000030b0 8c210000 lw r1,(r1) 2744 000030b4 50210002 slli r1,r1,#0x2 2745 000030b8 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2746 000030bc 24e7e438 addui r7,r7,(_freepages_LF3)&0xffff 2747 000030c0 00270820 add r1,r1,r7 2748 000030c4 8c230000 lw r3,(r1) 2749 000030c8 201f0000 addi r31,r0,#0 2750 000030cc 30610001 andi r1,r3,#1 2751 000030d0 14200020 bnez r1,L120_LF3 2752 000030d4 54000000 nop; not filled. 2753 000030d8 20020001 addi r2,r0,#1 2754 000030dc L121_LF3: 2755 000030dc 23ff0001 addi r31,r31,#1 2756 000030e0 005f0804 sll r1,r2,r31 2757 000030e4 00610824 and r1,r3,r1 2758 000030e8 64210000 snei r1,r1,#0 2759 000030ec 1020ffec beqz r1,L121_LF3 2760 000030f0 54000000 nop; not filled. 2761 000030f4 L120_LF3: 2762 000030f4 20010001 addi r1,r0,#1 2763 000030f8 003f1004 sll r2,r1,r31 2764 000030fc 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2765 00003100 2421e2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2766 00003104 8c210000 lw r1,(r1) 2767 00003108 00412026 xor r4,r2,r1 2768 0000310c 3c050000 lhi r5,((_mapnum42_LF3)>>16)&0xffff 2769 00003110 24a5e354 addui r5,r5,(_mapnum42_LF3)&0xffff 2770 00003114 8ca30000 lw r3,(r5) 2771 00003118 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2772 0000311c 24c6e438 addui r6,r6,(_freepages_LF3)&0xffff 2773 00003120 50610002 slli r1,r3,#0x2 2774 00003124 00261020 add r2,r1,r6 2775 00003128 8c410000 lw r1,(r2) 2776 0000312c 00240824 and r1,r1,r4 2777 00003130 ac410000 sw (r2),r1 2778 00003134 50610005 slli r1,r3,#0x5 2779 00003138 003f1820 add r3,r1,r31 2780 0000313c 23bdfff8 addi r29,r29,#-8 2781 00003140 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2782 00003144 24420d78 addui r2,r2,(_debugstr)&0xffff 2783 00003148 afa20000 sw (r29),r2 2784 0000314c 2007006d addi r7,r0,#109 2785 00003150 afa70004 sw 4(r29),r7 2786 00003154 0c000cdc jal _dindex 2787 00003158 54000000 nop; not filled. 2788 0000315c 23bd0008 addi r29,r29,#8 2789 00003160 64210000 snei r1,r1,#0 2790 00003164 1420002c bnez r1,L126_LF3 2791 00003168 54000000 nop; not filled. 2792 0000316c 23bdfff8 addi r29,r29,#-8 2793 00003170 afa20000 sw (r29),r2 2794 00003174 2007002b addi r7,r0,#43 2795 00003178 afa70004 sw 4(r29),r7 2796 0000317c 0c000cb4 jal _dindex 2797 00003180 54000000 nop; not filled. 2798 00003184 23bd0008 addi r29,r29,#8 2799 00003188 64210000 snei r1,r1,#0 2800 0000318c 1020003c beqz r1,L125_LF3 2801 00003190 54000000 nop; not filled. 2802 00003194 L126_LF3: 2803 00003194 23bdfff0 addi r29,r29,#-16 2804 00003198 3c070000 lhi r7,((LC6_LF3)>>16)&0xffff 2805 0000319c 24e7e39c addui r7,r7,(LC6_LF3)&0xffff 2806 000031a0 afa70000 sw (r29),r7 2807 000031a4 8ca10000 lw r1,(r5) 2808 000031a8 afa10004 sw 4(r29),r1 2809 000031ac afa30008 sw 8(r29),r3 2810 000031b0 50210002 slli r1,r1,#0x2 2811 000031b4 00260820 add r1,r1,r6 2812 000031b8 8c210000 lw r1,(r1) 2813 000031bc afa1000c sw 12(r29),r1 2814 000031c0 0c007f0c jal _printf 2815 000031c4 54000000 nop; not filled. 2816 000031c8 23bd0010 addi r29,r29,#16 2817 000031cc L125_LF3: 2818 000031cc 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2819 000031d0 2421e434 addui r1,r1,(_nfreepages_LF3)&0xffff 2820 000031d4 8c220000 lw r2,(r1) 2821 000031d8 2042ffff addi r2,r2,#-1 2822 000031dc ac220000 sw (r1),r2 2823 000031e0 00030820 add r1,r0,r3 2824 000031e4 L110_LF3: 2825 000031e4 8fa20000 lw r2,0(r29) 2826 000031e8 8fa30004 lw r3,4(r29) 2827 000031ec 8fa40008 lw r4,8(r29) 2828 000031f0 8fa5000c lw r5,12(r29) 2829 000031f4 8fa60010 lw r6,16(r29) 2830 000031f8 8fa70014 lw r7,20(r29) 2831 000031fc 8fdffff8 lw r31,-8(r30) 2832 00003200 001ee820 add r29,r0,r30 2833 00003204 8fdefffc lw r30,-4(r30) 2834 00003208 4be00000 jr r31 2835 0000320c 54000000 nop 2836 00003210 .endproc _MemoryAllocPage 2837 00003210 .data 2838 0000e3cf .align 2 2839 0000e3d0 LC7_LF3: 2840 0000e3d0 46726565 .ascii "Freed page 0x%x, %d remaining.\n\000" 2840 0000e3d4 64207061 2840 0000e3d8 67652030 2840 0000e3dc 7825782c 2840 0000e3e0 20256420 2840 0000e3e4 72656d61 2840 0000e3e8 696e696e 2840 0000e3ec 672e0a00 2841 0000e3f0 .text 2842 00003210 .align 2 2843 00003210 .proc _MemoryFreePage 2844 00003210 .global _MemoryFreePage 2845 00003210 _MemoryFreePage: 2846 ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. 2847 00003210 afbefffc sw -4(r29),r30; push fp 2848 00003214 001df020 add r30,r0,r29; fp = sp 2849 00003218 afbffff8 sw -8(r29),r31; push ret addr 2850 0000321c 2fbd0020 subui r29,r29,#32; alloc local storage 2851 00003220 afa20000 sw 0(r29),r2 2852 00003224 afa30004 sw 4(r29),r3 2853 00003228 afa40008 sw 8(r29),r4 2854 0000322c afa5000c sw 12(r29),r5 2855 00003230 afa60010 sw 16(r29),r6 2856 00003234 afa70014 sw 20(r29),r7 2857 00003238 8fc60000 lw r6,(r30) 2858 0000323c 20030001 addi r3,r0,#1 2859 00003240 00061020 add r2,r0,r6 2860 00003244 74c10000 sgei r1,r6,#0 2861 00003248 14200008 bnez r1,L129_LF3 2862 0000324c 54000000 nop; not filled. 2863 00003250 20c2001f addi r2,r6,#31 2864 00003254 L129_LF3: 2865 00003254 5c450005 srai r5,r2,#0x5 2866 00003258 50a10005 slli r1,r5,#0x5 2867 0000325c 00c10822 sub r1,r6,r1 2868 00003260 00611804 sll r3,r3,r1 2869 00003264 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2870 00003268 2421e2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2871 0000326c 8c210000 lw r1,(r1) 2872 00003270 00611026 xor r2,r3,r1 2873 00003274 50a10002 slli r1,r5,#0x2 2874 00003278 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2875 0000327c 24e7e438 addui r7,r7,(_freepages_LF3)&0xffff 2876 00003280 00272020 add r4,r1,r7 2877 00003284 8c810000 lw r1,(r4) 2878 00003288 00220824 and r1,r1,r2 2879 0000328c 00230825 or r1,r1,r3 2880 00003290 ac810000 sw (r4),r1 2881 00003294 23bdfff8 addi r29,r29,#-8 2882 00003298 3c070001 lhi r7,((_debugstr)>>16)&0xffff 2883 0000329c 24e70d78 addui r7,r7,(_debugstr)&0xffff 2884 000032a0 afa70000 sw (r29),r7 2885 000032a4 2007006d addi r7,r0,#109 2886 000032a8 afa70004 sw 4(r29),r7 2887 000032ac 0c000b84 jal _dindex 2888 000032b0 54000000 nop; not filled. 2889 000032b4 23bd0008 addi r29,r29,#8 2890 000032b8 64210000 snei r1,r1,#0 2891 000032bc 14200034 bnez r1,L133_LF3 2892 000032c0 54000000 nop; not filled. 2893 000032c4 23bdfff8 addi r29,r29,#-8 2894 000032c8 3c070001 lhi r7,((_debugstr)>>16)&0xffff 2895 000032cc 24e70d78 addui r7,r7,(_debugstr)&0xffff 2896 000032d0 afa70000 sw (r29),r7 2897 000032d4 2007002b addi r7,r0,#43 2898 000032d8 afa70004 sw 4(r29),r7 2899 000032dc 0c000b54 jal _dindex 2900 000032e0 54000000 nop; not filled. 2901 000032e4 23bd0008 addi r29,r29,#8 2902 000032e8 64210000 snei r1,r1,#0 2903 000032ec 1020002c beqz r1,L128_LF3 2904 000032f0 54000000 nop; not filled. 2905 000032f4 L133_LF3: 2906 000032f4 23bdfff0 addi r29,r29,#-16 2907 000032f8 3c070000 lhi r7,((LC0_LF3)>>16)&0xffff 2908 000032fc 24e7e2c8 addui r7,r7,(LC0_LF3)&0xffff 2909 00003300 afa70000 sw (r29),r7 2910 00003304 afa50004 sw 4(r29),r5 2911 00003308 8c840000 lw r4,(r4) 2912 0000330c afa40008 sw 8(r29),r4 2913 00003310 0c007dbc jal _printf 2914 00003314 54000000 nop; not filled. 2915 00003318 23bd0010 addi r29,r29,#16 2916 0000331c L128_LF3: 2917 0000331c 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2918 00003320 2442e434 addui r2,r2,(_nfreepages_LF3)&0xffff 2919 00003324 8c410000 lw r1,(r2) 2920 00003328 20210001 addi r1,r1,#1 2921 0000332c ac410000 sw (r2),r1 2922 00003330 23bdfff8 addi r29,r29,#-8 2923 00003334 3c030001 lhi r3,((_debugstr)>>16)&0xffff 2924 00003338 24630d78 addui r3,r3,(_debugstr)&0xffff 2925 0000333c afa30000 sw (r29),r3 2926 00003340 2007006d addi r7,r0,#109 2927 00003344 afa70004 sw 4(r29),r7 2928 00003348 0c000ae8 jal _dindex 2929 0000334c 54000000 nop; not filled. 2930 00003350 23bd0008 addi r29,r29,#8 2931 00003354 64210000 snei r1,r1,#0 2932 00003358 1420002c bnez r1,L135_LF3 2933 0000335c 54000000 nop; not filled. 2934 00003360 23bdfff8 addi r29,r29,#-8 2935 00003364 afa30000 sw (r29),r3 2936 00003368 2007002b addi r7,r0,#43 2937 0000336c afa70004 sw 4(r29),r7 2938 00003370 0c000ac0 jal _dindex 2939 00003374 54000000 nop; not filled. 2940 00003378 23bd0008 addi r29,r29,#8 2941 0000337c 64210000 snei r1,r1,#0 2942 00003380 1020002c beqz r1,L134_LF3 2943 00003384 54000000 nop; not filled. 2944 00003388 L135_LF3: 2945 00003388 23bdfff0 addi r29,r29,#-16 2946 0000338c 3c070000 lhi r7,((LC7_LF3)>>16)&0xffff 2947 00003390 24e7e3d0 addui r7,r7,(LC7_LF3)&0xffff 2948 00003394 afa70000 sw (r29),r7 2949 00003398 afa60004 sw 4(r29),r6 2950 0000339c 8c420000 lw r2,(r2) 2951 000033a0 afa20008 sw 8(r29),r2 2952 000033a4 0c007d28 jal _printf 2953 000033a8 54000000 nop; not filled. 2954 000033ac 23bd0010 addi r29,r29,#16 2955 000033b0 L134_LF3: 2956 000033b0 8fa20000 lw r2,0(r29) 2957 000033b4 8fa30004 lw r3,4(r29) 2958 000033b8 8fa40008 lw r4,8(r29) 2959 000033bc 8fa5000c lw r5,12(r29) 2960 000033c0 8fa60010 lw r6,16(r29) 2961 000033c4 8fa70014 lw r7,20(r29) 2962 000033c8 8fdffff8 lw r31,-8(r30) 2963 000033cc 001ee820 add r29,r0,r30 2964 000033d0 8fdefffc lw r30,-4(r30) 2965 000033d4 4be00000 jr r31 2966 000033d8 54000000 nop 2967 000033dc .endproc _MemoryFreePage 2968 000033dc .align 2 2969 000033dc .proc _MemoryTranslateUserToSystem 2970 000033dc .global _MemoryTranslateUserToSystem 2971 000033dc _MemoryTranslateUserToSystem: 2972 ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. 2973 000033dc afbefffc sw -4(r29),r30; push fp 2974 000033e0 001df020 add r30,r0,r29; fp = sp 2975 000033e4 afbffff8 sw -8(r29),r31; push ret addr 2976 000033e8 2fbd0018 subui r29,r29,#24; alloc local storage 2977 000033ec afa20000 sw 0(r29),r2 2978 000033f0 afa30004 sw 4(r29),r3 2979 000033f4 afa40008 sw 8(r29),r4 2980 000033f8 8fc30000 lw r3,(r30) 2981 000033fc 8fc10004 lw r1,4(r30) 2982 00003400 583f0010 srli r31,r1,#0x10 2983 00003404 3022ffff andi r2,r1,#0xffff 2984 00003408 8c610064 lw r1,100(r3) 2985 0000340c 03e1082b sgt r1,r31,r1 2986 00003410 14200024 bnez r1,L139_LF3 2987 00003414 54000000 nop; not filled. 2988 00003418 53e10002 slli r1,r31,#0x2 2989 0000341c 00230820 add r1,r1,r3 2990 00003420 8c210060 lw r1,96(r1) 2991 00003424 2004fff8 addi r4,r0,#-8 2992 00003428 00240824 and r1,r1,r4 2993 0000342c 00220820 add r1,r1,r2 2994 00003430 08000008 j L140_LF3 2995 00003434 54000000 nop; not filled. 2996 00003438 L139_LF3: 2997 00003438 20010000 addi r1,r0,#0 2998 0000343c L140_LF3: 2999 0000343c 8fa20000 lw r2,0(r29) 3000 00003440 8fa30004 lw r3,4(r29) 3001 00003444 8fa40008 lw r4,8(r29) 3002 00003448 8fdffff8 lw r31,-8(r30) 3003 0000344c 001ee820 add r29,r0,r30 3004 00003450 8fdefffc lw r30,-4(r30) 3005 00003454 4be00000 jr r31 3006 00003458 54000000 nop 3007 0000345c .endproc _MemoryTranslateUserToSystem 3008 0000345c .align 2 3009 0000345c .proc _MemoryCopySystemToUser 3010 0000345c .global _MemoryCopySystemToUser 3011 0000345c _MemoryCopySystemToUser: 3012 ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. 3013 0000345c afbefffc sw -4(r29),r30; push fp 3014 00003460 001df020 add r30,r0,r29; fp = sp 3015 00003464 afbffff8 sw -8(r29),r31; push ret addr 3016 00003468 2fbd0028 subui r29,r29,#40; alloc local storage 3017 0000346c afa20000 sw 0(r29),r2 3018 00003470 afa30004 sw 4(r29),r3 3019 00003474 afa40008 sw 8(r29),r4 3020 00003478 afa5000c sw 12(r29),r5 3021 0000347c afa60010 sw 16(r29),r6 3022 00003480 afa70014 sw 20(r29),r7 3023 00003484 afa80018 sw 24(r29),r8 3024 00003488 afa9001c sw 28(r29),r9 3025 0000348c 8fc70000 lw r7,(r30) 3026 00003490 8fc50004 lw r5,4(r30) 3027 00003494 8fc40008 lw r4,8(r30) 3028 00003498 8fc3000c lw r3,12(r30) 3029 0000349c 20060000 addi r6,r0,#0 3030 000034a0 6c610000 sgti r1,r3,#0 3031 000034a4 102000a4 beqz r1,L167_LF3 3032 000034a8 54000000 nop; not filled. 3033 000034ac 3c080001 lhi r8,#1 3034 000034b0 25080000 addui r8,r8,#0 3035 000034b4 L168_LF3: 3036 000034b4 58820010 srli r2,r4,#0x10 3037 000034b8 309fffff andi r31,r4,#0xffff 3038 000034bc 8ce10064 lw r1,100(r7) 3039 000034c0 0041082b sgt r1,r2,r1 3040 000034c4 10200010 beqz r1,L170_LF3 3041 000034c8 54000000 nop; not filled. 3042 000034cc 201f0000 addi r31,r0,#0 3043 000034d0 0800001c j L169_LF3 3044 000034d4 54000000 nop; not filled. 3045 000034d8 L170_LF3: 3046 000034d8 50410002 slli r1,r2,#0x2 3047 000034dc 00270820 add r1,r1,r7 3048 000034e0 8c210060 lw r1,96(r1) 3049 000034e4 2009fff8 addi r9,r0,#-8 3050 000034e8 00290824 and r1,r1,r9 3051 000034ec 003ff820 add r31,r1,r31 3052 000034f0 L169_LF3: 3053 000034f0 67e10000 snei r1,r31,#0 3054 000034f4 10200054 beqz r1,L167_LF3 3055 000034f8 54000000 nop; not filled. 3056 000034fc 33e1ffff andi r1,r31,#65535 3057 00003500 01011022 sub r2,r8,r1 3058 00003504 0043082b sgt r1,r2,r3 3059 00003508 10200008 beqz r1,L172_LF3 3060 0000350c 54000000 nop; not filled. 3061 00003510 00031020 add r2,r0,r3 3062 00003514 L172_LF3: 3063 00003514 23bdfff0 addi r29,r29,#-16 3064 00003518 afa50000 sw (r29),r5 3065 0000351c afbf0004 sw 4(r29),r31 3066 00003520 afa20008 sw 8(r29),r2 3067 00003524 0c000c9c jal _bcopy 3068 00003528 54000000 nop; not filled. 3069 0000352c 23bd0010 addi r29,r29,#16 3070 00003530 00621822 sub r3,r3,r2 3071 00003534 00c23020 add r6,r6,r2 3072 00003538 00a22820 add r5,r5,r2 3073 0000353c 00822020 add r4,r4,r2 3074 00003540 6c610000 sgti r1,r3,#0 3075 00003544 1420ff6c bnez r1,L168_LF3 3076 00003548 54000000 nop; not filled. 3077 0000354c L167_LF3: 3078 0000354c 00060820 add r1,r0,r6 3079 00003550 8fa20000 lw r2,0(r29) 3080 00003554 8fa30004 lw r3,4(r29) 3081 00003558 8fa40008 lw r4,8(r29) 3082 0000355c 8fa5000c lw r5,12(r29) 3083 00003560 8fa60010 lw r6,16(r29) 3084 00003564 8fa70014 lw r7,20(r29) 3085 00003568 8fa80018 lw r8,24(r29) 3086 0000356c 8fa9001c lw r9,28(r29) 3087 00003570 8fdffff8 lw r31,-8(r30) 3088 00003574 001ee820 add r29,r0,r30 3089 00003578 8fdefffc lw r30,-4(r30) 3090 0000357c 4be00000 jr r31 3091 00003580 54000000 nop 3092 00003584 .endproc _MemoryCopySystemToUser 3093 00003584 .align 2 3094 00003584 .proc _MemoryCopyUserToSystem 3095 00003584 .global _MemoryCopyUserToSystem 3096 00003584 _MemoryCopyUserToSystem: 3097 ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. 3098 00003584 afbefffc sw -4(r29),r30; push fp 3099 00003588 001df020 add r30,r0,r29; fp = sp 3100 0000358c afbffff8 sw -8(r29),r31; push ret addr 3101 00003590 2fbd0028 subui r29,r29,#40; alloc local storage 3102 00003594 afa20000 sw 0(r29),r2 3103 00003598 afa30004 sw 4(r29),r3 3104 0000359c afa40008 sw 8(r29),r4 3105 000035a0 afa5000c sw 12(r29),r5 3106 000035a4 afa60010 sw 16(r29),r6 3107 000035a8 afa70014 sw 20(r29),r7 3108 000035ac afa80018 sw 24(r29),r8 3109 000035b0 afa9001c sw 28(r29),r9 3110 000035b4 8fc70000 lw r7,(r30) 3111 000035b8 8fc50008 lw r5,8(r30) 3112 000035bc 8fc40004 lw r4,4(r30) 3113 000035c0 8fc3000c lw r3,12(r30) 3114 000035c4 20060000 addi r6,r0,#0 3115 000035c8 6c610000 sgti r1,r3,#0 3116 000035cc 102000a4 beqz r1,L191_LF3 3117 000035d0 54000000 nop; not filled. 3118 000035d4 3c080001 lhi r8,#1 3119 000035d8 25080000 addui r8,r8,#0 3120 000035dc L192_LF3: 3121 000035dc 58820010 srli r2,r4,#0x10 3122 000035e0 309fffff andi r31,r4,#0xffff 3123 000035e4 8ce10064 lw r1,100(r7) 3124 000035e8 0041082b sgt r1,r2,r1 3125 000035ec 10200010 beqz r1,L194_LF3 3126 000035f0 54000000 nop; not filled. 3127 000035f4 201f0000 addi r31,r0,#0 3128 000035f8 0800001c j L193_LF3 3129 000035fc 54000000 nop; not filled. 3130 00003600 L194_LF3: 3131 00003600 50410002 slli r1,r2,#0x2 3132 00003604 00270820 add r1,r1,r7 3133 00003608 8c210060 lw r1,96(r1) 3134 0000360c 2009fff8 addi r9,r0,#-8 3135 00003610 00290824 and r1,r1,r9 3136 00003614 003ff820 add r31,r1,r31 3137 00003618 L193_LF3: 3138 00003618 67e10000 snei r1,r31,#0 3139 0000361c 10200054 beqz r1,L191_LF3 3140 00003620 54000000 nop; not filled. 3141 00003624 33e1ffff andi r1,r31,#65535 3142 00003628 01011022 sub r2,r8,r1 3143 0000362c 0043082b sgt r1,r2,r3 3144 00003630 10200008 beqz r1,L197_LF3 3145 00003634 54000000 nop; not filled. 3146 00003638 00031020 add r2,r0,r3 3147 0000363c L197_LF3: 3148 0000363c 23bdfff0 addi r29,r29,#-16 3149 00003640 afbf0000 sw (r29),r31 3150 00003644 afa50004 sw 4(r29),r5 3151 00003648 afa20008 sw 8(r29),r2 3152 0000364c 0c000b74 jal _bcopy 3153 00003650 54000000 nop; not filled. 3154 00003654 23bd0010 addi r29,r29,#16 3155 00003658 00621822 sub r3,r3,r2 3156 0000365c 00c23020 add r6,r6,r2 3157 00003660 00a22820 add r5,r5,r2 3158 00003664 00822020 add r4,r4,r2 3159 00003668 6c610000 sgti r1,r3,#0 3160 0000366c 1420ff6c bnez r1,L192_LF3 3161 00003670 54000000 nop; not filled. 3162 00003674 L191_LF3: 3163 00003674 00060820 add r1,r0,r6 3164 00003678 8fa20000 lw r2,0(r29) 3165 0000367c 8fa30004 lw r3,4(r29) 3166 00003680 8fa40008 lw r4,8(r29) 3167 00003684 8fa5000c lw r5,12(r29) 3168 00003688 8fa60010 lw r6,16(r29) 3169 0000368c 8fa70014 lw r7,20(r29) 3170 00003690 8fa80018 lw r8,24(r29) 3171 00003694 8fa9001c lw r9,28(r29) 3172 00003698 8fdffff8 lw r31,-8(r30) 3173 0000369c 001ee820 add r29,r0,r30 3174 000036a0 8fdefffc lw r30,-4(r30) 3175 000036a4 4be00000 jr r31 3176 000036a8 54000000 nop 3177 000036ac .endproc _MemoryCopyUserToSystem 3178 000036ac .align 2 3179 000036ac .proc _MemorySetupPte 3180 000036ac .global _MemorySetupPte 3181 000036ac _MemorySetupPte: 3182 ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. 3183 000036ac afbefffc sw -4(r29),r30; push fp 3184 000036b0 001df020 add r30,r0,r29; fp = sp 3185 000036b4 afbffff8 sw -8(r29),r31; push ret addr 3186 000036b8 2fbd0008 subui r29,r29,#8; alloc local storage 3187 000036bc 8fc10000 lw r1,(r30) 3188 000036c0 50210010 slli r1,r1,#0x10 3189 000036c4 34210001 ori r1,r1,#1 3190 000036c8 8fdffff8 lw r31,-8(r30) 3191 000036cc 001ee820 add r29,r0,r30 3192 000036d0 8fdefffc lw r30,-4(r30) 3193 000036d4 4be00000 jr r31 3194 000036d8 54000000 nop 3195 000036dc .endproc _MemorySetupPte 3196 000036dc .align 2 3197 000036dc .proc _MemoryFreePte 3198 000036dc .global _MemoryFreePte 3199 000036dc _MemoryFreePte: 3200 ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. 3201 000036dc afbefffc sw -4(r29),r30; push fp 3202 000036e0 001df020 add r30,r0,r29; fp = sp 3203 000036e4 afbffff8 sw -8(r29),r31; push ret addr 3204 000036e8 2fbd0008 subui r29,r29,#8; alloc local storage 3205 000036ec 23bdfff8 addi r29,r29,#-8 3206 000036f0 97c10000 lhu r1,(r30) 3207 000036f4 afa10000 sw (r29),r1 3208 000036f8 0ffffb14 jal _MemoryFreePage 3209 000036fc 54000000 nop; not filled. 3210 00003700 23bd0008 addi r29,r29,#8 3211 00003704 8fdffff8 lw r31,-8(r30) 3212 00003708 001ee820 add r29,r0,r30 3213 0000370c 8fdefffc lw r30,-4(r30) 3214 00003710 4be00000 jr r31 3215 00003714 54000000 nop 3216 00003718 .endproc _MemoryFreePte 3217 00003718 .align 2 3218 00003718 .proc _MemoryPteToPage 3219 00003718 .global _MemoryPteToPage 3220 00003718 _MemoryPteToPage: 3221 ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. 3222 00003718 afbefffc sw -4(r29),r30; push fp 3223 0000371c 001df020 add r30,r0,r29; fp = sp 3224 00003720 afbffff8 sw -8(r29),r31; push ret addr 3225 00003724 2fbd0008 subui r29,r29,#8; alloc local storage 3226 00003728 8fc10000 lw r1,(r30) 3227 0000372c 201ffff8 addi r31,r0,#-8 3228 00003730 003f0824 and r1,r1,r31 3229 00003734 8fdffff8 lw r31,-8(r30) 3230 00003738 001ee820 add r29,r0,r30 3231 0000373c 8fdefffc lw r30,-4(r30) 3232 00003740 4be00000 jr r31 3233 00003744 54000000 nop 3234 00003748 .endproc _MemoryPteToPage 3235 00003748 .data 3236 0000e3f0 .align 2 3237 0000e3f0 _invalidOps61_LF3: 3238 0000e3f0 00003404 .word 13316 3239 0000e3f4 .align 2 3240 0000e3f4 LC8_LF3: 3241 0000e3f4 4f706572 .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" 3241 0000e3f8 616e6420 3241 0000e3fc 666f7220 3241 0000e400 696e7374 3241 0000e404 72756374 3241 0000e408 696f6e20 3241 0000e40c 25303878 3241 0000e410 20697320 3241 0000e414 30782578 3241 0000e418 20287265 3241 0000e41c 673d3c25 3241 0000e420 642c3078 3241 0000e424 25783e29 3241 0000e428 0a00 3242 0000e42a .text 3243 00003748 .align 2 3244 00003748 .proc _MemoryGetOperandAddress 3245 00003748 .global _MemoryGetOperandAddress 3246 00003748 _MemoryGetOperandAddress: 3247 ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. 3248 00003748 afbefffc sw -4(r29),r30; push fp 3249 0000374c 001df020 add r30,r0,r29; fp = sp 3250 00003750 afbffff8 sw -8(r29),r31; push ret addr 3251 00003754 2fbd0020 subui r29,r29,#32; alloc local storage 3252 00003758 afa20000 sw 0(r29),r2 3253 0000375c afa30004 sw 4(r29),r3 3254 00003760 afa40008 sw 8(r29),r4 3255 00003764 afa5000c sw 12(r29),r5 3256 00003768 afa60010 sw 16(r29),r6 3257 0000376c afa70014 sw 20(r29),r7 3258 00003770 8fc20000 lw r2,(r30) 3259 00003774 8fc50004 lw r5,4(r30) 3260 00003778 58a1001a srli r1,r5,#0x1a 3261 0000377c 203fffe0 addi r31,r1,#-32 3262 00003780 6fe1000f sgtui r1,r31,#15 3263 00003784 14200020 bnez r1,L214_LF3 3264 00003788 54000000 nop; not filled. 3265 0000378c 3c010000 lhi r1,((_invalidOps61_LF3)>>16)&0xffff 3266 00003790 2421e3f0 addui r1,r1,(_invalidOps61_LF3)&0xffff 3267 00003794 8c210000 lw r1,(r1) 3268 00003798 003f0806 srl r1,r1,r31 3269 0000379c 30210001 andi r1,r1,#1 3270 000037a0 10200010 beqz r1,L213_LF3 3271 000037a4 54000000 nop; not filled. 3272 000037a8 L214_LF3: 3273 000037a8 2001ffff addi r1,r0,#-1 3274 000037ac 080000c4 j L218_LF3 3275 000037b0 54000000 nop; not filled. 3276 000037b4 L213_LF3: 3277 000037b4 58a10015 srli r1,r5,#0x15 3278 000037b8 3026001f andi r6,r1,#31 3279 000037bc 30bfffff andi r31,r5,#0xffff 3280 000037c0 5be1000f srli r1,r31,#0xf 3281 000037c4 10200010 beqz r1,L215_LF3 3282 000037c8 54000000 nop; not filled. 3283 000037cc 3c07ffff lhi r7,#-1 3284 000037d0 24e70000 addui r7,r7,#0 3285 000037d4 03e7f825 or r31,r31,r7 3286 000037d8 L215_LF3: 3287 000037d8 8c420000 lw r2,(r2) 3288 000037dc 50c10002 slli r1,r6,#0x2 3289 000037e0 00220820 add r1,r1,r2 3290 000037e4 8c230028 lw r3,40(r1) 3291 000037e8 007f2020 add r4,r3,r31 3292 000037ec 23bdfff8 addi r29,r29,#-8 3293 000037f0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3294 000037f4 24420d78 addui r2,r2,(_debugstr)&0xffff 3295 000037f8 afa20000 sw (r29),r2 3296 000037fc 2007006d addi r7,r0,#109 3297 00003800 afa70004 sw 4(r29),r7 3298 00003804 0c00062c jal _dindex 3299 00003808 54000000 nop; not filled. 3300 0000380c 23bd0008 addi r29,r29,#8 3301 00003810 64210000 snei r1,r1,#0 3302 00003814 1420002c bnez r1,L217_LF3 3303 00003818 54000000 nop; not filled. 3304 0000381c 23bdfff8 addi r29,r29,#-8 3305 00003820 afa20000 sw (r29),r2 3306 00003824 2007002b addi r7,r0,#43 3307 00003828 afa70004 sw 4(r29),r7 3308 0000382c 0c000604 jal _dindex 3309 00003830 54000000 nop; not filled. 3310 00003834 23bd0008 addi r29,r29,#8 3311 00003838 64210000 snei r1,r1,#0 3312 0000383c 10200030 beqz r1,L216_LF3 3313 00003840 54000000 nop; not filled. 3314 00003844 L217_LF3: 3315 00003844 23bdffe8 addi r29,r29,#-24 3316 00003848 3c070000 lhi r7,((LC8_LF3)>>16)&0xffff 3317 0000384c 24e7e3f4 addui r7,r7,(LC8_LF3)&0xffff 3318 00003850 afa70000 sw (r29),r7 3319 00003854 afa50004 sw 4(r29),r5 3320 00003858 afa40008 sw 8(r29),r4 3321 0000385c afa6000c sw 12(r29),r6 3322 00003860 afa30010 sw 16(r29),r3 3323 00003864 0c007868 jal _printf 3324 00003868 54000000 nop; not filled. 3325 0000386c 23bd0018 addi r29,r29,#24 3326 00003870 L216_LF3: 3327 00003870 00040820 add r1,r0,r4 3328 00003874 L218_LF3: 3329 00003874 8fa20000 lw r2,0(r29) 3330 00003878 8fa30004 lw r3,4(r29) 3331 0000387c 8fa40008 lw r4,8(r29) 3332 00003880 8fa5000c lw r5,12(r29) 3333 00003884 8fa60010 lw r6,16(r29) 3334 00003888 8fa70014 lw r7,20(r29) 3335 0000388c 8fdffff8 lw r31,-8(r30) 3336 00003890 001ee820 add r29,r0,r30 3337 00003894 8fdefffc lw r30,-4(r30) 3338 00003898 4be00000 jr r31 3339 0000389c 54000000 nop 3340 000038a0 .endproc _MemoryGetOperandAddress 3341 000038a0 .data 3342 0000e42a .align 2 3343 0000e42c _pagestart_LF3: 3344 0000e42c .space 4 3345 0000e430 .align 2 3346 0000e430 _freemapmax_LF3: 3347 0000e430 .space 4 3348 0000e434 .align 2 3349 0000e434 _nfreepages_LF3: 3350 0000e434 .space 4 3351 0000e438 .align 2 3352 0000e438 _freepages_LF3: 3353 0000e438 .space 8192 3354 ; Compiled by GCC 3355 00010438 .text 3356 000038a0 .align 2 3357 000038a0 .proc _isspace 3358 000038a0 .global _isspace 3359 000038a0 _isspace: 3360 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 3361 000038a0 afbefffc sw -4(r29),r30; push fp 3362 000038a4 001df020 add r30,r0,r29; fp = sp 3363 000038a8 afbffff8 sw -8(r29),r31; push ret addr 3364 000038ac 2fbd0010 subui r29,r29,#16; alloc local storage 3365 000038b0 afa20000 sw 0(r29),r2 3366 000038b4 83c20003 lb r2,3(r30) 3367 000038b8 201f0000 addi r31,r0,#0 3368 000038bc 304100ff andi r1,r2,#0x00ff 3369 000038c0 60210020 seqi r1,r1,#32 3370 000038c4 14200018 bnez r1,L6_LF4 3371 000038c8 54000000 nop; not filled. 3372 000038cc 2041fff7 addi r1,r2,#-9 3373 000038d0 302100ff andi r1,r1,#0x00ff 3374 000038d4 70210001 sleui r1,r1,#1 3375 000038d8 10200008 beqz r1,L5_LF4 3376 000038dc 54000000 nop; not filled. 3377 000038e0 L6_LF4: 3378 000038e0 201f0001 addi r31,r0,#1 3379 000038e4 L5_LF4: 3380 000038e4 001f0820 add r1,r0,r31 3381 000038e8 8fa20000 lw r2,0(r29) 3382 000038ec 8fdffff8 lw r31,-8(r30) 3383 000038f0 001ee820 add r29,r0,r30 3384 000038f4 8fdefffc lw r30,-4(r30) 3385 000038f8 4be00000 jr r31 3386 000038fc 54000000 nop 3387 00003900 .endproc _isspace 3388 00003900 .align 2 3389 00003900 .proc _isxdigit 3390 00003900 .global _isxdigit 3391 00003900 _isxdigit: 3392 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 3393 00003900 afbefffc sw -4(r29),r30; push fp 3394 00003904 001df020 add r30,r0,r29; fp = sp 3395 00003908 afbffff8 sw -8(r29),r31; push ret addr 3396 0000390c 2fbd0010 subui r29,r29,#16; alloc local storage 3397 00003910 afa20000 sw 0(r29),r2 3398 00003914 83df0003 lb r31,3(r30) 3399 00003918 20020000 addi r2,r0,#0 3400 0000391c 23e1ffd0 addi r1,r31,#-48 3401 00003920 302100ff andi r1,r1,#0x00ff 3402 00003924 70210009 sleui r1,r1,#9 3403 00003928 14200028 bnez r1,L12_LF4 3404 0000392c 54000000 nop; not filled. 3405 00003930 23e1ff9f addi r1,r31,#-97 3406 00003934 302100ff andi r1,r1,#0x00ff 3407 00003938 70210005 sleui r1,r1,#5 3408 0000393c 14200014 bnez r1,L12_LF4 3409 00003940 54000000 nop; not filled. 3410 00003944 33e100ff andi r1,r31,#0x00ff 3411 00003948 64210041 snei r1,r1,#65 3412 0000394c 14200008 bnez r1,L11_LF4 3413 00003950 54000000 nop; not filled. 3414 00003954 L12_LF4: 3415 00003954 20020001 addi r2,r0,#1 3416 00003958 L11_LF4: 3417 00003958 00020820 add r1,r0,r2 3418 0000395c 8fa20000 lw r2,0(r29) 3419 00003960 8fdffff8 lw r31,-8(r30) 3420 00003964 001ee820 add r29,r0,r30 3421 00003968 8fdefffc lw r30,-4(r30) 3422 0000396c 4be00000 jr r31 3423 00003970 54000000 nop 3424 00003974 .endproc _isxdigit 3425 00003974 .align 2 3426 00003974 .proc _dstrcpy 3427 00003974 .global _dstrcpy 3428 00003974 _dstrcpy: 3429 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 3430 00003974 afbefffc sw -4(r29),r30; push fp 3431 00003978 001df020 add r30,r0,r29; fp = sp 3432 0000397c afbffff8 sw -8(r29),r31; push ret addr 3433 00003980 2fbd0010 subui r29,r29,#16; alloc local storage 3434 00003984 afa20000 sw 0(r29),r2 3435 00003988 afa30004 sw 4(r29),r3 3436 0000398c 8fdf0000 lw r31,(r30) 3437 00003990 8fc20004 lw r2,4(r30) 3438 00003994 001f1820 add r3,r0,r31 3439 00003998 L19_LF4: 3440 00003998 80410000 lb r1,(r2) 3441 0000399c a3e10000 sb (r31),r1 3442 000039a0 20420001 addi r2,r2,#1 3443 000039a4 23ff0001 addi r31,r31,#1 3444 000039a8 302100ff andi r1,r1,#0x00ff 3445 000039ac 64210000 snei r1,r1,#0 3446 000039b0 1420ffe4 bnez r1,L19_LF4 3447 000039b4 54000000 nop; not filled. 3448 000039b8 00030820 add r1,r0,r3 3449 000039bc 8fa20000 lw r2,0(r29) 3450 000039c0 8fa30004 lw r3,4(r29) 3451 000039c4 8fdffff8 lw r31,-8(r30) 3452 000039c8 001ee820 add r29,r0,r30 3453 000039cc 8fdefffc lw r30,-4(r30) 3454 000039d0 4be00000 jr r31 3455 000039d4 54000000 nop 3456 000039d8 .endproc _dstrcpy 3457 000039d8 .align 2 3458 000039d8 .proc _dstrncpy 3459 000039d8 .global _dstrncpy 3460 000039d8 _dstrncpy: 3461 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 3462 000039d8 afbefffc sw -4(r29),r30; push fp 3463 000039dc 001df020 add r30,r0,r29; fp = sp 3464 000039e0 afbffff8 sw -8(r29),r31; push ret addr 3465 000039e4 2fbd0018 subui r29,r29,#24; alloc local storage 3466 000039e8 afa20000 sw 0(r29),r2 3467 000039ec afa30004 sw 4(r29),r3 3468 000039f0 afa40008 sw 8(r29),r4 3469 000039f4 8fc20000 lw r2,(r30) 3470 000039f8 8fc30004 lw r3,4(r30) 3471 000039fc 8fdf0008 lw r31,8(r30) 3472 00003a00 00022020 add r4,r0,r2 3473 00003a04 08000024 j L37_LF4 3474 00003a08 54000000 nop; not filled. 3475 00003a0c L34_LF4: 3476 00003a0c 80610000 lb r1,(r3) 3477 00003a10 a0410000 sb (r2),r1 3478 00003a14 20630001 addi r3,r3,#1 3479 00003a18 20420001 addi r2,r2,#1 3480 00003a1c 302100ff andi r1,r1,#0x00ff 3481 00003a20 64210000 snei r1,r1,#0 3482 00003a24 10200018 beqz r1,L32_LF4 3483 00003a28 54000000 nop; not filled. 3484 00003a2c L37_LF4: 3485 00003a2c 001f0820 add r1,r0,r31 3486 00003a30 23ffffff addi r31,r31,#-1 3487 00003a34 70210000 slei r1,r1,#0 3488 00003a38 1020ffd0 beqz r1,L34_LF4 3489 00003a3c 54000000 nop; not filled. 3490 00003a40 L32_LF4: 3491 00003a40 00040820 add r1,r0,r4 3492 00003a44 8fa20000 lw r2,0(r29) 3493 00003a48 8fa30004 lw r3,4(r29) 3494 00003a4c 8fa40008 lw r4,8(r29) 3495 00003a50 8fdffff8 lw r31,-8(r30) 3496 00003a54 001ee820 add r29,r0,r30 3497 00003a58 8fdefffc lw r30,-4(r30) 3498 00003a5c 4be00000 jr r31 3499 00003a60 54000000 nop 3500 00003a64 .endproc _dstrncpy 3501 00003a64 .align 2 3502 00003a64 .proc _dstrcat 3503 00003a64 .global _dstrcat 3504 00003a64 _dstrcat: 3505 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 3506 00003a64 afbefffc sw -4(r29),r30; push fp 3507 00003a68 001df020 add r30,r0,r29; fp = sp 3508 00003a6c afbffff8 sw -8(r29),r31; push ret addr 3509 00003a70 2fbd0010 subui r29,r29,#16; alloc local storage 3510 00003a74 afa20000 sw 0(r29),r2 3511 00003a78 afa30004 sw 4(r29),r3 3512 00003a7c 8fdf0000 lw r31,(r30) 3513 00003a80 001f1820 add r3,r0,r31 3514 00003a84 90610000 lbu r1,(r3) 3515 00003a88 64210000 snei r1,r1,#0 3516 00003a8c 10200018 beqz r1,L50_LF4 3517 00003a90 54000000 nop; not filled. 3518 00003a94 L51_LF4: 3519 00003a94 23ff0001 addi r31,r31,#1 3520 00003a98 93e10000 lbu r1,(r31) 3521 00003a9c 64210000 snei r1,r1,#0 3522 00003aa0 1420fff0 bnez r1,L51_LF4 3523 00003aa4 54000000 nop; not filled. 3524 00003aa8 L50_LF4: 3525 00003aa8 001f1020 add r2,r0,r31 3526 00003aac 8fdf0004 lw r31,4(r30) 3527 00003ab0 L54_LF4: 3528 00003ab0 83e10000 lb r1,(r31) 3529 00003ab4 a0410000 sb (r2),r1 3530 00003ab8 23ff0001 addi r31,r31,#1 3531 00003abc 20420001 addi r2,r2,#1 3532 00003ac0 302100ff andi r1,r1,#0x00ff 3533 00003ac4 64210000 snei r1,r1,#0 3534 00003ac8 1420ffe4 bnez r1,L54_LF4 3535 00003acc 54000000 nop; not filled. 3536 00003ad0 00030820 add r1,r0,r3 3537 00003ad4 8fa20000 lw r2,0(r29) 3538 00003ad8 8fa30004 lw r3,4(r29) 3539 00003adc 8fdffff8 lw r31,-8(r30) 3540 00003ae0 001ee820 add r29,r0,r30 3541 00003ae4 8fdefffc lw r30,-4(r30) 3542 00003ae8 4be00000 jr r31 3543 00003aec 54000000 nop 3544 00003af0 .endproc _dstrcat 3545 00003af0 .align 2 3546 00003af0 .proc _dstrncmp 3547 00003af0 .global _dstrncmp 3548 00003af0 _dstrncmp: 3549 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 3550 00003af0 afbefffc sw -4(r29),r30; push fp 3551 00003af4 001df020 add r30,r0,r29; fp = sp 3552 00003af8 afbffff8 sw -8(r29),r31; push ret addr 3553 00003afc 2fbd0018 subui r29,r29,#24; alloc local storage 3554 00003b00 afa20000 sw 0(r29),r2 3555 00003b04 afa30004 sw 4(r29),r3 3556 00003b08 afa40008 sw 8(r29),r4 3557 00003b0c afa5000c sw 12(r29),r5 3558 00003b10 8fc30000 lw r3,(r30) 3559 00003b14 8fc40004 lw r4,4(r30) 3560 00003b18 8fc50008 lw r5,8(r30) 3561 00003b1c 20020000 addi r2,r0,#0 3562 00003b20 0045082a slt r1,r2,r5 3563 00003b24 1020003c beqz r1,L73_LF4 3564 00003b28 54000000 nop; not filled. 3565 00003b2c L75_LF4: 3566 00003b2c 909f0000 lbu r31,(r4) 3567 00003b30 67e10000 snei r1,r31,#0 3568 00003b34 10200038 beqz r1,L86_LF4 3569 00003b38 54000000 nop; not filled. 3570 00003b3c 90610000 lbu r1,(r3) 3571 00003b40 003f0829 sne r1,r1,r31 3572 00003b44 1420001c bnez r1,L73_LF4 3573 00003b48 54000000 nop; not filled. 3574 00003b4c 20630001 addi r3,r3,#1 3575 00003b50 20840001 addi r4,r4,#1 3576 00003b54 20420001 addi r2,r2,#1 3577 00003b58 0045082a slt r1,r2,r5 3578 00003b5c 1420ffcc bnez r1,L75_LF4 3579 00003b60 54000000 nop; not filled. 3580 00003b64 L73_LF4: 3581 00003b64 00450828 seq r1,r2,r5 3582 00003b68 10200010 beqz r1,L80_LF4 3583 00003b6c 54000000 nop; not filled. 3584 00003b70 L86_LF4: 3585 00003b70 20010000 addi r1,r0,#0 3586 00003b74 08000028 j L84_LF4 3587 00003b78 54000000 nop; not filled. 3588 00003b7c L80_LF4: 3589 00003b7c 907f0000 lbu r31,(r3) 3590 00003b80 90830000 lbu r3,(r4) 3591 00003b84 03e30822 sub r1,r31,r3 3592 00003b88 74210000 sgei r1,r1,#0 3593 00003b8c 2002ffff addi r2,r0,#-1 3594 00003b90 10200008 beqz r1,L82_LF4 3595 00003b94 54000000 nop; not filled. 3596 00003b98 03e31029 sne r2,r31,r3 3597 00003b9c L82_LF4: 3598 00003b9c 00020820 add r1,r0,r2 3599 00003ba0 L84_LF4: 3600 00003ba0 8fa20000 lw r2,0(r29) 3601 00003ba4 8fa30004 lw r3,4(r29) 3602 00003ba8 8fa40008 lw r4,8(r29) 3603 00003bac 8fa5000c lw r5,12(r29) 3604 00003bb0 8fdffff8 lw r31,-8(r30) 3605 00003bb4 001ee820 add r29,r0,r30 3606 00003bb8 8fdefffc lw r30,-4(r30) 3607 00003bbc 4be00000 jr r31 3608 00003bc0 54000000 nop 3609 00003bc4 .endproc _dstrncmp 3610 00003bc4 .align 2 3611 00003bc4 .proc _dstrlen 3612 00003bc4 .global _dstrlen 3613 00003bc4 _dstrlen: 3614 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 3615 00003bc4 afbefffc sw -4(r29),r30; push fp 3616 00003bc8 001df020 add r30,r0,r29; fp = sp 3617 00003bcc afbffff8 sw -8(r29),r31; push ret addr 3618 00003bd0 2fbd0010 subui r29,r29,#16; alloc local storage 3619 00003bd4 afa20000 sw 0(r29),r2 3620 00003bd8 8fdf0000 lw r31,(r30) 3621 00003bdc 20020000 addi r2,r0,#0 3622 00003be0 08000008 j L97_LF4 3623 00003be4 54000000 nop; not filled. 3624 00003be8 L95_LF4: 3625 00003be8 20420001 addi r2,r2,#1 3626 00003bec L97_LF4: 3627 00003bec 93e10000 lbu r1,(r31) 3628 00003bf0 23ff0001 addi r31,r31,#1 3629 00003bf4 64210000 snei r1,r1,#0 3630 00003bf8 1420ffec bnez r1,L95_LF4 3631 00003bfc 54000000 nop; not filled. 3632 00003c00 00020820 add r1,r0,r2 3633 00003c04 8fa20000 lw r2,0(r29) 3634 00003c08 8fdffff8 lw r31,-8(r30) 3635 00003c0c 001ee820 add r29,r0,r30 3636 00003c10 8fdefffc lw r30,-4(r30) 3637 00003c14 4be00000 jr r31 3638 00003c18 54000000 nop 3639 00003c1c .endproc _dstrlen 3640 00003c1c .align 2 3641 00003c1c .proc _dstrstr 3642 00003c1c .global _dstrstr 3643 00003c1c _dstrstr: 3644 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 3645 00003c1c afbefffc sw -4(r29),r30; push fp 3646 00003c20 001df020 add r30,r0,r29; fp = sp 3647 00003c24 afbffff8 sw -8(r29),r31; push ret addr 3648 00003c28 2fbd0020 subui r29,r29,#32; alloc local storage 3649 00003c2c afa20000 sw 0(r29),r2 3650 00003c30 afa30004 sw 4(r29),r3 3651 00003c34 afa40008 sw 8(r29),r4 3652 00003c38 afa5000c sw 12(r29),r5 3653 00003c3c afa60010 sw 16(r29),r6 3654 00003c40 afa70014 sw 20(r29),r7 3655 00003c44 8fc50000 lw r5,(r30) 3656 00003c48 8fc70004 lw r7,4(r30) 3657 00003c4c 20030000 addi r3,r0,#0 3658 00003c50 90e10000 lbu r1,(r7) 3659 00003c54 20e20001 addi r2,r7,#1 3660 00003c58 64210000 snei r1,r1,#0 3661 00003c5c 1020001c beqz r1,L125_LF4 3662 00003c60 54000000 nop; not filled. 3663 00003c64 L126_LF4: 3664 00003c64 20630001 addi r3,r3,#1 3665 00003c68 90410000 lbu r1,(r2) 3666 00003c6c 20420001 addi r2,r2,#1 3667 00003c70 64210000 snei r1,r1,#0 3668 00003c74 1420ffec bnez r1,L126_LF4 3669 00003c78 54000000 nop; not filled. 3670 00003c7c L125_LF4: 3671 00003c7c 00033020 add r6,r0,r3 3672 00003c80 080000ac j L149_LF4 3673 00003c84 54000000 nop; not filled. 3674 00003c88 L130_LF4: 3675 00003c88 00051820 add r3,r0,r5 3676 00003c8c 00072020 add r4,r0,r7 3677 00003c90 20020000 addi r2,r0,#0 3678 00003c94 0046082a slt r1,r2,r6 3679 00003c98 1020003c beqz r1,L134_LF4 3680 00003c9c 54000000 nop; not filled. 3681 00003ca0 L136_LF4: 3682 00003ca0 909f0000 lbu r31,(r4) 3683 00003ca4 67e10000 snei r1,r31,#0 3684 00003ca8 10200038 beqz r1,L150_LF4 3685 00003cac 54000000 nop; not filled. 3686 00003cb0 90610000 lbu r1,(r3) 3687 00003cb4 003f0829 sne r1,r1,r31 3688 00003cb8 1420001c bnez r1,L134_LF4 3689 00003cbc 54000000 nop; not filled. 3690 00003cc0 20630001 addi r3,r3,#1 3691 00003cc4 20840001 addi r4,r4,#1 3692 00003cc8 20420001 addi r2,r2,#1 3693 00003ccc 0046082a slt r1,r2,r6 3694 00003cd0 1420ffcc bnez r1,L136_LF4 3695 00003cd4 54000000 nop; not filled. 3696 00003cd8 L134_LF4: 3697 00003cd8 00460828 seq r1,r2,r6 3698 00003cdc 10200010 beqz r1,L141_LF4 3699 00003ce0 54000000 nop; not filled. 3700 00003ce4 L150_LF4: 3701 00003ce4 20010000 addi r1,r0,#0 3702 00003ce8 08000028 j L132_LF4 3703 00003cec 54000000 nop; not filled. 3704 00003cf0 L141_LF4: 3705 00003cf0 90630000 lbu r3,(r3) 3706 00003cf4 90820000 lbu r2,(r4) 3707 00003cf8 00620822 sub r1,r3,r2 3708 00003cfc 74210000 sgei r1,r1,#0 3709 00003d00 201fffff addi r31,r0,#-1 3710 00003d04 10200008 beqz r1,L143_LF4 3711 00003d08 54000000 nop; not filled. 3712 00003d0c 0062f829 sne r31,r3,r2 3713 00003d10 L143_LF4: 3714 00003d10 001f0820 add r1,r0,r31 3715 00003d14 L132_LF4: 3716 00003d14 64210000 snei r1,r1,#0 3717 00003d18 14200010 bnez r1,L131_LF4 3718 00003d1c 54000000 nop; not filled. 3719 00003d20 00050820 add r1,r0,r5 3720 00003d24 0800001c j L146_LF4 3721 00003d28 54000000 nop; not filled. 3722 00003d2c L131_LF4: 3723 00003d2c 20a50001 addi r5,r5,#1 3724 00003d30 L149_LF4: 3725 00003d30 90a10000 lbu r1,(r5) 3726 00003d34 64210000 snei r1,r1,#0 3727 00003d38 1420ff4c bnez r1,L130_LF4 3728 00003d3c 54000000 nop; not filled. 3729 00003d40 20010000 addi r1,r0,#0 3730 00003d44 L146_LF4: 3731 00003d44 8fa20000 lw r2,0(r29) 3732 00003d48 8fa30004 lw r3,4(r29) 3733 00003d4c 8fa40008 lw r4,8(r29) 3734 00003d50 8fa5000c lw r5,12(r29) 3735 00003d54 8fa60010 lw r6,16(r29) 3736 00003d58 8fa70014 lw r7,20(r29) 3737 00003d5c 8fdffff8 lw r31,-8(r30) 3738 00003d60 001ee820 add r29,r0,r30 3739 00003d64 8fdefffc lw r30,-4(r30) 3740 00003d68 4be00000 jr r31 3741 00003d6c 54000000 nop 3742 00003d70 .endproc _dstrstr 3743 00003d70 .align 2 3744 00003d70 .proc _dmindex 3745 00003d70 .global _dmindex 3746 00003d70 _dmindex: 3747 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 3748 00003d70 afbefffc sw -4(r29),r30; push fp 3749 00003d74 001df020 add r30,r0,r29; fp = sp 3750 00003d78 afbffff8 sw -8(r29),r31; push ret addr 3751 00003d7c 2fbd0020 subui r29,r29,#32; alloc local storage 3752 00003d80 afa20000 sw 0(r29),r2 3753 00003d84 afa30004 sw 4(r29),r3 3754 00003d88 afa40008 sw 8(r29),r4 3755 00003d8c afa5000c sw 12(r29),r5 3756 00003d90 afa60010 sw 16(r29),r6 3757 00003d94 8fc40000 lw r4,(r30) 3758 00003d98 8fc60004 lw r6,4(r30) 3759 00003d9c 90810000 lbu r1,(r4) 3760 00003da0 64210000 snei r1,r1,#0 3761 00003da4 10200060 beqz r1,L164_LF4 3762 00003da8 54000000 nop; not filled. 3763 00003dac 00012820 add r5,r0,r1 3764 00003db0 L165_LF4: 3765 00003db0 00061020 add r2,r0,r6 3766 00003db4 80df0000 lb r31,(r6) 3767 00003db8 33e100ff andi r1,r31,#0x00ff 3768 00003dbc 64210000 snei r1,r1,#0 3769 00003dc0 1020003c beqz r1,L163_LF4 3770 00003dc4 54000000 nop; not filled. 3771 00003dc8 90830000 lbu r3,(r4) 3772 00003dcc L169_LF4: 3773 00003dcc 33e100ff andi r1,r31,#0x00ff 3774 00003dd0 00610828 seq r1,r3,r1 3775 00003dd4 10200010 beqz r1,L168_LF4 3776 00003dd8 54000000 nop; not filled. 3777 00003ddc 00040820 add r1,r0,r4 3778 00003de0 08000028 j L173_LF4 3779 00003de4 54000000 nop; not filled. 3780 00003de8 L168_LF4: 3781 00003de8 20420001 addi r2,r2,#1 3782 00003dec 805f0000 lb r31,(r2) 3783 00003df0 33e100ff andi r1,r31,#0x00ff 3784 00003df4 64210000 snei r1,r1,#0 3785 00003df8 1420ffd0 bnez r1,L169_LF4 3786 00003dfc 54000000 nop; not filled. 3787 00003e00 L163_LF4: 3788 00003e00 14a0ffac bnez r5,L165_LF4 3789 00003e04 54000000 nop; not filled. 3790 00003e08 L164_LF4: 3791 00003e08 20010000 addi r1,r0,#0 3792 00003e0c L173_LF4: 3793 00003e0c 8fa20000 lw r2,0(r29) 3794 00003e10 8fa30004 lw r3,4(r29) 3795 00003e14 8fa40008 lw r4,8(r29) 3796 00003e18 8fa5000c lw r5,12(r29) 3797 00003e1c 8fa60010 lw r6,16(r29) 3798 00003e20 8fdffff8 lw r31,-8(r30) 3799 00003e24 001ee820 add r29,r0,r30 3800 00003e28 8fdefffc lw r30,-4(r30) 3801 00003e2c 4be00000 jr r31 3802 00003e30 54000000 nop 3803 00003e34 .endproc _dmindex 3804 00003e34 .align 2 3805 00003e34 .proc _dindex 3806 00003e34 .global _dindex 3807 00003e34 _dindex: 3808 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 3809 00003e34 afbefffc sw -4(r29),r30; push fp 3810 00003e38 001df020 add r30,r0,r29; fp = sp 3811 00003e3c afbffff8 sw -8(r29),r31; push ret addr 3812 00003e40 2fbd0010 subui r29,r29,#16; alloc local storage 3813 00003e44 afa20000 sw 0(r29),r2 3814 00003e48 afa30004 sw 4(r29),r3 3815 00003e4c 8fc20000 lw r2,(r30) 3816 00003e50 8fc30004 lw r3,4(r30) 3817 00003e54 08000024 j L187_LF4 3818 00003e58 54000000 nop; not filled. 3819 00003e5c L183_LF4: 3820 00003e5c 33e100ff andi r1,r31,#0x00ff 3821 00003e60 00230828 seq r1,r1,r3 3822 00003e64 10200010 beqz r1,L184_LF4 3823 00003e68 54000000 nop; not filled. 3824 00003e6c 00020820 add r1,r0,r2 3825 00003e70 08000020 j L186_LF4 3826 00003e74 54000000 nop; not filled. 3827 00003e78 L184_LF4: 3828 00003e78 20420001 addi r2,r2,#1 3829 00003e7c L187_LF4: 3830 00003e7c 805f0000 lb r31,(r2) 3831 00003e80 33e100ff andi r1,r31,#0x00ff 3832 00003e84 64210000 snei r1,r1,#0 3833 00003e88 1420ffd0 bnez r1,L183_LF4 3834 00003e8c 54000000 nop; not filled. 3835 00003e90 20010000 addi r1,r0,#0 3836 00003e94 L186_LF4: 3837 00003e94 8fa20000 lw r2,0(r29) 3838 00003e98 8fa30004 lw r3,4(r29) 3839 00003e9c 8fdffff8 lw r31,-8(r30) 3840 00003ea0 001ee820 add r29,r0,r30 3841 00003ea4 8fdefffc lw r30,-4(r30) 3842 00003ea8 4be00000 jr r31 3843 00003eac 54000000 nop 3844 00003eb0 .endproc _dindex 3845 00003eb0 .align 2 3846 00003eb0 .proc _ditoa 3847 00003eb0 .global _ditoa 3848 00003eb0 _ditoa: 3849 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 3850 00003eb0 afbefffc sw -4(r29),r30; push fp 3851 00003eb4 001df020 add r30,r0,r29; fp = sp 3852 00003eb8 afbffff8 sw -8(r29),r31; push ret addr 3853 00003ebc 2fbd0020 subui r29,r29,#32; alloc local storage 3854 00003ec0 afa20000 sw 0(r29),r2 3855 00003ec4 afa30004 sw 4(r29),r3 3856 00003ec8 afa40008 sw 8(r29),r4 3857 00003ecc afa5000c sw 12(r29),r5 3858 00003ed0 afa60010 sw 16(r29),r6 3859 00003ed4 8fc30000 lw r3,(r30) 3860 00003ed8 8fc40004 lw r4,4(r30) 3861 00003edc 68610000 slti r1,r3,#0 3862 00003ee0 10200010 beqz r1,L203_LF4 3863 00003ee4 54000000 nop; not filled. 3864 00003ee8 2006002d addi r6,r0,(#0x2d)&0xff 3865 00003eec 08000014 j L216_LF4 3866 00003ef0 54000000 nop; not filled. 3867 00003ef4 L203_LF4: 3868 00003ef4 64610000 snei r1,r3,#0 3869 00003ef8 14200018 bnez r1,L205_LF4 3870 00003efc 54000000 nop; not filled. 3871 00003f00 20060030 addi r6,r0,(#0x30)&0xff 3872 00003f04 L216_LF4: 3873 00003f04 a0860000 sb (r4),r6 3874 00003f08 20840001 addi r4,r4,#1 3875 00003f0c 0800007c j L204_LF4 3876 00003f10 54000000 nop; not filled. 3877 00003f14 L205_LF4: 3878 00003f14 201f0001 addi r31,r0,#1 3879 00003f18 03e3082c sle r1,r31,r3 3880 00003f1c 1020001c beqz r1,L208_LF4 3881 00003f20 54000000 nop; not filled. 3882 00003f24 L209_LF4: 3883 00003f24 53e10002 slli r1,r31,#0x2 3884 00003f28 003f0820 add r1,r1,r31 3885 00003f2c 503f0001 slli r31,r1,#0x1 3886 00003f30 03e3082c sle r1,r31,r3 3887 00003f34 1420ffec bnez r1,L209_LF4 3888 00003f38 54000000 nop; not filled. 3889 00003f3c L208_LF4: 3890 00003f3c 2005000a addi r5,r0,#10 3891 00003f40 L212_LF4: 3892 00003f40 03e00035 movi2fp f0,r31 3893 00003f44 00a00835 movi2fp f1,r5 3894 00003f48 0401000f div f0,f0,f1 3895 00003f4c 0000f834 movfp2i r31,f0 3896 00003f50 00600035 movi2fp f0,r3 3897 00003f54 03e00835 movi2fp f1,r31 3898 00003f58 0401000f div f0,f0,f1 3899 00003f5c 00001034 movfp2i r2,f0 3900 00003f60 20410030 addi r1,r2,#48 3901 00003f64 a0810000 sb (r4),r1 3902 00003f68 20840001 addi r4,r4,#1 3903 00003f6c 00400035 movi2fp f0,r2 3904 00003f70 03e00835 movi2fp f1,r31 3905 00003f74 0401000e mult f0,f0,f1 3906 00003f78 00000834 movfp2i r1,f0 3907 00003f7c 00611822 sub r3,r3,r1 3908 00003f80 6fe10001 sgti r1,r31,#1 3909 00003f84 1420ffb8 bnez r1,L212_LF4 3910 00003f88 54000000 nop; not filled. 3911 00003f8c L204_LF4: 3912 00003f8c 20060000 addi r6,r0,(#0x0)&0xff 3913 00003f90 a0860000 sb (r4),r6 3914 00003f94 8fa20000 lw r2,0(r29) 3915 00003f98 8fa30004 lw r3,4(r29) 3916 00003f9c 8fa40008 lw r4,8(r29) 3917 00003fa0 8fa5000c lw r5,12(r29) 3918 00003fa4 8fa60010 lw r6,16(r29) 3919 00003fa8 8fdffff8 lw r31,-8(r30) 3920 00003fac 001ee820 add r29,r0,r30 3921 00003fb0 8fdefffc lw r30,-4(r30) 3922 00003fb4 4be00000 jr r31 3923 00003fb8 54000000 nop 3924 00003fbc .endproc _ditoa 3925 00003fbc .align 2 3926 00003fbc .proc _dstrtol 3927 00003fbc .global _dstrtol 3928 00003fbc _dstrtol: 3929 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 3930 00003fbc afbefffc sw -4(r29),r30; push fp 3931 00003fc0 001df020 add r30,r0,r29; fp = sp 3932 00003fc4 afbffff8 sw -8(r29),r31; push ret addr 3933 00003fc8 2fbd0020 subui r29,r29,#32; alloc local storage 3934 00003fcc afa20000 sw 0(r29),r2 3935 00003fd0 afa30004 sw 4(r29),r3 3936 00003fd4 afa40008 sw 8(r29),r4 3937 00003fd8 afa5000c sw 12(r29),r5 3938 00003fdc afa60010 sw 16(r29),r6 3939 00003fe0 8fc20000 lw r2,(r30) 3940 00003fe4 8fc50004 lw r5,4(r30) 3941 00003fe8 8fc40008 lw r4,8(r30) 3942 00003fec 20030000 addi r3,r0,#0 3943 00003ff0 08000008 j L247_LF4 3944 00003ff4 54000000 nop; not filled. 3945 00003ff8 L220_LF4: 3946 00003ff8 20420001 addi r2,r2,#1 3947 00003ffc L247_LF4: 3948 00003ffc 805f0000 lb r31,(r2) 3949 00004000 33e100ff andi r1,r31,#0x00ff 3950 00004004 60210020 seqi r1,r1,#32 3951 00004008 1420ffec bnez r1,L220_LF4 3952 0000400c 54000000 nop; not filled. 3953 00004010 23e1fff7 addi r1,r31,#-9 3954 00004014 302100ff andi r1,r1,#0x00ff 3955 00004018 70210001 sleui r1,r1,#1 3956 0000401c 1420ffd8 bnez r1,L220_LF4 3957 00004020 54000000 nop; not filled. 3958 00004024 64a10000 snei r1,r5,#0 3959 00004028 10200008 beqz r1,L222_LF4 3960 0000402c 54000000 nop; not filled. 3961 00004030 aca20000 sw (r5),r2 3962 00004034 L222_LF4: 3963 00004034 905f0000 lbu r31,(r2) 3964 00004038 67e10000 snei r1,r31,#0 3965 0000403c 10200090 beqz r1,L248_LF4 3966 00004040 54000000 nop; not filled. 3967 00004044 63e1002d seqi r1,r31,#45 3968 00004048 10200014 beqz r1,L224_LF4 3969 0000404c 54000000 nop; not filled. 3970 00004050 2006ffff addi r6,r0,#-1 3971 00004054 20420001 addi r2,r2,#1 3972 00004058 08000008 j L225_LF4 3973 0000405c 54000000 nop; not filled. 3974 00004060 L224_LF4: 3975 00004060 20060001 addi r6,r0,#1 3976 00004064 L225_LF4: 3977 00004064 64810000 snei r1,r4,#0 3978 00004068 14200054 bnez r1,L226_LF4 3979 0000406c 54000000 nop; not filled. 3980 00004070 90410000 lbu r1,(r2) 3981 00004074 60210030 seqi r1,r1,#48 3982 00004078 10200040 beqz r1,L227_LF4 3983 0000407c 54000000 nop; not filled. 3984 00004080 20420001 addi r2,r2,#1 3985 00004084 905f0000 lbu r31,(r2) 3986 00004088 63e10078 seqi r1,r31,#120 3987 0000408c 14200010 bnez r1,L229_LF4 3988 00004090 54000000 nop; not filled. 3989 00004094 63e10058 seqi r1,r31,#88 3990 00004098 10200014 beqz r1,L228_LF4 3991 0000409c 54000000 nop; not filled. 3992 000040a0 L229_LF4: 3993 000040a0 20040010 addi r4,r0,#16 3994 000040a4 20420001 addi r2,r2,#1 3995 000040a8 08000014 j L226_LF4 3996 000040ac 54000000 nop; not filled. 3997 000040b0 L228_LF4: 3998 000040b0 20040008 addi r4,r0,#8 3999 000040b4 08000008 j L226_LF4 4000 000040b8 54000000 nop; not filled. 4001 000040bc L227_LF4: 4002 000040bc 2004000a addi r4,r0,#10 4003 000040c0 L226_LF4: 4004 000040c0 2081ffff addi r1,r4,#-1 4005 000040c4 6c21000f sgtui r1,r1,#15 4006 000040c8 10200010 beqz r1,L233_LF4 4007 000040cc 54000000 nop; not filled. 4008 000040d0 L248_LF4: 4009 000040d0 00030820 add r1,r0,r3 4010 000040d4 080000c4 j L245_LF4 4011 000040d8 54000000 nop; not filled. 4012 000040dc L233_LF4: 4013 000040dc 805f0000 lb r31,(r2) 4014 000040e0 23e1ffd0 addi r1,r31,#-48 4015 000040e4 302100ff andi r1,r1,#0x00ff 4016 000040e8 70210009 sleui r1,r1,#9 4017 000040ec 10200014 beqz r1,L236_LF4 4018 000040f0 54000000 nop; not filled. 4019 000040f4 33e100ff andi r1,r31,#0x00ff 4020 000040f8 2021ffd0 addi r1,r1,#-48 4021 000040fc 08000050 j L237_LF4 4022 00004100 54000000 nop; not filled. 4023 00004104 L236_LF4: 4024 00004104 23e1ff9f addi r1,r31,#-97 4025 00004108 302100ff andi r1,r1,#0x00ff 4026 0000410c 70210019 sleui r1,r1,#25 4027 00004110 10200014 beqz r1,L238_LF4 4028 00004114 54000000 nop; not filled. 4029 00004118 33e100ff andi r1,r31,#0x00ff 4030 0000411c 2021ffa9 addi r1,r1,#-87 4031 00004120 0800002c j L237_LF4 4032 00004124 54000000 nop; not filled. 4033 00004128 L238_LF4: 4034 00004128 23e1ffbf addi r1,r31,#-65 4035 0000412c 302100ff andi r1,r1,#0x00ff 4036 00004130 70210019 sleui r1,r1,#25 4037 00004134 10200014 beqz r1,L240_LF4 4038 00004138 54000000 nop; not filled. 4039 0000413c 33e100ff andi r1,r31,#0x00ff 4040 00004140 2021ffc9 addi r1,r1,#-55 4041 00004144 08000008 j L237_LF4 4042 00004148 54000000 nop; not filled. 4043 0000414c L240_LF4: 4044 0000414c 200103e8 addi r1,r0,#1000 4045 00004150 L237_LF4: 4046 00004150 0024f82a slt r31,r1,r4 4047 00004154 13e00024 beqz r31,L246_LF4 4048 00004158 54000000 nop; not filled. 4049 0000415c 00600035 movi2fp f0,r3 4050 00004160 00800835 movi2fp f1,r4 4051 00004164 0401000e mult f0,f0,f1 4052 00004168 00001834 movfp2i r3,f0 4053 0000416c 00611820 add r3,r3,r1 4054 00004170 20420001 addi r2,r2,#1 4055 00004174 17e0ff64 bnez r31,L233_LF4 4056 00004178 54000000 nop; not filled. 4057 0000417c L246_LF4: 4058 0000417c 64a10000 snei r1,r5,#0 4059 00004180 10200008 beqz r1,L244_LF4 4060 00004184 54000000 nop; not filled. 4061 00004188 aca20000 sw (r5),r2 4062 0000418c L244_LF4: 4063 0000418c 00600035 movi2fp f0,r3 4064 00004190 00c00835 movi2fp f1,r6 4065 00004194 0401000e mult f0,f0,f1 4066 00004198 00000834 movfp2i r1,f0 4067 0000419c L245_LF4: 4068 0000419c 8fa20000 lw r2,0(r29) 4069 000041a0 8fa30004 lw r3,4(r29) 4070 000041a4 8fa40008 lw r4,8(r29) 4071 000041a8 8fa5000c lw r5,12(r29) 4072 000041ac 8fa60010 lw r6,16(r29) 4073 000041b0 8fdffff8 lw r31,-8(r30) 4074 000041b4 001ee820 add r29,r0,r30 4075 000041b8 8fdefffc lw r30,-4(r30) 4076 000041bc 4be00000 jr r31 4077 000041c0 54000000 nop 4078 000041c4 .endproc _dstrtol 4079 000041c4 .align 2 4080 000041c4 .proc _bcopy 4081 000041c4 .global _bcopy 4082 000041c4 _bcopy: 4083 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 4084 000041c4 afbefffc sw -4(r29),r30; push fp 4085 000041c8 001df020 add r30,r0,r29; fp = sp 4086 000041cc afbffff8 sw -8(r29),r31; push ret addr 4087 000041d0 2fbd0018 subui r29,r29,#24; alloc local storage 4088 000041d4 afa20000 sw 0(r29),r2 4089 000041d8 afa30004 sw 4(r29),r3 4090 000041dc afa40008 sw 8(r29),r4 4091 000041e0 8fc30000 lw r3,(r30) 4092 000041e4 8fc20004 lw r2,4(r30) 4093 000041e8 8fdf0008 lw r31,8(r30) 4094 000041ec 08000014 j L259_LF4 4095 000041f0 54000000 nop; not filled. 4096 000041f4 L257_LF4: 4097 000041f4 80640000 lb r4,(r3) 4098 000041f8 a0440000 sb (r2),r4 4099 000041fc 20630001 addi r3,r3,#1 4100 00004200 20420001 addi r2,r2,#1 4101 00004204 L259_LF4: 4102 00004204 001f0820 add r1,r0,r31 4103 00004208 23ffffff addi r31,r31,#-1 4104 0000420c 6c210000 sgti r1,r1,#0 4105 00004210 1420ffe0 bnez r1,L257_LF4 4106 00004214 54000000 nop; not filled. 4107 00004218 8fa20000 lw r2,0(r29) 4108 0000421c 8fa30004 lw r3,4(r29) 4109 00004220 8fa40008 lw r4,8(r29) 4110 00004224 8fdffff8 lw r31,-8(r30) 4111 00004228 001ee820 add r29,r0,r30 4112 0000422c 8fdefffc lw r30,-4(r30) 4113 00004230 4be00000 jr r31 4114 00004234 54000000 nop 4115 00004238 .endproc _bcopy 4116 00004238 .align 2 4117 00004238 .proc _bzero 4118 00004238 .global _bzero 4119 00004238 _bzero: 4120 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 4121 00004238 afbefffc sw -4(r29),r30; push fp 4122 0000423c 001df020 add r30,r0,r29; fp = sp 4123 00004240 afbffff8 sw -8(r29),r31; push ret addr 4124 00004244 2fbd0010 subui r29,r29,#16; alloc local storage 4125 00004248 afa20000 sw 0(r29),r2 4126 0000424c afa30004 sw 4(r29),r3 4127 00004250 8fc20000 lw r2,(r30) 4128 00004254 8fdf0004 lw r31,4(r30) 4129 00004258 08000010 j L270_LF4 4130 0000425c 54000000 nop; not filled. 4131 00004260 L268_LF4: 4132 00004260 20030000 addi r3,r0,(#0x0)&0xff 4133 00004264 a0430000 sb (r2),r3 4134 00004268 20420001 addi r2,r2,#1 4135 0000426c L270_LF4: 4136 0000426c 001f0820 add r1,r0,r31 4137 00004270 23ffffff addi r31,r31,#-1 4138 00004274 6c210000 sgti r1,r1,#0 4139 00004278 1420ffe4 bnez r1,L268_LF4 4140 0000427c 54000000 nop; not filled. 4141 00004280 8fa20000 lw r2,0(r29) 4142 00004284 8fa30004 lw r3,4(r29) 4143 00004288 8fdffff8 lw r31,-8(r30) 4144 0000428c 001ee820 add r29,r0,r30 4145 00004290 8fdefffc lw r30,-4(r30) 4146 00004294 4be00000 jr r31 4147 00004298 54000000 nop 4148 0000429c .endproc _bzero 4149 ; Compiled by GCC 4151 0000429c .align 2 4152 0000429c .proc _isspace 4153 0000429c .global _isspace 4154 0000429c _isspace: 4155 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 4156 0000429c afbefffc sw -4(r29),r30; push fp 4157 000042a0 001df020 add r30,r0,r29; fp = sp 4158 000042a4 afbffff8 sw -8(r29),r31; push ret addr 4159 000042a8 2fbd0010 subui r29,r29,#16; alloc local storage 4160 000042ac afa20000 sw 0(r29),r2 4161 000042b0 83c20003 lb r2,3(r30) 4162 000042b4 201f0000 addi r31,r0,#0 4163 000042b8 304100ff andi r1,r2,#0x00ff 4164 000042bc 60210020 seqi r1,r1,#32 4165 000042c0 14200018 bnez r1,L6_LF5 4166 000042c4 54000000 nop; not filled. 4167 000042c8 2041fff7 addi r1,r2,#-9 4168 000042cc 302100ff andi r1,r1,#0x00ff 4169 000042d0 70210001 sleui r1,r1,#1 4170 000042d4 10200008 beqz r1,L5_LF5 4171 000042d8 54000000 nop; not filled. 4172 000042dc L6_LF5: 4173 000042dc 201f0001 addi r31,r0,#1 4174 000042e0 L5_LF5: 4175 000042e0 001f0820 add r1,r0,r31 4176 000042e4 8fa20000 lw r2,0(r29) 4177 000042e8 8fdffff8 lw r31,-8(r30) 4178 000042ec 001ee820 add r29,r0,r30 4179 000042f0 8fdefffc lw r30,-4(r30) 4180 000042f4 4be00000 jr r31 4181 000042f8 54000000 nop 4182 000042fc .endproc _isspace 4183 000042fc .align 2 4184 000042fc .proc _isxdigit 4185 000042fc .global _isxdigit 4186 000042fc _isxdigit: 4187 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 4188 000042fc afbefffc sw -4(r29),r30; push fp 4189 00004300 001df020 add r30,r0,r29; fp = sp 4190 00004304 afbffff8 sw -8(r29),r31; push ret addr 4191 00004308 2fbd0010 subui r29,r29,#16; alloc local storage 4192 0000430c afa20000 sw 0(r29),r2 4193 00004310 83df0003 lb r31,3(r30) 4194 00004314 20020000 addi r2,r0,#0 4195 00004318 23e1ffd0 addi r1,r31,#-48 4196 0000431c 302100ff andi r1,r1,#0x00ff 4197 00004320 70210009 sleui r1,r1,#9 4198 00004324 14200028 bnez r1,L12_LF5 4199 00004328 54000000 nop; not filled. 4200 0000432c 23e1ff9f addi r1,r31,#-97 4201 00004330 302100ff andi r1,r1,#0x00ff 4202 00004334 70210005 sleui r1,r1,#5 4203 00004338 14200014 bnez r1,L12_LF5 4204 0000433c 54000000 nop; not filled. 4205 00004340 33e100ff andi r1,r31,#0x00ff 4206 00004344 64210041 snei r1,r1,#65 4207 00004348 14200008 bnez r1,L11_LF5 4208 0000434c 54000000 nop; not filled. 4209 00004350 L12_LF5: 4210 00004350 20020001 addi r2,r0,#1 4211 00004354 L11_LF5: 4212 00004354 00020820 add r1,r0,r2 4213 00004358 8fa20000 lw r2,0(r29) 4214 0000435c 8fdffff8 lw r31,-8(r30) 4215 00004360 001ee820 add r29,r0,r30 4216 00004364 8fdefffc lw r30,-4(r30) 4217 00004368 4be00000 jr r31 4218 0000436c 54000000 nop 4219 00004370 .endproc _isxdigit 4220 00004370 .align 2 4221 00004370 .proc _DisableIntrs 4222 00004370 .global _DisableIntrs 4223 00004370 _DisableIntrs: 4224 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 4225 00004370 afbefffc sw -4(r29),r30; push fp 4226 00004374 001df020 add r30,r0,r29; fp = sp 4227 00004378 afbffff8 sw -8(r29),r31; push ret addr 4228 0000437c 2fbd0010 subui r29,r29,#16; alloc local storage 4229 00004380 afa20000 sw 0(r29),r2 4230 00004384 23bdfff8 addi r29,r29,#-8 4231 00004388 2002000f addi r2,r0,#15 4232 0000438c afa20000 sw (r29),r2 4233 00004390 0fffcef4 jal _SetIntrs 4234 00004394 54000000 nop; not filled. 4235 00004398 23bd0008 addi r29,r29,#8 4236 0000439c 8fa20000 lw r2,0(r29) 4237 000043a0 8fdffff8 lw r31,-8(r30) 4238 000043a4 001ee820 add r29,r0,r30 4239 000043a8 8fdefffc lw r30,-4(r30) 4240 000043ac 4be00000 jr r31 4241 000043b0 54000000 nop 4242 000043b4 .endproc _DisableIntrs 4243 000043b4 .align 2 4244 000043b4 .proc _EnableIntrs 4245 000043b4 .global _EnableIntrs 4246 000043b4 _EnableIntrs: 4247 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 4248 000043b4 afbefffc sw -4(r29),r30; push fp 4249 000043b8 001df020 add r30,r0,r29; fp = sp 4250 000043bc afbffff8 sw -8(r29),r31; push ret addr 4251 000043c0 2fbd0010 subui r29,r29,#16; alloc local storage 4252 000043c4 afa20000 sw 0(r29),r2 4253 000043c8 23bdfff8 addi r29,r29,#-8 4254 000043cc 20020000 addi r2,r0,#0 4255 000043d0 afa20000 sw (r29),r2 4256 000043d4 0fffceb0 jal _SetIntrs 4257 000043d8 54000000 nop; not filled. 4258 000043dc 23bd0008 addi r29,r29,#8 4259 000043e0 8fa20000 lw r2,0(r29) 4260 000043e4 8fdffff8 lw r31,-8(r30) 4261 000043e8 001ee820 add r29,r0,r30 4262 000043ec 8fdefffc lw r30,-4(r30) 4263 000043f0 4be00000 jr r31 4264 000043f4 54000000 nop 4265 000043f8 .endproc _EnableIntrs 4266 000043f8 .align 2 4267 000043f8 .proc _RestoreIntrs 4268 000043f8 .global _RestoreIntrs 4269 000043f8 _RestoreIntrs: 4270 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 4271 000043f8 afbefffc sw -4(r29),r30; push fp 4272 000043fc 001df020 add r30,r0,r29; fp = sp 4273 00004400 afbffff8 sw -8(r29),r31; push ret addr 4274 00004404 2fbd0010 subui r29,r29,#16; alloc local storage 4275 00004408 afa20000 sw 0(r29),r2 4276 0000440c 23bdfff8 addi r29,r29,#-8 4277 00004410 8fc20000 lw r2,(r30) 4278 00004414 afa20000 sw (r29),r2 4279 00004418 0fffce6c jal _SetIntrs 4280 0000441c 54000000 nop; not filled. 4281 00004420 23bd0008 addi r29,r29,#8 4282 00004424 8fa20000 lw r2,0(r29) 4283 00004428 8fdffff8 lw r31,-8(r30) 4284 0000442c 001ee820 add r29,r0,r30 4285 00004430 8fdefffc lw r30,-4(r30) 4286 00004434 4be00000 jr r31 4287 00004438 54000000 nop 4288 0000443c .endproc _RestoreIntrs 4289 0000443c .align 2 4290 0000443c .proc _QueueLinkInit 4291 0000443c .global _QueueLinkInit 4292 0000443c _QueueLinkInit: 4293 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 4294 0000443c afbefffc sw -4(r29),r30; push fp 4295 00004440 001df020 add r30,r0,r29; fp = sp 4296 00004444 afbffff8 sw -8(r29),r31; push ret addr 4297 00004448 2fbd0010 subui r29,r29,#16; alloc local storage 4298 0000444c afa20000 sw 0(r29),r2 4299 00004450 8fc10000 lw r1,(r30) 4300 00004454 8fc20004 lw r2,4(r30) 4301 00004458 201f0000 addi r31,r0,#0 4302 0000445c ac3f0000 sw (r1),r31 4303 00004460 ac22000c sw 12(r1),r2 4304 00004464 8fa20000 lw r2,0(r29) 4305 00004468 8fdffff8 lw r31,-8(r30) 4306 0000446c 001ee820 add r29,r0,r30 4307 00004470 8fdefffc lw r30,-4(r30) 4308 00004474 4be00000 jr r31 4309 00004478 54000000 nop 4310 0000447c .endproc _QueueLinkInit 4311 0000447c .align 2 4312 0000447c .proc _QueueNext 4313 0000447c .global _QueueNext 4314 0000447c _QueueNext: 4315 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 4316 0000447c afbefffc sw -4(r29),r30; push fp 4317 00004480 001df020 add r30,r0,r29; fp = sp 4318 00004484 afbffff8 sw -8(r29),r31; push ret addr 4319 00004488 2fbd0008 subui r29,r29,#8; alloc local storage 4320 0000448c 8fc10000 lw r1,(r30) 4321 00004490 8c210000 lw r1,(r1) 4322 00004494 8fdffff8 lw r31,-8(r30) 4323 00004498 001ee820 add r29,r0,r30 4324 0000449c 8fdefffc lw r30,-4(r30) 4325 000044a0 4be00000 jr r31 4326 000044a4 54000000 nop 4327 000044a8 .endproc _QueueNext 4328 000044a8 .align 2 4329 000044a8 .proc _QueuePrev 4330 000044a8 .global _QueuePrev 4331 000044a8 _QueuePrev: 4332 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 4333 000044a8 afbefffc sw -4(r29),r30; push fp 4334 000044ac 001df020 add r30,r0,r29; fp = sp 4335 000044b0 afbffff8 sw -8(r29),r31; push ret addr 4336 000044b4 2fbd0008 subui r29,r29,#8; alloc local storage 4337 000044b8 8fc10000 lw r1,(r30) 4338 000044bc 8c210004 lw r1,4(r1) 4339 000044c0 8fdffff8 lw r31,-8(r30) 4340 000044c4 001ee820 add r29,r0,r30 4341 000044c8 8fdefffc lw r30,-4(r30) 4342 000044cc 4be00000 jr r31 4343 000044d0 54000000 nop 4344 000044d4 .endproc _QueuePrev 4345 000044d4 .align 2 4346 000044d4 .proc _QueueFirst 4347 000044d4 .global _QueueFirst 4348 000044d4 _QueueFirst: 4349 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 4350 000044d4 afbefffc sw -4(r29),r30; push fp 4351 000044d8 001df020 add r30,r0,r29; fp = sp 4352 000044dc afbffff8 sw -8(r29),r31; push ret addr 4353 000044e0 2fbd0008 subui r29,r29,#8; alloc local storage 4354 000044e4 8fc10000 lw r1,(r30) 4355 000044e8 8c210000 lw r1,(r1) 4356 000044ec 8fdffff8 lw r31,-8(r30) 4357 000044f0 001ee820 add r29,r0,r30 4358 000044f4 8fdefffc lw r30,-4(r30) 4359 000044f8 4be00000 jr r31 4360 000044fc 54000000 nop 4361 00004500 .endproc _QueueFirst 4362 00004500 .align 2 4363 00004500 .proc _QueueLast 4364 00004500 .global _QueueLast 4365 00004500 _QueueLast: 4366 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 4367 00004500 afbefffc sw -4(r29),r30; push fp 4368 00004504 001df020 add r30,r0,r29; fp = sp 4369 00004508 afbffff8 sw -8(r29),r31; push ret addr 4370 0000450c 2fbd0008 subui r29,r29,#8; alloc local storage 4371 00004510 8fc10000 lw r1,(r30) 4372 00004514 8c210004 lw r1,4(r1) 4373 00004518 8fdffff8 lw r31,-8(r30) 4374 0000451c 001ee820 add r29,r0,r30 4375 00004520 8fdefffc lw r30,-4(r30) 4376 00004524 4be00000 jr r31 4377 00004528 54000000 nop 4378 0000452c .endproc _QueueLast 4379 0000452c .align 2 4380 0000452c .proc _QueueInsertAfter 4381 0000452c .global _QueueInsertAfter 4382 0000452c _QueueInsertAfter: 4383 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 4384 0000452c afbefffc sw -4(r29),r30; push fp 4385 00004530 001df020 add r30,r0,r29; fp = sp 4386 00004534 afbffff8 sw -8(r29),r31; push ret addr 4387 00004538 2fbd0010 subui r29,r29,#16; alloc local storage 4388 0000453c afa20000 sw 0(r29),r2 4389 00004540 afa30004 sw 4(r29),r3 4390 00004544 8fc30000 lw r3,(r30) 4391 00004548 8fc20004 lw r2,4(r30) 4392 0000454c 8fc10008 lw r1,8(r30) 4393 00004550 ac230008 sw 8(r1),r3 4394 00004554 ac220004 sw 4(r1),r2 4395 00004558 8c5f0000 lw r31,(r2) 4396 0000455c ac3f0000 sw (r1),r31 4397 00004560 ac410000 sw (r2),r1 4398 00004564 8c220000 lw r2,(r1) 4399 00004568 ac410004 sw 4(r2),r1 4400 0000456c 8c610008 lw r1,8(r3) 4401 00004570 20210001 addi r1,r1,#1 4402 00004574 ac610008 sw 8(r3),r1 4403 00004578 8fa20000 lw r2,0(r29) 4404 0000457c 8fa30004 lw r3,4(r29) 4405 00004580 8fdffff8 lw r31,-8(r30) 4406 00004584 001ee820 add r29,r0,r30 4407 00004588 8fdefffc lw r30,-4(r30) 4408 0000458c 4be00000 jr r31 4409 00004590 54000000 nop 4410 00004594 .endproc _QueueInsertAfter 4411 00004594 .align 2 4412 00004594 .proc _QueueInsertFirst 4413 00004594 .global _QueueInsertFirst 4414 00004594 _QueueInsertFirst: 4415 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 4416 00004594 afbefffc sw -4(r29),r30; push fp 4417 00004598 001df020 add r30,r0,r29; fp = sp 4418 0000459c afbffff8 sw -8(r29),r31; push ret addr 4419 000045a0 2fbd0010 subui r29,r29,#16; alloc local storage 4420 000045a4 afa20000 sw 0(r29),r2 4421 000045a8 afa30004 sw 4(r29),r3 4422 000045ac 8fc30000 lw r3,(r30) 4423 000045b0 8fc10004 lw r1,4(r30) 4424 000045b4 ac230008 sw 8(r1),r3 4425 000045b8 ac230004 sw 4(r1),r3 4426 000045bc 8c7f0000 lw r31,(r3) 4427 000045c0 ac3f0000 sw (r1),r31 4428 000045c4 ac610000 sw (r3),r1 4429 000045c8 8c220000 lw r2,(r1) 4430 000045cc ac410004 sw 4(r2),r1 4431 000045d0 8c610008 lw r1,8(r3) 4432 000045d4 20210001 addi r1,r1,#1 4433 000045d8 ac610008 sw 8(r3),r1 4434 000045dc 8fa20000 lw r2,0(r29) 4435 000045e0 8fa30004 lw r3,4(r29) 4436 000045e4 8fdffff8 lw r31,-8(r30) 4437 000045e8 001ee820 add r29,r0,r30 4438 000045ec 8fdefffc lw r30,-4(r30) 4439 000045f0 4be00000 jr r31 4440 000045f4 54000000 nop 4441 000045f8 .endproc _QueueInsertFirst 4442 000045f8 .align 2 4443 000045f8 .proc _QueueInsertLast 4444 000045f8 .global _QueueInsertLast 4445 000045f8 _QueueInsertLast: 4446 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 4447 000045f8 afbefffc sw -4(r29),r30; push fp 4448 000045fc 001df020 add r30,r0,r29; fp = sp 4449 00004600 afbffff8 sw -8(r29),r31; push ret addr 4450 00004604 2fbd0010 subui r29,r29,#16; alloc local storage 4451 00004608 afa20000 sw 0(r29),r2 4452 0000460c afa30004 sw 4(r29),r3 4453 00004610 8fc30000 lw r3,(r30) 4454 00004614 8fc10004 lw r1,4(r30) 4455 00004618 8c620004 lw r2,4(r3) 4456 0000461c ac230008 sw 8(r1),r3 4457 00004620 ac220004 sw 4(r1),r2 4458 00004624 8c5f0000 lw r31,(r2) 4459 00004628 ac3f0000 sw (r1),r31 4460 0000462c ac410000 sw (r2),r1 4461 00004630 8c220000 lw r2,(r1) 4462 00004634 ac410004 sw 4(r2),r1 4463 00004638 8c610008 lw r1,8(r3) 4464 0000463c 20210001 addi r1,r1,#1 4465 00004640 ac610008 sw 8(r3),r1 4466 00004644 8fa20000 lw r2,0(r29) 4467 00004648 8fa30004 lw r3,4(r29) 4468 0000464c 8fdffff8 lw r31,-8(r30) 4469 00004650 001ee820 add r29,r0,r30 4470 00004654 8fdefffc lw r30,-4(r30) 4471 00004658 4be00000 jr r31 4472 0000465c 54000000 nop 4473 00004660 .endproc _QueueInsertLast 4474 00004660 .align 2 4475 00004660 .proc _QueueRemove 4476 00004660 .global _QueueRemove 4477 00004660 _QueueRemove: 4478 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 4479 00004660 afbefffc sw -4(r29),r30; push fp 4480 00004664 001df020 add r30,r0,r29; fp = sp 4481 00004668 afbffff8 sw -8(r29),r31; push ret addr 4482 0000466c 2fbd0010 subui r29,r29,#16; alloc local storage 4483 00004670 afa20000 sw 0(r29),r2 4484 00004674 afa30004 sw 4(r29),r3 4485 00004678 8fdf0000 lw r31,(r30) 4486 0000467c 8fe10008 lw r1,8(r31) 4487 00004680 8c210008 lw r1,8(r1) 4488 00004684 6c210000 sgti r1,r1,#0 4489 00004688 1020002c beqz r1,L44_LF5 4490 0000468c 54000000 nop; not filled. 4491 00004690 8fe10004 lw r1,4(r31) 4492 00004694 8fe30000 lw r3,(r31) 4493 00004698 ac230000 sw (r1),r3 4494 0000469c 8fe10000 lw r1,(r31) 4495 000046a0 8fe30004 lw r3,4(r31) 4496 000046a4 ac230004 sw 4(r1),r3 4497 000046a8 8fe20008 lw r2,8(r31) 4498 000046ac 8c410008 lw r1,8(r2) 4499 000046b0 2021ffff addi r1,r1,#-1 4500 000046b4 ac410008 sw 8(r2),r1 4501 000046b8 L44_LF5: 4502 000046b8 20030000 addi r3,r0,#0 4503 000046bc afe30000 sw (r31),r3 4504 000046c0 8fa20000 lw r2,0(r29) 4505 000046c4 8fa30004 lw r3,4(r29) 4506 000046c8 8fdffff8 lw r31,-8(r30) 4507 000046cc 001ee820 add r29,r0,r30 4508 000046d0 8fdefffc lw r30,-4(r30) 4509 000046d4 4be00000 jr r31 4510 000046d8 54000000 nop 4511 000046dc .endproc _QueueRemove 4512 000046dc .align 2 4513 000046dc .proc _QueueLength 4514 000046dc .global _QueueLength 4515 000046dc _QueueLength: 4516 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 4517 000046dc afbefffc sw -4(r29),r30; push fp 4518 000046e0 001df020 add r30,r0,r29; fp = sp 4519 000046e4 afbffff8 sw -8(r29),r31; push ret addr 4520 000046e8 2fbd0008 subui r29,r29,#8; alloc local storage 4521 000046ec 8fc10000 lw r1,(r30) 4522 000046f0 8c210008 lw r1,8(r1) 4523 000046f4 8fdffff8 lw r31,-8(r30) 4524 000046f8 001ee820 add r29,r0,r30 4525 000046fc 8fdefffc lw r30,-4(r30) 4526 00004700 4be00000 jr r31 4527 00004704 54000000 nop 4528 00004708 .endproc _QueueLength 4529 00004708 .align 2 4530 00004708 .proc _QueueEmpty 4531 00004708 .global _QueueEmpty 4532 00004708 _QueueEmpty: 4533 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 4534 00004708 afbefffc sw -4(r29),r30; push fp 4535 0000470c 001df020 add r30,r0,r29; fp = sp 4536 00004710 afbffff8 sw -8(r29),r31; push ret addr 4537 00004714 2fbd0008 subui r29,r29,#8; alloc local storage 4538 00004718 8fc10000 lw r1,(r30) 4539 0000471c 8c210008 lw r1,8(r1) 4540 00004720 60210000 seqi r1,r1,#0 4541 00004724 8fdffff8 lw r31,-8(r30) 4542 00004728 001ee820 add r29,r0,r30 4543 0000472c 8fdefffc lw r30,-4(r30) 4544 00004730 4be00000 jr r31 4545 00004734 54000000 nop 4546 00004738 .endproc _QueueEmpty 4547 00004738 .data 4548 00010438 .align 2 4549 00010438 _processQuantum_LF5: 4550 00010438 00002710 .word 10000 4551 0001043c .align 2 4552 0001043c LC0_LF5: 4553 0001043c 456e7465 .ascii "Entering ProcessModuleInit\n\000" 4553 00010440 72696e67 4553 00010444 2050726f 4553 00010448 63657373 4553 0001044c 4d6f6475 4553 00010450 6c65496e 4553 00010454 69740a00 4554 00010458 .align 2 4555 00010458 LC1_LF5: 4556 00010458 496e6974 .ascii "Initializing PCB %d @ 0x%x.\n\000" 4556 0001045c 69616c69 4556 00010460 7a696e67 4556 00010464 20504342 4556 00010468 20256420 4556 0001046c 40203078 4556 00010470 25782e0a 4556 00010474 00 4557 00010475 .align 2 4558 00010478 LC2_LF5: 4559 00010478 4c656176 .ascii "Leaving ProcessModuleInit\n\000" 4559 0001047c 696e6720 4559 00010480 50726f63 4559 00010484 6573734d 4559 00010488 6f64756c 4559 0001048c 65496e69 4559 00010490 740a00 4560 00010493 .text 4561 00004738 .align 2 4562 00004738 .proc _ProcessModuleInit 4563 00004738 .global _ProcessModuleInit 4564 00004738 _ProcessModuleInit: 4565 ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. 4566 00004738 afbefffc sw -4(r29),r30; push fp 4567 0000473c 001df020 add r30,r0,r29; fp = sp 4568 00004740 afbffff8 sw -8(r29),r31; push ret addr 4569 00004744 2fbd0028 subui r29,r29,#40; alloc local storage 4570 00004748 afa20000 sw 0(r29),r2 4571 0000474c afa30004 sw 4(r29),r3 4572 00004750 afa40008 sw 8(r29),r4 4573 00004754 afa5000c sw 12(r29),r5 4574 00004758 afa60010 sw 16(r29),r6 4575 0000475c afa70014 sw 20(r29),r7 4576 00004760 afa80018 sw 24(r29),r8 4577 00004764 23bdfff8 addi r29,r29,#-8 4578 00004768 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4579 0000476c 24420d78 addui r2,r2,(_debugstr)&0xffff 4580 00004770 afa20000 sw (r29),r2 4581 00004774 20080070 addi r8,r0,#112 4582 00004778 afa80004 sw 4(r29),r8 4583 0000477c 0ffff6b4 jal _dindex 4584 00004780 54000000 nop; not filled. 4585 00004784 23bd0008 addi r29,r29,#8 4586 00004788 64210000 snei r1,r1,#0 4587 0000478c 1420002c bnez r1,L53_LF5 4588 00004790 54000000 nop; not filled. 4589 00004794 23bdfff8 addi r29,r29,#-8 4590 00004798 afa20000 sw (r29),r2 4591 0000479c 2008002b addi r8,r0,#43 4592 000047a0 afa80004 sw 4(r29),r8 4593 000047a4 0ffff68c jal _dindex 4594 000047a8 54000000 nop; not filled. 4595 000047ac 23bd0008 addi r29,r29,#8 4596 000047b0 64210000 snei r1,r1,#0 4597 000047b4 10200020 beqz r1,L52_LF5 4598 000047b8 54000000 nop; not filled. 4599 000047bc L53_LF5: 4600 000047bc 23bdfff8 addi r29,r29,#-8 4601 000047c0 3c080001 lhi r8,((LC0_LF5)>>16)&0xffff 4602 000047c4 2508043c addui r8,r8,(LC0_LF5)&0xffff 4603 000047c8 afa80000 sw (r29),r8 4604 000047cc 0c006900 jal _printf 4605 000047d0 54000000 nop; not filled. 4606 000047d4 23bd0008 addi r29,r29,#8 4607 000047d8 L52_LF5: 4608 000047d8 23bdfff8 addi r29,r29,#-8 4609 000047dc 3c020001 lhi r2,((_freepcbs_LF5)>>16)&0xffff 4610 000047e0 24420e44 addui r2,r2,(_freepcbs_LF5)&0xffff 4611 000047e4 afa20000 sw (r29),r2 4612 000047e8 0c0038d8 jal _QueueInit 4613 000047ec 54000000 nop; not filled. 4614 000047f0 3c080001 lhi r8,((_runQueue_LF5)>>16)&0xffff 4615 000047f4 25080e50 addui r8,r8,(_runQueue_LF5)&0xffff 4616 000047f8 afa80000 sw (r29),r8 4617 000047fc 0c0038c4 jal _QueueInit 4618 00004800 54000000 nop; not filled. 4619 00004804 3c080001 lhi r8,((_waitQueue_LF5)>>16)&0xffff 4620 00004808 25080e5c addui r8,r8,(_waitQueue_LF5)&0xffff 4621 0000480c afa80000 sw (r29),r8 4622 00004810 0c0038b0 jal _QueueInit 4623 00004814 54000000 nop; not filled. 4624 00004818 3c080001 lhi r8,((_zombieQueue_LF5)>>16)&0xffff 4625 0000481c 25080e68 addui r8,r8,(_zombieQueue_LF5)&0xffff 4626 00004820 afa80000 sw (r29),r8 4627 00004824 0c00389c jal _QueueInit 4628 00004828 54000000 nop; not filled. 4629 0000482c 20040000 addi r4,r0,#0 4630 00004830 23bd0008 addi r29,r29,#8 4631 00004834 3c070001 lhi r7,((_debugstr)>>16)&0xffff 4632 00004838 24e70d78 addui r7,r7,(_debugstr)&0xffff 4633 0000483c 3c010001 lhi r1,((_pcbs_LF5)>>16)&0xffff 4634 00004840 24210e74 addui r1,r1,(_pcbs_LF5)&0xffff 4635 00004844 00022820 add r5,r0,r2 4636 00004848 20220068 addi r2,r1,#104 4637 0000484c 00011820 add r3,r0,r1 4638 00004850 00033020 add r6,r0,r3 4639 00004854 L57_LF5: 4640 00004854 23bdfff8 addi r29,r29,#-8 4641 00004858 afa70000 sw (r29),r7 4642 0000485c 20080070 addi r8,r0,#112 4643 00004860 afa80004 sw 4(r29),r8 4644 00004864 0ffff5cc jal _dindex 4645 00004868 54000000 nop; not filled. 4646 0000486c 23bd0008 addi r29,r29,#8 4647 00004870 64210000 snei r1,r1,#0 4648 00004874 1420002c bnez r1,L59_LF5 4649 00004878 54000000 nop; not filled. 4650 0000487c 23bdfff8 addi r29,r29,#-8 4651 00004880 afa70000 sw (r29),r7 4652 00004884 2008002b addi r8,r0,#43 4653 00004888 afa80004 sw 4(r29),r8 4654 0000488c 0ffff5a4 jal _dindex 4655 00004890 54000000 nop; not filled. 4656 00004894 23bd0008 addi r29,r29,#8 4657 00004898 64210000 snei r1,r1,#0 4658 0000489c 10200028 beqz r1,L58_LF5 4659 000048a0 54000000 nop; not filled. 4660 000048a4 L59_LF5: 4661 000048a4 23bdfff0 addi r29,r29,#-16 4662 000048a8 3c080001 lhi r8,((LC1_LF5)>>16)&0xffff 4663 000048ac 25080458 addui r8,r8,(LC1_LF5)&0xffff 4664 000048b0 afa80000 sw (r29),r8 4665 000048b4 afa40004 sw 4(r29),r4 4666 000048b8 afa60008 sw 8(r29),r6 4667 000048bc 0c006810 jal _printf 4668 000048c0 54000000 nop; not filled. 4669 000048c4 23bd0010 addi r29,r29,#16 4670 000048c8 L58_LF5: 4671 000048c8 20080001 addi r8,r0,#1 4672 000048cc ac68000c sw 12(r3),r8 4673 000048d0 20080000 addi r8,r0,#0 4674 000048d4 ac480000 sw (r2),r8 4675 000048d8 ac43000c sw 12(r2),r3 4676 000048dc ac450008 sw 8(r2),r5 4677 000048e0 ac450004 sw 4(r2),r5 4678 000048e4 8ca80000 lw r8,(r5) 4679 000048e8 ac480000 sw (r2),r8 4680 000048ec aca20000 sw (r5),r2 4681 000048f0 8c410000 lw r1,(r2) 4682 000048f4 ac220004 sw 4(r1),r2 4683 000048f8 8ca10008 lw r1,8(r5) 4684 000048fc 20210001 addi r1,r1,#1 4685 00004900 aca10008 sw 8(r5),r1 4686 00004904 20420078 addi r2,r2,#120 4687 00004908 20630078 addi r3,r3,#120 4688 0000490c 20c60078 addi r6,r6,#120 4689 00004910 20840001 addi r4,r4,#1 4690 00004914 7081001f slei r1,r4,#31 4691 00004918 1420ff38 bnez r1,L57_LF5 4692 0000491c 54000000 nop; not filled. 4693 00004920 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4694 00004924 24210e40 addui r1,r1,(_currentPCB)&0xffff 4695 00004928 20080000 addi r8,r0,#0 4696 0000492c ac280000 sw (r1),r8 4697 00004930 23bdfff8 addi r29,r29,#-8 4698 00004934 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4699 00004938 24420d78 addui r2,r2,(_debugstr)&0xffff 4700 0000493c afa20000 sw (r29),r2 4701 00004940 20080070 addi r8,r0,#112 4702 00004944 afa80004 sw 4(r29),r8 4703 00004948 0ffff4e8 jal _dindex 4704 0000494c 54000000 nop; not filled. 4705 00004950 23bd0008 addi r29,r29,#8 4706 00004954 64210000 snei r1,r1,#0 4707 00004958 1420002c bnez r1,L65_LF5 4708 0000495c 54000000 nop; not filled. 4709 00004960 23bdfff8 addi r29,r29,#-8 4710 00004964 afa20000 sw (r29),r2 4711 00004968 2008002b addi r8,r0,#43 4712 0000496c afa80004 sw 4(r29),r8 4713 00004970 0ffff4c0 jal _dindex 4714 00004974 54000000 nop; not filled. 4715 00004978 23bd0008 addi r29,r29,#8 4716 0000497c 64210000 snei r1,r1,#0 4717 00004980 10200020 beqz r1,L64_LF5 4718 00004984 54000000 nop; not filled. 4719 00004988 L65_LF5: 4720 00004988 23bdfff8 addi r29,r29,#-8 4721 0000498c 3c080001 lhi r8,((LC2_LF5)>>16)&0xffff 4722 00004990 25080478 addui r8,r8,(LC2_LF5)&0xffff 4723 00004994 afa80000 sw (r29),r8 4724 00004998 0c006734 jal _printf 4725 0000499c 54000000 nop; not filled. 4726 000049a0 23bd0008 addi r29,r29,#8 4727 000049a4 L64_LF5: 4728 000049a4 8fa20000 lw r2,0(r29) 4729 000049a8 8fa30004 lw r3,4(r29) 4730 000049ac 8fa40008 lw r4,8(r29) 4731 000049b0 8fa5000c lw r5,12(r29) 4732 000049b4 8fa60010 lw r6,16(r29) 4733 000049b8 8fa70014 lw r7,20(r29) 4734 000049bc 8fa80018 lw r8,24(r29) 4735 000049c0 8fdffff8 lw r31,-8(r30) 4736 000049c4 001ee820 add r29,r0,r30 4737 000049c8 8fdefffc lw r30,-4(r30) 4738 000049cc 4be00000 jr r31 4739 000049d0 54000000 nop 4740 000049d4 .endproc _ProcessModuleInit 4741 000049d4 .align 2 4742 000049d4 .proc _ProcessSetStatus 4743 000049d4 .global _ProcessSetStatus 4744 000049d4 _ProcessSetStatus: 4745 ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. 4746 000049d4 afbefffc sw -4(r29),r30; push fp 4747 000049d8 001df020 add r30,r0,r29; fp = sp 4748 000049dc afbffff8 sw -8(r29),r31; push ret addr 4749 000049e0 2fbd0010 subui r29,r29,#16; alloc local storage 4750 000049e4 afa20000 sw 0(r29),r2 4751 000049e8 afa30004 sw 4(r29),r3 4752 000049ec 8fc30000 lw r3,(r30) 4753 000049f0 8fc20004 lw r2,4(r30) 4754 000049f4 8c61000c lw r1,12(r3) 4755 000049f8 201fffc0 addi r31,r0,#-64 4756 000049fc 003f0824 and r1,r1,r31 4757 00004a00 00220825 or r1,r1,r2 4758 00004a04 ac61000c sw 12(r3),r1 4759 00004a08 8fa20000 lw r2,0(r29) 4760 00004a0c 8fa30004 lw r3,4(r29) 4761 00004a10 8fdffff8 lw r31,-8(r30) 4762 00004a14 001ee820 add r29,r0,r30 4763 00004a18 8fdefffc lw r30,-4(r30) 4764 00004a1c 4be00000 jr r31 4765 00004a20 54000000 nop 4766 00004a24 .endproc _ProcessSetStatus 4767 00004a24 .align 2 4768 00004a24 .proc _ProcessFreeResources 4769 00004a24 .global _ProcessFreeResources 4770 00004a24 _ProcessFreeResources: 4771 ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. 4772 00004a24 afbefffc sw -4(r29),r30; push fp 4773 00004a28 001df020 add r30,r0,r29; fp = sp 4774 00004a2c afbffff8 sw -8(r29),r31; push ret addr 4775 00004a30 2fbd0018 subui r29,r29,#24; alloc local storage 4776 00004a34 afa20000 sw 0(r29),r2 4777 00004a38 afa30004 sw 4(r29),r3 4778 00004a3c afa40008 sw 8(r29),r4 4779 00004a40 afa5000c sw 12(r29),r5 4780 00004a44 8fc40000 lw r4,(r30) 4781 00004a48 3c030001 lhi r3,((_freepcbs_LF5)>>16)&0xffff 4782 00004a4c 24630e44 addui r3,r3,(_freepcbs_LF5)&0xffff 4783 00004a50 20820068 addi r2,r4,#104 4784 00004a54 8c610004 lw r1,4(r3) 4785 00004a58 ac830070 sw 112(r4),r3 4786 00004a5c ac81006c sw 108(r4),r1 4787 00004a60 8c250000 lw r5,(r1) 4788 00004a64 ac450000 sw (r2),r5 4789 00004a68 ac220000 sw (r1),r2 4790 00004a6c 8c410000 lw r1,(r2) 4791 00004a70 ac220004 sw 4(r1),r2 4792 00004a74 8c610008 lw r1,8(r3) 4793 00004a78 20210001 addi r1,r1,#1 4794 00004a7c ac610008 sw 8(r3),r1 4795 00004a80 20020000 addi r2,r0,#0 4796 00004a84 8c810064 lw r1,100(r4) 4797 00004a88 0041082a slt r1,r2,r1 4798 00004a8c 10200038 beqz r1,L83_LF5 4799 00004a90 54000000 nop; not filled. 4800 00004a94 00041820 add r3,r0,r4 4801 00004a98 L85_LF5: 4802 00004a98 23bdfff8 addi r29,r29,#-8 4803 00004a9c 8c650060 lw r5,96(r3) 4804 00004aa0 afa50000 sw (r29),r5 4805 00004aa4 0fffec34 jal _MemoryFreePte 4806 00004aa8 54000000 nop; not filled. 4807 00004aac 23bd0008 addi r29,r29,#8 4808 00004ab0 20630004 addi r3,r3,#4 4809 00004ab4 20420001 addi r2,r2,#1 4810 00004ab8 8c810064 lw r1,100(r4) 4811 00004abc 0041082a slt r1,r2,r1 4812 00004ac0 1420ffd4 bnez r1,L85_LF5 4813 00004ac4 54000000 nop; not filled. 4814 00004ac8 L83_LF5: 4815 00004ac8 23bdfff8 addi r29,r29,#-8 4816 00004acc 94810008 lhu r1,8(r4) 4817 00004ad0 afa10000 sw (r29),r1 4818 00004ad4 0fffe738 jal _MemoryFreePage 4819 00004ad8 54000000 nop; not filled. 4820 00004adc 23bd0008 addi r29,r29,#8 4821 00004ae0 8c81000c lw r1,12(r4) 4822 00004ae4 2005ffc0 addi r5,r0,#-64 4823 00004ae8 00250824 and r1,r1,r5 4824 00004aec 34210001 ori r1,r1,#1 4825 00004af0 ac81000c sw 12(r4),r1 4826 00004af4 8fa20000 lw r2,0(r29) 4827 00004af8 8fa30004 lw r3,4(r29) 4828 00004afc 8fa40008 lw r4,8(r29) 4829 00004b00 8fa5000c lw r5,12(r29) 4830 00004b04 8fdffff8 lw r31,-8(r30) 4831 00004b08 001ee820 add r29,r0,r30 4832 00004b0c 8fdefffc lw r30,-4(r30) 4833 00004b10 4be00000 jr r31 4834 00004b14 54000000 nop 4835 00004b18 .endproc _ProcessFreeResources 4836 00004b18 .align 2 4837 00004b18 .proc _ProcessSetResult 4838 00004b18 .global _ProcessSetResult 4839 00004b18 _ProcessSetResult: 4840 ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. 4841 00004b18 afbefffc sw -4(r29),r30; push fp 4842 00004b1c 001df020 add r30,r0,r29; fp = sp 4843 00004b20 afbffff8 sw -8(r29),r31; push ret addr 4844 00004b24 2fbd0008 subui r29,r29,#8; alloc local storage 4845 00004b28 8fc10000 lw r1,(r30) 4846 00004b2c 8c210000 lw r1,(r1) 4847 00004b30 8fdf0004 lw r31,4(r30) 4848 00004b34 ac3f002c sw 44(r1),r31 4849 00004b38 8fdffff8 lw r31,-8(r30) 4850 00004b3c 001ee820 add r29,r0,r30 4851 00004b40 8fdefffc lw r30,-4(r30) 4852 00004b44 4be00000 jr r31 4853 00004b48 54000000 nop 4854 00004b4c .endproc _ProcessSetResult 4855 00004b4c .data 4856 00010493 .align 2 4857 00010494 LC3_LF5: 4858 00010494 4e6f7720 .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" 4858 00010498 656e7465 4858 0001049c 72696e67 4858 000104a0 2050726f 4858 000104a4 63657373 4858 000104a8 53636865 4858 000104ac 64756c65 4858 000104b0 20286375 4858 000104b4 723d3078 4858 000104b8 25782c20 4858 000104bc 25642072 4858 000104c0 65616479 4858 000104c4 290a00 4859 000104c7 .align 2 4860 000104c8 LC4_LF5: 4861 000104c8 4e6f2072 .ascii "No runnable processes - exiting!\n\000" 4861 000104cc 756e6e61 4861 000104d0 626c6520 4861 000104d4 70726f63 4861 000104d8 65737365 4861 000104dc 73202d20 4861 000104e0 65786974 4861 000104e4 696e6721 4861 000104e8 0a00 4862 000104ea .align 2 4863 000104ec LC5_LF5: 4864 000104ec 41626f75 .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" 4864 000104f0 7420746f 4864 000104f4 20737769 4864 000104f8 74636820 4864 000104fc 746f2050 4864 00010500 43422030 4864 00010504 7825782c 4864 00010508 666c6167 4864 0001050c 733d3078 4864 00010510 25782040 4864 00010514 20307825 4864 00010518 780a00 4865 0001051b .align 2 4866 0001051c LC6_LF5: 4867 0001051c 46726565 .ascii "Freeing zombie PCB 0x%x.\n\000" 4867 00010520 696e6720 4867 00010524 7a6f6d62 4867 00010528 69652050 4867 0001052c 43422030 4867 00010530 7825782e 4867 00010534 0a00 4868 00010536 .align 2 4869 00010538 LC7_LF5: 4870 00010538 4c656176 .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" 4870 0001053c 696e6720 4870 00010540 50726f63 4870 00010544 65737353 4870 00010548 63686564 4870 0001054c 756c6520 4870 00010550 28637572 4870 00010554 3d307825 4870 00010558 78290a00 4871 0001055c .text 4872 00004b4c .align 2 4873 00004b4c .proc _ProcessSchedule 4874 00004b4c .global _ProcessSchedule 4875 00004b4c _ProcessSchedule: 4876 ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. 4877 00004b4c afbefffc sw -4(r29),r30; push fp 4878 00004b50 001df020 add r30,r0,r29; fp = sp 4879 00004b54 afbffff8 sw -8(r29),r31; push ret addr 4880 00004b58 2fbd0028 subui r29,r29,#40; alloc local storage 4881 00004b5c afa20000 sw 0(r29),r2 4882 00004b60 afa30004 sw 4(r29),r3 4883 00004b64 afa40008 sw 8(r29),r4 4884 00004b68 afa5000c sw 12(r29),r5 4885 00004b6c afa60010 sw 16(r29),r6 4886 00004b70 afa70014 sw 20(r29),r7 4887 00004b74 afa80018 sw 24(r29),r8 4888 00004b78 23bdfff8 addi r29,r29,#-8 4889 00004b7c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4890 00004b80 24420d78 addui r2,r2,(_debugstr)&0xffff 4891 00004b84 afa20000 sw (r29),r2 4892 00004b88 20080070 addi r8,r0,#112 4893 00004b8c afa80004 sw 4(r29),r8 4894 00004b90 0ffff2a0 jal _dindex 4895 00004b94 54000000 nop; not filled. 4896 00004b98 23bd0008 addi r29,r29,#8 4897 00004b9c 64210000 snei r1,r1,#0 4898 00004ba0 1420002c bnez r1,L92_LF5 4899 00004ba4 54000000 nop; not filled. 4900 00004ba8 23bdfff8 addi r29,r29,#-8 4901 00004bac afa20000 sw (r29),r2 4902 00004bb0 2008002b addi r8,r0,#43 4903 00004bb4 afa80004 sw 4(r29),r8 4904 00004bb8 0ffff278 jal _dindex 4905 00004bbc 54000000 nop; not filled. 4906 00004bc0 23bd0008 addi r29,r29,#8 4907 00004bc4 64210000 snei r1,r1,#0 4908 00004bc8 10200040 beqz r1,L91_LF5 4909 00004bcc 54000000 nop; not filled. 4910 00004bd0 L92_LF5: 4911 00004bd0 3c010001 lhi r1,((_runQueue_LF5)>>16)&0xffff 4912 00004bd4 24210e50 addui r1,r1,(_runQueue_LF5)&0xffff 4913 00004bd8 8c220008 lw r2,8(r1) 4914 00004bdc 23bdfff0 addi r29,r29,#-16 4915 00004be0 3c080001 lhi r8,((LC3_LF5)>>16)&0xffff 4916 00004be4 25080494 addui r8,r8,(LC3_LF5)&0xffff 4917 00004be8 afa80000 sw (r29),r8 4918 00004bec 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4919 00004bf0 24210e40 addui r1,r1,(_currentPCB)&0xffff 4920 00004bf4 8c210000 lw r1,(r1) 4921 00004bf8 afa10004 sw 4(r29),r1 4922 00004bfc afa20008 sw 8(r29),r2 4923 00004c00 0c0064cc jal _printf 4924 00004c04 54000000 nop; not filled. 4925 00004c08 23bd0010 addi r29,r29,#16 4926 00004c0c L91_LF5: 4927 00004c0c 3c050001 lhi r5,((_runQueue_LF5)>>16)&0xffff 4928 00004c10 24a50e50 addui r5,r5,(_runQueue_LF5)&0xffff 4929 00004c14 8ca10008 lw r1,8(r5) 4930 00004c18 60210000 seqi r1,r1,#0 4931 00004c1c 10200028 beqz r1,L94_LF5 4932 00004c20 54000000 nop; not filled. 4933 00004c24 23bdfff8 addi r29,r29,#-8 4934 00004c28 3c080001 lhi r8,((LC4_LF5)>>16)&0xffff 4935 00004c2c 250804c8 addui r8,r8,(LC4_LF5)&0xffff 4936 00004c30 afa80000 sw (r29),r8 4937 00004c34 0c006498 jal _printf 4938 00004c38 54000000 nop; not filled. 4939 00004c3c 0c006478 jal _exitsim 4940 00004c40 54000000 nop; not filled. 4941 00004c44 23bd0008 addi r29,r29,#8 4942 00004c48 L94_LF5: 4943 00004c48 8ca10000 lw r1,(r5) 4944 00004c4c 8c24000c lw r4,12(r1) 4945 00004c50 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4946 00004c54 24210e40 addui r1,r1,(_currentPCB)&0xffff 4947 00004c58 8c210000 lw r1,(r1) 4948 00004c5c 00810828 seq r1,r4,r1 4949 00004c60 10200078 beqz r1,L98_LF5 4950 00004c64 54000000 nop; not filled. 4951 00004c68 20830068 addi r3,r4,#104 4952 00004c6c 8c810070 lw r1,112(r4) 4953 00004c70 8c210008 lw r1,8(r1) 4954 00004c74 6c210000 sgti r1,r1,#0 4955 00004c78 1020002c beqz r1,L100_LF5 4956 00004c7c 54000000 nop; not filled. 4957 00004c80 8c81006c lw r1,108(r4) 4958 00004c84 8c680000 lw r8,(r3) 4959 00004c88 ac280000 sw (r1),r8 4960 00004c8c 8c610000 lw r1,(r3) 4961 00004c90 8c88006c lw r8,108(r4) 4962 00004c94 ac280004 sw 4(r1),r8 4963 00004c98 8c820070 lw r2,112(r4) 4964 00004c9c 8c410008 lw r1,8(r2) 4965 00004ca0 2021ffff addi r1,r1,#-1 4966 00004ca4 ac410008 sw 8(r2),r1 4967 00004ca8 L100_LF5: 4968 00004ca8 20080000 addi r8,r0,#0 4969 00004cac ac680000 sw (r3),r8 4970 00004cb0 8ca10004 lw r1,4(r5) 4971 00004cb4 ac850070 sw 112(r4),r5 4972 00004cb8 ac81006c sw 108(r4),r1 4973 00004cbc 8c280000 lw r8,(r1) 4974 00004cc0 ac680000 sw (r3),r8 4975 00004cc4 ac230000 sw (r1),r3 4976 00004cc8 8c610000 lw r1,(r3) 4977 00004ccc ac230004 sw 4(r1),r3 4978 00004cd0 8ca10008 lw r1,8(r5) 4979 00004cd4 20210001 addi r1,r1,#1 4980 00004cd8 aca10008 sw 8(r5),r1 4981 00004cdc L98_LF5: 4982 00004cdc 3c010001 lhi r1,((_runQueue_LF5)>>16)&0xffff 4983 00004ce0 24210e50 addui r1,r1,(_runQueue_LF5)&0xffff 4984 00004ce4 8c210000 lw r1,(r1) 4985 00004ce8 8c24000c lw r4,12(r1) 4986 00004cec 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4987 00004cf0 24210e40 addui r1,r1,(_currentPCB)&0xffff 4988 00004cf4 ac240000 sw (r1),r4 4989 00004cf8 23bdfff8 addi r29,r29,#-8 4990 00004cfc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4991 00004d00 24420d78 addui r2,r2,(_debugstr)&0xffff 4992 00004d04 afa20000 sw (r29),r2 4993 00004d08 20080070 addi r8,r0,#112 4994 00004d0c afa80004 sw 4(r29),r8 4995 00004d10 0ffff120 jal _dindex 4996 00004d14 54000000 nop; not filled. 4997 00004d18 23bd0008 addi r29,r29,#8 4998 00004d1c 64210000 snei r1,r1,#0 4999 00004d20 1420002c bnez r1,L106_LF5 5000 00004d24 54000000 nop; not filled. 5001 00004d28 23bdfff8 addi r29,r29,#-8 5002 00004d2c afa20000 sw (r29),r2 5003 00004d30 2008002b addi r8,r0,#43 5004 00004d34 afa80004 sw 4(r29),r8 5005 00004d38 0ffff0f8 jal _dindex 5006 00004d3c 54000000 nop; not filled. 5007 00004d40 23bd0008 addi r29,r29,#8 5008 00004d44 64210000 snei r1,r1,#0 5009 00004d48 10200038 beqz r1,L105_LF5 5010 00004d4c 54000000 nop; not filled. 5011 00004d50 L106_LF5: 5012 00004d50 23bdfff0 addi r29,r29,#-16 5013 00004d54 3c080001 lhi r8,((LC5_LF5)>>16)&0xffff 5014 00004d58 250804ec addui r8,r8,(LC5_LF5)&0xffff 5015 00004d5c afa80000 sw (r29),r8 5016 00004d60 afa40004 sw 4(r29),r4 5017 00004d64 8c88000c lw r8,12(r4) 5018 00004d68 afa80008 sw 8(r29),r8 5019 00004d6c 8c810004 lw r1,4(r4) 5020 00004d70 8c210128 lw r1,296(r1) 5021 00004d74 afa1000c sw 12(r29),r1 5022 00004d78 0c006354 jal _printf 5023 00004d7c 54000000 nop; not filled. 5024 00004d80 23bd0010 addi r29,r29,#16 5025 00004d84 L105_LF5: 5026 00004d84 3c070001 lhi r7,((_zombieQueue_LF5)>>16)&0xffff 5027 00004d88 24e70e68 addui r7,r7,(_zombieQueue_LF5)&0xffff 5028 00004d8c 3c060001 lhi r6,((_debugstr)>>16)&0xffff 5029 00004d90 24c60d78 addui r6,r6,(_debugstr)&0xffff 5030 00004d94 3c050001 lhi r5,((_freepcbs_LF5)>>16)&0xffff 5031 00004d98 24a50e44 addui r5,r5,(_freepcbs_LF5)&0xffff 5032 00004d9c L107_LF5: 5033 00004d9c 8ce10008 lw r1,8(r7) 5034 00004da0 60210000 seqi r1,r1,#0 5035 00004da4 1420016c bnez r1,L108_LF5 5036 00004da8 54000000 nop; not filled. 5037 00004dac 8ce10000 lw r1,(r7) 5038 00004db0 8c24000c lw r4,12(r1) 5039 00004db4 23bdfff8 addi r29,r29,#-8 5040 00004db8 afa60000 sw (r29),r6 5041 00004dbc 20080070 addi r8,r0,#112 5042 00004dc0 afa80004 sw 4(r29),r8 5043 00004dc4 0ffff06c jal _dindex 5044 00004dc8 54000000 nop; not filled. 5045 00004dcc 23bd0008 addi r29,r29,#8 5046 00004dd0 64210000 snei r1,r1,#0 5047 00004dd4 1420002c bnez r1,L114_LF5 5048 00004dd8 54000000 nop; not filled. 5049 00004ddc 23bdfff8 addi r29,r29,#-8 5050 00004de0 afa60000 sw (r29),r6 5051 00004de4 2008002b addi r8,r0,#43 5052 00004de8 afa80004 sw 4(r29),r8 5053 00004dec 0ffff044 jal _dindex 5054 00004df0 54000000 nop; not filled. 5055 00004df4 23bd0008 addi r29,r29,#8 5056 00004df8 64210000 snei r1,r1,#0 5057 00004dfc 10200024 beqz r1,L113_LF5 5058 00004e00 54000000 nop; not filled. 5059 00004e04 L114_LF5: 5060 00004e04 23bdfff8 addi r29,r29,#-8 5061 00004e08 3c080001 lhi r8,((LC6_LF5)>>16)&0xffff 5062 00004e0c 2508051c addui r8,r8,(LC6_LF5)&0xffff 5063 00004e10 afa80000 sw (r29),r8 5064 00004e14 afa40004 sw 4(r29),r4 5065 00004e18 0c0062b4 jal _printf 5066 00004e1c 54000000 nop; not filled. 5067 00004e20 23bd0008 addi r29,r29,#8 5068 00004e24 L113_LF5: 5069 00004e24 209f0068 addi r31,r4,#104 5070 00004e28 8c810070 lw r1,112(r4) 5071 00004e2c 8c210008 lw r1,8(r1) 5072 00004e30 6c210000 sgti r1,r1,#0 5073 00004e34 1020002c beqz r1,L116_LF5 5074 00004e38 54000000 nop; not filled. 5075 00004e3c 8c81006c lw r1,108(r4) 5076 00004e40 8fe80000 lw r8,(r31) 5077 00004e44 ac280000 sw (r1),r8 5078 00004e48 8fe10000 lw r1,(r31) 5079 00004e4c 8c88006c lw r8,108(r4) 5080 00004e50 ac280004 sw 4(r1),r8 5081 00004e54 8c820070 lw r2,112(r4) 5082 00004e58 8c410008 lw r1,8(r2) 5083 00004e5c 2021ffff addi r1,r1,#-1 5084 00004e60 ac410008 sw 8(r2),r1 5085 00004e64 L116_LF5: 5086 00004e64 20080000 addi r8,r0,#0 5087 00004e68 afe80000 sw (r31),r8 5088 00004e6c 8ca10004 lw r1,4(r5) 5089 00004e70 ac850070 sw 112(r4),r5 5090 00004e74 ac81006c sw 108(r4),r1 5091 00004e78 8c280000 lw r8,(r1) 5092 00004e7c afe80000 sw (r31),r8 5093 00004e80 ac3f0000 sw (r1),r31 5094 00004e84 8fe10000 lw r1,(r31) 5095 00004e88 ac3f0004 sw 4(r1),r31 5096 00004e8c 8ca10008 lw r1,8(r5) 5097 00004e90 20210001 addi r1,r1,#1 5098 00004e94 aca10008 sw 8(r5),r1 5099 00004e98 20030000 addi r3,r0,#0 5100 00004e9c 8c810064 lw r1,100(r4) 5101 00004ea0 0061082a slt r1,r3,r1 5102 00004ea4 10200038 beqz r1,L122_LF5 5103 00004ea8 54000000 nop; not filled. 5104 00004eac 00041020 add r2,r0,r4 5105 00004eb0 L124_LF5: 5106 00004eb0 23bdfff8 addi r29,r29,#-8 5107 00004eb4 8c480060 lw r8,96(r2) 5108 00004eb8 afa80000 sw (r29),r8 5109 00004ebc 0fffe81c jal _MemoryFreePte 5110 00004ec0 54000000 nop; not filled. 5111 00004ec4 23bd0008 addi r29,r29,#8 5112 00004ec8 20420004 addi r2,r2,#4 5113 00004ecc 20630001 addi r3,r3,#1 5114 00004ed0 8c810064 lw r1,100(r4) 5115 00004ed4 0061082a slt r1,r3,r1 5116 00004ed8 1420ffd4 bnez r1,L124_LF5 5117 00004edc 54000000 nop; not filled. 5118 00004ee0 L122_LF5: 5119 00004ee0 23bdfff8 addi r29,r29,#-8 5120 00004ee4 94810008 lhu r1,8(r4) 5121 00004ee8 afa10000 sw (r29),r1 5122 00004eec 0fffe320 jal _MemoryFreePage 5123 00004ef0 54000000 nop; not filled. 5124 00004ef4 23bd0008 addi r29,r29,#8 5125 00004ef8 8c81000c lw r1,12(r4) 5126 00004efc 2008ffc0 addi r8,r0,#-64 5127 00004f00 00280824 and r1,r1,r8 5128 00004f04 34210001 ori r1,r1,#1 5129 00004f08 ac81000c sw 12(r4),r1 5130 00004f0c 0bfffe8c j L107_LF5 5131 00004f10 54000000 nop; not filled. 5132 00004f14 L108_LF5: 5133 00004f14 23bdfff8 addi r29,r29,#-8 5134 00004f18 3c010001 lhi r1,((_processQuantum_LF5)>>16)&0xffff 5135 00004f1c 24210438 addui r1,r1,(_processQuantum_LF5)&0xffff 5136 00004f20 8c210000 lw r1,(r1) 5137 00004f24 afa10000 sw (r29),r1 5138 00004f28 0c0044e4 jal _TimerSet 5139 00004f2c 54000000 nop; not filled. 5140 00004f30 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5141 00004f34 24420d78 addui r2,r2,(_debugstr)&0xffff 5142 00004f38 afa20000 sw (r29),r2 5143 00004f3c 20080070 addi r8,r0,#112 5144 00004f40 afa80004 sw 4(r29),r8 5145 00004f44 0fffeeec jal _dindex 5146 00004f48 54000000 nop; not filled. 5147 00004f4c 23bd0008 addi r29,r29,#8 5148 00004f50 64210000 snei r1,r1,#0 5149 00004f54 1420002c bnez r1,L128_LF5 5150 00004f58 54000000 nop; not filled. 5151 00004f5c 23bdfff8 addi r29,r29,#-8 5152 00004f60 afa20000 sw (r29),r2 5153 00004f64 2008002b addi r8,r0,#43 5154 00004f68 afa80004 sw 4(r29),r8 5155 00004f6c 0fffeec4 jal _dindex 5156 00004f70 54000000 nop; not filled. 5157 00004f74 23bd0008 addi r29,r29,#8 5158 00004f78 64210000 snei r1,r1,#0 5159 00004f7c 10200030 beqz r1,L127_LF5 5160 00004f80 54000000 nop; not filled. 5161 00004f84 L128_LF5: 5162 00004f84 23bdfff8 addi r29,r29,#-8 5163 00004f88 3c080001 lhi r8,((LC7_LF5)>>16)&0xffff 5164 00004f8c 25080538 addui r8,r8,(LC7_LF5)&0xffff 5165 00004f90 afa80000 sw (r29),r8 5166 00004f94 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 5167 00004f98 24210e40 addui r1,r1,(_currentPCB)&0xffff 5168 00004f9c 8c210000 lw r1,(r1) 5169 00004fa0 afa10004 sw 4(r29),r1 5170 00004fa4 0c006128 jal _printf 5171 00004fa8 54000000 nop; not filled. 5172 00004fac 23bd0008 addi r29,r29,#8 5173 00004fb0 L127_LF5: 5174 00004fb0 8fa20000 lw r2,0(r29) 5175 00004fb4 8fa30004 lw r3,4(r29) 5176 00004fb8 8fa40008 lw r4,8(r29) 5177 00004fbc 8fa5000c lw r5,12(r29) 5178 00004fc0 8fa60010 lw r6,16(r29) 5179 00004fc4 8fa70014 lw r7,20(r29) 5180 00004fc8 8fa80018 lw r8,24(r29) 5181 00004fcc 8fdffff8 lw r31,-8(r30) 5182 00004fd0 001ee820 add r29,r0,r30 5183 00004fd4 8fdefffc lw r30,-4(r30) 5184 00004fd8 4be00000 jr r31 5185 00004fdc 54000000 nop 5186 00004fe0 .endproc _ProcessSchedule 5187 00004fe0 .data 5188 0001055c .align 2 5189 0001055c LC8_LF5: 5190 0001055c 53757370 .ascii "Suspending PCB 0x%x (%s).\n\000" 5190 00010560 656e6469 5190 00010564 6e672050 5190 00010568 43422030 5190 0001056c 78257820 5190 00010570 28257329 5190 00010574 2e0a00 5191 00010577 .align 2 5192 00010578 LC9_LF5: 5193 00010578 25733a20 .ascii "%s: %s\n\000" 5193 0001057c 25730a00 5194 00010580 .align 2 5195 00010580 LC10_LF5: 5196 00010580 50726f63 .ascii "ProcessSuspend\000" 5196 00010584 65737353 5196 00010588 75737065 5196 0001058c 6e6400 5197 0001058f .align 2 5198 00010590 LC11_LF5: 5199 00010590 54727969 .ascii "Trying to suspend a non-running process!\n\000" 5199 00010594 6e672074 5199 00010598 6f207375 5199 0001059c 7370656e 5199 000105a0 64206120 5199 000105a4 6e6f6e2d 5199 000105a8 72756e6e 5199 000105ac 696e6720 5199 000105b0 70726f63 5199 000105b4 65737321 5199 000105b8 0a00 5200 000105ba .text 5201 00004fe0 .align 2 5202 00004fe0 .proc _ProcessSuspend 5203 00004fe0 .global _ProcessSuspend 5204 00004fe0 _ProcessSuspend: 5205 ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. 5206 00004fe0 afbefffc sw -4(r29),r30; push fp 5207 00004fe4 001df020 add r30,r0,r29; fp = sp 5208 00004fe8 afbffff8 sw -8(r29),r31; push ret addr 5209 00004fec 2fbd0018 subui r29,r29,#24; alloc local storage 5210 00004ff0 afa20000 sw 0(r29),r2 5211 00004ff4 afa30004 sw 4(r29),r3 5212 00004ff8 afa40008 sw 8(r29),r4 5213 00004ffc 8fc30000 lw r3,(r30) 5214 00005000 23bdfff8 addi r29,r29,#-8 5215 00005004 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5216 00005008 24420d78 addui r2,r2,(_debugstr)&0xffff 5217 0000500c afa20000 sw (r29),r2 5218 00005010 20040070 addi r4,r0,#112 5219 00005014 afa40004 sw 4(r29),r4 5220 00005018 0fffee18 jal _dindex 5221 0000501c 54000000 nop; not filled. 5222 00005020 23bd0008 addi r29,r29,#8 5223 00005024 64210000 snei r1,r1,#0 5224 00005028 1420002c bnez r1,L131_LF5 5225 0000502c 54000000 nop; not filled. 5226 00005030 23bdfff8 addi r29,r29,#-8 5227 00005034 afa20000 sw (r29),r2 5228 00005038 2004002b addi r4,r0,#43 5229 0000503c afa40004 sw 4(r29),r4 5230 00005040 0fffedf0 jal _dindex 5231 00005044 54000000 nop; not filled. 5232 00005048 23bd0008 addi r29,r29,#8 5233 0000504c 64210000 snei r1,r1,#0 5234 00005050 1020002c beqz r1,L130_LF5 5235 00005054 54000000 nop; not filled. 5236 00005058 L131_LF5: 5237 00005058 23bdfff0 addi r29,r29,#-16 5238 0000505c 3c040001 lhi r4,((LC8_LF5)>>16)&0xffff 5239 00005060 2484055c addui r4,r4,(LC8_LF5)&0xffff 5240 00005064 afa40000 sw (r29),r4 5241 00005068 afa30004 sw 4(r29),r3 5242 0000506c 20610010 addi r1,r3,#16 5243 00005070 afa10008 sw 8(r29),r1 5244 00005074 0c006058 jal _printf 5245 00005078 54000000 nop; not filled. 5246 0000507c 23bd0010 addi r29,r29,#16 5247 00005080 L130_LF5: 5248 00005080 8064000f lb r4,15(r3) 5249 00005084 58810001 srli r1,r4,#0x1 5250 00005088 30210001 andi r1,r1,#1 5251 0000508c 14200038 bnez r1,L133_LF5 5252 00005090 54000000 nop; not filled. 5253 00005094 23bdfff0 addi r29,r29,#-16 5254 00005098 3c040001 lhi r4,((LC9_LF5)>>16)&0xffff 5255 0000509c 24840578 addui r4,r4,(LC9_LF5)&0xffff 5256 000050a0 afa40000 sw (r29),r4 5257 000050a4 3c010001 lhi r1,((LC10_LF5)>>16)&0xffff 5258 000050a8 24210580 addui r1,r1,(LC10_LF5)&0xffff 5259 000050ac afa10004 sw 4(r29),r1 5260 000050b0 3c040001 lhi r4,((LC11_LF5)>>16)&0xffff 5261 000050b4 24840590 addui r4,r4,(LC11_LF5)&0xffff 5262 000050b8 afa40008 sw 8(r29),r4 5263 000050bc 0c006010 jal _printf 5264 000050c0 54000000 nop; not filled. 5265 000050c4 23bd0010 addi r29,r29,#16 5266 000050c8 L133_LF5: 5267 000050c8 8c61000c lw r1,12(r3) 5268 000050cc 2004ffc0 addi r4,r0,#-64 5269 000050d0 00240824 and r1,r1,r4 5270 000050d4 34210004 ori r1,r1,#4 5271 000050d8 ac61000c sw 12(r3),r1 5272 000050dc 207f0068 addi r31,r3,#104 5273 000050e0 8c610070 lw r1,112(r3) 5274 000050e4 8c210008 lw r1,8(r1) 5275 000050e8 6c210000 sgti r1,r1,#0 5276 000050ec 1020002c beqz r1,L136_LF5 5277 000050f0 54000000 nop; not filled. 5278 000050f4 8c61006c lw r1,108(r3) 5279 000050f8 8fe40000 lw r4,(r31) 5280 000050fc ac240000 sw (r1),r4 5281 00005100 8fe10000 lw r1,(r31) 5282 00005104 8c64006c lw r4,108(r3) 5283 00005108 ac240004 sw 4(r1),r4 5284 0000510c 8c620070 lw r2,112(r3) 5285 00005110 8c410008 lw r1,8(r2) 5286 00005114 2021ffff addi r1,r1,#-1 5287 00005118 ac410008 sw 8(r2),r1 5288 0000511c L136_LF5: 5289 0000511c 20040000 addi r4,r0,#0 5290 00005120 afe40000 sw (r31),r4 5291 00005124 3c020001 lhi r2,((_waitQueue_LF5)>>16)&0xffff 5292 00005128 24420e5c addui r2,r2,(_waitQueue_LF5)&0xffff 5293 0000512c 8c410004 lw r1,4(r2) 5294 00005130 ac620070 sw 112(r3),r2 5295 00005134 ac61006c sw 108(r3),r1 5296 00005138 8c240000 lw r4,(r1) 5297 0000513c afe40000 sw (r31),r4 5298 00005140 ac3f0000 sw (r1),r31 5299 00005144 8fe10000 lw r1,(r31) 5300 00005148 ac3f0004 sw 4(r1),r31 5301 0000514c 8c410008 lw r1,8(r2) 5302 00005150 20210001 addi r1,r1,#1 5303 00005154 ac410008 sw 8(r2),r1 5304 00005158 8fa20000 lw r2,0(r29) 5305 0000515c 8fa30004 lw r3,4(r29) 5306 00005160 8fa40008 lw r4,8(r29) 5307 00005164 8fdffff8 lw r31,-8(r30) 5308 00005168 001ee820 add r29,r0,r30 5309 0000516c 8fdefffc lw r30,-4(r30) 5310 00005170 4be00000 jr r31 5311 00005174 54000000 nop 5312 00005178 .endproc _ProcessSuspend 5313 00005178 .data 5314 000105ba .align 2 5315 000105bc LC12_LF5: 5316 000105bc 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 5316 000105c0 6e672075 5316 000105c4 70205043 5316 000105c8 42203078 5316 000105cc 25782e0a 5316 000105d0 00 5317 000105d1 .align 2 5318 000105d4 LC13_LF5: 5319 000105d4 50726f63 .ascii "ProcessWakeup\000" 5319 000105d8 65737357 5319 000105dc 616b6575 5319 000105e0 7000 5320 000105e2 .align 2 5321 000105e4 LC14_LF5: 5322 000105e4 54727969 .ascii "Trying to wake up a non-sleeping process!\n\000" 5322 000105e8 6e672074 5322 000105ec 6f207761 5322 000105f0 6b652075 5322 000105f4 70206120 5322 000105f8 6e6f6e2d 5322 000105fc 736c6565 5322 00010600 70696e67 5322 00010604 2070726f 5322 00010608 63657373 5322 0001060c 210a00 5323 0001060f .text 5324 00005178 .align 2 5325 00005178 .proc _ProcessWakeup 5326 00005178 .global _ProcessWakeup 5327 00005178 _ProcessWakeup: 5328 ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. 5329 00005178 afbefffc sw -4(r29),r30; push fp 5330 0000517c 001df020 add r30,r0,r29; fp = sp 5331 00005180 afbffff8 sw -8(r29),r31; push ret addr 5332 00005184 2fbd0018 subui r29,r29,#24; alloc local storage 5333 00005188 afa20000 sw 0(r29),r2 5334 0000518c afa30004 sw 4(r29),r3 5335 00005190 afa40008 sw 8(r29),r4 5336 00005194 8fc30000 lw r3,(r30) 5337 00005198 23bdfff8 addi r29,r29,#-8 5338 0000519c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5339 000051a0 24420d78 addui r2,r2,(_debugstr)&0xffff 5340 000051a4 afa20000 sw (r29),r2 5341 000051a8 20040070 addi r4,r0,#112 5342 000051ac afa40004 sw 4(r29),r4 5343 000051b0 0fffec80 jal _dindex 5344 000051b4 54000000 nop; not filled. 5345 000051b8 23bd0008 addi r29,r29,#8 5346 000051bc 64210000 snei r1,r1,#0 5347 000051c0 1420002c bnez r1,L142_LF5 5348 000051c4 54000000 nop; not filled. 5349 000051c8 23bdfff8 addi r29,r29,#-8 5350 000051cc afa20000 sw (r29),r2 5351 000051d0 2004002b addi r4,r0,#43 5352 000051d4 afa40004 sw 4(r29),r4 5353 000051d8 0fffec58 jal _dindex 5354 000051dc 54000000 nop; not filled. 5355 000051e0 23bd0008 addi r29,r29,#8 5356 000051e4 64210000 snei r1,r1,#0 5357 000051e8 10200024 beqz r1,L141_LF5 5358 000051ec 54000000 nop; not filled. 5359 000051f0 L142_LF5: 5360 000051f0 23bdfff8 addi r29,r29,#-8 5361 000051f4 3c040001 lhi r4,((LC12_LF5)>>16)&0xffff 5362 000051f8 248405bc addui r4,r4,(LC12_LF5)&0xffff 5363 000051fc afa40000 sw (r29),r4 5364 00005200 afa30004 sw 4(r29),r3 5365 00005204 0c005ec8 jal _printf 5366 00005208 54000000 nop; not filled. 5367 0000520c 23bd0008 addi r29,r29,#8 5368 00005210 L141_LF5: 5369 00005210 8064000f lb r4,15(r3) 5370 00005214 58810002 srli r1,r4,#0x2 5371 00005218 30210001 andi r1,r1,#1 5372 0000521c 14200038 bnez r1,L144_LF5 5373 00005220 54000000 nop; not filled. 5374 00005224 23bdfff0 addi r29,r29,#-16 5375 00005228 3c040001 lhi r4,((LC9_LF5)>>16)&0xffff 5376 0000522c 24840578 addui r4,r4,(LC9_LF5)&0xffff 5377 00005230 afa40000 sw (r29),r4 5378 00005234 3c010001 lhi r1,((LC13_LF5)>>16)&0xffff 5379 00005238 242105d4 addui r1,r1,(LC13_LF5)&0xffff 5380 0000523c afa10004 sw 4(r29),r1 5381 00005240 3c040001 lhi r4,((LC14_LF5)>>16)&0xffff 5382 00005244 248405e4 addui r4,r4,(LC14_LF5)&0xffff 5383 00005248 afa40008 sw 8(r29),r4 5384 0000524c 0c005e80 jal _printf 5385 00005250 54000000 nop; not filled. 5386 00005254 23bd0010 addi r29,r29,#16 5387 00005258 L144_LF5: 5388 00005258 8c61000c lw r1,12(r3) 5389 0000525c 2004ffc0 addi r4,r0,#-64 5390 00005260 00240824 and r1,r1,r4 5391 00005264 34210002 ori r1,r1,#2 5392 00005268 ac61000c sw 12(r3),r1 5393 0000526c 207f0068 addi r31,r3,#104 5394 00005270 8c610070 lw r1,112(r3) 5395 00005274 8c210008 lw r1,8(r1) 5396 00005278 6c210000 sgti r1,r1,#0 5397 0000527c 1020002c beqz r1,L147_LF5 5398 00005280 54000000 nop; not filled. 5399 00005284 8c61006c lw r1,108(r3) 5400 00005288 8fe40000 lw r4,(r31) 5401 0000528c ac240000 sw (r1),r4 5402 00005290 8fe10000 lw r1,(r31) 5403 00005294 8c64006c lw r4,108(r3) 5404 00005298 ac240004 sw 4(r1),r4 5405 0000529c 8c620070 lw r2,112(r3) 5406 000052a0 8c410008 lw r1,8(r2) 5407 000052a4 2021ffff addi r1,r1,#-1 5408 000052a8 ac410008 sw 8(r2),r1 5409 000052ac L147_LF5: 5410 000052ac 20040000 addi r4,r0,#0 5411 000052b0 afe40000 sw (r31),r4 5412 000052b4 3c020001 lhi r2,((_runQueue_LF5)>>16)&0xffff 5413 000052b8 24420e50 addui r2,r2,(_runQueue_LF5)&0xffff 5414 000052bc 8c410004 lw r1,4(r2) 5415 000052c0 ac620070 sw 112(r3),r2 5416 000052c4 ac61006c sw 108(r3),r1 5417 000052c8 8c240000 lw r4,(r1) 5418 000052cc afe40000 sw (r31),r4 5419 000052d0 ac3f0000 sw (r1),r31 5420 000052d4 8fe10000 lw r1,(r31) 5421 000052d8 ac3f0004 sw 4(r1),r31 5422 000052dc 8c410008 lw r1,8(r2) 5423 000052e0 20210001 addi r1,r1,#1 5424 000052e4 ac410008 sw 8(r2),r1 5425 000052e8 8fa20000 lw r2,0(r29) 5426 000052ec 8fa30004 lw r3,4(r29) 5427 000052f0 8fa40008 lw r4,8(r29) 5428 000052f4 8fdffff8 lw r31,-8(r30) 5429 000052f8 001ee820 add r29,r0,r30 5430 000052fc 8fdefffc lw r30,-4(r30) 5431 00005300 4be00000 jr r31 5432 00005304 54000000 nop 5433 00005308 .endproc _ProcessWakeup 5434 00005308 .data 5435 0001060f .align 2 5436 00010610 LC15_LF5: 5437 00010610 456e7465 .ascii "Entering ProcessDestroy for 0x%x.\n\000" 5437 00010614 72696e67 5437 00010618 2050726f 5437 0001061c 63657373 5437 00010620 44657374 5437 00010624 726f7920 5437 00010628 666f7220 5437 0001062c 30782578 5437 00010630 2e0a00 5438 00010633 .align 2 5439 00010634 LC16_LF5: 5440 00010634 4c656176 .ascii "Leaving ProcessDestroy for 0x%x.\n\000" 5440 00010638 696e6720 5440 0001063c 50726f63 5440 00010640 65737344 5440 00010644 65737472 5440 00010648 6f792066 5440 0001064c 6f722030 5440 00010650 7825782e 5440 00010654 0a00 5441 00010656 .text 5442 00005308 .align 2 5443 00005308 .proc _ProcessDestroy 5444 00005308 .global _ProcessDestroy 5445 00005308 _ProcessDestroy: 5446 ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. 5447 00005308 afbefffc sw -4(r29),r30; push fp 5448 0000530c 001df020 add r30,r0,r29; fp = sp 5449 00005310 afbffff8 sw -8(r29),r31; push ret addr 5450 00005314 2fbd0018 subui r29,r29,#24; alloc local storage 5451 00005318 afa20000 sw 0(r29),r2 5452 0000531c afa30004 sw 4(r29),r3 5453 00005320 afa40008 sw 8(r29),r4 5454 00005324 8fc30000 lw r3,(r30) 5455 00005328 23bdfff8 addi r29,r29,#-8 5456 0000532c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5457 00005330 24420d78 addui r2,r2,(_debugstr)&0xffff 5458 00005334 afa20000 sw (r29),r2 5459 00005338 20040070 addi r4,r0,#112 5460 0000533c afa40004 sw 4(r29),r4 5461 00005340 0fffeaf0 jal _dindex 5462 00005344 54000000 nop; not filled. 5463 00005348 23bd0008 addi r29,r29,#8 5464 0000534c 64210000 snei r1,r1,#0 5465 00005350 1420002c bnez r1,L153_LF5 5466 00005354 54000000 nop; not filled. 5467 00005358 23bdfff8 addi r29,r29,#-8 5468 0000535c afa20000 sw (r29),r2 5469 00005360 2004002b addi r4,r0,#43 5470 00005364 afa40004 sw 4(r29),r4 5471 00005368 0fffeac8 jal _dindex 5472 0000536c 54000000 nop; not filled. 5473 00005370 23bd0008 addi r29,r29,#8 5474 00005374 64210000 snei r1,r1,#0 5475 00005378 10200024 beqz r1,L152_LF5 5476 0000537c 54000000 nop; not filled. 5477 00005380 L153_LF5: 5478 00005380 23bdfff8 addi r29,r29,#-8 5479 00005384 3c040001 lhi r4,((LC15_LF5)>>16)&0xffff 5480 00005388 24840610 addui r4,r4,(LC15_LF5)&0xffff 5481 0000538c afa40000 sw (r29),r4 5482 00005390 afa30004 sw 4(r29),r3 5483 00005394 0c005d38 jal _printf 5484 00005398 54000000 nop; not filled. 5485 0000539c 23bd0008 addi r29,r29,#8 5486 000053a0 L152_LF5: 5487 000053a0 8c61000c lw r1,12(r3) 5488 000053a4 2004ffc0 addi r4,r0,#-64 5489 000053a8 00240824 and r1,r1,r4 5490 000053ac 34210010 ori r1,r1,#16 5491 000053b0 ac61000c sw 12(r3),r1 5492 000053b4 207f0068 addi r31,r3,#104 5493 000053b8 8c610070 lw r1,112(r3) 5494 000053bc 8c210008 lw r1,8(r1) 5495 000053c0 6c210000 sgti r1,r1,#0 5496 000053c4 1020002c beqz r1,L156_LF5 5497 000053c8 54000000 nop; not filled. 5498 000053cc 8c61006c lw r1,108(r3) 5499 000053d0 8fe40000 lw r4,(r31) 5500 000053d4 ac240000 sw (r1),r4 5501 000053d8 8fe10000 lw r1,(r31) 5502 000053dc 8c64006c lw r4,108(r3) 5503 000053e0 ac240004 sw 4(r1),r4 5504 000053e4 8c620070 lw r2,112(r3) 5505 000053e8 8c410008 lw r1,8(r2) 5506 000053ec 2021ffff addi r1,r1,#-1 5507 000053f0 ac410008 sw 8(r2),r1 5508 000053f4 L156_LF5: 5509 000053f4 20040000 addi r4,r0,#0 5510 000053f8 afe40000 sw (r31),r4 5511 000053fc 3c020001 lhi r2,((_zombieQueue_LF5)>>16)&0xffff 5512 00005400 24420e68 addui r2,r2,(_zombieQueue_LF5)&0xffff 5513 00005404 ac620070 sw 112(r3),r2 5514 00005408 ac62006c sw 108(r3),r2 5515 0000540c 8c440000 lw r4,(r2) 5516 00005410 afe40000 sw (r31),r4 5517 00005414 ac5f0000 sw (r2),r31 5518 00005418 8fe10000 lw r1,(r31) 5519 0000541c ac3f0004 sw 4(r1),r31 5520 00005420 8c410008 lw r1,8(r2) 5521 00005424 20210001 addi r1,r1,#1 5522 00005428 ac410008 sw 8(r2),r1 5523 0000542c 23bdfff8 addi r29,r29,#-8 5524 00005430 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5525 00005434 24420d78 addui r2,r2,(_debugstr)&0xffff 5526 00005438 afa20000 sw (r29),r2 5527 0000543c 20040070 addi r4,r0,#112 5528 00005440 afa40004 sw 4(r29),r4 5529 00005444 0fffe9ec jal _dindex 5530 00005448 54000000 nop; not filled. 5531 0000544c 23bd0008 addi r29,r29,#8 5532 00005450 64210000 snei r1,r1,#0 5533 00005454 1420002c bnez r1,L160_LF5 5534 00005458 54000000 nop; not filled. 5535 0000545c 23bdfff8 addi r29,r29,#-8 5536 00005460 afa20000 sw (r29),r2 5537 00005464 2004002b addi r4,r0,#43 5538 00005468 afa40004 sw 4(r29),r4 5539 0000546c 0fffe9c4 jal _dindex 5540 00005470 54000000 nop; not filled. 5541 00005474 23bd0008 addi r29,r29,#8 5542 00005478 64210000 snei r1,r1,#0 5543 0000547c 10200024 beqz r1,L159_LF5 5544 00005480 54000000 nop; not filled. 5545 00005484 L160_LF5: 5546 00005484 23bdfff8 addi r29,r29,#-8 5547 00005488 3c040001 lhi r4,((LC16_LF5)>>16)&0xffff 5548 0000548c 24840634 addui r4,r4,(LC16_LF5)&0xffff 5549 00005490 afa40000 sw (r29),r4 5550 00005494 afa30004 sw 4(r29),r3 5551 00005498 0c005c34 jal _printf 5552 0000549c 54000000 nop; not filled. 5553 000054a0 23bd0008 addi r29,r29,#8 5554 000054a4 L159_LF5: 5555 000054a4 8fa20000 lw r2,0(r29) 5556 000054a8 8fa30004 lw r3,4(r29) 5557 000054ac 8fa40008 lw r4,8(r29) 5558 000054b0 8fdffff8 lw r31,-8(r30) 5559 000054b4 001ee820 add r29,r0,r30 5560 000054b8 8fdefffc lw r30,-4(r30) 5561 000054bc 4be00000 jr r31 5562 000054c0 54000000 nop 5563 000054c4 .endproc _ProcessDestroy 5564 000054c4 .data 5565 00010656 .align 2 5566 00010658 _str52_LF5: 5567 00010658 .space 4 5568 0001065c .align 2 5569 0001065c _location53_LF5: 5570 0001065c 00000000 .word 0 5571 00010660 .text 5572 000054c4 .align 2 5573 000054c4 .proc _get_argument 5574 000054c4 .global _get_argument 5575 000054c4 _get_argument: 5576 ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. 5577 000054c4 afbefffc sw -4(r29),r30; push fp 5578 000054c8 001df020 add r30,r0,r29; fp = sp 5579 000054cc afbffff8 sw -8(r29),r31; push ret addr 5580 000054d0 2fbd0018 subui r29,r29,#24; alloc local storage 5581 000054d4 afa20000 sw 0(r29),r2 5582 000054d8 afa30004 sw 4(r29),r3 5583 000054dc afa40008 sw 8(r29),r4 5584 000054e0 afa5000c sw 12(r29),r5 5585 000054e4 8fc20000 lw r2,(r30) 5586 000054e8 64410000 snei r1,r2,#0 5587 000054ec 10200020 beqz r1,L173_LF5 5588 000054f0 54000000 nop; not filled. 5589 000054f4 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 5590 000054f8 24210658 addui r1,r1,(_str52_LF5)&0xffff 5591 000054fc ac220000 sw (r1),r2 5592 00005500 3c010001 lhi r1,((_location53_LF5)>>16)&0xffff 5593 00005504 2421065c addui r1,r1,(_location53_LF5)&0xffff 5594 00005508 20050000 addi r5,r0,#0 5595 0000550c ac250000 sw (r1),r5 5596 00005510 L173_LF5: 5597 00005510 3c1f0001 lhi r31,((_location53_LF5)>>16)&0xffff 5598 00005514 27ff065c addui r31,r31,(_location53_LF5)&0xffff 5599 00005518 8fe30000 lw r3,(r31) 5600 0000551c 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 5601 00005520 24210658 addui r1,r1,(_str52_LF5)&0xffff 5602 00005524 8c220000 lw r2,(r1) 5603 00005528 00430820 add r1,r2,r3 5604 0000552c 90210000 lbu r1,(r1) 5605 00005530 64210000 snei r1,r1,#0 5606 00005534 10200010 beqz r1,L175_LF5 5607 00005538 54000000 nop; not filled. 5608 0000553c 6c610062 sgti r1,r3,#98 5609 00005540 10200020 beqz r1,L174_LF5 5610 00005544 54000000 nop; not filled. 5611 00005548 L175_LF5: 5612 00005548 20010000 addi r1,r0,#0 5613 0000554c 08000058 j L182_LF5 5614 00005550 54000000 nop; not filled. 5615 00005554 L183_LF5: 5616 00005554 23e10001 addi r1,r31,#1 5617 00005558 ac410000 sw (r2),r1 5618 0000555c 08000044 j L177_LF5 5619 00005560 54000000 nop; not filled. 5620 00005564 L174_LF5: 5621 00005564 70610063 slei r1,r3,#99 5622 00005568 10200038 beqz r1,L177_LF5 5623 0000556c 54000000 nop; not filled. 5624 00005570 00022020 add r4,r0,r2 5625 00005574 001f1020 add r2,r0,r31 5626 00005578 L179_LF5: 5627 00005578 8c5f0000 lw r31,(r2) 5628 0000557c 009f0820 add r1,r4,r31 5629 00005580 90210000 lbu r1,(r1) 5630 00005584 64210000 snei r1,r1,#0 5631 00005588 1020ffc8 beqz r1,L183_LF5 5632 0000558c 54000000 nop; not filled. 5633 00005590 23e10001 addi r1,r31,#1 5634 00005594 ac410000 sw (r2),r1 5635 00005598 70210063 slei r1,r1,#99 5636 0000559c 1420ffd8 bnez r1,L179_LF5 5637 000055a0 54000000 nop; not filled. 5638 000055a4 L177_LF5: 5639 000055a4 00030820 add r1,r0,r3 5640 000055a8 L182_LF5: 5641 000055a8 8fa20000 lw r2,0(r29) 5642 000055ac 8fa30004 lw r3,4(r29) 5643 000055b0 8fa40008 lw r4,8(r29) 5644 000055b4 8fa5000c lw r5,12(r29) 5645 000055b8 8fdffff8 lw r31,-8(r30) 5646 000055bc 001ee820 add r29,r0,r30 5647 000055c0 8fdefffc lw r30,-4(r30) 5648 000055c4 4be00000 jr r31 5649 000055c8 54000000 nop 5650 000055cc .endproc _get_argument 5651 000055cc .data 5652 00010660 .align 2 5653 00010660 LC17_LF5: 5654 00010660 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 5654 00010664 696e7465 5654 00010668 72727570 5654 0001066c 74207661 5654 00010670 6c756520 5654 00010674 77617320 5654 00010678 30782578 5654 0001067c 2e0a00 5655 0001067f .align 2 5656 00010680 LC18_LF5: 5657 00010680 456e7465 .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" 5657 00010684 72696e67 5657 00010688 2050726f 5657 0001068c 63657373 5657 00010690 466f726b 5657 00010694 20617267 5657 00010698 733d3078 5657 0001069c 25782030 5657 000106a0 78257820 5657 000106a4 25732025 5657 000106a8 640a00 5658 000106ab .align 2 5659 000106ac LC19_LF5: 5660 000106ac 46415441 .ascii "FATAL error: no free processes!\n\000" 5660 000106b0 4c206572 5660 000106b4 726f723a 5660 000106b8 206e6f20 5660 000106bc 66726565 5660 000106c0 2070726f 5660 000106c4 63657373 5660 000106c8 6573210a 5660 000106cc 00 5661 000106cd .align 2 5662 000106d0 LC20_LF5: 5663 000106d0 476f7420 .ascii "Got a link @ 0x%x\n\000" 5663 000106d4 61206c69 5663 000106d8 6e6b2040 5663 000106dc 20307825 5663 000106e0 780a00 5664 000106e3 .align 2 5665 000106e4 LC21_LF5: 5666 000106e4 4265666f .ascii "Before restore interrupt value is 0x%x.\n\000" 5666 000106e8 72652072 5666 000106ec 6573746f 5666 000106f0 72652069 5666 000106f4 6e746572 5666 000106f8 72757074 5666 000106fc 2076616c 5666 00010700 75652069 5666 00010704 73203078 5666 00010708 25782e0a 5666 0001070c 00 5667 0001070d .align 2 5668 00010710 LC22_LF5: 5669 00010710 4e657720 .ascii "New interrupt value is 0x%x.\n\000" 5669 00010714 696e7465 5669 00010718 72727570 5669 0001071c 74207661 5669 00010720 6c756520 5669 00010724 69732030 5669 00010728 7825782e 5669 0001072c 0a00 5670 0001072e .align 2 5671 00010730 LC23_LF5: 5672 00010730 61464154 .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" 5672 00010734 414c3a20 5672 00010738 636f756c 5672 0001073c 646e2774 5672 00010740 20616c6c 5672 00010744 6f636174 5672 00010748 65206d65 5672 0001074c 6d6f7279 5672 00010750 202d206e 5672 00010754 6f206672 5672 00010758 65652070 5672 0001075c 61676573 5672 00010760 210a00 5673 00010763 .align 2 5674 00010764 LC24_LF5: 5675 00010764 62464154 .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" 5675 00010768 414c3a20 5675 0001076c 636f756c 5675 00010770 646e2774 5675 00010774 20616c6c 5675 00010778 6f636174 5675 0001077c 65207379 5675 00010780 7374656d 5675 00010784 20737461 5675 00010788 636b202d 5675 0001078c 206e6f20 5675 00010790 66726565 5675 00010794 20706167 5675 00010798 6573210a 5675 0001079c 00 5676 0001079d .align 2 5677 000107a0 LC25_LF5: 5678 000107a0 53657474 .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" 5678 000107a4 696e6720 5678 000107a8 75702050 5678 000107ac 43422040 5678 000107b0 20307825 5678 000107b4 78202873 5678 000107b8 79732073 5678 000107bc 7461636b 5678 000107c0 3d307825 5678 000107c4 782c206d 5678 000107c8 656d3d30 5678 000107cc 7825782c 5678 000107d0 2073697a 5678 000107d4 653d3078 5678 000107d8 2578290a 5678 000107dc 00 5679 000107dd .align 2 5680 000107e0 LC26_LF5: 5681 000107e0 41626f75 .ascii "About to load %s\n\000" 5681 000107e4 7420746f 5681 000107e8 206c6f61 5681 000107ec 64202573 5681 000107f0 0a00 5682 000107f2 .align 2 5683 000107f4 LC27_LF5: 5684 000107f4 46696c65 .ascii "File %s -> start=0x%08x\n\000" 5684 000107f8 20257320 5684 000107fc 2d3e2073 5684 00010800 74617274 5684 00010804 3d307825 5684 00010808 3038780a 5684 0001080c 00 5685 0001080d .align 2 5686 00010810 LC28_LF5: 5687 00010810 46696c65 .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" 5687 00010814 20257320 5687 00010818 2d3e2063 5687 0001081c 6f646520 5687 00010820 40203078 5687 00010824 25303878 5687 00010828 20287369 5687 0001082c 7a653d30 5687 00010830 78253038 5687 00010834 78290a00 5688 00010838 .align 2 5689 00010838 LC29_LF5: 5690 00010838 46696c65 .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" 5690 0001083c 20257320 5690 00010840 2d3e2064 5690 00010844 61746120 5690 00010848 40203078 5690 0001084c 25303878 5690 00010850 20287369 5690 00010854 7a653d30 5690 00010858 78253038 5690 0001085c 78290a00 5691 00010860 .align 2 5692 00010860 LC30_LF5: 5693 00010860 506c6163 .ascii "Placing %d bytes at vaddr %08x.\n\000" 5693 00010864 696e6720 5693 00010868 25642062 5693 0001086c 79746573 5693 00010870 20617420 5693 00010874 76616464 5693 00010878 72202530 5693 0001087c 38782e0a 5693 00010880 00 5694 00010881 .align 2 5695 00010884 LC31_LF5: 5696 00010884 53657474 .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" 5696 00010888 696e6720 5696 0001088c 63757272 5696 00010890 656e7450 5696 00010894 43423d30 5696 00010898 7825782c 5696 0001089c 20737461 5696 000108a0 636b6672 5696 000108a4 616d653d 5696 000108a8 30782578 5696 000108ac 0a00 5697 000108ae .align 2 5698 000108b0 LC32_LF5: 5699 000108b0 4c656176 .ascii "Leaving ProcessFork (%s)\n\000" 5699 000108b4 696e6720 5699 000108b8 50726f63 5699 000108bc 65737346 5699 000108c0 6f726b20 5699 000108c4 28257329 5699 000108c8 0a00 5700 000108ca .text 5701 000055cc .align 2 5702 000055cc .proc _ProcessFork 5703 000055cc .global _ProcessFork 5704 000055cc _ProcessFork: 5705 ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. 5706 000055cc afbefffc sw -4(r29),r30; push fp 5707 000055d0 001df020 add r30,r0,r29; fp = sp 5708 000055d4 afbffff8 sw -8(r29),r31; push ret addr 5709 000055d8 2fbd02d8 subui r29,r29,#728; alloc local storage 5710 000055dc afa20000 sw 0(r29),r2 5711 000055e0 afa30004 sw 4(r29),r3 5712 000055e4 afa40008 sw 8(r29),r4 5713 000055e8 afa5000c sw 12(r29),r5 5714 000055ec afa60010 sw 16(r29),r6 5715 000055f0 afa70014 sw 20(r29),r7 5716 000055f4 afa80018 sw 24(r29),r8 5717 000055f8 afa9001c sw 28(r29),r9 5718 000055fc afaa0020 sw 32(r29),r10 5719 00005600 afab0024 sw 36(r29),r11 5720 00005604 afac0028 sw 40(r29),r12 5721 00005608 afad002c sw 44(r29),r13 5722 0000560c 8fc50000 lw r5,(r30) 5723 00005610 8fca0004 lw r10,4(r30) 5724 00005614 8fcc0008 lw r12,8(r30) 5725 00005618 8fc4000c lw r4,12(r30) 5726 0000561c 200d0000 addi r13,r0,#0 5727 00005620 afcdfd58 sw -680(r30),r13 5728 00005624 23bdfff8 addi r29,r29,#-8 5729 00005628 200d000f addi r13,r0,#15 5730 0000562c afad0000 sw (r29),r13 5731 00005630 0fffbc54 jal _SetIntrs 5732 00005634 54000000 nop; not filled. 5733 00005638 00011820 add r3,r0,r1 5734 0000563c 23bd0008 addi r29,r29,#8 5735 00005640 23bdfff8 addi r29,r29,#-8 5736 00005644 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5737 00005648 24420d78 addui r2,r2,(_debugstr)&0xffff 5738 0000564c afa20000 sw (r29),r2 5739 00005650 200d0049 addi r13,r0,#73 5740 00005654 afad0004 sw 4(r29),r13 5741 00005658 0fffe7d8 jal _dindex 5742 0000565c 54000000 nop; not filled. 5743 00005660 23bd0008 addi r29,r29,#8 5744 00005664 64210000 snei r1,r1,#0 5745 00005668 1420002c bnez r1,L187_LF5 5746 0000566c 54000000 nop; not filled. 5747 00005670 23bdfff8 addi r29,r29,#-8 5748 00005674 afa20000 sw (r29),r2 5749 00005678 200d002b addi r13,r0,#43 5750 0000567c afad0004 sw 4(r29),r13 5751 00005680 0fffe7b0 jal _dindex 5752 00005684 54000000 nop; not filled. 5753 00005688 23bd0008 addi r29,r29,#8 5754 0000568c 64210000 snei r1,r1,#0 5755 00005690 10200024 beqz r1,L186_LF5 5756 00005694 54000000 nop; not filled. 5757 00005698 L187_LF5: 5758 00005698 23bdfff8 addi r29,r29,#-8 5759 0000569c 3c0d0001 lhi r13,((LC17_LF5)>>16)&0xffff 5760 000056a0 25ad0660 addui r13,r13,(LC17_LF5)&0xffff 5761 000056a4 afad0000 sw (r29),r13 5762 000056a8 afa30004 sw 4(r29),r3 5763 000056ac 0c005a20 jal _printf 5764 000056b0 54000000 nop; not filled. 5765 000056b4 23bd0008 addi r29,r29,#8 5766 000056b8 L186_LF5: 5767 000056b8 23bdfff8 addi r29,r29,#-8 5768 000056bc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5769 000056c0 24420d78 addui r2,r2,(_debugstr)&0xffff 5770 000056c4 afa20000 sw (r29),r2 5771 000056c8 200d0070 addi r13,r0,#112 5772 000056cc afad0004 sw 4(r29),r13 5773 000056d0 0fffe760 jal _dindex 5774 000056d4 54000000 nop; not filled. 5775 000056d8 23bd0008 addi r29,r29,#8 5776 000056dc 64210000 snei r1,r1,#0 5777 000056e0 1420002c bnez r1,L189_LF5 5778 000056e4 54000000 nop; not filled. 5779 000056e8 23bdfff8 addi r29,r29,#-8 5780 000056ec afa20000 sw (r29),r2 5781 000056f0 200d002b addi r13,r0,#43 5782 000056f4 afad0004 sw 4(r29),r13 5783 000056f8 0fffe738 jal _dindex 5784 000056fc 54000000 nop; not filled. 5785 00005700 23bd0008 addi r29,r29,#8 5786 00005704 64210000 snei r1,r1,#0 5787 00005708 10200030 beqz r1,L188_LF5 5788 0000570c 54000000 nop; not filled. 5789 00005710 L189_LF5: 5790 00005710 23bdffe8 addi r29,r29,#-24 5791 00005714 3c0d0001 lhi r13,((LC18_LF5)>>16)&0xffff 5792 00005718 25ad0680 addui r13,r13,(LC18_LF5)&0xffff 5793 0000571c afad0000 sw (r29),r13 5794 00005720 afa50004 sw 4(r29),r5 5795 00005724 afaa0008 sw 8(r29),r10 5796 00005728 afac000c sw 12(r29),r12 5797 0000572c afa40010 sw 16(r29),r4 5798 00005730 0c00599c jal _printf 5799 00005734 54000000 nop; not filled. 5800 00005738 23bd0018 addi r29,r29,#24 5801 0000573c L188_LF5: 5802 0000573c 3c020001 lhi r2,((_freepcbs_LF5)>>16)&0xffff 5803 00005740 24420e44 addui r2,r2,(_freepcbs_LF5)&0xffff 5804 00005744 8c410008 lw r1,8(r2) 5805 00005748 60210000 seqi r1,r1,#0 5806 0000574c 10200028 beqz r1,L190_LF5 5807 00005750 54000000 nop; not filled. 5808 00005754 23bdfff8 addi r29,r29,#-8 5809 00005758 3c0d0001 lhi r13,((LC19_LF5)>>16)&0xffff 5810 0000575c 25ad06ac addui r13,r13,(LC19_LF5)&0xffff 5811 00005760 afad0000 sw (r29),r13 5812 00005764 0c005968 jal _printf 5813 00005768 54000000 nop; not filled. 5814 0000576c 0c005948 jal _exitsim 5815 00005770 54000000 nop; not filled. 5816 00005774 23bd0008 addi r29,r29,#8 5817 00005778 L190_LF5: 5818 00005778 8c490000 lw r9,(r2) 5819 0000577c 23bdfff8 addi r29,r29,#-8 5820 00005780 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5821 00005784 24420d78 addui r2,r2,(_debugstr)&0xffff 5822 00005788 afa20000 sw (r29),r2 5823 0000578c 200d0070 addi r13,r0,#112 5824 00005790 afad0004 sw 4(r29),r13 5825 00005794 0fffe69c jal _dindex 5826 00005798 54000000 nop; not filled. 5827 0000579c 23bd0008 addi r29,r29,#8 5828 000057a0 64210000 snei r1,r1,#0 5829 000057a4 1420002c bnez r1,L195_LF5 5830 000057a8 54000000 nop; not filled. 5831 000057ac 23bdfff8 addi r29,r29,#-8 5832 000057b0 afa20000 sw (r29),r2 5833 000057b4 200d002b addi r13,r0,#43 5834 000057b8 afad0004 sw 4(r29),r13 5835 000057bc 0fffe674 jal _dindex 5836 000057c0 54000000 nop; not filled. 5837 000057c4 23bd0008 addi r29,r29,#8 5838 000057c8 64210000 snei r1,r1,#0 5839 000057cc 10200024 beqz r1,L194_LF5 5840 000057d0 54000000 nop; not filled. 5841 000057d4 L195_LF5: 5842 000057d4 23bdfff8 addi r29,r29,#-8 5843 000057d8 3c0d0001 lhi r13,((LC20_LF5)>>16)&0xffff 5844 000057dc 25ad06d0 addui r13,r13,(LC20_LF5)&0xffff 5845 000057e0 afad0000 sw (r29),r13 5846 000057e4 afa90004 sw 4(r29),r9 5847 000057e8 0c0058e4 jal _printf 5848 000057ec 54000000 nop; not filled. 5849 000057f0 23bd0008 addi r29,r29,#8 5850 000057f4 L194_LF5: 5851 000057f4 8d210008 lw r1,8(r9) 5852 000057f8 8c210008 lw r1,8(r1) 5853 000057fc 6c210000 sgti r1,r1,#0 5854 00005800 1020002c beqz r1,L197_LF5 5855 00005804 54000000 nop; not filled. 5856 00005808 8d210004 lw r1,4(r9) 5857 0000580c 8d2d0000 lw r13,(r9) 5858 00005810 ac2d0000 sw (r1),r13 5859 00005814 8d210000 lw r1,(r9) 5860 00005818 8d2d0004 lw r13,4(r9) 5861 0000581c ac2d0004 sw 4(r1),r13 5862 00005820 8d220008 lw r2,8(r9) 5863 00005824 8c410008 lw r1,8(r2) 5864 00005828 2021ffff addi r1,r1,#-1 5865 0000582c ac410008 sw 8(r2),r1 5866 00005830 L197_LF5: 5867 00005830 200d0000 addi r13,r0,#0 5868 00005834 ad2d0000 sw (r9),r13 5869 00005838 8d26000c lw r6,12(r9) 5870 0000583c 8cc1000c lw r1,12(r6) 5871 00005840 200dffc0 addi r13,r0,#-64 5872 00005844 002d0824 and r1,r1,r13 5873 00005848 34210002 ori r1,r1,#2 5874 0000584c acc1000c sw 12(r6),r1 5875 00005850 23bdfff8 addi r29,r29,#-8 5876 00005854 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5877 00005858 24420d78 addui r2,r2,(_debugstr)&0xffff 5878 0000585c afa20000 sw (r29),r2 5879 00005860 200d0049 addi r13,r0,#73 5880 00005864 afad0004 sw 4(r29),r13 5881 00005868 0fffe5c8 jal _dindex 5882 0000586c 54000000 nop; not filled. 5883 00005870 23bd0008 addi r29,r29,#8 5884 00005874 64210000 snei r1,r1,#0 5885 00005878 1420002c bnez r1,L200_LF5 5886 0000587c 54000000 nop; not filled. 5887 00005880 23bdfff8 addi r29,r29,#-8 5888 00005884 afa20000 sw (r29),r2 5889 00005888 200d002b addi r13,r0,#43 5890 0000588c afad0004 sw 4(r29),r13 5891 00005890 0fffe5a0 jal _dindex 5892 00005894 54000000 nop; not filled. 5893 00005898 23bd0008 addi r29,r29,#8 5894 0000589c 64210000 snei r1,r1,#0 5895 000058a0 1020002c beqz r1,L199_LF5 5896 000058a4 54000000 nop; not filled. 5897 000058a8 L200_LF5: 5898 000058a8 0fffba18 jal _CurrentIntrs 5899 000058ac 54000000 nop; not filled. 5900 000058b0 23bdfff8 addi r29,r29,#-8 5901 000058b4 3c0d0001 lhi r13,((LC21_LF5)>>16)&0xffff 5902 000058b8 25ad06e4 addui r13,r13,(LC21_LF5)&0xffff 5903 000058bc afad0000 sw (r29),r13 5904 000058c0 afa10004 sw 4(r29),r1 5905 000058c4 0c005808 jal _printf 5906 000058c8 54000000 nop; not filled. 5907 000058cc 23bd0008 addi r29,r29,#8 5908 000058d0 L199_LF5: 5909 000058d0 23bdfff8 addi r29,r29,#-8 5910 000058d4 afa30000 sw (r29),r3 5911 000058d8 0fffb9ac jal _SetIntrs 5912 000058dc 54000000 nop; not filled. 5913 000058e0 23bd0008 addi r29,r29,#8 5914 000058e4 23bdfff8 addi r29,r29,#-8 5915 000058e8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5916 000058ec 24420d78 addui r2,r2,(_debugstr)&0xffff 5917 000058f0 afa20000 sw (r29),r2 5918 000058f4 200d0049 addi r13,r0,#73 5919 000058f8 afad0004 sw 4(r29),r13 5920 000058fc 0fffe534 jal _dindex 5921 00005900 54000000 nop; not filled. 5922 00005904 23bd0008 addi r29,r29,#8 5923 00005908 64210000 snei r1,r1,#0 5924 0000590c 1420002c bnez r1,L203_LF5 5925 00005910 54000000 nop; not filled. 5926 00005914 23bdfff8 addi r29,r29,#-8 5927 00005918 afa20000 sw (r29),r2 5928 0000591c 200d002b addi r13,r0,#43 5929 00005920 afad0004 sw 4(r29),r13 5930 00005924 0fffe50c jal _dindex 5931 00005928 54000000 nop; not filled. 5932 0000592c 23bd0008 addi r29,r29,#8 5933 00005930 64210000 snei r1,r1,#0 5934 00005934 1020002c beqz r1,L202_LF5 5935 00005938 54000000 nop; not filled. 5936 0000593c L203_LF5: 5937 0000593c 0fffb984 jal _CurrentIntrs 5938 00005940 54000000 nop; not filled. 5939 00005944 23bdfff8 addi r29,r29,#-8 5940 00005948 3c0d0001 lhi r13,((LC22_LF5)>>16)&0xffff 5941 0000594c 25ad0710 addui r13,r13,(LC22_LF5)&0xffff 5942 00005950 afad0000 sw (r29),r13 5943 00005954 afa10004 sw 4(r29),r1 5944 00005958 0c005774 jal _printf 5945 0000595c 54000000 nop; not filled. 5946 00005960 23bd0008 addi r29,r29,#8 5947 00005964 L202_LF5: 5948 00005964 23bdfff8 addi r29,r29,#-8 5949 00005968 20c10010 addi r1,r6,#16 5950 0000596c afa10000 sw (r29),r1 5951 00005970 afac0004 sw 4(r29),r12 5952 00005974 0fffdffc jal _dstrcpy 5953 00005978 54000000 nop; not filled. 5954 0000597c 200d0001 addi r13,r0,#1 5955 00005980 accd0064 sw 100(r6),r13 5956 00005984 0fffd5c0 jal _MemoryAllocPage 5957 00005988 54000000 nop; not filled. 5958 0000598c 00011020 add r2,r0,r1 5959 00005990 23bd0008 addi r29,r29,#8 5960 00005994 64410000 snei r1,r2,#0 5961 00005998 14200028 bnez r1,L204_LF5 5962 0000599c 54000000 nop; not filled. 5963 000059a0 23bdfff8 addi r29,r29,#-8 5964 000059a4 3c0d0001 lhi r13,((LC23_LF5)>>16)&0xffff 5965 000059a8 25ad0730 addui r13,r13,(LC23_LF5)&0xffff 5966 000059ac afad0000 sw (r29),r13 5967 000059b0 0c00571c jal _printf 5968 000059b4 54000000 nop; not filled. 5969 000059b8 0c0056fc jal _exitsim 5970 000059bc 54000000 nop; not filled. 5971 000059c0 23bd0008 addi r29,r29,#8 5972 000059c4 L204_LF5: 5973 000059c4 23bdfff8 addi r29,r29,#-8 5974 000059c8 afa20000 sw (r29),r2 5975 000059cc 0fffdcdc jal _MemorySetupPte 5976 000059d0 54000000 nop; not filled. 5977 000059d4 acc10060 sw 96(r6),r1 5978 000059d8 0fffd56c jal _MemoryAllocPage 5979 000059dc 54000000 nop; not filled. 5980 000059e0 00011020 add r2,r0,r1 5981 000059e4 23bd0008 addi r29,r29,#8 5982 000059e8 64410000 snei r1,r2,#0 5983 000059ec 14200028 bnez r1,L205_LF5 5984 000059f0 54000000 nop; not filled. 5985 000059f4 23bdfff8 addi r29,r29,#-8 5986 000059f8 3c0d0001 lhi r13,((LC24_LF5)>>16)&0xffff 5987 000059fc 25ad0764 addui r13,r13,(LC24_LF5)&0xffff 5988 00005a00 afad0000 sw (r29),r13 5989 00005a04 0c0056c8 jal _printf 5990 00005a08 54000000 nop; not filled. 5991 00005a0c 0c0056a8 jal _exitsim 5992 00005a10 54000000 nop; not filled. 5993 00005a14 23bd0008 addi r29,r29,#8 5994 00005a18 L205_LF5: 5995 00005a18 50410010 slli r1,r2,#0x10 5996 00005a1c acc10008 sw 8(r6),r1 5997 00005a20 3428fe8c ori r8,r1,#65164 5998 00005a24 acc80004 sw 4(r6),r8 5999 00005a28 acc80000 sw (r6),r8 6000 00005a2c 23bdfff8 addi r29,r29,#-8 6001 00005a30 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6002 00005a34 24420d78 addui r2,r2,(_debugstr)&0xffff 6003 00005a38 afa20000 sw (r29),r2 6004 00005a3c 200d0070 addi r13,r0,#112 6005 00005a40 afad0004 sw 4(r29),r13 6006 00005a44 0fffe3ec jal _dindex 6007 00005a48 54000000 nop; not filled. 6008 00005a4c 23bd0008 addi r29,r29,#8 6009 00005a50 64210000 snei r1,r1,#0 6010 00005a54 1420002c bnez r1,L207_LF5 6011 00005a58 54000000 nop; not filled. 6012 00005a5c 23bdfff8 addi r29,r29,#-8 6013 00005a60 afa20000 sw (r29),r2 6014 00005a64 200d002b addi r13,r0,#43 6015 00005a68 afad0004 sw 4(r29),r13 6016 00005a6c 0fffe3c4 jal _dindex 6017 00005a70 54000000 nop; not filled. 6018 00005a74 23bd0008 addi r29,r29,#8 6019 00005a78 64210000 snei r1,r1,#0 6020 00005a7c 10200040 beqz r1,L206_LF5 6021 00005a80 54000000 nop; not filled. 6022 00005a84 L207_LF5: 6023 00005a84 23bdffe8 addi r29,r29,#-24 6024 00005a88 3c0d0001 lhi r13,((LC25_LF5)>>16)&0xffff 6025 00005a8c 25ad07a0 addui r13,r13,(LC25_LF5)&0xffff 6026 00005a90 afad0000 sw (r29),r13 6027 00005a94 afa60004 sw 4(r29),r6 6028 00005a98 8ccd0008 lw r13,8(r6) 6029 00005a9c afad0008 sw 8(r29),r13 6030 00005aa0 8ccd0060 lw r13,96(r6) 6031 00005aa4 afad000c sw 12(r29),r13 6032 00005aa8 8cc10064 lw r1,100(r6) 6033 00005aac 50210010 slli r1,r1,#0x10 6034 00005ab0 afa10010 sw 16(r29),r1 6035 00005ab4 0c005618 jal _printf 6036 00005ab8 54000000 nop; not filled. 6037 00005abc 23bd0018 addi r29,r29,#24 6038 00005ac0 L206_LF5: 6039 00005ac0 200d0000 addi r13,r0,#0 6040 00005ac4 ad0d0028 sw 40(r8),r13 6041 00005ac8 20c10060 addi r1,r6,#96 6042 00005acc ad010138 sw 312(r8),r1 6043 00005ad0 8ccd0064 lw r13,100(r6) 6044 00005ad4 ad0d013c sw 316(r8),r13 6045 00005ad8 3c010010 lhi r1,#16 6046 00005adc 24210010 addui r1,r1,#16 6047 00005ae0 ad010140 sw 320(r8),r1 6048 00005ae4 64810000 snei r1,r4,#0 6049 00005ae8 10200640 beqz r1,L208_LF5 6050 00005aec 54000000 nop; not filled. 6051 00005af0 23bdfff8 addi r29,r29,#-8 6052 00005af4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6053 00005af8 24420d78 addui r2,r2,(_debugstr)&0xffff 6054 00005afc afa20000 sw (r29),r2 6055 00005b00 200d0070 addi r13,r0,#112 6056 00005b04 afad0004 sw 4(r29),r13 6057 00005b08 0fffe328 jal _dindex 6058 00005b0c 54000000 nop; not filled. 6059 00005b10 23bd0008 addi r29,r29,#8 6060 00005b14 64210000 snei r1,r1,#0 6061 00005b18 1420002c bnez r1,L210_LF5 6062 00005b1c 54000000 nop; not filled. 6063 00005b20 23bdfff8 addi r29,r29,#-8 6064 00005b24 afa20000 sw (r29),r2 6065 00005b28 200d002b addi r13,r0,#43 6066 00005b2c afad0004 sw 4(r29),r13 6067 00005b30 0fffe300 jal _dindex 6068 00005b34 54000000 nop; not filled. 6069 00005b38 23bd0008 addi r29,r29,#8 6070 00005b3c 64210000 snei r1,r1,#0 6071 00005b40 10200024 beqz r1,L209_LF5 6072 00005b44 54000000 nop; not filled. 6073 00005b48 L210_LF5: 6074 00005b48 23bdfff8 addi r29,r29,#-8 6075 00005b4c 3c0d0001 lhi r13,((LC26_LF5)>>16)&0xffff 6076 00005b50 25ad07e0 addui r13,r13,(LC26_LF5)&0xffff 6077 00005b54 afad0000 sw (r29),r13 6078 00005b58 afac0004 sw 4(r29),r12 6079 00005b5c 0c005570 jal _printf 6080 00005b60 54000000 nop; not filled. 6081 00005b64 23bd0008 addi r29,r29,#8 6082 00005b68 L209_LF5: 6083 00005b68 23bdffe8 addi r29,r29,#-24 6084 00005b6c afac0000 sw (r29),r12 6085 00005b70 23c1fd6c addi r1,r30,#-660 6086 00005b74 afa10004 sw 4(r29),r1 6087 00005b78 23c1fd68 addi r1,r30,#-664 6088 00005b7c afa10008 sw 8(r29),r1 6089 00005b80 23c1fd64 addi r1,r30,#-668 6090 00005b84 afa1000c sw 12(r29),r1 6091 00005b88 23c1fd60 addi r1,r30,#-672 6092 00005b8c afa10010 sw 16(r29),r1 6093 00005b90 23c1fd5c addi r1,r30,#-676 6094 00005b94 afa10014 sw 20(r29),r1 6095 00005b98 0c0007b0 jal _ProcessGetCodeInfo 6096 00005b9c 54000000 nop; not filled. 6097 00005ba0 00012820 add r5,r0,r1 6098 00005ba4 23bd0018 addi r29,r29,#24 6099 00005ba8 68a10000 slti r1,r5,#0 6100 00005bac 102000bc beqz r1,L211_LF5 6101 00005bb0 54000000 nop; not filled. 6102 00005bb4 3c030001 lhi r3,((_freepcbs_LF5)>>16)&0xffff 6103 00005bb8 24630e44 addui r3,r3,(_freepcbs_LF5)&0xffff 6104 00005bbc 20c20068 addi r2,r6,#104 6105 00005bc0 8c610004 lw r1,4(r3) 6106 00005bc4 acc30070 sw 112(r6),r3 6107 00005bc8 acc1006c sw 108(r6),r1 6108 00005bcc 8c2d0000 lw r13,(r1) 6109 00005bd0 ac4d0000 sw (r2),r13 6110 00005bd4 ac220000 sw (r1),r2 6111 00005bd8 8c410000 lw r1,(r2) 6112 00005bdc ac220004 sw 4(r1),r2 6113 00005be0 8c610008 lw r1,8(r3) 6114 00005be4 20210001 addi r1,r1,#1 6115 00005be8 ac610008 sw 8(r3),r1 6116 00005bec 20020000 addi r2,r0,#0 6117 00005bf0 8cc10064 lw r1,100(r6) 6118 00005bf4 0041082a slt r1,r2,r1 6119 00005bf8 10200038 beqz r1,L217_LF5 6120 00005bfc 54000000 nop; not filled. 6121 00005c00 00061820 add r3,r0,r6 6122 00005c04 L219_LF5: 6123 00005c04 23bdfff8 addi r29,r29,#-8 6124 00005c08 8c6d0060 lw r13,96(r3) 6125 00005c0c afad0000 sw (r29),r13 6126 00005c10 0fffdac8 jal _MemoryFreePte 6127 00005c14 54000000 nop; not filled. 6128 00005c18 23bd0008 addi r29,r29,#8 6129 00005c1c 20630004 addi r3,r3,#4 6130 00005c20 20420001 addi r2,r2,#1 6131 00005c24 8cc10064 lw r1,100(r6) 6132 00005c28 0041082a slt r1,r2,r1 6133 00005c2c 1420ffd4 bnez r1,L219_LF5 6134 00005c30 54000000 nop; not filled. 6135 00005c34 L217_LF5: 6136 00005c34 23bdfff8 addi r29,r29,#-8 6137 00005c38 94c10008 lhu r1,8(r6) 6138 00005c3c afa10000 sw (r29),r1 6139 00005c40 0fffd5cc jal _MemoryFreePage 6140 00005c44 54000000 nop; not filled. 6141 00005c48 23bd0008 addi r29,r29,#8 6142 00005c4c 8cc1000c lw r1,12(r6) 6143 00005c50 200dffc0 addi r13,r0,#-64 6144 00005c54 002d0824 and r1,r1,r13 6145 00005c58 34210001 ori r1,r1,#1 6146 00005c5c acc1000c sw 12(r6),r1 6147 00005c60 2001ffff addi r1,r0,#-1 6148 00005c64 080006a0 j L268_LF5 6149 00005c68 54000000 nop; not filled. 6150 00005c6c L211_LF5: 6151 00005c6c 23bdfff8 addi r29,r29,#-8 6152 00005c70 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6153 00005c74 24420d78 addui r2,r2,(_debugstr)&0xffff 6154 00005c78 afa20000 sw (r29),r2 6155 00005c7c 200d0070 addi r13,r0,#112 6156 00005c80 afad0004 sw 4(r29),r13 6157 00005c84 0fffe1ac jal _dindex 6158 00005c88 54000000 nop; not filled. 6159 00005c8c 23bd0008 addi r29,r29,#8 6160 00005c90 64210000 snei r1,r1,#0 6161 00005c94 1420002c bnez r1,L223_LF5 6162 00005c98 54000000 nop; not filled. 6163 00005c9c 23bdfff8 addi r29,r29,#-8 6164 00005ca0 afa20000 sw (r29),r2 6165 00005ca4 200d002b addi r13,r0,#43 6166 00005ca8 afad0004 sw 4(r29),r13 6167 00005cac 0fffe184 jal _dindex 6168 00005cb0 54000000 nop; not filled. 6169 00005cb4 23bd0008 addi r29,r29,#8 6170 00005cb8 64210000 snei r1,r1,#0 6171 00005cbc 1020002c beqz r1,L222_LF5 6172 00005cc0 54000000 nop; not filled. 6173 00005cc4 L223_LF5: 6174 00005cc4 23bdfff0 addi r29,r29,#-16 6175 00005cc8 3c0d0001 lhi r13,((LC27_LF5)>>16)&0xffff 6176 00005ccc 25ad07f4 addui r13,r13,(LC27_LF5)&0xffff 6177 00005cd0 afad0000 sw (r29),r13 6178 00005cd4 afac0004 sw 4(r29),r12 6179 00005cd8 8fcdfd6c lw r13,-660(r30) 6180 00005cdc afad0008 sw 8(r29),r13 6181 00005ce0 0c0053ec jal _printf 6182 00005ce4 54000000 nop; not filled. 6183 00005ce8 23bd0010 addi r29,r29,#16 6184 00005cec L222_LF5: 6185 00005cec 23bdfff8 addi r29,r29,#-8 6186 00005cf0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6187 00005cf4 24420d78 addui r2,r2,(_debugstr)&0xffff 6188 00005cf8 afa20000 sw (r29),r2 6189 00005cfc 200d0070 addi r13,r0,#112 6190 00005d00 afad0004 sw 4(r29),r13 6191 00005d04 0fffe12c jal _dindex 6192 00005d08 54000000 nop; not filled. 6193 00005d0c 23bd0008 addi r29,r29,#8 6194 00005d10 64210000 snei r1,r1,#0 6195 00005d14 1420002c bnez r1,L225_LF5 6196 00005d18 54000000 nop; not filled. 6197 00005d1c 23bdfff8 addi r29,r29,#-8 6198 00005d20 afa20000 sw (r29),r2 6199 00005d24 200d002b addi r13,r0,#43 6200 00005d28 afad0004 sw 4(r29),r13 6201 00005d2c 0fffe104 jal _dindex 6202 00005d30 54000000 nop; not filled. 6203 00005d34 23bd0008 addi r29,r29,#8 6204 00005d38 64210000 snei r1,r1,#0 6205 00005d3c 10200034 beqz r1,L224_LF5 6206 00005d40 54000000 nop; not filled. 6207 00005d44 L225_LF5: 6208 00005d44 23bdfff0 addi r29,r29,#-16 6209 00005d48 3c0d0001 lhi r13,((LC28_LF5)>>16)&0xffff 6210 00005d4c 25ad0810 addui r13,r13,(LC28_LF5)&0xffff 6211 00005d50 afad0000 sw (r29),r13 6212 00005d54 afac0004 sw 4(r29),r12 6213 00005d58 8fcdfd68 lw r13,-664(r30) 6214 00005d5c afad0008 sw 8(r29),r13 6215 00005d60 8fcdfd64 lw r13,-668(r30) 6216 00005d64 afad000c sw 12(r29),r13 6217 00005d68 0c005364 jal _printf 6218 00005d6c 54000000 nop; not filled. 6219 00005d70 23bd0010 addi r29,r29,#16 6220 00005d74 L224_LF5: 6221 00005d74 23bdfff8 addi r29,r29,#-8 6222 00005d78 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6223 00005d7c 24420d78 addui r2,r2,(_debugstr)&0xffff 6224 00005d80 afa20000 sw (r29),r2 6225 00005d84 200d0070 addi r13,r0,#112 6226 00005d88 afad0004 sw 4(r29),r13 6227 00005d8c 0fffe0a4 jal _dindex 6228 00005d90 54000000 nop; not filled. 6229 00005d94 23bd0008 addi r29,r29,#8 6230 00005d98 64210000 snei r1,r1,#0 6231 00005d9c 1420002c bnez r1,L227_LF5 6232 00005da0 54000000 nop; not filled. 6233 00005da4 23bdfff8 addi r29,r29,#-8 6234 00005da8 afa20000 sw (r29),r2 6235 00005dac 200d002b addi r13,r0,#43 6236 00005db0 afad0004 sw 4(r29),r13 6237 00005db4 0fffe07c jal _dindex 6238 00005db8 54000000 nop; not filled. 6239 00005dbc 23bd0008 addi r29,r29,#8 6240 00005dc0 64210000 snei r1,r1,#0 6241 00005dc4 10200034 beqz r1,L226_LF5 6242 00005dc8 54000000 nop; not filled. 6243 00005dcc L227_LF5: 6244 00005dcc 23bdfff0 addi r29,r29,#-16 6245 00005dd0 3c0d0001 lhi r13,((LC29_LF5)>>16)&0xffff 6246 00005dd4 25ad0838 addui r13,r13,(LC29_LF5)&0xffff 6247 00005dd8 afad0000 sw (r29),r13 6248 00005ddc afac0004 sw 4(r29),r12 6249 00005de0 8fcdfd60 lw r13,-672(r30) 6250 00005de4 afad0008 sw 8(r29),r13 6251 00005de8 8fcdfd5c lw r13,-676(r30) 6252 00005dec afad000c sw 12(r29),r13 6253 00005df0 0c0052dc jal _printf 6254 00005df4 54000000 nop; not filled. 6255 00005df8 23bd0010 addi r29,r29,#16 6256 00005dfc L226_LF5: 6257 00005dfc 23c3ff90 addi r3,r30,#-112 6258 00005e00 23c7fd58 addi r7,r30,#-680 6259 00005e04 3c040001 lhi r4,((_debugstr)>>16)&0xffff 6260 00005e08 24840d78 addui r4,r4,(_debugstr)&0xffff 6261 00005e0c L228_LF5: 6262 00005e0c 23bdfff0 addi r29,r29,#-16 6263 00005e10 afa50000 sw (r29),r5 6264 00005e14 afa30004 sw 4(r29),r3 6265 00005e18 afa70008 sw 8(r29),r7 6266 00005e1c 200d0064 addi r13,r0,#100 6267 00005e20 afad000c sw 12(r29),r13 6268 00005e24 0c000984 jal _ProcessGetFromFile 6269 00005e28 54000000 nop; not filled. 6270 00005e2c 00011020 add r2,r0,r1 6271 00005e30 23bd0010 addi r29,r29,#16 6272 00005e34 6c410000 sgti r1,r2,#0 6273 00005e38 102000b0 beqz r1,L229_LF5 6274 00005e3c 54000000 nop; not filled. 6275 00005e40 23bdfff8 addi r29,r29,#-8 6276 00005e44 afa40000 sw (r29),r4 6277 00005e48 200d0070 addi r13,r0,#112 6278 00005e4c afad0004 sw 4(r29),r13 6279 00005e50 0fffdfe0 jal _dindex 6280 00005e54 54000000 nop; not filled. 6281 00005e58 23bd0008 addi r29,r29,#8 6282 00005e5c 64210000 snei r1,r1,#0 6283 00005e60 1420002c bnez r1,L232_LF5 6284 00005e64 54000000 nop; not filled. 6285 00005e68 23bdfff8 addi r29,r29,#-8 6286 00005e6c afa40000 sw (r29),r4 6287 00005e70 200d002b addi r13,r0,#43 6288 00005e74 afad0004 sw 4(r29),r13 6289 00005e78 0fffdfb8 jal _dindex 6290 00005e7c 54000000 nop; not filled. 6291 00005e80 23bd0008 addi r29,r29,#8 6292 00005e84 64210000 snei r1,r1,#0 6293 00005e88 10200030 beqz r1,L231_LF5 6294 00005e8c 54000000 nop; not filled. 6295 00005e90 L232_LF5: 6296 00005e90 23bdfff0 addi r29,r29,#-16 6297 00005e94 3c0d0001 lhi r13,((LC30_LF5)>>16)&0xffff 6298 00005e98 25ad0860 addui r13,r13,(LC30_LF5)&0xffff 6299 00005e9c afad0000 sw (r29),r13 6300 00005ea0 afa20004 sw 4(r29),r2 6301 00005ea4 8fc1fd58 lw r1,-680(r30) 6302 00005ea8 00220822 sub r1,r1,r2 6303 00005eac afa10008 sw 8(r29),r1 6304 00005eb0 0c00521c jal _printf 6305 00005eb4 54000000 nop; not filled. 6306 00005eb8 23bd0010 addi r29,r29,#16 6307 00005ebc L231_LF5: 6308 00005ebc 23bdfff0 addi r29,r29,#-16 6309 00005ec0 afa60000 sw (r29),r6 6310 00005ec4 afa30004 sw 4(r29),r3 6311 00005ec8 8fc1fd58 lw r1,-680(r30) 6312 00005ecc 00220822 sub r1,r1,r2 6313 00005ed0 afa10008 sw 8(r29),r1 6314 00005ed4 afa2000c sw 12(r29),r2 6315 00005ed8 0fffd580 jal _MemoryCopySystemToUser 6316 00005edc 54000000 nop; not filled. 6317 00005ee0 23bd0010 addi r29,r29,#16 6318 00005ee4 0bffff24 j L228_LF5 6319 00005ee8 54000000 nop; not filled. 6320 00005eec L229_LF5: 6321 00005eec 23bdfff8 addi r29,r29,#-8 6322 00005ef0 afa50000 sw (r29),r5 6323 00005ef4 0fffbbfc jal _FsClose 6324 00005ef8 54000000 nop; not filled. 6325 00005efc 200d0100 addi r13,r0,#256 6326 00005f00 ad0d012c sw 300(r8),r13 6327 00005f04 240dfc00 addui r13,r0,#64512 6328 00005f08 ad0d009c sw 156(r8),r13 6329 00005f0c 23bdfff8 addi r29,r29,#-8 6330 00005f10 afa60000 sw (r29),r6 6331 00005f14 afaa0004 sw 4(r29),r10 6332 00005f18 8d0d009c lw r13,156(r8) 6333 00005f1c afad0008 sw 8(r29),r13 6334 00005f20 200d03e0 addi r13,r0,#992 6335 00005f24 afad000c sw 12(r29),r13 6336 00005f28 0fffd530 jal _MemoryCopySystemToUser 6337 00005f2c 54000000 nop; not filled. 6338 00005f30 23bd0010 addi r29,r29,#16 6339 00005f34 65410000 snei r1,r10,#0 6340 00005f38 10200020 beqz r1,L234_LF5 6341 00005f3c 54000000 nop; not filled. 6342 00005f40 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 6343 00005f44 24210658 addui r1,r1,(_str52_LF5)&0xffff 6344 00005f48 ac2a0000 sw (r1),r10 6345 00005f4c 3c010001 lhi r1,((_location53_LF5)>>16)&0xffff 6346 00005f50 2421065c addui r1,r1,(_location53_LF5)&0xffff 6347 00005f54 200d0000 addi r13,r0,#0 6348 00005f58 ac2d0000 sw (r1),r13 6349 00005f5c L234_LF5: 6350 00005f5c 3c030001 lhi r3,((_location53_LF5)>>16)&0xffff 6351 00005f60 2463065c addui r3,r3,(_location53_LF5)&0xffff 6352 00005f64 8c640000 lw r4,(r3) 6353 00005f68 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 6354 00005f6c 24210658 addui r1,r1,(_str52_LF5)&0xffff 6355 00005f70 8c220000 lw r2,(r1) 6356 00005f74 00440820 add r1,r2,r4 6357 00005f78 90210000 lbu r1,(r1) 6358 00005f7c 64210000 snei r1,r1,#0 6359 00005f80 10200010 beqz r1,L236_LF5 6360 00005f84 54000000 nop; not filled. 6361 00005f88 6c810062 sgti r1,r4,#98 6362 00005f8c 10200020 beqz r1,L235_LF5 6363 00005f90 54000000 nop; not filled. 6364 00005f94 L236_LF5: 6365 00005f94 20030000 addi r3,r0,#0 6366 00005f98 08000054 j L233_LF5 6367 00005f9c 54000000 nop; not filled. 6368 00005fa0 L269_LF5: 6369 00005fa0 20410001 addi r1,r2,#1 6370 00005fa4 ac610000 sw (r3),r1 6371 00005fa8 08000040 j L238_LF5 6372 00005fac 54000000 nop; not filled. 6373 00005fb0 L235_LF5: 6374 00005fb0 70810063 slei r1,r4,#99 6375 00005fb4 10200034 beqz r1,L238_LF5 6376 00005fb8 54000000 nop; not filled. 6377 00005fbc 00022820 add r5,r0,r2 6378 00005fc0 L240_LF5: 6379 00005fc0 8c620000 lw r2,(r3) 6380 00005fc4 00a20820 add r1,r5,r2 6381 00005fc8 90210000 lbu r1,(r1) 6382 00005fcc 64210000 snei r1,r1,#0 6383 00005fd0 1020ffcc beqz r1,L269_LF5 6384 00005fd4 54000000 nop; not filled. 6385 00005fd8 20410001 addi r1,r2,#1 6386 00005fdc ac610000 sw (r3),r1 6387 00005fe0 70210063 slei r1,r1,#99 6388 00005fe4 1420ffd8 bnez r1,L240_LF5 6389 00005fe8 54000000 nop; not filled. 6390 00005fec L238_LF5: 6391 00005fec 00041820 add r3,r0,r4 6392 00005ff0 L233_LF5: 6393 00005ff0 2402fc00 addui r2,r0,#64512 6394 00005ff4 00620820 add r1,r3,r2 6395 00005ff8 afc1fd78 sw -648(r30),r1 6396 00005ffc 20070003 addi r7,r0,#3 6397 00006000 3c040001 lhi r4,((_location53_LF5)>>16)&0xffff 6398 00006004 2484065c addui r4,r4,(_location53_LF5)&0xffff 6399 00006008 3c0b0001 lhi r11,((_str52_LF5)>>16)&0xffff 6400 0000600c 256b0658 addui r11,r11,(_str52_LF5)&0xffff 6401 00006010 00025020 add r10,r0,r2 6402 00006014 23c50004 addi r5,r30,#4 6403 00006018 L243_LF5: 6404 00006018 8c9f0000 lw r31,(r4) 6405 0000601c 8d630000 lw r3,(r11) 6406 00006020 007f0820 add r1,r3,r31 6407 00006024 90210000 lbu r1,(r1) 6408 00006028 64210000 snei r1,r1,#0 6409 0000602c 10200010 beqz r1,L249_LF5 6410 00006030 54000000 nop; not filled. 6411 00006034 6fe10062 sgti r1,r31,#98 6412 00006038 10200020 beqz r1,L248_LF5 6413 0000603c 54000000 nop; not filled. 6414 00006040 L249_LF5: 6415 00006040 20030000 addi r3,r0,#0 6416 00006044 08000054 j L246_LF5 6417 00006048 54000000 nop; not filled. 6418 0000604c L270_LF5: 6419 0000604c 20610001 addi r1,r3,#1 6420 00006050 ac810000 sw (r4),r1 6421 00006054 08000040 j L251_LF5 6422 00006058 54000000 nop; not filled. 6423 0000605c L248_LF5: 6424 0000605c 73e10063 slei r1,r31,#99 6425 00006060 10200034 beqz r1,L251_LF5 6426 00006064 54000000 nop; not filled. 6427 00006068 00031020 add r2,r0,r3 6428 0000606c L253_LF5: 6429 0000606c 8c830000 lw r3,(r4) 6430 00006070 00430820 add r1,r2,r3 6431 00006074 90210000 lbu r1,(r1) 6432 00006078 64210000 snei r1,r1,#0 6433 0000607c 1020ffcc beqz r1,L270_LF5 6434 00006080 54000000 nop; not filled. 6435 00006084 20610001 addi r1,r3,#1 6436 00006088 ac810000 sw (r4),r1 6437 0000608c 70210063 slei r1,r1,#99 6438 00006090 1420ffd8 bnez r1,L253_LF5 6439 00006094 54000000 nop; not filled. 6440 00006098 L251_LF5: 6441 00006098 001f1820 add r3,r0,r31 6442 0000609c L246_LF5: 6443 0000609c 006a0820 add r1,r3,r10 6444 000060a0 aca1fd78 sw -648(r5),r1 6445 000060a4 64610000 snei r1,r3,#0 6446 000060a8 10200014 beqz r1,L244_LF5 6447 000060ac 54000000 nop; not filled. 6448 000060b0 20a50004 addi r5,r5,#4 6449 000060b4 20e70001 addi r7,r7,#1 6450 000060b8 0bffff5c j L243_LF5 6451 000060bc 54000000 nop; not filled. 6452 000060c0 L244_LF5: 6453 000060c0 20e1fffe addi r1,r7,#-2 6454 000060c4 afc1fd70 sw -656(r30),r1 6455 000060c8 50210002 slli r1,r1,#0x2 6456 000060cc 01410822 sub r1,r10,r1 6457 000060d0 afc1fd74 sw -652(r30),r1 6458 000060d4 23bdfff0 addi r29,r29,#-16 6459 000060d8 afa60000 sw (r29),r6 6460 000060dc 23c1fd70 addi r1,r30,#-656 6461 000060e0 afa10004 sw 4(r29),r1 6462 000060e4 50e20002 slli r2,r7,#0x2 6463 000060e8 8d01009c lw r1,156(r8) 6464 000060ec 00220822 sub r1,r1,r2 6465 000060f0 afa10008 sw 8(r29),r1 6466 000060f4 afa2000c sw 12(r29),r2 6467 000060f8 0fffd360 jal _MemoryCopySystemToUser 6468 000060fc 54000000 nop; not filled. 6469 00006100 8d01009c lw r1,156(r8) 6470 00006104 00220822 sub r1,r1,r2 6471 00006108 ad01009c sw 156(r8),r1 6472 0000610c 8fcdfd6c lw r13,-660(r30) 6473 00006110 ad0d0128 sw 296(r8),r13 6474 00006114 8cc1000c lw r1,12(r6) 6475 00006118 34210200 ori r1,r1,#512 6476 0000611c acc1000c sw 12(r6),r1 6477 00006120 23bd0010 addi r29,r29,#16 6478 00006124 08000038 j L257_LF5 6479 00006128 54000000 nop; not filled. 6480 0000612c L208_LF5: 6481 0000612c 3c0d0000 lhi r13,((_ProcessExit_LF5)>>16)&0xffff 6482 00006130 25ad7ae8 addui r13,r13,(_ProcessExit_LF5)&0xffff 6483 00006134 ad0d00a4 sw 164(r8),r13 6484 00006138 8cc10008 lw r1,8(r6) 6485 0000613c 2421ffe0 addui r1,r1,#65504 6486 00006140 ad01009c sw 156(r8),r1 6487 00006144 ac2a0000 sw (r1),r10 6488 00006148 ad050128 sw 296(r8),r5 6489 0000614c 200d0140 addi r13,r0,#320 6490 00006150 ad0d012c sw 300(r8),r13 6491 00006154 8cc1000c lw r1,12(r6) 6492 00006158 34210100 ori r1,r1,#256 6493 0000615c acc1000c sw 12(r6),r1 6494 00006160 L257_LF5: 6495 00006160 23bdfff8 addi r29,r29,#-8 6496 00006164 200d000f addi r13,r0,#15 6497 00006168 afad0000 sw (r29),r13 6498 0000616c 0fffb118 jal _SetIntrs 6499 00006170 54000000 nop; not filled. 6500 00006174 23bd0008 addi r29,r29,#8 6501 00006178 3c030001 lhi r3,((_runQueue_LF5)>>16)&0xffff 6502 0000617c 24630e50 addui r3,r3,(_runQueue_LF5)&0xffff 6503 00006180 8c620004 lw r2,4(r3) 6504 00006184 ad230008 sw 8(r9),r3 6505 00006188 ad220004 sw 4(r9),r2 6506 0000618c 8c4d0000 lw r13,(r2) 6507 00006190 ad2d0000 sw (r9),r13 6508 00006194 ac490000 sw (r2),r9 6509 00006198 8d220000 lw r2,(r9) 6510 0000619c ac490004 sw 4(r2),r9 6511 000061a0 8c620008 lw r2,8(r3) 6512 000061a4 20420001 addi r2,r2,#1 6513 000061a8 ac620008 sw 8(r3),r2 6514 000061ac 23bdfff8 addi r29,r29,#-8 6515 000061b0 afa10000 sw (r29),r1 6516 000061b4 0fffb0d0 jal _SetIntrs 6517 000061b8 54000000 nop; not filled. 6518 000061bc 23bd0008 addi r29,r29,#8 6519 000061c0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 6520 000061c4 24210e40 addui r1,r1,(_currentPCB)&0xffff 6521 000061c8 8c210000 lw r1,(r1) 6522 000061cc 64210000 snei r1,r1,#0 6523 000061d0 14200090 bnez r1,L263_LF5 6524 000061d4 54000000 nop; not filled. 6525 000061d8 23bdfff8 addi r29,r29,#-8 6526 000061dc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6527 000061e0 24420d78 addui r2,r2,(_debugstr)&0xffff 6528 000061e4 afa20000 sw (r29),r2 6529 000061e8 200d0070 addi r13,r0,#112 6530 000061ec afad0004 sw 4(r29),r13 6531 000061f0 0fffdc40 jal _dindex 6532 000061f4 54000000 nop; not filled. 6533 000061f8 23bd0008 addi r29,r29,#8 6534 000061fc 64210000 snei r1,r1,#0 6535 00006200 1420002c bnez r1,L265_LF5 6536 00006204 54000000 nop; not filled. 6537 00006208 23bdfff8 addi r29,r29,#-8 6538 0000620c afa20000 sw (r29),r2 6539 00006210 200d002b addi r13,r0,#43 6540 00006214 afad0004 sw 4(r29),r13 6541 00006218 0fffdc18 jal _dindex 6542 0000621c 54000000 nop; not filled. 6543 00006220 23bd0008 addi r29,r29,#8 6544 00006224 64210000 snei r1,r1,#0 6545 00006228 1020002c beqz r1,L264_LF5 6546 0000622c 54000000 nop; not filled. 6547 00006230 L265_LF5: 6548 00006230 23bdfff0 addi r29,r29,#-16 6549 00006234 3c0d0001 lhi r13,((LC31_LF5)>>16)&0xffff 6550 00006238 25ad0884 addui r13,r13,(LC31_LF5)&0xffff 6551 0000623c afad0000 sw (r29),r13 6552 00006240 afa60004 sw 4(r29),r6 6553 00006244 8ccd0000 lw r13,(r6) 6554 00006248 afad0008 sw 8(r29),r13 6555 0000624c 0c004e80 jal _printf 6556 00006250 54000000 nop; not filled. 6557 00006254 23bd0010 addi r29,r29,#16 6558 00006258 L264_LF5: 6559 00006258 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 6560 0000625c 24210e40 addui r1,r1,(_currentPCB)&0xffff 6561 00006260 ac260000 sw (r1),r6 6562 00006264 L263_LF5: 6563 00006264 23bdfff8 addi r29,r29,#-8 6564 00006268 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6565 0000626c 24420d78 addui r2,r2,(_debugstr)&0xffff 6566 00006270 afa20000 sw (r29),r2 6567 00006274 200d0070 addi r13,r0,#112 6568 00006278 afad0004 sw 4(r29),r13 6569 0000627c 0fffdbb4 jal _dindex 6570 00006280 54000000 nop; not filled. 6571 00006284 23bd0008 addi r29,r29,#8 6572 00006288 64210000 snei r1,r1,#0 6573 0000628c 1420002c bnez r1,L267_LF5 6574 00006290 54000000 nop; not filled. 6575 00006294 23bdfff8 addi r29,r29,#-8 6576 00006298 afa20000 sw (r29),r2 6577 0000629c 200d002b addi r13,r0,#43 6578 000062a0 afad0004 sw 4(r29),r13 6579 000062a4 0fffdb8c jal _dindex 6580 000062a8 54000000 nop; not filled. 6581 000062ac 23bd0008 addi r29,r29,#8 6582 000062b0 64210000 snei r1,r1,#0 6583 000062b4 10200024 beqz r1,L266_LF5 6584 000062b8 54000000 nop; not filled. 6585 000062bc L267_LF5: 6586 000062bc 23bdfff8 addi r29,r29,#-8 6587 000062c0 3c0d0001 lhi r13,((LC32_LF5)>>16)&0xffff 6588 000062c4 25ad08b0 addui r13,r13,(LC32_LF5)&0xffff 6589 000062c8 afad0000 sw (r29),r13 6590 000062cc afac0004 sw 4(r29),r12 6591 000062d0 0c004dfc jal _printf 6592 000062d4 54000000 nop; not filled. 6593 000062d8 23bd0008 addi r29,r29,#8 6594 000062dc L266_LF5: 6595 000062dc 3c0d0001 lhi r13,((_pcbs_LF5)>>16)&0xffff 6596 000062e0 25ad0e74 addui r13,r13,(_pcbs_LF5)&0xffff 6597 000062e4 00cd1022 sub r2,r6,r13 6598 000062e8 50410004 slli r1,r2,#0x4 6599 000062ec 00221020 add r2,r1,r2 6600 000062f0 50410008 slli r1,r2,#0x8 6601 000062f4 00411020 add r2,r2,r1 6602 000062f8 50410010 slli r1,r2,#0x10 6603 000062fc 00410820 add r1,r2,r1 6604 00006300 00010822 sub r1,r0,r1 6605 00006304 5c210003 srai r1,r1,#0x3 6606 00006308 L268_LF5: 6607 00006308 8fa20000 lw r2,0(r29) 6608 0000630c 8fa30004 lw r3,4(r29) 6609 00006310 8fa40008 lw r4,8(r29) 6610 00006314 8fa5000c lw r5,12(r29) 6611 00006318 8fa60010 lw r6,16(r29) 6612 0000631c 8fa70014 lw r7,20(r29) 6613 00006320 8fa80018 lw r8,24(r29) 6614 00006324 8fa9001c lw r9,28(r29) 6615 00006328 8faa0020 lw r10,32(r29) 6616 0000632c 8fab0024 lw r11,36(r29) 6617 00006330 8fac0028 lw r12,40(r29) 6618 00006334 8fad002c lw r13,44(r29) 6619 00006338 8fdffff8 lw r31,-8(r30) 6620 0000633c 001ee820 add r29,r0,r30 6621 00006340 8fdefffc lw r30,-4(r30) 6622 00006344 4be00000 jr r31 6623 00006348 54000000 nop 6624 0000634c .endproc _ProcessFork 6625 0000634c .data 6626 000108ca .align 2 6627 000108cc LC33_LF5: 6628 000108cc 50726f63 .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" 6628 000108d0 65737347 6628 000108d4 6574436f 6628 000108d8 6465496e 6628 000108dc 666f3a20 6628 000108e0 6f70656e 6628 000108e4 206f6620 6628 000108e8 25732066 6628 000108ec 61696c65 6628 000108f0 64202825 6628 000108f4 64292e0a 6628 000108f8 00 6629 000108f9 .align 2 6630 000108fc LC34_LF5: 6631 000108fc 46696c65 .ascii "File descriptor is now %d.\n\000" 6631 00010900 20646573 6631 00010904 63726970 6631 00010908 746f7220 6631 0001090c 6973206e 6631 00010910 6f772025 6631 00010914 642e0a00 6632 00010918 .align 2 6633 00010918 LC35_LF5: 6634 00010918 50726f63 .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" 6634 0001091c 65737347 6634 00010920 6574436f 6634 00010924 6465496e 6634 00010928 666f3a20 6634 0001092c 72656164 6634 00010930 20676f74 6634 00010934 20256420 6634 00010938 286e6f74 6634 0001093c 20256429 6634 00010940 20627974 6634 00010944 65732066 6634 00010948 726f6d20 6634 0001094c 25730a00 6635 00010950 .align 2 6636 00010950 LC36_LF5: 6637 00010950 73746172 .ascii "start:\000" 6637 00010954 743a00 6638 00010957 .align 2 6639 00010958 LC37_LF5: 6640 00010958 50726f63 .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" 6640 0001095c 65737347 6640 00010960 6574436f 6640 00010964 6465496e 6640 00010968 666f3a20 6640 0001096c 2573206d 6640 00010970 69737369 6640 00010974 6e672073 6640 00010978 74617274 6640 0001097c 206c696e 6640 00010980 6520286e 6640 00010984 6f742061 6640 00010988 20444c58 6640 0001098c 20657865 6640 00010990 63757461 6640 00010994 626c653f 6640 00010998 290a00 6641 0001099b .text 6642 0000634c .align 2 6643 0000634c .proc _ProcessGetCodeInfo 6644 0000634c .global _ProcessGetCodeInfo 6645 0000634c _ProcessGetCodeInfo: 6646 ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. 6647 0000634c afbefffc sw -4(r29),r30; push fp 6648 00006350 001df020 add r30,r0,r29; fp = sp 6649 00006354 afbffff8 sw -8(r29),r31; push ret addr 6650 00006358 2fbd00a8 subui r29,r29,#168; alloc local storage 6651 0000635c afa20000 sw 0(r29),r2 6652 00006360 afa30004 sw 4(r29),r3 6653 00006364 afa40008 sw 8(r29),r4 6654 00006368 afa5000c sw 12(r29),r5 6655 0000636c afa60010 sw 16(r29),r6 6656 00006370 afa70014 sw 20(r29),r7 6657 00006374 afa80018 sw 24(r29),r8 6658 00006378 afa9001c sw 28(r29),r9 6659 0000637c afaa0020 sw 32(r29),r10 6660 00006380 afab0024 sw 36(r29),r11 6661 00006384 afac0028 sw 40(r29),r12 6662 00006388 8fc60000 lw r6,(r30) 6663 0000638c 8fc70004 lw r7,4(r30) 6664 00006390 8fc80008 lw r8,8(r30) 6665 00006394 8fc9000c lw r9,12(r30) 6666 00006398 8fca0010 lw r10,16(r30) 6667 0000639c 8fcb0014 lw r11,20(r30) 6668 000063a0 23bdfff8 addi r29,r29,#-8 6669 000063a4 afa60000 sw (r29),r6 6670 000063a8 200c0001 addi r12,r0,#1 6671 000063ac afac0004 sw 4(r29),r12 6672 000063b0 0fffb3e4 jal _FsOpen 6673 000063b4 54000000 nop; not filled. 6674 000063b8 00011820 add r3,r0,r1 6675 000063bc 23bd0008 addi r29,r29,#8 6676 000063c0 68610000 slti r1,r3,#0 6677 000063c4 10200088 beqz r1,L279_LF5 6678 000063c8 54000000 nop; not filled. 6679 000063cc 23bdfff8 addi r29,r29,#-8 6680 000063d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6681 000063d4 24420d78 addui r2,r2,(_debugstr)&0xffff 6682 000063d8 afa20000 sw (r29),r2 6683 000063dc 200c0066 addi r12,r0,#102 6684 000063e0 afac0004 sw 4(r29),r12 6685 000063e4 0fffda4c jal _dindex 6686 000063e8 54000000 nop; not filled. 6687 000063ec 23bd0008 addi r29,r29,#8 6688 000063f0 64210000 snei r1,r1,#0 6689 000063f4 1420002c bnez r1,L281_LF5 6690 000063f8 54000000 nop; not filled. 6691 000063fc 23bdfff8 addi r29,r29,#-8 6692 00006400 afa20000 sw (r29),r2 6693 00006404 200c002b addi r12,r0,#43 6694 00006408 afac0004 sw 4(r29),r12 6695 0000640c 0fffda24 jal _dindex 6696 00006410 54000000 nop; not filled. 6697 00006414 23bd0008 addi r29,r29,#8 6698 00006418 64210000 snei r1,r1,#0 6699 0000641c 10200224 beqz r1,L288_LF5 6700 00006420 54000000 nop; not filled. 6701 00006424 L281_LF5: 6702 00006424 23bdfff0 addi r29,r29,#-16 6703 00006428 3c0c0001 lhi r12,((LC33_LF5)>>16)&0xffff 6704 0000642c 258c08cc addui r12,r12,(LC33_LF5)&0xffff 6705 00006430 afac0000 sw (r29),r12 6706 00006434 afa60004 sw 4(r29),r6 6707 00006438 afa30008 sw 8(r29),r3 6708 0000643c 0c004c90 jal _printf 6709 00006440 54000000 nop; not filled. 6710 00006444 23bd0010 addi r29,r29,#16 6711 00006448 080001f8 j L288_LF5 6712 0000644c 54000000 nop; not filled. 6713 00006450 L279_LF5: 6714 00006450 23bdfff8 addi r29,r29,#-8 6715 00006454 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6716 00006458 24420d78 addui r2,r2,(_debugstr)&0xffff 6717 0000645c afa20000 sw (r29),r2 6718 00006460 200c0066 addi r12,r0,#102 6719 00006464 afac0004 sw 4(r29),r12 6720 00006468 0fffd9c8 jal _dindex 6721 0000646c 54000000 nop; not filled. 6722 00006470 23bd0008 addi r29,r29,#8 6723 00006474 64210000 snei r1,r1,#0 6724 00006478 1420002c bnez r1,L283_LF5 6725 0000647c 54000000 nop; not filled. 6726 00006480 23bdfff8 addi r29,r29,#-8 6727 00006484 afa20000 sw (r29),r2 6728 00006488 200c002b addi r12,r0,#43 6729 0000648c afac0004 sw 4(r29),r12 6730 00006490 0fffd9a0 jal _dindex 6731 00006494 54000000 nop; not filled. 6732 00006498 23bd0008 addi r29,r29,#8 6733 0000649c 64210000 snei r1,r1,#0 6734 000064a0 10200024 beqz r1,L282_LF5 6735 000064a4 54000000 nop; not filled. 6736 000064a8 L283_LF5: 6737 000064a8 23bdfff8 addi r29,r29,#-8 6738 000064ac 3c0c0001 lhi r12,((LC34_LF5)>>16)&0xffff 6739 000064b0 258c08fc addui r12,r12,(LC34_LF5)&0xffff 6740 000064b4 afac0000 sw (r29),r12 6741 000064b8 afa30004 sw 4(r29),r3 6742 000064bc 0c004c10 jal _printf 6743 000064c0 54000000 nop; not filled. 6744 000064c4 23bd0008 addi r29,r29,#8 6745 000064c8 L282_LF5: 6746 000064c8 23bdfff0 addi r29,r29,#-16 6747 000064cc afa30000 sw (r29),r3 6748 000064d0 23c4ff90 addi r4,r30,#-112 6749 000064d4 afa40004 sw 4(r29),r4 6750 000064d8 200c0064 addi r12,r0,#100 6751 000064dc afac0008 sw 8(r29),r12 6752 000064e0 0fffb718 jal _FsRead 6753 000064e4 54000000 nop; not filled. 6754 000064e8 00012820 add r5,r0,r1 6755 000064ec 23bd0010 addi r29,r29,#16 6756 000064f0 64a10064 snei r1,r5,#100 6757 000064f4 102000a8 beqz r1,L284_LF5 6758 000064f8 54000000 nop; not filled. 6759 000064fc 23bdfff8 addi r29,r29,#-8 6760 00006500 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6761 00006504 24420d78 addui r2,r2,(_debugstr)&0xffff 6762 00006508 afa20000 sw (r29),r2 6763 0000650c 200c0066 addi r12,r0,#102 6764 00006510 afac0004 sw 4(r29),r12 6765 00006514 0fffd91c jal _dindex 6766 00006518 54000000 nop; not filled. 6767 0000651c 23bd0008 addi r29,r29,#8 6768 00006520 64210000 snei r1,r1,#0 6769 00006524 1420002c bnez r1,L286_LF5 6770 00006528 54000000 nop; not filled. 6771 0000652c 23bdfff8 addi r29,r29,#-8 6772 00006530 afa20000 sw (r29),r2 6773 00006534 200c002b addi r12,r0,#43 6774 00006538 afac0004 sw 4(r29),r12 6775 0000653c 0fffd8f4 jal _dindex 6776 00006540 54000000 nop; not filled. 6777 00006544 23bd0008 addi r29,r29,#8 6778 00006548 64210000 snei r1,r1,#0 6779 0000654c 10200030 beqz r1,L285_LF5 6780 00006550 54000000 nop; not filled. 6781 00006554 L286_LF5: 6782 00006554 23bdfff0 addi r29,r29,#-16 6783 00006558 3c0c0001 lhi r12,((LC35_LF5)>>16)&0xffff 6784 0000655c 258c0918 addui r12,r12,(LC35_LF5)&0xffff 6785 00006560 afac0000 sw (r29),r12 6786 00006564 afa50004 sw 4(r29),r5 6787 00006568 200c0064 addi r12,r0,#100 6788 0000656c afac0008 sw 8(r29),r12 6789 00006570 afa6000c sw 12(r29),r6 6790 00006574 0c004b58 jal _printf 6791 00006578 54000000 nop; not filled. 6792 0000657c 23bd0010 addi r29,r29,#16 6793 00006580 L285_LF5: 6794 00006580 23bdfff8 addi r29,r29,#-8 6795 00006584 afa30000 sw (r29),r3 6796 00006588 0fffb568 jal _FsClose 6797 0000658c 54000000 nop; not filled. 6798 00006590 2001ffff addi r1,r0,#-1 6799 00006594 23bd0008 addi r29,r29,#8 6800 00006598 080001d0 j L278_LF5 6801 0000659c 54000000 nop; not filled. 6802 000065a0 L284_LF5: 6803 000065a0 23bdfff8 addi r29,r29,#-8 6804 000065a4 afa40000 sw (r29),r4 6805 000065a8 3c010001 lhi r1,((LC36_LF5)>>16)&0xffff 6806 000065ac 24210950 addui r1,r1,(LC36_LF5)&0xffff 6807 000065b0 afa10004 sw 4(r29),r1 6808 000065b4 0fffd664 jal _dstrstr 6809 000065b8 54000000 nop; not filled. 6810 000065bc 23bd0008 addi r29,r29,#8 6811 000065c0 64210000 snei r1,r1,#0 6812 000065c4 14200088 bnez r1,L287_LF5 6813 000065c8 54000000 nop; not filled. 6814 000065cc 23bdfff8 addi r29,r29,#-8 6815 000065d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6816 000065d4 24420d78 addui r2,r2,(_debugstr)&0xffff 6817 000065d8 afa20000 sw (r29),r2 6818 000065dc 200c0066 addi r12,r0,#102 6819 000065e0 afac0004 sw 4(r29),r12 6820 000065e4 0fffd84c jal _dindex 6821 000065e8 54000000 nop; not filled. 6822 000065ec 23bd0008 addi r29,r29,#8 6823 000065f0 64210000 snei r1,r1,#0 6824 000065f4 1420002c bnez r1,L289_LF5 6825 000065f8 54000000 nop; not filled. 6826 000065fc 23bdfff8 addi r29,r29,#-8 6827 00006600 afa20000 sw (r29),r2 6828 00006604 200c002b addi r12,r0,#43 6829 00006608 afac0004 sw 4(r29),r12 6830 0000660c 0fffd824 jal _dindex 6831 00006610 54000000 nop; not filled. 6832 00006614 23bd0008 addi r29,r29,#8 6833 00006618 64210000 snei r1,r1,#0 6834 0000661c 10200024 beqz r1,L288_LF5 6835 00006620 54000000 nop; not filled. 6836 00006624 L289_LF5: 6837 00006624 23bdfff8 addi r29,r29,#-8 6838 00006628 3c0c0001 lhi r12,((LC37_LF5)>>16)&0xffff 6839 0000662c 258c0958 addui r12,r12,(LC37_LF5)&0xffff 6840 00006630 afac0000 sw (r29),r12 6841 00006634 afa60004 sw 4(r29),r6 6842 00006638 0c004a94 jal _printf 6843 0000663c 54000000 nop; not filled. 6844 00006640 23bd0008 addi r29,r29,#8 6845 00006644 L288_LF5: 6846 00006644 2001ffff addi r1,r0,#-1 6847 00006648 08000120 j L278_LF5 6848 0000664c 54000000 nop; not filled. 6849 00006650 L287_LF5: 6850 00006650 23bdfff8 addi r29,r29,#-8 6851 00006654 afa40000 sw (r29),r4 6852 00006658 200c003a addi r12,r0,#58 6853 0000665c afac0004 sw 4(r29),r12 6854 00006660 0fffd7d0 jal _dindex 6855 00006664 54000000 nop; not filled. 6856 00006668 20210001 addi r1,r1,#1 6857 0000666c afc1ff8c sw -116(r30),r1 6858 00006670 23bdfff8 addi r29,r29,#-8 6859 00006674 afa10000 sw (r29),r1 6860 00006678 23c2ff8c addi r2,r30,#-116 6861 0000667c afa20004 sw 4(r29),r2 6862 00006680 200c0010 addi r12,r0,#16 6863 00006684 afac0008 sw 8(r29),r12 6864 00006688 0fffd930 jal _dstrtol 6865 0000668c 54000000 nop; not filled. 6866 00006690 ace10000 sw (r7),r1 6867 00006694 8fccff8c lw r12,-116(r30) 6868 00006698 afac0000 sw (r29),r12 6869 0000669c afa20004 sw 4(r29),r2 6870 000066a0 200c0010 addi r12,r0,#16 6871 000066a4 afac0008 sw 8(r29),r12 6872 000066a8 0fffd910 jal _dstrtol 6873 000066ac 54000000 nop; not filled. 6874 000066b0 8fccff8c lw r12,-116(r30) 6875 000066b4 afac0000 sw (r29),r12 6876 000066b8 afa20004 sw 4(r29),r2 6877 000066bc 200c0010 addi r12,r0,#16 6878 000066c0 afac0008 sw 8(r29),r12 6879 000066c4 0fffd8f4 jal _dstrtol 6880 000066c8 54000000 nop; not filled. 6881 000066cc ad010000 sw (r8),r1 6882 000066d0 8fccff8c lw r12,-116(r30) 6883 000066d4 afac0000 sw (r29),r12 6884 000066d8 afa20004 sw 4(r29),r2 6885 000066dc 200c0010 addi r12,r0,#16 6886 000066e0 afac0008 sw 8(r29),r12 6887 000066e4 0fffd8d4 jal _dstrtol 6888 000066e8 54000000 nop; not filled. 6889 000066ec ad210000 sw (r9),r1 6890 000066f0 8fccff8c lw r12,-116(r30) 6891 000066f4 afac0000 sw (r29),r12 6892 000066f8 afa20004 sw 4(r29),r2 6893 000066fc 200c0010 addi r12,r0,#16 6894 00006700 afac0008 sw 8(r29),r12 6895 00006704 0fffd8b4 jal _dstrtol 6896 00006708 54000000 nop; not filled. 6897 0000670c ad410000 sw (r10),r1 6898 00006710 8fccff8c lw r12,-116(r30) 6899 00006714 afac0000 sw (r29),r12 6900 00006718 afa20004 sw 4(r29),r2 6901 0000671c 200c0010 addi r12,r0,#16 6902 00006720 afac0008 sw 8(r29),r12 6903 00006724 0fffd894 jal _dstrtol 6904 00006728 54000000 nop; not filled. 6905 0000672c ad610000 sw (r11),r1 6906 00006730 afa40000 sw (r29),r4 6907 00006734 200c000a addi r12,r0,#10 6908 00006738 afac0004 sw 4(r29),r12 6909 0000673c 0fffd6f4 jal _dindex 6910 00006740 54000000 nop; not filled. 6911 00006744 23c2ff8f addi r2,r30,#-113 6912 00006748 00220822 sub r1,r1,r2 6913 0000674c afa30000 sw (r29),r3 6914 00006750 afa10004 sw 4(r29),r1 6915 00006754 200c0000 addi r12,r0,#0 6916 00006758 afac0008 sw 8(r29),r12 6917 0000675c 0fffb694 jal _FsSeek 6918 00006760 54000000 nop; not filled. 6919 00006764 00030820 add r1,r0,r3 6920 00006768 23bd0010 addi r29,r29,#16 6921 0000676c L278_LF5: 6922 0000676c 8fa20000 lw r2,0(r29) 6923 00006770 8fa30004 lw r3,4(r29) 6924 00006774 8fa40008 lw r4,8(r29) 6925 00006778 8fa5000c lw r5,12(r29) 6926 0000677c 8fa60010 lw r6,16(r29) 6927 00006780 8fa70014 lw r7,20(r29) 6928 00006784 8fa80018 lw r8,24(r29) 6929 00006788 8fa9001c lw r9,28(r29) 6930 0000678c 8faa0020 lw r10,32(r29) 6931 00006790 8fab0024 lw r11,36(r29) 6932 00006794 8fac0028 lw r12,40(r29) 6933 00006798 8fdffff8 lw r31,-8(r30) 6934 0000679c 001ee820 add r29,r0,r30 6935 000067a0 8fdefffc lw r30,-4(r30) 6936 000067a4 4be00000 jr r31 6937 000067a8 54000000 nop 6938 000067ac .endproc _ProcessGetCodeInfo 6939 000067ac .data 6940 0001099b .align 2 6941 0001099c LC38_LF5: 6942 0001099c 476f7420 .ascii "Got %d bytes at offset %d ...\000" 6942 000109a0 25642062 6942 000109a4 79746573 6942 000109a8 20617420 6942 000109ac 6f666673 6942 000109b0 65742025 6942 000109b4 64202e2e 6942 000109b8 2e00 6943 000109ba .align 2 6944 000109bc LC39_LF5: 6945 000109bc 20746572 .ascii " terminated at %d.\n\000" 6945 000109c0 6d696e61 6945 000109c4 74656420 6945 000109c8 61742025 6945 000109cc 642e0a00 6946 000109d0 .align 2 6947 000109d0 LC40_LF5: 6948 000109d0 42756666 .ascii "Buffer is \'%s\'\n\000" 6948 000109d4 65722069 6948 000109d8 73202725 6948 000109dc 73270a00 6949 000109e0 .align 2 6950 000109e0 LC41_LF5: 6951 000109e0 4e657720 .ascii "New address is 0x%x.\n\000" 6951 000109e4 61646472 6951 000109e8 65737320 6951 000109ec 69732030 6951 000109f0 7825782e 6951 000109f4 0a00 6952 000109f6 .align 2 6953 000109f8 LC42_LF5: 6954 000109f8 5365656b .ascii "Seeking to %d and returning %d bytes!\n\000" 6954 000109fc 696e6720 6954 00010a00 746f2025 6954 00010a04 6420616e 6954 00010a08 64207265 6954 00010a0c 7475726e 6954 00010a10 696e6720 6954 00010a14 25642062 6954 00010a18 79746573 6954 00010a1c 210a00 6955 00010a1f .text 6956 000067ac .align 2 6957 000067ac .proc _ProcessGetFromFile 6958 000067ac .global _ProcessGetFromFile 6959 000067ac _ProcessGetFromFile: 6960 ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. 6961 000067ac afbefffc sw -4(r29),r30; push fp 6962 000067b0 001df020 add r30,r0,r29; fp = sp 6963 000067b4 afbffff8 sw -8(r29),r31; push ret addr 6964 000067b8 2fbd0110 subui r29,r29,#272; alloc local storage 6965 000067bc afa20000 sw 0(r29),r2 6966 000067c0 afa30004 sw 4(r29),r3 6967 000067c4 afa40008 sw 8(r29),r4 6968 000067c8 afa5000c sw 12(r29),r5 6969 000067cc afa60010 sw 16(r29),r6 6970 000067d0 afa70014 sw 20(r29),r7 6971 000067d4 afa80018 sw 24(r29),r8 6972 000067d8 afa9001c sw 28(r29),r9 6973 000067dc afaa0020 sw 32(r29),r10 6974 000067e0 afab0024 sw 36(r29),r11 6975 000067e4 afac0028 sw 40(r29),r12 6976 000067e8 8fca0000 lw r10,(r30) 6977 000067ec 8fc70008 lw r7,8(r30) 6978 000067f0 8fc2000c lw r2,12(r30) 6979 000067f4 8fcb0004 lw r11,4(r30) 6980 000067f8 23c3ff28 addi r3,r30,#-216 6981 000067fc afc3ff24 sw -220(r30),r3 6982 00006800 23bdfff0 addi r29,r29,#-16 6983 00006804 afaa0000 sw (r29),r10 6984 00006808 200c0000 addi r12,r0,#0 6985 0000680c afac0004 sw 4(r29),r12 6986 00006810 200c0001 addi r12,r0,#1 6987 00006814 afac0008 sw 8(r29),r12 6988 00006818 0fffb5d8 jal _FsSeek 6989 0000681c 54000000 nop; not filled. 6990 00006820 00014820 add r9,r0,r1 6991 00006824 50420001 slli r2,r2,#0x1 6992 00006828 23bd0010 addi r29,r29,#16 6993 0000682c 6c4100c8 sgtui r1,r2,#200 6994 00006830 10200008 beqz r1,L292_LF5 6995 00006834 54000000 nop; not filled. 6996 00006838 200200c8 addi r2,r0,#200 6997 0000683c L292_LF5: 6998 0000683c 23bdfff0 addi r29,r29,#-16 6999 00006840 afaa0000 sw (r29),r10 7000 00006844 afa30004 sw 4(r29),r3 7001 00006848 afa20008 sw 8(r29),r2 7002 0000684c 0fffb3ac jal _FsRead 7003 00006850 54000000 nop; not filled. 7004 00006854 00012820 add r5,r0,r1 7005 00006858 23bd0010 addi r29,r29,#16 7006 0000685c 70a10000 slei r1,r5,#0 7007 00006860 10200010 beqz r1,L293_LF5 7008 00006864 54000000 nop; not filled. 7009 00006868 20010000 addi r1,r0,#0 7010 0000686c 08000594 j L347_LF5 7011 00006870 54000000 nop; not filled. 7012 00006874 L293_LF5: 7013 00006874 23bdfff8 addi r29,r29,#-8 7014 00006878 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7015 0000687c 24420d78 addui r2,r2,(_debugstr)&0xffff 7016 00006880 afa20000 sw (r29),r2 7017 00006884 200c0066 addi r12,r0,#102 7018 00006888 afac0004 sw 4(r29),r12 7019 0000688c 0fffd5a4 jal _dindex 7020 00006890 54000000 nop; not filled. 7021 00006894 23bd0008 addi r29,r29,#8 7022 00006898 64210000 snei r1,r1,#0 7023 0000689c 1420002c bnez r1,L295_LF5 7024 000068a0 54000000 nop; not filled. 7025 000068a4 23bdfff8 addi r29,r29,#-8 7026 000068a8 afa20000 sw (r29),r2 7027 000068ac 200c002b addi r12,r0,#43 7028 000068b0 afac0004 sw 4(r29),r12 7029 000068b4 0fffd57c jal _dindex 7030 000068b8 54000000 nop; not filled. 7031 000068bc 23bd0008 addi r29,r29,#8 7032 000068c0 64210000 snei r1,r1,#0 7033 000068c4 10200028 beqz r1,L294_LF5 7034 000068c8 54000000 nop; not filled. 7035 000068cc L295_LF5: 7036 000068cc 23bdfff0 addi r29,r29,#-16 7037 000068d0 3c0c0001 lhi r12,((LC38_LF5)>>16)&0xffff 7038 000068d4 258c099c addui r12,r12,(LC38_LF5)&0xffff 7039 000068d8 afac0000 sw (r29),r12 7040 000068dc afa50004 sw 4(r29),r5 7041 000068e0 afa90008 sw 8(r29),r9 7042 000068e4 0c0047e8 jal _printf 7043 000068e8 54000000 nop; not filled. 7044 000068ec 23bd0010 addi r29,r29,#16 7045 000068f0 L294_LF5: 7046 000068f0 20a5ffff addi r5,r5,#-1 7047 000068f4 23c1ff28 addi r1,r30,#-216 7048 000068f8 00251020 add r2,r1,r5 7049 000068fc 0800000c j L350_LF5 7050 00006900 54000000 nop; not filled. 7051 00006904 L296_LF5: 7052 00006904 2042ffff addi r2,r2,#-1 7053 00006908 20a5ffff addi r5,r5,#-1 7054 0000690c L350_LF5: 7055 0000690c 90410000 lbu r1,(r2) 7056 00006910 6421000a snei r1,r1,#10 7057 00006914 1420ffec bnez r1,L296_LF5 7058 00006918 54000000 nop; not filled. 7059 0000691c 23c1ff29 addi r1,r30,#-215 7060 00006920 00250820 add r1,r1,r5 7061 00006924 200c005a addi r12,r0,(#0x5a)&0xff 7062 00006928 a02c0000 sb (r1),r12 7063 0000692c 23c1ff2a addi r1,r30,#-214 7064 00006930 00250820 add r1,r1,r5 7065 00006934 200c0000 addi r12,r0,(#0x0)&0xff 7066 00006938 a02c0000 sb (r1),r12 7067 0000693c 23bdfff8 addi r29,r29,#-8 7068 00006940 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7069 00006944 24420d78 addui r2,r2,(_debugstr)&0xffff 7070 00006948 afa20000 sw (r29),r2 7071 0000694c 200c0066 addi r12,r0,#102 7072 00006950 afac0004 sw 4(r29),r12 7073 00006954 0fffd4dc jal _dindex 7074 00006958 54000000 nop; not filled. 7075 0000695c 23bd0008 addi r29,r29,#8 7076 00006960 64210000 snei r1,r1,#0 7077 00006964 1420002c bnez r1,L301_LF5 7078 00006968 54000000 nop; not filled. 7079 0000696c 23bdfff8 addi r29,r29,#-8 7080 00006970 afa20000 sw (r29),r2 7081 00006974 200c002b addi r12,r0,#43 7082 00006978 afac0004 sw 4(r29),r12 7083 0000697c 0fffd4b4 jal _dindex 7084 00006980 54000000 nop; not filled. 7085 00006984 23bd0008 addi r29,r29,#8 7086 00006988 64210000 snei r1,r1,#0 7087 0000698c 10200024 beqz r1,L300_LF5 7088 00006990 54000000 nop; not filled. 7089 00006994 L301_LF5: 7090 00006994 23bdfff8 addi r29,r29,#-8 7091 00006998 3c0c0001 lhi r12,((LC39_LF5)>>16)&0xffff 7092 0000699c 258c09bc addui r12,r12,(LC39_LF5)&0xffff 7093 000069a0 afac0000 sw (r29),r12 7094 000069a4 afa50004 sw 4(r29),r5 7095 000069a8 0c004724 jal _printf 7096 000069ac 54000000 nop; not filled. 7097 000069b0 23bd0008 addi r29,r29,#8 7098 000069b4 L300_LF5: 7099 000069b4 23bdfff8 addi r29,r29,#-8 7100 000069b8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7101 000069bc 24420d78 addui r2,r2,(_debugstr)&0xffff 7102 000069c0 afa20000 sw (r29),r2 7103 000069c4 200c0066 addi r12,r0,#102 7104 000069c8 afac0004 sw 4(r29),r12 7105 000069cc 0fffd464 jal _dindex 7106 000069d0 54000000 nop; not filled. 7107 000069d4 23bd0008 addi r29,r29,#8 7108 000069d8 64210000 snei r1,r1,#0 7109 000069dc 1420002c bnez r1,L303_LF5 7110 000069e0 54000000 nop; not filled. 7111 000069e4 23bdfff8 addi r29,r29,#-8 7112 000069e8 afa20000 sw (r29),r2 7113 000069ec 200c002b addi r12,r0,#43 7114 000069f0 afac0004 sw 4(r29),r12 7115 000069f4 0fffd43c jal _dindex 7116 000069f8 54000000 nop; not filled. 7117 000069fc 23bd0008 addi r29,r29,#8 7118 00006a00 64210000 snei r1,r1,#0 7119 00006a04 10200028 beqz r1,L302_LF5 7120 00006a08 54000000 nop; not filled. 7121 00006a0c L303_LF5: 7122 00006a0c 23bdfff8 addi r29,r29,#-8 7123 00006a10 3c0c0001 lhi r12,((LC40_LF5)>>16)&0xffff 7124 00006a14 258c09d0 addui r12,r12,(LC40_LF5)&0xffff 7125 00006a18 afac0000 sw (r29),r12 7126 00006a1c 23c1ff28 addi r1,r30,#-216 7127 00006a20 afa10004 sw 4(r29),r1 7128 00006a24 0c0046a8 jal _printf 7129 00006a28 54000000 nop; not filled. 7130 00006a2c 23bd0008 addi r29,r29,#8 7131 00006a30 L302_LF5: 7132 00006a30 20050000 addi r5,r0,#0 7133 00006a34 3c080001 lhi r8,((_debugstr)>>16)&0xffff 7134 00006a38 25080d78 addui r8,r8,(_debugstr)&0xffff 7135 00006a3c L304_LF5: 7136 00006a3c 23bdfff8 addi r29,r29,#-8 7137 00006a40 8fccff24 lw r12,-220(r30) 7138 00006a44 afac0000 sw (r29),r12 7139 00006a48 200c005a addi r12,r0,#90 7140 00006a4c afac0004 sw 4(r29),r12 7141 00006a50 0fffd3e0 jal _dindex 7142 00006a54 54000000 nop; not filled. 7143 00006a58 23bd0008 addi r29,r29,#8 7144 00006a5c 64210000 snei r1,r1,#0 7145 00006a60 102002ec beqz r1,L305_LF5 7146 00006a64 54000000 nop; not filled. 7147 00006a68 23bdfff8 addi r29,r29,#-8 7148 00006a6c 8fccff24 lw r12,-220(r30) 7149 00006a70 afac0000 sw (r29),r12 7150 00006a74 200c003a addi r12,r0,#58 7151 00006a78 afac0004 sw 4(r29),r12 7152 00006a7c 0fffd3b4 jal _dindex 7153 00006a80 54000000 nop; not filled. 7154 00006a84 23bd0008 addi r29,r29,#8 7155 00006a88 64210000 snei r1,r1,#0 7156 00006a8c 102002c0 beqz r1,L305_LF5 7157 00006a90 54000000 nop; not filled. 7158 00006a94 8fc2ff24 lw r2,-220(r30) 7159 00006a98 90410000 lbu r1,(r2) 7160 00006a9c 6421003a snei r1,r1,#58 7161 00006aa0 102000b8 beqz r1,L349_LF5 7162 00006aa4 54000000 nop; not filled. 7163 00006aa8 6ca10000 sgti r1,r5,#0 7164 00006aac 142002a0 bnez r1,L305_LF5 7165 00006ab0 54000000 nop; not filled. 7166 00006ab4 23bdfff0 addi r29,r29,#-16 7167 00006ab8 afa20000 sw (r29),r2 7168 00006abc 23c1ff24 addi r1,r30,#-220 7169 00006ac0 afa10004 sw 4(r29),r1 7170 00006ac4 200c0010 addi r12,r0,#16 7171 00006ac8 afac0008 sw 8(r29),r12 7172 00006acc 0fffd4ec jal _dstrtol 7173 00006ad0 54000000 nop; not filled. 7174 00006ad4 ace10000 sw (r7),r1 7175 00006ad8 afa80000 sw (r29),r8 7176 00006adc 200c0066 addi r12,r0,#102 7177 00006ae0 afac0004 sw 4(r29),r12 7178 00006ae4 0fffd34c jal _dindex 7179 00006ae8 54000000 nop; not filled. 7180 00006aec 23bd0010 addi r29,r29,#16 7181 00006af0 64210000 snei r1,r1,#0 7182 00006af4 1420002c bnez r1,L311_LF5 7183 00006af8 54000000 nop; not filled. 7184 00006afc 23bdfff8 addi r29,r29,#-8 7185 00006b00 afa80000 sw (r29),r8 7186 00006b04 200c002b addi r12,r0,#43 7187 00006b08 afac0004 sw 4(r29),r12 7188 00006b0c 0fffd324 jal _dindex 7189 00006b10 54000000 nop; not filled. 7190 00006b14 23bd0008 addi r29,r29,#8 7191 00006b18 64210000 snei r1,r1,#0 7192 00006b1c 10200028 beqz r1,L308_LF5 7193 00006b20 54000000 nop; not filled. 7194 00006b24 L311_LF5: 7195 00006b24 23bdfff8 addi r29,r29,#-8 7196 00006b28 3c0c0001 lhi r12,((LC41_LF5)>>16)&0xffff 7197 00006b2c 258c09e0 addui r12,r12,(LC41_LF5)&0xffff 7198 00006b30 afac0000 sw (r29),r12 7199 00006b34 8ce10000 lw r1,(r7) 7200 00006b38 afa10004 sw 4(r29),r1 7201 00006b3c 0c004590 jal _printf 7202 00006b40 54000000 nop; not filled. 7203 00006b44 23bd0008 addi r29,r29,#8 7204 00006b48 L308_LF5: 7205 00006b48 8fc1ff24 lw r1,-220(r30) 7206 00006b4c 90210000 lbu r1,(r1) 7207 00006b50 6421003a snei r1,r1,#58 7208 00006b54 142001f8 bnez r1,L305_LF5 7209 00006b58 54000000 nop; not filled. 7210 00006b5c L349_LF5: 7211 00006b5c 8fc1ff24 lw r1,-220(r30) 7212 00006b60 20210001 addi r1,r1,#1 7213 00006b64 afc1ff24 sw -220(r30),r1 7214 00006b68 00ab3020 add r6,r5,r11 7215 00006b6c L315_LF5: 7216 00006b6c 8fc1ff24 lw r1,-220(r30) 7217 00006b70 08000010 j L351_LF5 7218 00006b74 54000000 nop; not filled. 7219 00006b78 L318_LF5: 7220 00006b78 8fc1ff24 lw r1,-220(r30) 7221 00006b7c 20210001 addi r1,r1,#1 7222 00006b80 afc1ff24 sw -220(r30),r1 7223 00006b84 L351_LF5: 7224 00006b84 903f0000 lbu r31,(r1) 7225 00006b88 63e10020 seqi r1,r31,#32 7226 00006b8c 1420ffe8 bnez r1,L318_LF5 7227 00006b90 54000000 nop; not filled. 7228 00006b94 63e10009 seqi r1,r31,#9 7229 00006b98 1420ffdc bnez r1,L318_LF5 7230 00006b9c 54000000 nop; not filled. 7231 00006ba0 8fc2ff24 lw r2,-220(r30) 7232 00006ba4 805f0000 lb r31,(r2) 7233 00006ba8 33e300ff andi r3,r31,#0x00ff 7234 00006bac 6061000a seqi r1,r3,#10 7235 00006bb0 10200014 beqz r1,L320_LF5 7236 00006bb4 54000000 nop; not filled. 7237 00006bb8 20410001 addi r1,r2,#1 7238 00006bbc afc1ff24 sw -220(r30),r1 7239 00006bc0 0bfffe78 j L304_LF5 7240 00006bc4 54000000 nop; not filled. 7241 00006bc8 L320_LF5: 7242 00006bc8 20020000 addi r2,r0,#0 7243 00006bcc 23e1ffd0 addi r1,r31,#-48 7244 00006bd0 302100ff andi r1,r1,#0x00ff 7245 00006bd4 70210009 sleui r1,r1,#9 7246 00006bd8 14200024 bnez r1,L326_LF5 7247 00006bdc 54000000 nop; not filled. 7248 00006be0 23e1ff9f addi r1,r31,#-97 7249 00006be4 302100ff andi r1,r1,#0x00ff 7250 00006be8 70210005 sleui r1,r1,#5 7251 00006bec 14200010 bnez r1,L326_LF5 7252 00006bf0 54000000 nop; not filled. 7253 00006bf4 64610041 snei r1,r3,#65 7254 00006bf8 14200008 bnez r1,L325_LF5 7255 00006bfc 54000000 nop; not filled. 7256 00006c00 L326_LF5: 7257 00006c00 20020001 addi r2,r0,#1 7258 00006c04 L325_LF5: 7259 00006c04 64410000 snei r1,r2,#0 7260 00006c08 1020fe30 beqz r1,L304_LF5 7261 00006c0c 54000000 nop; not filled. 7262 00006c10 8fc1ff24 lw r1,-220(r30) 7263 00006c14 80220001 lb r2,1(r1) 7264 00006c18 20030000 addi r3,r0,#0 7265 00006c1c 2041ffd0 addi r1,r2,#-48 7266 00006c20 302100ff andi r1,r1,#0x00ff 7267 00006c24 70210009 sleui r1,r1,#9 7268 00006c28 14200028 bnez r1,L329_LF5 7269 00006c2c 54000000 nop; not filled. 7270 00006c30 2041ff9f addi r1,r2,#-97 7271 00006c34 302100ff andi r1,r1,#0x00ff 7272 00006c38 70210005 sleui r1,r1,#5 7273 00006c3c 14200014 bnez r1,L329_LF5 7274 00006c40 54000000 nop; not filled. 7275 00006c44 304100ff andi r1,r2,#0x00ff 7276 00006c48 64210041 snei r1,r1,#65 7277 00006c4c 14200008 bnez r1,L328_LF5 7278 00006c50 54000000 nop; not filled. 7279 00006c54 L329_LF5: 7280 00006c54 20030001 addi r3,r0,#1 7281 00006c58 L328_LF5: 7282 00006c58 64610000 snei r1,r3,#0 7283 00006c5c 1020fddc beqz r1,L304_LF5 7284 00006c60 54000000 nop; not filled. 7285 00006c64 8fc1ff24 lw r1,-220(r30) 7286 00006c68 90220000 lbu r2,(r1) 7287 00006c6c 00021820 add r3,r0,r2 7288 00006c70 205fffd0 addi r31,r2,#-48 7289 00006c74 73e10009 sleui r1,r31,#9 7290 00006c78 10200010 beqz r1,L331_LF5 7291 00006c7c 54000000 nop; not filled. 7292 00006c80 001f2020 add r4,r0,r31 7293 00006c84 08000038 j L330_LF5 7294 00006c88 54000000 nop; not filled. 7295 00006c8c L331_LF5: 7296 00006c8c 2041ff9f addi r1,r2,#-97 7297 00006c90 70210005 sleui r1,r1,#5 7298 00006c94 10200010 beqz r1,L333_LF5 7299 00006c98 54000000 nop; not filled. 7300 00006c9c 2044ffa9 addi r4,r2,#-87 7301 00006ca0 0800001c j L330_LF5 7302 00006ca4 54000000 nop; not filled. 7303 00006ca8 L333_LF5: 7304 00006ca8 2061ffbf addi r1,r3,#-65 7305 00006cac 70210005 sleui r1,r1,#5 7306 00006cb0 20040000 addi r4,r0,#0 7307 00006cb4 10200008 beqz r1,L330_LF5 7308 00006cb8 54000000 nop; not filled. 7309 00006cbc 2064ffc9 addi r4,r3,#-55 7310 00006cc0 L330_LF5: 7311 00006cc0 8fc1ff24 lw r1,-220(r30) 7312 00006cc4 90220001 lbu r2,1(r1) 7313 00006cc8 00021820 add r3,r0,r2 7314 00006ccc 205fffd0 addi r31,r2,#-48 7315 00006cd0 73e10009 sleui r1,r31,#9 7316 00006cd4 10200010 beqz r1,L338_LF5 7317 00006cd8 54000000 nop; not filled. 7318 00006cdc 001f1020 add r2,r0,r31 7319 00006ce0 08000038 j L337_LF5 7320 00006ce4 54000000 nop; not filled. 7321 00006ce8 L338_LF5: 7322 00006ce8 2041ff9f addi r1,r2,#-97 7323 00006cec 70210005 sleui r1,r1,#5 7324 00006cf0 10200010 beqz r1,L340_LF5 7325 00006cf4 54000000 nop; not filled. 7326 00006cf8 2042ffa9 addi r2,r2,#-87 7327 00006cfc 0800001c j L337_LF5 7328 00006d00 54000000 nop; not filled. 7329 00006d04 L340_LF5: 7330 00006d04 2061ffbf addi r1,r3,#-65 7331 00006d08 70210005 sleui r1,r1,#5 7332 00006d0c 20020000 addi r2,r0,#0 7333 00006d10 10200008 beqz r1,L337_LF5 7334 00006d14 54000000 nop; not filled. 7335 00006d18 2062ffc9 addi r2,r3,#-55 7336 00006d1c L337_LF5: 7337 00006d1c 50810004 slli r1,r4,#0x4 7338 00006d20 00220820 add r1,r1,r2 7339 00006d24 a0c10000 sb (r6),r1 7340 00006d28 20c60001 addi r6,r6,#1 7341 00006d2c 20a50001 addi r5,r5,#1 7342 00006d30 8fc1ff24 lw r1,-220(r30) 7343 00006d34 20210002 addi r1,r1,#2 7344 00006d38 afc1ff24 sw -220(r30),r1 7345 00006d3c 8ce10000 lw r1,(r7) 7346 00006d40 20210001 addi r1,r1,#1 7347 00006d44 ace10000 sw (r7),r1 7348 00006d48 0bfffe20 j L315_LF5 7349 00006d4c 54000000 nop; not filled. 7350 00006d50 L305_LF5: 7351 00006d50 23bdfff0 addi r29,r29,#-16 7352 00006d54 afaa0000 sw (r29),r10 7353 00006d58 8fc1ff24 lw r1,-220(r30) 7354 00006d5c 00290820 add r1,r1,r9 7355 00006d60 23c3ff28 addi r3,r30,#-216 7356 00006d64 00230822 sub r1,r1,r3 7357 00006d68 afa10004 sw 4(r29),r1 7358 00006d6c 200c0000 addi r12,r0,#0 7359 00006d70 afac0008 sw 8(r29),r12 7360 00006d74 0fffb07c jal _FsSeek 7361 00006d78 54000000 nop; not filled. 7362 00006d7c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7363 00006d80 24420d78 addui r2,r2,(_debugstr)&0xffff 7364 00006d84 afa20000 sw (r29),r2 7365 00006d88 200c0066 addi r12,r0,#102 7366 00006d8c afac0004 sw 4(r29),r12 7367 00006d90 0fffd0a0 jal _dindex 7368 00006d94 54000000 nop; not filled. 7369 00006d98 23bd0010 addi r29,r29,#16 7370 00006d9c 64210000 snei r1,r1,#0 7371 00006da0 1420002c bnez r1,L346_LF5 7372 00006da4 54000000 nop; not filled. 7373 00006da8 23bdfff8 addi r29,r29,#-8 7374 00006dac afa20000 sw (r29),r2 7375 00006db0 200c002b addi r12,r0,#43 7376 00006db4 afac0004 sw 4(r29),r12 7377 00006db8 0fffd078 jal _dindex 7378 00006dbc 54000000 nop; not filled. 7379 00006dc0 23bd0008 addi r29,r29,#8 7380 00006dc4 64210000 snei r1,r1,#0 7381 00006dc8 10200034 beqz r1,L345_LF5 7382 00006dcc 54000000 nop; not filled. 7383 00006dd0 L346_LF5: 7384 00006dd0 23bdfff0 addi r29,r29,#-16 7385 00006dd4 3c0c0001 lhi r12,((LC42_LF5)>>16)&0xffff 7386 00006dd8 258c09f8 addui r12,r12,(LC42_LF5)&0xffff 7387 00006ddc afac0000 sw (r29),r12 7388 00006de0 8fc1ff24 lw r1,-220(r30) 7389 00006de4 00290820 add r1,r1,r9 7390 00006de8 00230822 sub r1,r1,r3 7391 00006dec afa10004 sw 4(r29),r1 7392 00006df0 afa50008 sw 8(r29),r5 7393 00006df4 0c0042d8 jal _printf 7394 00006df8 54000000 nop; not filled. 7395 00006dfc 23bd0010 addi r29,r29,#16 7396 00006e00 L345_LF5: 7397 00006e00 00050820 add r1,r0,r5 7398 00006e04 L347_LF5: 7399 00006e04 8fa20000 lw r2,0(r29) 7400 00006e08 8fa30004 lw r3,4(r29) 7401 00006e0c 8fa40008 lw r4,8(r29) 7402 00006e10 8fa5000c lw r5,12(r29) 7403 00006e14 8fa60010 lw r6,16(r29) 7404 00006e18 8fa70014 lw r7,20(r29) 7405 00006e1c 8fa80018 lw r8,24(r29) 7406 00006e20 8fa9001c lw r9,28(r29) 7407 00006e24 8faa0020 lw r10,32(r29) 7408 00006e28 8fab0024 lw r11,36(r29) 7409 00006e2c 8fac0028 lw r12,40(r29) 7410 00006e30 8fdffff8 lw r31,-8(r30) 7411 00006e34 001ee820 add r29,r0,r30 7412 00006e38 8fdefffc lw r30,-4(r30) 7413 00006e3c 4be00000 jr r31 7414 00006e40 54000000 nop 7415 00006e44 .endproc _ProcessGetFromFile 7416 00006e44 .data 7417 00010a1f .align 2 7418 00010a20 _temppcb64_LF5: 7419 00010a20 .space 120 7420 00010a98 .align 2 7421 00010a98 LC43_LF5: 7422 00010a98 48692055 .ascii "Hi Uday, How are you?\n\000" 7422 00010a9c 6461792c 7422 00010aa0 20486f77 7422 00010aa4 20617265 7422 00010aa8 20796f75 7422 00010aac 3f0a00 7423 00010aaf .align 2 7424 00010ab0 LC44_LF5: 7425 00010ab0 476f7420 .ascii "Got %d arguments.\n\000" 7425 00010ab4 25642061 7425 00010ab8 7267756d 7425 00010abc 656e7473 7425 00010ac0 2e0a00 7426 00010ac3 .align 2 7427 00010ac4 LC45_LF5: 7428 00010ac4 41766169 .ascii "Available memory: 0x%x -> 0x%x.\n\000" 7428 00010ac8 6c61626c 7428 00010acc 65206d65 7428 00010ad0 6d6f7279 7428 00010ad4 3a203078 7428 00010ad8 2578202d 7428 00010adc 3e203078 7428 00010ae0 25782e0a 7428 00010ae4 00 7429 00010ae5 .align 2 7430 00010ae8 LC46_LF5: 7431 00010ae8 41726775 .ascii "Argument count is %d.\n\000" 7431 00010aec 6d656e74 7431 00010af0 20636f75 7431 00010af4 6e742069 7431 00010af8 73202564 7431 00010afc 2e0a00 7432 00010aff .align 2 7433 00010b00 LC47_LF5: 7434 00010b00 41726775 .ascii "Argument %d is %s.\n\000" 7434 00010b04 6d656e74 7434 00010b08 20256420 7434 00010b0c 69732025 7434 00010b10 732e0a00 7435 00010b14 .align 2 7436 00010b14 LC48_LF5: 7437 00010b14 436f6e76 .ascii "Converted %s to %d=%s\n\000" 7437 00010b18 65727465 7437 00010b1c 64202573 7437 00010b20 20746f20 7437 00010b24 25643d25 7437 00010b28 730a00 7438 00010b2b _buf65_LF5: 7439 00010b2b .space 200 7440 00010bf3 .align 2 7441 00010bf4 LC49_LF5: 7442 00010bf4 25303878 .ascii "%08x: %02x%02x%02x%02x\n\000" 7442 00010bf8 3a202530 7442 00010bfc 32782530 7442 00010c00 32782530 7442 00010c04 32782530 7442 00010c08 32780a00 7443 00010c0c .align 2 7444 00010c0c LC50_LF5: 7445 00010c0c 4f707469 .ascii "Option %s not recognized.\n\000" 7445 00010c10 6f6e2025 7445 00010c14 73206e6f 7445 00010c18 74207265 7445 00010c1c 636f676e 7445 00010c20 697a6564 7445 00010c24 2e0a00 7446 00010c27 .align 2 7447 00010c28 LC51_LF5: 7448 00010c28 41626f75 .ascii "About to initialize queues.\n\000" 7448 00010c2c 7420746f 7448 00010c30 20696e69 7448 00010c34 7469616c 7448 00010c38 697a6520 7448 00010c3c 71756575 7448 00010c40 65732e0a 7448 00010c44 00 7449 00010c45 .align 2 7450 00010c48 LC52_LF5: 7451 00010c48 41667465 .ascii "After initializing queues.\n\000" 7451 00010c4c 7220696e 7451 00010c50 69746961 7451 00010c54 6c697a69 7451 00010c58 6e672071 7451 00010c5c 75657565 7451 00010c60 732e0a00 7452 00010c64 .align 2 7453 00010c64 LC53_LF5: 7454 00010c64 41667465 .ascii "After initializing memory.\n\000" 7454 00010c68 7220696e 7454 00010c6c 69746961 7454 00010c70 6c697a69 7454 00010c74 6e67206d 7454 00010c78 656d6f72 7454 00010c7c 792e0a00 7455 00010c80 .align 2 7456 00010c80 LC54_LF5: 7457 00010c80 41667465 .ascii "After initializing processes.\n\000" 7457 00010c84 7220696e 7457 00010c88 69746961 7457 00010c8c 6c697a69 7457 00010c90 6e672070 7457 00010c94 726f6365 7457 00010c98 73736573 7457 00010c9c 2e0a00 7458 00010c9f .align 2 7459 00010ca0 LC55_LF5: 7460 00010ca0 41667465 .ascii "After initializing synchronization tools.\n\000" 7460 00010ca4 7220696e 7460 00010ca8 69746961 7460 00010cac 6c697a69 7460 00010cb0 6e672073 7460 00010cb4 796e6368 7460 00010cb8 726f6e69 7460 00010cbc 7a617469 7460 00010cc0 6f6e2074 7460 00010cc4 6f6f6c73 7460 00010cc8 2e0a00 7461 00010ccb .align 2 7462 00010ccc LC56_LF5: 7463 00010ccc 41667465 .ascii "After initializing keyboard.\n\000" 7463 00010cd0 7220696e 7463 00010cd4 69746961 7463 00010cd8 6c697a69 7463 00010cdc 6e67206b 7463 00010ce0 6579626f 7463 00010ce4 6172642e 7463 00010ce8 0a00 7464 00010cea .align 2 7465 00010cec LC57_LF5: 7466 00010cec 766d00 .ascii "vm\000" 7467 00010cef .align 2 7468 00010cf0 LC58_LF5: 7469 00010cf0 564d2044 .ascii "VM Descriptor is %d\n\000" 7469 00010cf4 65736372 7469 00010cf8 6970746f 7469 00010cfc 72206973 7469 00010d00 2025640a 7469 00010d04 00 7470 00010d05 .align 2 7471 00010d08 LC59_LF5: 7472 00010d08 43726561 .ascii "Created processes - about to set timer quantum.\n\000" 7472 00010d0c 74656420 7472 00010d10 70726f63 7472 00010d14 65737365 7472 00010d18 73202d20 7472 00010d1c 61626f75 7472 00010d20 7420746f 7472 00010d24 20736574 7472 00010d28 2074696d 7472 00010d2c 65722071 7472 00010d30 75616e74 7472 00010d34 756d2e0a 7472 00010d38 00 7473 00010d39 .align 2 7474 00010d3c LC60_LF5: 7475 00010d3c 53657420 .ascii "Set timer quantum to %d, about to run first process.\n\000" 7475 00010d40 74696d65 7475 00010d44 72207175 7475 00010d48 616e7475 7475 00010d4c 6d20746f 7475 00010d50 2025642c 7475 00010d54 2061626f 7475 00010d58 75742074 7475 00010d5c 6f207275 7475 00010d60 6e206669 7475 00010d64 72737420 7475 00010d68 70726f63 7475 00010d6c 6573732e 7475 00010d70 0a00 7476 00010d72 .text 7477 00006e44 .align 2 7478 00006e44 .proc _main 7479 00006e44 .global _main 7480 00006e44 _main: 7481 ; Function 'main'; 192 bytes of locals, 0 regs to save. 7482 00006e44 afbefffc sw -4(r29),r30; push fp 7483 00006e48 001df020 add r30,r0,r29; fp = sp 7484 00006e4c afbffff8 sw -8(r29),r31; push ret addr 7485 00006e50 2fbd00c8 subui r29,r29,#200; alloc local storage 7486 00006e54 8fce0000 lw r14,(r30) 7487 00006e58 8fd40004 lw r20,4(r30) 7488 00006e5c 0c0041d8 jal ___main 7489 00006e60 54000000 nop; not filled. 7490 00006e64 20100000 addi r16,r0,#0 7491 00006e68 20150000 addi r21,r0,#0 7492 00006e6c afd5ff50 sw -176(r30),r21 7493 00006e70 afd5ff54 sw -172(r30),r21 7494 00006e74 afd5ff58 sw -168(r30),r21 7495 00006e78 afd5ff5c sw -164(r30),r21 7496 00006e7c afd5ff60 sw -160(r30),r21 7497 00006e80 afd5ff64 sw -156(r30),r21 7498 00006e84 afd5ff68 sw -152(r30),r21 7499 00006e88 afd5ff6c sw -148(r30),r21 7500 00006e8c afd5ff70 sw -144(r30),r21 7501 00006e90 afd5ff74 sw -140(r30),r21 7502 00006e94 afd5ff78 sw -136(r30),r21 7503 00006e98 afd5ff7c sw -132(r30),r21 7504 00006e9c 3c010001 lhi r1,((_debugstr)>>16)&0xffff 7505 00006ea0 24210d78 addui r1,r1,(_debugstr)&0xffff 7506 00006ea4 20150000 addi r21,r0,(#0x0)&0xff 7507 00006ea8 a0350000 sb (r1),r21 7508 00006eac 23bdfff8 addi r29,r29,#-8 7509 00006eb0 3c150001 lhi r21,((LC43_LF5)>>16)&0xffff 7510 00006eb4 26b50a98 addui r21,r21,(LC43_LF5)&0xffff 7511 00006eb8 afb50000 sw (r29),r21 7512 00006ebc 0c004210 jal _printf 7513 00006ec0 54000000 nop; not filled. 7514 00006ec4 0c0009e0 jal _MyFuncRetZero 7515 00006ec8 54000000 nop; not filled. 7516 00006ecc 3c150001 lhi r21,((LC44_LF5)>>16)&0xffff 7517 00006ed0 26b50ab0 addui r21,r21,(LC44_LF5)&0xffff 7518 00006ed4 afb50000 sw (r29),r21 7519 00006ed8 afae0004 sw 4(r29),r14 7520 00006edc 0c0041f0 jal _printf 7521 00006ee0 54000000 nop; not filled. 7522 00006ee4 0fffbb24 jal _MemoryGetSize 7523 00006ee8 54000000 nop; not filled. 7524 00006eec 23bdfff8 addi r29,r29,#-8 7525 00006ef0 3c150001 lhi r21,((LC45_LF5)>>16)&0xffff 7526 00006ef4 26b50ac4 addui r21,r21,(LC45_LF5)&0xffff 7527 00006ef8 afb50000 sw (r29),r21 7528 00006efc 3c020001 lhi r2,((_lastosaddress)>>16)&0xffff 7529 00006f00 24423e6c addui r2,r2,(_lastosaddress)&0xffff 7530 00006f04 8c420000 lw r2,(r2) 7531 00006f08 afa20004 sw 4(r29),r2 7532 00006f0c afa10008 sw 8(r29),r1 7533 00006f10 0c0041bc jal _printf 7534 00006f14 54000000 nop; not filled. 7535 00006f18 3c150001 lhi r21,((LC46_LF5)>>16)&0xffff 7536 00006f1c 26b50ae8 addui r21,r21,(LC46_LF5)&0xffff 7537 00006f20 afb50000 sw (r29),r21 7538 00006f24 afae0004 sw 4(r29),r14 7539 00006f28 0c0041a4 jal _printf 7540 00006f2c 54000000 nop; not filled. 7541 00006f30 20090000 addi r9,r0,#0 7542 00006f34 23bd0010 addi r29,r29,#16 7543 00006f38 012e082a slt r1,r9,r14 7544 00006f3c 10200044 beqz r1,L354_LF5 7545 00006f40 54000000 nop; not filled. 7546 00006f44 00141020 add r2,r0,r20 7547 00006f48 L356_LF5: 7548 00006f48 23bdfff0 addi r29,r29,#-16 7549 00006f4c 3c150001 lhi r21,((LC47_LF5)>>16)&0xffff 7550 00006f50 26b50b00 addui r21,r21,(LC47_LF5)&0xffff 7551 00006f54 afb50000 sw (r29),r21 7552 00006f58 afa90004 sw 4(r29),r9 7553 00006f5c 8c550000 lw r21,(r2) 7554 00006f60 afb50008 sw 8(r29),r21 7555 00006f64 0c004168 jal _printf 7556 00006f68 54000000 nop; not filled. 7557 00006f6c 23bd0010 addi r29,r29,#16 7558 00006f70 20420004 addi r2,r2,#4 7559 00006f74 21290001 addi r9,r9,#1 7560 00006f78 012e082a slt r1,r9,r14 7561 00006f7c 1420ffc8 bnez r1,L356_LF5 7562 00006f80 54000000 nop; not filled. 7563 00006f84 L354_LF5: 7564 00006f84 0fffb4f8 jal _FsModuleInit 7565 00006f88 54000000 nop; not filled. 7566 00006f8c 20090000 addi r9,r0,#0 7567 00006f90 012e082a slt r1,r9,r14 7568 00006f94 1020033c beqz r1,L359_LF5 7569 00006f98 54000000 nop; not filled. 7570 00006f9c 23ccff80 addi r12,r30,#-128 7571 00006fa0 23cdff38 addi r13,r30,#-200 7572 00006fa4 3c0f0001 lhi r15,((_buf65_LF5)>>16)&0xffff 7573 00006fa8 25ef0b2b addui r15,r15,(_buf65_LF5)&0xffff 7574 00006fac 21f20001 addi r18,r15,#1 7575 00006fb0 21f10002 addi r17,r15,#2 7576 00006fb4 00144020 add r8,r0,r20 7577 00006fb8 L361_LF5: 7578 00006fb8 8d020000 lw r2,(r8) 7579 00006fbc 90410000 lbu r1,(r2) 7580 00006fc0 6021002d seqi r1,r1,#45 7581 00006fc4 102002f8 beqz r1,L360_LF5 7582 00006fc8 54000000 nop; not filled. 7583 00006fcc 90420001 lbu r2,1(r2) 7584 00006fd0 60410066 seqi r1,r2,#102 7585 00006fd4 142000e0 bnez r1,L366_LF5 7586 00006fd8 54000000 nop; not filled. 7587 00006fdc 6c410066 sgti r1,r2,#102 7588 00006fe0 14200018 bnez r1,L378_LF5 7589 00006fe4 54000000 nop; not filled. 7590 00006fe8 60410044 seqi r1,r2,#68 7591 00006fec 102002a0 beqz r1,L376_LF5 7592 00006ff0 54000000 nop; not filled. 7593 00006ff4 08000024 j L364_LF5 7594 00006ff8 54000000 nop; not filled. 7595 00006ffc L378_LF5: 7596 00006ffc 60410069 seqi r1,r2,#105 7597 00007000 14200048 bnez r1,L365_LF5 7598 00007004 54000000 nop; not filled. 7599 00007008 60410075 seqi r1,r2,#117 7600 0000700c 10200280 beqz r1,L376_LF5 7601 00007010 54000000 nop; not filled. 7602 00007014 08000260 j L375_LF5 7603 00007018 54000000 nop; not filled. 7604 0000701c L364_LF5: 7605 0000701c 23bdfff8 addi r29,r29,#-8 7606 00007020 3c150001 lhi r21,((_debugstr)>>16)&0xffff 7607 00007024 26b50d78 addui r21,r21,(_debugstr)&0xffff 7608 00007028 afb50000 sw (r29),r21 7609 0000702c 21080004 addi r8,r8,#4 7610 00007030 21290001 addi r9,r9,#1 7611 00007034 8d010000 lw r1,(r8) 7612 00007038 afa10004 sw 4(r29),r1 7613 0000703c 0fffc934 jal _dstrcpy 7614 00007040 54000000 nop; not filled. 7615 00007044 08000268 j L411_LF5 7616 00007048 54000000 nop; not filled. 7617 0000704c L365_LF5: 7618 0000704c 23bdfff0 addi r29,r29,#-16 7619 00007050 21080004 addi r8,r8,#4 7620 00007054 21290001 addi r9,r9,#1 7621 00007058 8d150000 lw r21,(r8) 7622 0000705c afb50000 sw (r29),r21 7623 00007060 20150000 addi r21,r0,#0 7624 00007064 afb50004 sw 4(r29),r21 7625 00007068 afb50008 sw 8(r29),r21 7626 0000706c 0fffcf4c jal _dstrtol 7627 00007070 54000000 nop; not filled. 7628 00007074 00011820 add r3,r0,r1 7629 00007078 afa10000 sw (r29),r1 7630 0000707c afac0004 sw 4(r29),r12 7631 00007080 0fffce2c jal _ditoa 7632 00007084 54000000 nop; not filled. 7633 00007088 3c150001 lhi r21,((LC48_LF5)>>16)&0xffff 7634 0000708c 26b50b14 addui r21,r21,(LC48_LF5)&0xffff 7635 00007090 afb50000 sw (r29),r21 7636 00007094 8d010000 lw r1,(r8) 7637 00007098 afa10004 sw 4(r29),r1 7638 0000709c afa30008 sw 8(r29),r3 7639 000070a0 afac000c sw 12(r29),r12 7640 000070a4 0c004028 jal _printf 7641 000070a8 54000000 nop; not filled. 7642 000070ac 23bd0010 addi r29,r29,#16 7643 000070b0 08000200 j L363_LF5 7644 000070b4 54000000 nop; not filled. 7645 000070b8 L366_LF5: 7646 000070b8 20150000 addi r21,r0,#0 7647 000070bc afd5ff38 sw -200(r30),r21 7648 000070c0 23bdffe8 addi r29,r29,#-24 7649 000070c4 21080004 addi r8,r8,#4 7650 000070c8 21290001 addi r9,r9,#1 7651 000070cc 8d150000 lw r21,(r8) 7652 000070d0 afb50000 sw (r29),r21 7653 000070d4 23c1ff4c addi r1,r30,#-180 7654 000070d8 afa10004 sw 4(r29),r1 7655 000070dc 23c1ff48 addi r1,r30,#-184 7656 000070e0 afa10008 sw 8(r29),r1 7657 000070e4 23c1ff44 addi r1,r30,#-188 7658 000070e8 afa1000c sw 12(r29),r1 7659 000070ec 23c1ff40 addi r1,r30,#-192 7660 000070f0 afa10010 sw 16(r29),r1 7661 000070f4 23c1ff3c addi r1,r30,#-196 7662 000070f8 afa10014 sw 20(r29),r1 7663 000070fc 0ffff24c jal _ProcessGetCodeInfo 7664 00007100 54000000 nop; not filled. 7665 00007104 00015020 add r10,r0,r1 7666 00007108 3c150001 lhi r21,((LC27_LF5)>>16)&0xffff 7667 0000710c 26b507f4 addui r21,r21,(LC27_LF5)&0xffff 7668 00007110 afb50000 sw (r29),r21 7669 00007114 8d010000 lw r1,(r8) 7670 00007118 afa10004 sw 4(r29),r1 7671 0000711c 8fd5ff4c lw r21,-180(r30) 7672 00007120 afb50008 sw 8(r29),r21 7673 00007124 0c003fa8 jal _printf 7674 00007128 54000000 nop; not filled. 7675 0000712c 3c150001 lhi r21,((LC28_LF5)>>16)&0xffff 7676 00007130 26b50810 addui r21,r21,(LC28_LF5)&0xffff 7677 00007134 afb50000 sw (r29),r21 7678 00007138 8d010000 lw r1,(r8) 7679 0000713c afa10004 sw 4(r29),r1 7680 00007140 8fd5ff48 lw r21,-184(r30) 7681 00007144 afb50008 sw 8(r29),r21 7682 00007148 8fd5ff44 lw r21,-188(r30) 7683 0000714c afb5000c sw 12(r29),r21 7684 00007150 0c003f7c jal _printf 7685 00007154 54000000 nop; not filled. 7686 00007158 3c150001 lhi r21,((LC29_LF5)>>16)&0xffff 7687 0000715c 26b50838 addui r21,r21,(LC29_LF5)&0xffff 7688 00007160 afb50000 sw (r29),r21 7689 00007164 8d010000 lw r1,(r8) 7690 00007168 afa10004 sw 4(r29),r1 7691 0000716c 8fd5ff40 lw r21,-192(r30) 7692 00007170 afb50008 sw 8(r29),r21 7693 00007174 8fd5ff3c lw r21,-196(r30) 7694 00007178 afb5000c sw 12(r29),r21 7695 0000717c 0c003f50 jal _printf 7696 00007180 54000000 nop; not filled. 7697 00007184 23bd0018 addi r29,r29,#24 7698 00007188 3c0b0001 lhi r11,((_buf65_LF5+3)>>16)&0xffff 7699 0000718c 256b0b2e addui r11,r11,(_buf65_LF5+3)&0xffff 7700 00007190 L367_LF5: 7701 00007190 23bdfff0 addi r29,r29,#-16 7702 00007194 afaa0000 sw (r29),r10 7703 00007198 3c150001 lhi r21,((_buf65_LF5)>>16)&0xffff 7704 0000719c 26b50b2b addui r21,r21,(_buf65_LF5)&0xffff 7705 000071a0 afb50004 sw 4(r29),r21 7706 000071a4 afad0008 sw 8(r29),r13 7707 000071a8 201500c8 addi r21,r0,#200 7708 000071ac afb5000c sw 12(r29),r21 7709 000071b0 0ffff5f8 jal _ProcessGetFromFile 7710 000071b4 54000000 nop; not filled. 7711 000071b8 00011820 add r3,r0,r1 7712 000071bc 23bd0010 addi r29,r29,#16 7713 000071c0 6c610000 sgti r1,r3,#0 7714 000071c4 10200098 beqz r1,L368_LF5 7715 000071c8 54000000 nop; not filled. 7716 000071cc 20020000 addi r2,r0,#0 7717 000071d0 0043082a slt r1,r2,r3 7718 000071d4 1020ffb8 beqz r1,L367_LF5 7719 000071d8 54000000 nop; not filled. 7720 000071dc 000b3820 add r7,r0,r11 7721 000071e0 00113020 add r6,r0,r17 7722 000071e4 00122820 add r5,r0,r18 7723 000071e8 000f2020 add r4,r0,r15 7724 000071ec L373_LF5: 7725 000071ec 23bdffe8 addi r29,r29,#-24 7726 000071f0 3c150001 lhi r21,((LC49_LF5)>>16)&0xffff 7727 000071f4 26b50bf4 addui r21,r21,(LC49_LF5)&0xffff 7728 000071f8 afb50000 sw (r29),r21 7729 000071fc 8fc1ff38 lw r1,-200(r30) 7730 00007200 00220820 add r1,r1,r2 7731 00007204 00230822 sub r1,r1,r3 7732 00007208 afa10004 sw 4(r29),r1 7733 0000720c 90810000 lbu r1,(r4) 7734 00007210 afa10008 sw 8(r29),r1 7735 00007214 90a10000 lbu r1,(r5) 7736 00007218 afa1000c sw 12(r29),r1 7737 0000721c 90c10000 lbu r1,(r6) 7738 00007220 afa10010 sw 16(r29),r1 7739 00007224 90e10000 lbu r1,(r7) 7740 00007228 afa10014 sw 20(r29),r1 7741 0000722c 0c003ea0 jal _printf 7742 00007230 54000000 nop; not filled. 7743 00007234 23bd0018 addi r29,r29,#24 7744 00007238 20e70004 addi r7,r7,#4 7745 0000723c 20c60004 addi r6,r6,#4 7746 00007240 20a50004 addi r5,r5,#4 7747 00007244 20840004 addi r4,r4,#4 7748 00007248 20420004 addi r2,r2,#4 7749 0000724c 0043082a slt r1,r2,r3 7750 00007250 1420ff98 bnez r1,L373_LF5 7751 00007254 54000000 nop; not filled. 7752 00007258 0bffff34 j L367_LF5 7753 0000725c 54000000 nop; not filled. 7754 00007260 L368_LF5: 7755 00007260 23bdfff8 addi r29,r29,#-8 7756 00007264 afaa0000 sw (r29),r10 7757 00007268 0c003de0 jal _close 7758 0000726c 54000000 nop; not filled. 7759 00007270 0800003c j L411_LF5 7760 00007274 54000000 nop; not filled. 7761 00007278 L375_LF5: 7762 00007278 21080004 addi r8,r8,#4 7763 0000727c 21290001 addi r9,r9,#1 7764 00007280 8d100000 lw r16,(r8) 7765 00007284 00099820 add r19,r0,r9 7766 00007288 08000028 j L363_LF5 7767 0000728c 54000000 nop; not filled. 7768 00007290 L376_LF5: 7769 00007290 23bdfff8 addi r29,r29,#-8 7770 00007294 3c150001 lhi r21,((LC50_LF5)>>16)&0xffff 7771 00007298 26b50c0c addui r21,r21,(LC50_LF5)&0xffff 7772 0000729c afb50000 sw (r29),r21 7773 000072a0 8d010000 lw r1,(r8) 7774 000072a4 afa10004 sw 4(r29),r1 7775 000072a8 0c003e24 jal _printf 7776 000072ac 54000000 nop; not filled. 7777 000072b0 L411_LF5: 7778 000072b0 23bd0008 addi r29,r29,#8 7779 000072b4 L363_LF5: 7780 000072b4 66010000 snei r1,r16,#0 7781 000072b8 14200018 bnez r1,L359_LF5 7782 000072bc 54000000 nop; not filled. 7783 000072c0 L360_LF5: 7784 000072c0 21080004 addi r8,r8,#4 7785 000072c4 21290001 addi r9,r9,#1 7786 000072c8 012e082a slt r1,r9,r14 7787 000072cc 1420fce8 bnez r1,L361_LF5 7788 000072d0 54000000 nop; not filled. 7789 000072d4 L359_LF5: 7790 000072d4 23bdfff8 addi r29,r29,#-8 7791 000072d8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7792 000072dc 24420d78 addui r2,r2,(_debugstr)&0xffff 7793 000072e0 afa20000 sw (r29),r2 7794 000072e4 20150069 addi r21,r0,#105 7795 000072e8 afb50004 sw 4(r29),r21 7796 000072ec 0fffcb44 jal _dindex 7797 000072f0 54000000 nop; not filled. 7798 000072f4 23bd0008 addi r29,r29,#8 7799 000072f8 64210000 snei r1,r1,#0 7800 000072fc 1420002c bnez r1,L382_LF5 7801 00007300 54000000 nop; not filled. 7802 00007304 23bdfff8 addi r29,r29,#-8 7803 00007308 afa20000 sw (r29),r2 7804 0000730c 2015002b addi r21,r0,#43 7805 00007310 afb50004 sw 4(r29),r21 7806 00007314 0fffcb1c jal _dindex 7807 00007318 54000000 nop; not filled. 7808 0000731c 23bd0008 addi r29,r29,#8 7809 00007320 64210000 snei r1,r1,#0 7810 00007324 10200020 beqz r1,L381_LF5 7811 00007328 54000000 nop; not filled. 7812 0000732c L382_LF5: 7813 0000732c 23bdfff8 addi r29,r29,#-8 7814 00007330 3c150001 lhi r21,((LC51_LF5)>>16)&0xffff 7815 00007334 26b50c28 addui r21,r21,(LC51_LF5)&0xffff 7816 00007338 afb50000 sw (r29),r21 7817 0000733c 0c003d90 jal _printf 7818 00007340 54000000 nop; not filled. 7819 00007344 23bd0008 addi r29,r29,#8 7820 00007348 L381_LF5: 7821 00007348 0c000c64 jal _QueueModuleInit 7822 0000734c 54000000 nop; not filled. 7823 00007350 23bdfff8 addi r29,r29,#-8 7824 00007354 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7825 00007358 24420d78 addui r2,r2,(_debugstr)&0xffff 7826 0000735c afa20000 sw (r29),r2 7827 00007360 20150069 addi r21,r0,#105 7828 00007364 afb50004 sw 4(r29),r21 7829 00007368 0fffcac8 jal _dindex 7830 0000736c 54000000 nop; not filled. 7831 00007370 23bd0008 addi r29,r29,#8 7832 00007374 64210000 snei r1,r1,#0 7833 00007378 1420002c bnez r1,L384_LF5 7834 0000737c 54000000 nop; not filled. 7835 00007380 23bdfff8 addi r29,r29,#-8 7836 00007384 afa20000 sw (r29),r2 7837 00007388 2015002b addi r21,r0,#43 7838 0000738c afb50004 sw 4(r29),r21 7839 00007390 0fffcaa0 jal _dindex 7840 00007394 54000000 nop; not filled. 7841 00007398 23bd0008 addi r29,r29,#8 7842 0000739c 64210000 snei r1,r1,#0 7843 000073a0 10200020 beqz r1,L383_LF5 7844 000073a4 54000000 nop; not filled. 7845 000073a8 L384_LF5: 7846 000073a8 23bdfff8 addi r29,r29,#-8 7847 000073ac 3c150001 lhi r21,((LC52_LF5)>>16)&0xffff 7848 000073b0 26b50c48 addui r21,r21,(LC52_LF5)&0xffff 7849 000073b4 afb50000 sw (r29),r21 7850 000073b8 0c003d14 jal _printf 7851 000073bc 54000000 nop; not filled. 7852 000073c0 23bd0008 addi r29,r29,#8 7853 000073c4 L383_LF5: 7854 000073c4 0fffb7a4 jal _MemoryModuleInit 7855 000073c8 54000000 nop; not filled. 7856 000073cc 23bdfff8 addi r29,r29,#-8 7857 000073d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7858 000073d4 24420d78 addui r2,r2,(_debugstr)&0xffff 7859 000073d8 afa20000 sw (r29),r2 7860 000073dc 20150069 addi r21,r0,#105 7861 000073e0 afb50004 sw 4(r29),r21 7862 000073e4 0fffca4c jal _dindex 7863 000073e8 54000000 nop; not filled. 7864 000073ec 23bd0008 addi r29,r29,#8 7865 000073f0 64210000 snei r1,r1,#0 7866 000073f4 1420002c bnez r1,L386_LF5 7867 000073f8 54000000 nop; not filled. 7868 000073fc 23bdfff8 addi r29,r29,#-8 7869 00007400 afa20000 sw (r29),r2 7870 00007404 2015002b addi r21,r0,#43 7871 00007408 afb50004 sw 4(r29),r21 7872 0000740c 0fffca24 jal _dindex 7873 00007410 54000000 nop; not filled. 7874 00007414 23bd0008 addi r29,r29,#8 7875 00007418 64210000 snei r1,r1,#0 7876 0000741c 10200020 beqz r1,L385_LF5 7877 00007420 54000000 nop; not filled. 7878 00007424 L386_LF5: 7879 00007424 23bdfff8 addi r29,r29,#-8 7880 00007428 3c150001 lhi r21,((LC53_LF5)>>16)&0xffff 7881 0000742c 26b50c64 addui r21,r21,(LC53_LF5)&0xffff 7882 00007430 afb50000 sw (r29),r21 7883 00007434 0c003c98 jal _printf 7884 00007438 54000000 nop; not filled. 7885 0000743c 23bd0008 addi r29,r29,#8 7886 00007440 L385_LF5: 7887 00007440 0fffd2f4 jal _ProcessModuleInit 7888 00007444 54000000 nop; not filled. 7889 00007448 23bdfff8 addi r29,r29,#-8 7890 0000744c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7891 00007450 24420d78 addui r2,r2,(_debugstr)&0xffff 7892 00007454 afa20000 sw (r29),r2 7893 00007458 20150069 addi r21,r0,#105 7894 0000745c afb50004 sw 4(r29),r21 7895 00007460 0fffc9d0 jal _dindex 7896 00007464 54000000 nop; not filled. 7897 00007468 23bd0008 addi r29,r29,#8 7898 0000746c 64210000 snei r1,r1,#0 7899 00007470 1420002c bnez r1,L388_LF5 7900 00007474 54000000 nop; not filled. 7901 00007478 23bdfff8 addi r29,r29,#-8 7902 0000747c afa20000 sw (r29),r2 7903 00007480 2015002b addi r21,r0,#43 7904 00007484 afb50004 sw 4(r29),r21 7905 00007488 0fffc9a8 jal _dindex 7906 0000748c 54000000 nop; not filled. 7907 00007490 23bd0008 addi r29,r29,#8 7908 00007494 64210000 snei r1,r1,#0 7909 00007498 10200020 beqz r1,L387_LF5 7910 0000749c 54000000 nop; not filled. 7911 000074a0 L388_LF5: 7912 000074a0 23bdfff8 addi r29,r29,#-8 7913 000074a4 3c150001 lhi r21,((LC54_LF5)>>16)&0xffff 7914 000074a8 26b50c80 addui r21,r21,(LC54_LF5)&0xffff 7915 000074ac afb50000 sw (r29),r21 7916 000074b0 0c003c1c jal _printf 7917 000074b4 54000000 nop; not filled. 7918 000074b8 23bd0008 addi r29,r29,#8 7919 000074bc L387_LF5: 7920 000074bc 0c00127c jal _SynchModuleInit 7921 000074c0 54000000 nop; not filled. 7922 000074c4 23bdfff8 addi r29,r29,#-8 7923 000074c8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7924 000074cc 24420d78 addui r2,r2,(_debugstr)&0xffff 7925 000074d0 afa20000 sw (r29),r2 7926 000074d4 20150069 addi r21,r0,#105 7927 000074d8 afb50004 sw 4(r29),r21 7928 000074dc 0fffc954 jal _dindex 7929 000074e0 54000000 nop; not filled. 7930 000074e4 23bd0008 addi r29,r29,#8 7931 000074e8 64210000 snei r1,r1,#0 7932 000074ec 1420002c bnez r1,L390_LF5 7933 000074f0 54000000 nop; not filled. 7934 000074f4 23bdfff8 addi r29,r29,#-8 7935 000074f8 afa20000 sw (r29),r2 7936 000074fc 2015002b addi r21,r0,#43 7937 00007500 afb50004 sw 4(r29),r21 7938 00007504 0fffc92c jal _dindex 7939 00007508 54000000 nop; not filled. 7940 0000750c 23bd0008 addi r29,r29,#8 7941 00007510 64210000 snei r1,r1,#0 7942 00007514 10200020 beqz r1,L389_LF5 7943 00007518 54000000 nop; not filled. 7944 0000751c L390_LF5: 7945 0000751c 23bdfff8 addi r29,r29,#-8 7946 00007520 3c150001 lhi r21,((LC55_LF5)>>16)&0xffff 7947 00007524 26b50ca0 addui r21,r21,(LC55_LF5)&0xffff 7948 00007528 afb50000 sw (r29),r21 7949 0000752c 0c003ba0 jal _printf 7950 00007530 54000000 nop; not filled. 7951 00007534 23bd0008 addi r29,r29,#8 7952 00007538 L389_LF5: 7953 00007538 0c001f08 jal _KbdModuleInit 7954 0000753c 54000000 nop; not filled. 7955 00007540 23bdfff8 addi r29,r29,#-8 7956 00007544 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7957 00007548 24420d78 addui r2,r2,(_debugstr)&0xffff 7958 0000754c afa20000 sw (r29),r2 7959 00007550 20150069 addi r21,r0,#105 7960 00007554 afb50004 sw 4(r29),r21 7961 00007558 0fffc8d8 jal _dindex 7962 0000755c 54000000 nop; not filled. 7963 00007560 23bd0008 addi r29,r29,#8 7964 00007564 64210000 snei r1,r1,#0 7965 00007568 1420002c bnez r1,L392_LF5 7966 0000756c 54000000 nop; not filled. 7967 00007570 23bdfff8 addi r29,r29,#-8 7968 00007574 afa20000 sw (r29),r2 7969 00007578 2015002b addi r21,r0,#43 7970 0000757c afb50004 sw 4(r29),r21 7971 00007580 0fffc8b0 jal _dindex 7972 00007584 54000000 nop; not filled. 7973 00007588 23bd0008 addi r29,r29,#8 7974 0000758c 64210000 snei r1,r1,#0 7975 00007590 10200020 beqz r1,L391_LF5 7976 00007594 54000000 nop; not filled. 7977 00007598 L392_LF5: 7978 00007598 23bdfff8 addi r29,r29,#-8 7979 0000759c 3c150001 lhi r21,((LC56_LF5)>>16)&0xffff 7980 000075a0 26b50ccc addui r21,r21,(LC56_LF5)&0xffff 7981 000075a4 afb50000 sw (r29),r21 7982 000075a8 0c003b24 jal _printf 7983 000075ac 54000000 nop; not filled. 7984 000075b0 23bd0008 addi r29,r29,#8 7985 000075b4 L391_LF5: 7986 000075b4 23c2ff80 addi r2,r30,#-128 7987 000075b8 23c3ffe3 addi r3,r30,#-29 7988 000075bc L396_LF5: 7989 000075bc 20150061 addi r21,r0,(#0x61)&0xff 7990 000075c0 a0550000 sb (r2),r21 7991 000075c4 20420001 addi r2,r2,#1 7992 000075c8 0043082c sle r1,r2,r3 7993 000075cc 1420ffec bnez r1,L396_LF5 7994 000075d0 54000000 nop; not filled. 7995 000075d4 23bdfff8 addi r29,r29,#-8 7996 000075d8 3c150001 lhi r21,((LC57_LF5)>>16)&0xffff 7997 000075dc 26b50cec addui r21,r21,(LC57_LF5)&0xffff 7998 000075e0 afb50000 sw (r29),r21 7999 000075e4 20150002 addi r21,r0,#2 8000 000075e8 afb50004 sw 4(r29),r21 8001 000075ec 0fffa1a8 jal _FsOpen 8002 000075f0 54000000 nop; not filled. 8003 000075f4 00014820 add r9,r0,r1 8004 000075f8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8005 000075fc 24420d78 addui r2,r2,(_debugstr)&0xffff 8006 00007600 afa20000 sw (r29),r2 8007 00007604 20150069 addi r21,r0,#105 8008 00007608 afb50004 sw 4(r29),r21 8009 0000760c 0fffc824 jal _dindex 8010 00007610 54000000 nop; not filled. 8011 00007614 23bd0008 addi r29,r29,#8 8012 00007618 64210000 snei r1,r1,#0 8013 0000761c 1420002c bnez r1,L399_LF5 8014 00007620 54000000 nop; not filled. 8015 00007624 23bdfff8 addi r29,r29,#-8 8016 00007628 afa20000 sw (r29),r2 8017 0000762c 2015002b addi r21,r0,#43 8018 00007630 afb50004 sw 4(r29),r21 8019 00007634 0fffc7fc jal _dindex 8020 00007638 54000000 nop; not filled. 8021 0000763c 23bd0008 addi r29,r29,#8 8022 00007640 64210000 snei r1,r1,#0 8023 00007644 10200024 beqz r1,L398_LF5 8024 00007648 54000000 nop; not filled. 8025 0000764c L399_LF5: 8026 0000764c 23bdfff8 addi r29,r29,#-8 8027 00007650 3c150001 lhi r21,((LC58_LF5)>>16)&0xffff 8028 00007654 26b50cf0 addui r21,r21,(LC58_LF5)&0xffff 8029 00007658 afb50000 sw (r29),r21 8030 0000765c afa90004 sw 4(r29),r9 8031 00007660 0c003a6c jal _printf 8032 00007664 54000000 nop; not filled. 8033 00007668 23bd0008 addi r29,r29,#8 8034 0000766c L398_LF5: 8035 0000766c 23bdfff0 addi r29,r29,#-16 8036 00007670 afa90000 sw (r29),r9 8037 00007674 20150000 addi r21,r0,#0 8038 00007678 afb50004 sw 4(r29),r21 8039 0000767c afb50008 sw 8(r29),r21 8040 00007680 0fffa770 jal _FsSeek 8041 00007684 54000000 nop; not filled. 8042 00007688 afa90000 sw (r29),r9 8043 0000768c 23c1ff80 addi r1,r30,#-128 8044 00007690 afa10004 sw 4(r29),r1 8045 00007694 20150050 addi r21,r0,#80 8046 00007698 afb50008 sw 8(r29),r21 8047 0000769c 0fffa658 jal _FsWrite 8048 000076a0 54000000 nop; not filled. 8049 000076a4 afa90000 sw (r29),r9 8050 000076a8 0fffa448 jal _FsClose 8051 000076ac 54000000 nop; not filled. 8052 000076b0 23bd0010 addi r29,r29,#16 8053 000076b4 66010000 snei r1,r16,#0 8054 000076b8 102000c4 beqz r1,L400_LF5 8055 000076bc 54000000 nop; not filled. 8056 000076c0 00134820 add r9,r0,r19 8057 000076c4 026e082a slt r1,r19,r14 8058 000076c8 10200044 beqz r1,L402_LF5 8059 000076cc 54000000 nop; not filled. 8060 000076d0 23c4fff8 addi r4,r30,#-8 8061 000076d4 51210002 slli r1,r9,#0x2 8062 000076d8 00341820 add r3,r1,r20 8063 000076dc L406_LF5: 8064 000076dc 01331022 sub r2,r9,r19 8065 000076e0 7041000a slei r1,r2,#10 8066 000076e4 10200028 beqz r1,L402_LF5 8067 000076e8 54000000 nop; not filled. 8068 000076ec 50410002 slli r1,r2,#0x2 8069 000076f0 00240820 add r1,r1,r4 8070 000076f4 8c750000 lw r21,(r3) 8071 000076f8 ac35ff58 sw -168(r1),r21 8072 000076fc 20630004 addi r3,r3,#4 8073 00007700 21290001 addi r9,r9,#1 8074 00007704 012e082a slt r1,r9,r14 8075 00007708 1420ffd0 bnez r1,L406_LF5 8076 0000770c 54000000 nop; not filled. 8077 00007710 L402_LF5: 8078 00007710 23bdffd0 addi r29,r29,#-48 8079 00007714 8fd5ff50 lw r21,-176(r30) 8080 00007718 afb50000 sw (r29),r21 8081 0000771c 8fc1ff54 lw r1,-172(r30) 8082 00007720 afa10004 sw 4(r29),r1 8083 00007724 8fd5ff58 lw r21,-168(r30) 8084 00007728 afb50008 sw 8(r29),r21 8085 0000772c 8fd5ff5c lw r21,-164(r30) 8086 00007730 afb5000c sw 12(r29),r21 8087 00007734 8fd5ff60 lw r21,-160(r30) 8088 00007738 afb50010 sw 16(r29),r21 8089 0000773c 8fd5ff64 lw r21,-156(r30) 8090 00007740 afb50014 sw 20(r29),r21 8091 00007744 8fd5ff68 lw r21,-152(r30) 8092 00007748 afb50018 sw 24(r29),r21 8093 0000774c 8fd5ff6c lw r21,-148(r30) 8094 00007750 afb5001c sw 28(r29),r21 8095 00007754 8fd5ff70 lw r21,-144(r30) 8096 00007758 afb50020 sw 32(r29),r21 8097 0000775c 8fd5ff74 lw r21,-140(r30) 8098 00007760 afb50024 sw 36(r29),r21 8099 00007764 8fd5ff78 lw r21,-136(r30) 8100 00007768 afb50028 sw 40(r29),r21 8101 0000776c 8fd5ff7c lw r21,-132(r30) 8102 00007770 afb5002c sw 44(r29),r21 8103 00007774 0c000220 jal _process_create 8104 00007778 54000000 nop; not filled. 8105 0000777c 23bd0030 addi r29,r29,#48 8106 00007780 L400_LF5: 8107 00007780 0c003834 jal _SysprocCreateProcesses 8108 00007784 54000000 nop; not filled. 8109 00007788 23bdfff8 addi r29,r29,#-8 8110 0000778c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8111 00007790 24420d78 addui r2,r2,(_debugstr)&0xffff 8112 00007794 afa20000 sw (r29),r2 8113 00007798 20150069 addi r21,r0,#105 8114 0000779c afb50004 sw 4(r29),r21 8115 000077a0 0fffc690 jal _dindex 8116 000077a4 54000000 nop; not filled. 8117 000077a8 23bd0008 addi r29,r29,#8 8118 000077ac 64210000 snei r1,r1,#0 8119 000077b0 1420002c bnez r1,L408_LF5 8120 000077b4 54000000 nop; not filled. 8121 000077b8 23bdfff8 addi r29,r29,#-8 8122 000077bc afa20000 sw (r29),r2 8123 000077c0 2015002b addi r21,r0,#43 8124 000077c4 afb50004 sw 4(r29),r21 8125 000077c8 0fffc668 jal _dindex 8126 000077cc 54000000 nop; not filled. 8127 000077d0 23bd0008 addi r29,r29,#8 8128 000077d4 64210000 snei r1,r1,#0 8129 000077d8 10200020 beqz r1,L407_LF5 8130 000077dc 54000000 nop; not filled. 8131 000077e0 L408_LF5: 8132 000077e0 23bdfff8 addi r29,r29,#-8 8133 000077e4 3c150001 lhi r21,((LC59_LF5)>>16)&0xffff 8134 000077e8 26b50d08 addui r21,r21,(LC59_LF5)&0xffff 8135 000077ec afb50000 sw (r29),r21 8136 000077f0 0c0038dc jal _printf 8137 000077f4 54000000 nop; not filled. 8138 000077f8 23bd0008 addi r29,r29,#8 8139 000077fc L407_LF5: 8140 000077fc 23bdfff8 addi r29,r29,#-8 8141 00007800 3c030001 lhi r3,((_processQuantum_LF5)>>16)&0xffff 8142 00007804 24630438 addui r3,r3,(_processQuantum_LF5)&0xffff 8143 00007808 8c750000 lw r21,(r3) 8144 0000780c afb50000 sw (r29),r21 8145 00007810 0c001bfc jal _TimerSet 8146 00007814 54000000 nop; not filled. 8147 00007818 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8148 0000781c 24420d78 addui r2,r2,(_debugstr)&0xffff 8149 00007820 afa20000 sw (r29),r2 8150 00007824 20150069 addi r21,r0,#105 8151 00007828 afb50004 sw 4(r29),r21 8152 0000782c 0fffc604 jal _dindex 8153 00007830 54000000 nop; not filled. 8154 00007834 23bd0008 addi r29,r29,#8 8155 00007838 64210000 snei r1,r1,#0 8156 0000783c 1420002c bnez r1,L410_LF5 8157 00007840 54000000 nop; not filled. 8158 00007844 23bdfff8 addi r29,r29,#-8 8159 00007848 afa20000 sw (r29),r2 8160 0000784c 2015002b addi r21,r0,#43 8161 00007850 afb50004 sw 4(r29),r21 8162 00007854 0fffc5dc jal _dindex 8163 00007858 54000000 nop; not filled. 8164 0000785c 23bd0008 addi r29,r29,#8 8165 00007860 64210000 snei r1,r1,#0 8166 00007864 10200028 beqz r1,L409_LF5 8167 00007868 54000000 nop; not filled. 8168 0000786c L410_LF5: 8169 0000786c 23bdfff8 addi r29,r29,#-8 8170 00007870 3c150001 lhi r21,((LC60_LF5)>>16)&0xffff 8171 00007874 26b50d3c addui r21,r21,(LC60_LF5)&0xffff 8172 00007878 afb50000 sw (r29),r21 8173 0000787c 8c610000 lw r1,(r3) 8174 00007880 afa10004 sw 4(r29),r1 8175 00007884 0c003848 jal _printf 8176 00007888 54000000 nop; not filled. 8177 0000788c 23bd0008 addi r29,r29,#8 8178 00007890 L409_LF5: 8179 00007890 0fff98d4 jal _intrreturn 8180 00007894 54000000 nop; not filled. 8181 00007898 0c00381c jal _exitsim 8182 0000789c 54000000 nop; not filled. 8183 000078a0 0c003820 jal _exit 8184 000078a4 54000000 nop 8185 000078a8 .endproc _main 8186 000078a8 .data 8187 00010d72 .align 2 8188 00010d74 LC62_LF5: 8189 00010d74 00000000 .word 0x00000000 8190 ;; 0.0000000e+00 8191 00010d78 .text 8192 000078a8 .align 2 8193 000078a8 .proc _MyFuncRetZero 8194 000078a8 .global _MyFuncRetZero 8195 000078a8 _MyFuncRetZero: 8196 ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. 8197 000078a8 afbefffc sw -4(r29),r30; push fp 8198 000078ac 001df020 add r30,r0,r29; fp = sp 8199 000078b0 afbffff8 sw -8(r29),r31; push ret addr 8200 000078b4 2fbd0008 subui r29,r29,#8; alloc local storage 8201 000078b8 3c010001 lhi r1,((LC62_LF5)>>16)&0xffff 8202 000078bc 24210d74 addui r1,r1,(LC62_LF5)&0xffff 8203 000078c0 98200000 lf f0,(r1) 8204 000078c4 8fdffff8 lw r31,-8(r30) 8205 000078c8 001ee820 add r29,r0,r30 8206 000078cc 8fdefffc lw r30,-4(r30) 8207 000078d0 4be00000 jr r31 8208 000078d4 54000000 nop 8209 000078d8 .endproc _MyFuncRetZero 8210 000078d8 .align 2 8211 000078d8 .proc _GetCurrentPid 8212 000078d8 .global _GetCurrentPid 8213 000078d8 _GetCurrentPid: 8214 ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. 8215 000078d8 afbefffc sw -4(r29),r30; push fp 8216 000078dc 001df020 add r30,r0,r29; fp = sp 8217 000078e0 afbffff8 sw -8(r29),r31; push ret addr 8218 000078e4 2fbd0010 subui r29,r29,#16; alloc local storage 8219 000078e8 afa20000 sw 0(r29),r2 8220 000078ec 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 8221 000078f0 24210e40 addui r1,r1,(_currentPCB)&0xffff 8222 000078f4 8c210000 lw r1,(r1) 8223 000078f8 3c1f0001 lhi r31,((_pcbs_LF5)>>16)&0xffff 8224 000078fc 27ff0e74 addui r31,r31,(_pcbs_LF5)&0xffff 8225 00007900 003f1022 sub r2,r1,r31 8226 00007904 50410004 slli r1,r2,#0x4 8227 00007908 00221020 add r2,r1,r2 8228 0000790c 50410008 slli r1,r2,#0x8 8229 00007910 00411020 add r2,r2,r1 8230 00007914 50410010 slli r1,r2,#0x10 8231 00007918 00410820 add r1,r2,r1 8232 0000791c 00010822 sub r1,r0,r1 8233 00007920 5c210003 srai r1,r1,#0x3 8234 00007924 8fa20000 lw r2,0(r29) 8235 00007928 8fdffff8 lw r31,-8(r30) 8236 0000792c 001ee820 add r29,r0,r30 8237 00007930 8fdefffc lw r30,-4(r30) 8238 00007934 4be00000 jr r31 8239 00007938 54000000 nop 8240 0000793c .endproc _GetCurrentPid 8241 0000793c .align 2 8242 0000793c .proc _findpid 8243 0000793c .global _findpid 8244 0000793c _findpid: 8245 ; Function 'findpid'; 0 bytes of locals, 1 regs to save. 8246 0000793c afbefffc sw -4(r29),r30; push fp 8247 00007940 001df020 add r30,r0,r29; fp = sp 8248 00007944 afbffff8 sw -8(r29),r31; push ret addr 8249 00007948 2fbd0010 subui r29,r29,#16; alloc local storage 8250 0000794c afa20000 sw 0(r29),r2 8251 00007950 8fc10000 lw r1,(r30) 8252 00007954 3c1f0001 lhi r31,((_pcbs_LF5)>>16)&0xffff 8253 00007958 27ff0e74 addui r31,r31,(_pcbs_LF5)&0xffff 8254 0000795c 003f1022 sub r2,r1,r31 8255 00007960 50410004 slli r1,r2,#0x4 8256 00007964 00221020 add r2,r1,r2 8257 00007968 50410008 slli r1,r2,#0x8 8258 0000796c 00411020 add r2,r2,r1 8259 00007970 50410010 slli r1,r2,#0x10 8260 00007974 00410820 add r1,r2,r1 8261 00007978 00010822 sub r1,r0,r1 8262 0000797c 5c210003 srai r1,r1,#0x3 8263 00007980 8fa20000 lw r2,0(r29) 8264 00007984 8fdffff8 lw r31,-8(r30) 8265 00007988 001ee820 add r29,r0,r30 8266 0000798c 8fdefffc lw r30,-4(r30) 8267 00007990 4be00000 jr r31 8268 00007994 54000000 nop 8269 00007998 .endproc _findpid 8270 00007998 .align 2 8271 00007998 .proc _process_create 8272 00007998 .global _process_create 8273 00007998 _process_create: 8274 ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. 8275 00007998 afbefffc sw -4(r29),r30; push fp 8276 0000799c 001df020 add r30,r0,r29; fp = sp 8277 000079a0 afbffff8 sw -8(r29),r31; push ret addr 8278 000079a4 2fbd0408 subui r29,r29,#1032; alloc local storage 8279 000079a8 afa20000 sw 0(r29),r2 8280 000079ac afa30004 sw 4(r29),r3 8281 000079b0 afa40008 sw 8(r29),r4 8282 000079b4 afa5000c sw 12(r29),r5 8283 000079b8 afa60010 sw 16(r29),r6 8284 000079bc 20040000 addi r4,r0,#0 8285 000079c0 8fc10000 lw r1,(r30) 8286 000079c4 64210000 snei r1,r1,#0 8287 000079c8 1020005c beqz r1,L420_LF5 8288 000079cc 54000000 nop; not filled. 8289 000079d0 23c5fc10 addi r5,r30,#-1008 8290 000079d4 001ef820 add r31,r0,r30 8291 000079d8 L422_LF5: 8292 000079d8 20020000 addi r2,r0,#0 8293 000079dc 00851820 add r3,r4,r5 8294 000079e0 L423_LF5: 8295 000079e0 8fe10000 lw r1,(r31) 8296 000079e4 00220820 add r1,r1,r2 8297 000079e8 80210000 lb r1,(r1) 8298 000079ec a0610000 sb (r3),r1 8299 000079f0 20420001 addi r2,r2,#1 8300 000079f4 20630001 addi r3,r3,#1 8301 000079f8 20840001 addi r4,r4,#1 8302 000079fc 8fe10000 lw r1,(r31) 8303 00007a00 00410820 add r1,r2,r1 8304 00007a04 9021ffff lbu r1,-1(r1) 8305 00007a08 64210000 snei r1,r1,#0 8306 00007a0c 1420ffd0 bnez r1,L423_LF5 8307 00007a10 54000000 nop; not filled. 8308 00007a14 23ff0004 addi r31,r31,#4 8309 00007a18 8fe10000 lw r1,(r31) 8310 00007a1c 64210000 snei r1,r1,#0 8311 00007a20 1420ffb4 bnez r1,L422_LF5 8312 00007a24 54000000 nop; not filled. 8313 00007a28 L420_LF5: 8314 00007a28 23c3fc10 addi r3,r30,#-1008 8315 00007a2c 00641020 add r2,r3,r4 8316 00007a30 23c1fc11 addi r1,r30,#-1007 8317 00007a34 00240820 add r1,r1,r4 8318 00007a38 20060000 addi r6,r0,(#0x0)&0xff 8319 00007a3c a0260000 sb (r1),r6 8320 00007a40 a0460000 sb (r2),r6 8321 00007a44 23bdfff0 addi r29,r29,#-16 8322 00007a48 20060000 addi r6,r0,#0 8323 00007a4c afa60000 sw (r29),r6 8324 00007a50 afa30004 sw 4(r29),r3 8325 00007a54 8fc60000 lw r6,(r30) 8326 00007a58 afa60008 sw 8(r29),r6 8327 00007a5c 20060001 addi r6,r0,#1 8328 00007a60 afa6000c sw 12(r29),r6 8329 00007a64 0fffdb64 jal _ProcessFork 8330 00007a68 54000000 nop; not filled. 8331 00007a6c 23bd0010 addi r29,r29,#16 8332 00007a70 8fa20000 lw r2,0(r29) 8333 00007a74 8fa30004 lw r3,4(r29) 8334 00007a78 8fa40008 lw r4,8(r29) 8335 00007a7c 8fa5000c lw r5,12(r29) 8336 00007a80 8fa60010 lw r6,16(r29) 8337 00007a84 8fdffff8 lw r31,-8(r30) 8338 00007a88 001ee820 add r29,r0,r30 8339 00007a8c 8fdefffc lw r30,-4(r30) 8340 00007a90 4be00000 jr r31 8341 00007a94 54000000 nop 8342 00007a98 .endproc _process_create 8343 00007a98 .align 2 8344 00007a98 .proc _ProcessKill 8345 00007a98 .global _ProcessKill 8346 00007a98 _ProcessKill: 8347 ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. 8348 00007a98 afbefffc sw -4(r29),r30; push fp 8349 00007a9c 001df020 add r30,r0,r29; fp = sp 8350 00007aa0 afbffff8 sw -8(r29),r31; push ret addr 8351 00007aa4 2fbd0008 subui r29,r29,#8; alloc local storage 8352 00007aa8 0fffd0a0 jal _ProcessSchedule 8353 00007aac 54000000 nop; not filled. 8354 00007ab0 8fdffff8 lw r31,-8(r30) 8355 00007ab4 001ee820 add r29,r0,r30 8356 00007ab8 8fdefffc lw r30,-4(r30) 8357 00007abc 4be00000 jr r31 8358 00007ac0 54000000 nop 8359 00007ac4 .endproc _ProcessKill 8360 00007ac4 .align 2 8361 00007ac4 .proc _PageFaultHandler 8362 00007ac4 .global _PageFaultHandler 8363 00007ac4 _PageFaultHandler: 8364 ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. 8365 00007ac4 afbefffc sw -4(r29),r30; push fp 8366 00007ac8 001df020 add r30,r0,r29; fp = sp 8367 00007acc afbffff8 sw -8(r29),r31; push ret addr 8368 00007ad0 2fbd0008 subui r29,r29,#8; alloc local storage 8369 00007ad4 8fdffff8 lw r31,-8(r30) 8370 00007ad8 001ee820 add r29,r0,r30 8371 00007adc 8fdefffc lw r30,-4(r30) 8372 00007ae0 4be00000 jr r31 8373 00007ae4 54000000 nop 8374 00007ae8 .endproc _PageFaultHandler 8375 00007ae8 .data 8376 00010d78 .global _debugstr 8377 00010d78 _debugstr: 8378 00010d78 .space 200 8379 00010e40 .align 2 8380 00010e40 .global _currentPCB 8381 00010e40 _currentPCB: 8382 00010e40 .space 4 8383 00010e44 .align 2 8384 00010e44 _freepcbs_LF5: 8385 00010e44 .space 12 8386 00010e50 .align 2 8387 00010e50 _runQueue_LF5: 8388 00010e50 .space 12 8389 00010e5c .align 2 8390 00010e5c _waitQueue_LF5: 8391 00010e5c .space 12 8392 00010e68 .align 2 8393 00010e68 _zombieQueue_LF5: 8394 00010e68 .space 12 8395 00010e74 .align 2 8396 00010e74 _pcbs_LF5: 8397 00010e74 .space 3840 8398 00011d74 .text 8399 00007ae8 .align 2 8400 00007ae8 .proc _ProcessExit_LF5 8401 00007ae8 _ProcessExit_LF5: 8402 ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. 8403 00007ae8 afbefffc sw -4(r29),r30; push fp 8404 00007aec 001df020 add r30,r0,r29; fp = sp 8405 00007af0 afbffff8 sw -8(r29),r31; push ret addr 8406 00007af4 2fbd0008 subui r29,r29,#8; alloc local storage 8407 00007af8 0c0035c8 jal _exit 8408 00007afc 54000000 nop; not filled. 8409 00007b00 8fdffff8 lw r31,-8(r30) 8410 00007b04 001ee820 add r29,r0,r30 8411 00007b08 8fdefffc lw r30,-4(r30) 8412 00007b0c 4be00000 jr r31 8413 00007b10 54000000 nop 8414 00007b14 .endproc _ProcessExit_LF5 8415 ; Compiled by GCC 8417 00007b14 .align 2 8418 00007b14 .proc _isspace 8419 00007b14 .global _isspace 8420 00007b14 _isspace: 8421 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 8422 00007b14 afbefffc sw -4(r29),r30; push fp 8423 00007b18 001df020 add r30,r0,r29; fp = sp 8424 00007b1c afbffff8 sw -8(r29),r31; push ret addr 8425 00007b20 2fbd0010 subui r29,r29,#16; alloc local storage 8426 00007b24 afa20000 sw 0(r29),r2 8427 00007b28 83c20003 lb r2,3(r30) 8428 00007b2c 201f0000 addi r31,r0,#0 8429 00007b30 304100ff andi r1,r2,#0x00ff 8430 00007b34 60210020 seqi r1,r1,#32 8431 00007b38 14200018 bnez r1,L6_LF6 8432 00007b3c 54000000 nop; not filled. 8433 00007b40 2041fff7 addi r1,r2,#-9 8434 00007b44 302100ff andi r1,r1,#0x00ff 8435 00007b48 70210001 sleui r1,r1,#1 8436 00007b4c 10200008 beqz r1,L5_LF6 8437 00007b50 54000000 nop; not filled. 8438 00007b54 L6_LF6: 8439 00007b54 201f0001 addi r31,r0,#1 8440 00007b58 L5_LF6: 8441 00007b58 001f0820 add r1,r0,r31 8442 00007b5c 8fa20000 lw r2,0(r29) 8443 00007b60 8fdffff8 lw r31,-8(r30) 8444 00007b64 001ee820 add r29,r0,r30 8445 00007b68 8fdefffc lw r30,-4(r30) 8446 00007b6c 4be00000 jr r31 8447 00007b70 54000000 nop 8448 00007b74 .endproc _isspace 8449 00007b74 .align 2 8450 00007b74 .proc _isxdigit 8451 00007b74 .global _isxdigit 8452 00007b74 _isxdigit: 8453 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 8454 00007b74 afbefffc sw -4(r29),r30; push fp 8455 00007b78 001df020 add r30,r0,r29; fp = sp 8456 00007b7c afbffff8 sw -8(r29),r31; push ret addr 8457 00007b80 2fbd0010 subui r29,r29,#16; alloc local storage 8458 00007b84 afa20000 sw 0(r29),r2 8459 00007b88 83df0003 lb r31,3(r30) 8460 00007b8c 20020000 addi r2,r0,#0 8461 00007b90 23e1ffd0 addi r1,r31,#-48 8462 00007b94 302100ff andi r1,r1,#0x00ff 8463 00007b98 70210009 sleui r1,r1,#9 8464 00007b9c 14200028 bnez r1,L12_LF6 8465 00007ba0 54000000 nop; not filled. 8466 00007ba4 23e1ff9f addi r1,r31,#-97 8467 00007ba8 302100ff andi r1,r1,#0x00ff 8468 00007bac 70210005 sleui r1,r1,#5 8469 00007bb0 14200014 bnez r1,L12_LF6 8470 00007bb4 54000000 nop; not filled. 8471 00007bb8 33e100ff andi r1,r31,#0x00ff 8472 00007bbc 64210041 snei r1,r1,#65 8473 00007bc0 14200008 bnez r1,L11_LF6 8474 00007bc4 54000000 nop; not filled. 8475 00007bc8 L12_LF6: 8476 00007bc8 20020001 addi r2,r0,#1 8477 00007bcc L11_LF6: 8478 00007bcc 00020820 add r1,r0,r2 8479 00007bd0 8fa20000 lw r2,0(r29) 8480 00007bd4 8fdffff8 lw r31,-8(r30) 8481 00007bd8 001ee820 add r29,r0,r30 8482 00007bdc 8fdefffc lw r30,-4(r30) 8483 00007be0 4be00000 jr r31 8484 00007be4 54000000 nop 8485 00007be8 .endproc _isxdigit 8486 00007be8 .align 2 8487 00007be8 .proc _DisableIntrs 8488 00007be8 .global _DisableIntrs 8489 00007be8 _DisableIntrs: 8490 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 8491 00007be8 afbefffc sw -4(r29),r30; push fp 8492 00007bec 001df020 add r30,r0,r29; fp = sp 8493 00007bf0 afbffff8 sw -8(r29),r31; push ret addr 8494 00007bf4 2fbd0010 subui r29,r29,#16; alloc local storage 8495 00007bf8 afa20000 sw 0(r29),r2 8496 00007bfc 23bdfff8 addi r29,r29,#-8 8497 00007c00 2002000f addi r2,r0,#15 8498 00007c04 afa20000 sw (r29),r2 8499 00007c08 0fff967c jal _SetIntrs 8500 00007c0c 54000000 nop; not filled. 8501 00007c10 23bd0008 addi r29,r29,#8 8502 00007c14 8fa20000 lw r2,0(r29) 8503 00007c18 8fdffff8 lw r31,-8(r30) 8504 00007c1c 001ee820 add r29,r0,r30 8505 00007c20 8fdefffc lw r30,-4(r30) 8506 00007c24 4be00000 jr r31 8507 00007c28 54000000 nop 8508 00007c2c .endproc _DisableIntrs 8509 00007c2c .align 2 8510 00007c2c .proc _EnableIntrs 8511 00007c2c .global _EnableIntrs 8512 00007c2c _EnableIntrs: 8513 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 8514 00007c2c afbefffc sw -4(r29),r30; push fp 8515 00007c30 001df020 add r30,r0,r29; fp = sp 8516 00007c34 afbffff8 sw -8(r29),r31; push ret addr 8517 00007c38 2fbd0010 subui r29,r29,#16; alloc local storage 8518 00007c3c afa20000 sw 0(r29),r2 8519 00007c40 23bdfff8 addi r29,r29,#-8 8520 00007c44 20020000 addi r2,r0,#0 8521 00007c48 afa20000 sw (r29),r2 8522 00007c4c 0fff9638 jal _SetIntrs 8523 00007c50 54000000 nop; not filled. 8524 00007c54 23bd0008 addi r29,r29,#8 8525 00007c58 8fa20000 lw r2,0(r29) 8526 00007c5c 8fdffff8 lw r31,-8(r30) 8527 00007c60 001ee820 add r29,r0,r30 8528 00007c64 8fdefffc lw r30,-4(r30) 8529 00007c68 4be00000 jr r31 8530 00007c6c 54000000 nop 8531 00007c70 .endproc _EnableIntrs 8532 00007c70 .align 2 8533 00007c70 .proc _RestoreIntrs 8534 00007c70 .global _RestoreIntrs 8535 00007c70 _RestoreIntrs: 8536 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 8537 00007c70 afbefffc sw -4(r29),r30; push fp 8538 00007c74 001df020 add r30,r0,r29; fp = sp 8539 00007c78 afbffff8 sw -8(r29),r31; push ret addr 8540 00007c7c 2fbd0010 subui r29,r29,#16; alloc local storage 8541 00007c80 afa20000 sw 0(r29),r2 8542 00007c84 23bdfff8 addi r29,r29,#-8 8543 00007c88 8fc20000 lw r2,(r30) 8544 00007c8c afa20000 sw (r29),r2 8545 00007c90 0fff95f4 jal _SetIntrs 8546 00007c94 54000000 nop; not filled. 8547 00007c98 23bd0008 addi r29,r29,#8 8548 00007c9c 8fa20000 lw r2,0(r29) 8549 00007ca0 8fdffff8 lw r31,-8(r30) 8550 00007ca4 001ee820 add r29,r0,r30 8551 00007ca8 8fdefffc lw r30,-4(r30) 8552 00007cac 4be00000 jr r31 8553 00007cb0 54000000 nop 8554 00007cb4 .endproc _RestoreIntrs 8555 00007cb4 .align 2 8556 00007cb4 .proc _QueueLinkInit 8557 00007cb4 .global _QueueLinkInit 8558 00007cb4 _QueueLinkInit: 8559 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 8560 00007cb4 afbefffc sw -4(r29),r30; push fp 8561 00007cb8 001df020 add r30,r0,r29; fp = sp 8562 00007cbc afbffff8 sw -8(r29),r31; push ret addr 8563 00007cc0 2fbd0010 subui r29,r29,#16; alloc local storage 8564 00007cc4 afa20000 sw 0(r29),r2 8565 00007cc8 8fc10000 lw r1,(r30) 8566 00007ccc 8fc20004 lw r2,4(r30) 8567 00007cd0 201f0000 addi r31,r0,#0 8568 00007cd4 ac3f0000 sw (r1),r31 8569 00007cd8 ac22000c sw 12(r1),r2 8570 00007cdc 8fa20000 lw r2,0(r29) 8571 00007ce0 8fdffff8 lw r31,-8(r30) 8572 00007ce4 001ee820 add r29,r0,r30 8573 00007ce8 8fdefffc lw r30,-4(r30) 8574 00007cec 4be00000 jr r31 8575 00007cf0 54000000 nop 8576 00007cf4 .endproc _QueueLinkInit 8577 00007cf4 .align 2 8578 00007cf4 .proc _QueueNext 8579 00007cf4 .global _QueueNext 8580 00007cf4 _QueueNext: 8581 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 8582 00007cf4 afbefffc sw -4(r29),r30; push fp 8583 00007cf8 001df020 add r30,r0,r29; fp = sp 8584 00007cfc afbffff8 sw -8(r29),r31; push ret addr 8585 00007d00 2fbd0008 subui r29,r29,#8; alloc local storage 8586 00007d04 8fc10000 lw r1,(r30) 8587 00007d08 8c210000 lw r1,(r1) 8588 00007d0c 8fdffff8 lw r31,-8(r30) 8589 00007d10 001ee820 add r29,r0,r30 8590 00007d14 8fdefffc lw r30,-4(r30) 8591 00007d18 4be00000 jr r31 8592 00007d1c 54000000 nop 8593 00007d20 .endproc _QueueNext 8594 00007d20 .align 2 8595 00007d20 .proc _QueuePrev 8596 00007d20 .global _QueuePrev 8597 00007d20 _QueuePrev: 8598 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 8599 00007d20 afbefffc sw -4(r29),r30; push fp 8600 00007d24 001df020 add r30,r0,r29; fp = sp 8601 00007d28 afbffff8 sw -8(r29),r31; push ret addr 8602 00007d2c 2fbd0008 subui r29,r29,#8; alloc local storage 8603 00007d30 8fc10000 lw r1,(r30) 8604 00007d34 8c210004 lw r1,4(r1) 8605 00007d38 8fdffff8 lw r31,-8(r30) 8606 00007d3c 001ee820 add r29,r0,r30 8607 00007d40 8fdefffc lw r30,-4(r30) 8608 00007d44 4be00000 jr r31 8609 00007d48 54000000 nop 8610 00007d4c .endproc _QueuePrev 8611 00007d4c .align 2 8612 00007d4c .proc _QueueFirst 8613 00007d4c .global _QueueFirst 8614 00007d4c _QueueFirst: 8615 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 8616 00007d4c afbefffc sw -4(r29),r30; push fp 8617 00007d50 001df020 add r30,r0,r29; fp = sp 8618 00007d54 afbffff8 sw -8(r29),r31; push ret addr 8619 00007d58 2fbd0008 subui r29,r29,#8; alloc local storage 8620 00007d5c 8fc10000 lw r1,(r30) 8621 00007d60 8c210000 lw r1,(r1) 8622 00007d64 8fdffff8 lw r31,-8(r30) 8623 00007d68 001ee820 add r29,r0,r30 8624 00007d6c 8fdefffc lw r30,-4(r30) 8625 00007d70 4be00000 jr r31 8626 00007d74 54000000 nop 8627 00007d78 .endproc _QueueFirst 8628 00007d78 .align 2 8629 00007d78 .proc _QueueLast 8630 00007d78 .global _QueueLast 8631 00007d78 _QueueLast: 8632 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 8633 00007d78 afbefffc sw -4(r29),r30; push fp 8634 00007d7c 001df020 add r30,r0,r29; fp = sp 8635 00007d80 afbffff8 sw -8(r29),r31; push ret addr 8636 00007d84 2fbd0008 subui r29,r29,#8; alloc local storage 8637 00007d88 8fc10000 lw r1,(r30) 8638 00007d8c 8c210004 lw r1,4(r1) 8639 00007d90 8fdffff8 lw r31,-8(r30) 8640 00007d94 001ee820 add r29,r0,r30 8641 00007d98 8fdefffc lw r30,-4(r30) 8642 00007d9c 4be00000 jr r31 8643 00007da0 54000000 nop 8644 00007da4 .endproc _QueueLast 8645 00007da4 .align 2 8646 00007da4 .proc _QueueInsertAfter 8647 00007da4 .global _QueueInsertAfter 8648 00007da4 _QueueInsertAfter: 8649 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 8650 00007da4 afbefffc sw -4(r29),r30; push fp 8651 00007da8 001df020 add r30,r0,r29; fp = sp 8652 00007dac afbffff8 sw -8(r29),r31; push ret addr 8653 00007db0 2fbd0010 subui r29,r29,#16; alloc local storage 8654 00007db4 afa20000 sw 0(r29),r2 8655 00007db8 afa30004 sw 4(r29),r3 8656 00007dbc 8fc30000 lw r3,(r30) 8657 00007dc0 8fc20004 lw r2,4(r30) 8658 00007dc4 8fc10008 lw r1,8(r30) 8659 00007dc8 ac230008 sw 8(r1),r3 8660 00007dcc ac220004 sw 4(r1),r2 8661 00007dd0 8c5f0000 lw r31,(r2) 8662 00007dd4 ac3f0000 sw (r1),r31 8663 00007dd8 ac410000 sw (r2),r1 8664 00007ddc 8c220000 lw r2,(r1) 8665 00007de0 ac410004 sw 4(r2),r1 8666 00007de4 8c610008 lw r1,8(r3) 8667 00007de8 20210001 addi r1,r1,#1 8668 00007dec ac610008 sw 8(r3),r1 8669 00007df0 8fa20000 lw r2,0(r29) 8670 00007df4 8fa30004 lw r3,4(r29) 8671 00007df8 8fdffff8 lw r31,-8(r30) 8672 00007dfc 001ee820 add r29,r0,r30 8673 00007e00 8fdefffc lw r30,-4(r30) 8674 00007e04 4be00000 jr r31 8675 00007e08 54000000 nop 8676 00007e0c .endproc _QueueInsertAfter 8677 00007e0c .align 2 8678 00007e0c .proc _QueueInsertFirst 8679 00007e0c .global _QueueInsertFirst 8680 00007e0c _QueueInsertFirst: 8681 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 8682 00007e0c afbefffc sw -4(r29),r30; push fp 8683 00007e10 001df020 add r30,r0,r29; fp = sp 8684 00007e14 afbffff8 sw -8(r29),r31; push ret addr 8685 00007e18 2fbd0010 subui r29,r29,#16; alloc local storage 8686 00007e1c afa20000 sw 0(r29),r2 8687 00007e20 afa30004 sw 4(r29),r3 8688 00007e24 8fc30000 lw r3,(r30) 8689 00007e28 8fc10004 lw r1,4(r30) 8690 00007e2c ac230008 sw 8(r1),r3 8691 00007e30 ac230004 sw 4(r1),r3 8692 00007e34 8c7f0000 lw r31,(r3) 8693 00007e38 ac3f0000 sw (r1),r31 8694 00007e3c ac610000 sw (r3),r1 8695 00007e40 8c220000 lw r2,(r1) 8696 00007e44 ac410004 sw 4(r2),r1 8697 00007e48 8c610008 lw r1,8(r3) 8698 00007e4c 20210001 addi r1,r1,#1 8699 00007e50 ac610008 sw 8(r3),r1 8700 00007e54 8fa20000 lw r2,0(r29) 8701 00007e58 8fa30004 lw r3,4(r29) 8702 00007e5c 8fdffff8 lw r31,-8(r30) 8703 00007e60 001ee820 add r29,r0,r30 8704 00007e64 8fdefffc lw r30,-4(r30) 8705 00007e68 4be00000 jr r31 8706 00007e6c 54000000 nop 8707 00007e70 .endproc _QueueInsertFirst 8708 00007e70 .align 2 8709 00007e70 .proc _QueueInsertLast 8710 00007e70 .global _QueueInsertLast 8711 00007e70 _QueueInsertLast: 8712 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 8713 00007e70 afbefffc sw -4(r29),r30; push fp 8714 00007e74 001df020 add r30,r0,r29; fp = sp 8715 00007e78 afbffff8 sw -8(r29),r31; push ret addr 8716 00007e7c 2fbd0010 subui r29,r29,#16; alloc local storage 8717 00007e80 afa20000 sw 0(r29),r2 8718 00007e84 afa30004 sw 4(r29),r3 8719 00007e88 8fc30000 lw r3,(r30) 8720 00007e8c 8fc10004 lw r1,4(r30) 8721 00007e90 8c620004 lw r2,4(r3) 8722 00007e94 ac230008 sw 8(r1),r3 8723 00007e98 ac220004 sw 4(r1),r2 8724 00007e9c 8c5f0000 lw r31,(r2) 8725 00007ea0 ac3f0000 sw (r1),r31 8726 00007ea4 ac410000 sw (r2),r1 8727 00007ea8 8c220000 lw r2,(r1) 8728 00007eac ac410004 sw 4(r2),r1 8729 00007eb0 8c610008 lw r1,8(r3) 8730 00007eb4 20210001 addi r1,r1,#1 8731 00007eb8 ac610008 sw 8(r3),r1 8732 00007ebc 8fa20000 lw r2,0(r29) 8733 00007ec0 8fa30004 lw r3,4(r29) 8734 00007ec4 8fdffff8 lw r31,-8(r30) 8735 00007ec8 001ee820 add r29,r0,r30 8736 00007ecc 8fdefffc lw r30,-4(r30) 8737 00007ed0 4be00000 jr r31 8738 00007ed4 54000000 nop 8739 00007ed8 .endproc _QueueInsertLast 8740 00007ed8 .align 2 8741 00007ed8 .proc _QueueRemove 8742 00007ed8 .global _QueueRemove 8743 00007ed8 _QueueRemove: 8744 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 8745 00007ed8 afbefffc sw -4(r29),r30; push fp 8746 00007edc 001df020 add r30,r0,r29; fp = sp 8747 00007ee0 afbffff8 sw -8(r29),r31; push ret addr 8748 00007ee4 2fbd0010 subui r29,r29,#16; alloc local storage 8749 00007ee8 afa20000 sw 0(r29),r2 8750 00007eec afa30004 sw 4(r29),r3 8751 00007ef0 8fdf0000 lw r31,(r30) 8752 00007ef4 8fe10008 lw r1,8(r31) 8753 00007ef8 8c210008 lw r1,8(r1) 8754 00007efc 6c210000 sgti r1,r1,#0 8755 00007f00 1020002c beqz r1,L44_LF6 8756 00007f04 54000000 nop; not filled. 8757 00007f08 8fe10004 lw r1,4(r31) 8758 00007f0c 8fe30000 lw r3,(r31) 8759 00007f10 ac230000 sw (r1),r3 8760 00007f14 8fe10000 lw r1,(r31) 8761 00007f18 8fe30004 lw r3,4(r31) 8762 00007f1c ac230004 sw 4(r1),r3 8763 00007f20 8fe20008 lw r2,8(r31) 8764 00007f24 8c410008 lw r1,8(r2) 8765 00007f28 2021ffff addi r1,r1,#-1 8766 00007f2c ac410008 sw 8(r2),r1 8767 00007f30 L44_LF6: 8768 00007f30 20030000 addi r3,r0,#0 8769 00007f34 afe30000 sw (r31),r3 8770 00007f38 8fa20000 lw r2,0(r29) 8771 00007f3c 8fa30004 lw r3,4(r29) 8772 00007f40 8fdffff8 lw r31,-8(r30) 8773 00007f44 001ee820 add r29,r0,r30 8774 00007f48 8fdefffc lw r30,-4(r30) 8775 00007f4c 4be00000 jr r31 8776 00007f50 54000000 nop 8777 00007f54 .endproc _QueueRemove 8778 00007f54 .align 2 8779 00007f54 .proc _QueueLength 8780 00007f54 .global _QueueLength 8781 00007f54 _QueueLength: 8782 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 8783 00007f54 afbefffc sw -4(r29),r30; push fp 8784 00007f58 001df020 add r30,r0,r29; fp = sp 8785 00007f5c afbffff8 sw -8(r29),r31; push ret addr 8786 00007f60 2fbd0008 subui r29,r29,#8; alloc local storage 8787 00007f64 8fc10000 lw r1,(r30) 8788 00007f68 8c210008 lw r1,8(r1) 8789 00007f6c 8fdffff8 lw r31,-8(r30) 8790 00007f70 001ee820 add r29,r0,r30 8791 00007f74 8fdefffc lw r30,-4(r30) 8792 00007f78 4be00000 jr r31 8793 00007f7c 54000000 nop 8794 00007f80 .endproc _QueueLength 8795 00007f80 .align 2 8796 00007f80 .proc _QueueEmpty 8797 00007f80 .global _QueueEmpty 8798 00007f80 _QueueEmpty: 8799 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 8800 00007f80 afbefffc sw -4(r29),r30; push fp 8801 00007f84 001df020 add r30,r0,r29; fp = sp 8802 00007f88 afbffff8 sw -8(r29),r31; push ret addr 8803 00007f8c 2fbd0008 subui r29,r29,#8; alloc local storage 8804 00007f90 8fc10000 lw r1,(r30) 8805 00007f94 8c210008 lw r1,8(r1) 8806 00007f98 60210000 seqi r1,r1,#0 8807 00007f9c 8fdffff8 lw r31,-8(r30) 8808 00007fa0 001ee820 add r29,r0,r30 8809 00007fa4 8fdefffc lw r30,-4(r30) 8810 00007fa8 4be00000 jr r31 8811 00007fac 54000000 nop 8812 00007fb0 .endproc _QueueEmpty 8813 00007fb0 .data 8814 00011d74 .align 2 8815 00011d74 LC0_LF6: 8816 00011d74 496e6974 .ascii "Initializing queue link %d.\n\000" 8816 00011d78 69616c69 8816 00011d7c 7a696e67 8816 00011d80 20717565 8816 00011d84 7565206c 8816 00011d88 696e6b20 8816 00011d8c 25642e0a 8816 00011d90 00 8817 00011d91 .text 8818 00007fb0 .align 2 8819 00007fb0 .proc _QueueModuleInit 8820 00007fb0 .global _QueueModuleInit 8821 00007fb0 _QueueModuleInit: 8822 ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. 8823 00007fb0 afbefffc sw -4(r29),r30; push fp 8824 00007fb4 001df020 add r30,r0,r29; fp = sp 8825 00007fb8 afbffff8 sw -8(r29),r31; push ret addr 8826 00007fbc 2fbd0018 subui r29,r29,#24; alloc local storage 8827 00007fc0 afa20000 sw 0(r29),r2 8828 00007fc4 afa30004 sw 4(r29),r3 8829 00007fc8 afa40008 sw 8(r29),r4 8830 00007fcc afa5000c sw 12(r29),r5 8831 00007fd0 23bdfff8 addi r29,r29,#-8 8832 00007fd4 3c050001 lhi r5,((_freeLinks)>>16)&0xffff 8833 00007fd8 24a51de0 addui r5,r5,(_freeLinks)&0xffff 8834 00007fdc afa50000 sw (r29),r5 8835 00007fe0 0c0000e0 jal _QueueInit 8836 00007fe4 54000000 nop; not filled. 8837 00007fe8 20030000 addi r3,r0,#0 8838 00007fec 23bd0008 addi r29,r29,#8 8839 00007ff0 3c040001 lhi r4,((_debugstr)>>16)&0xffff 8840 00007ff4 24840d78 addui r4,r4,(_debugstr)&0xffff 8841 00007ff8 3c020001 lhi r2,((_linkpool_LF6)>>16)&0xffff 8842 00007ffc 24421dec addui r2,r2,(_linkpool_LF6)&0xffff 8843 00008000 L63_LF6: 8844 00008000 23bdfff8 addi r29,r29,#-8 8845 00008004 afa40000 sw (r29),r4 8846 00008008 20050069 addi r5,r0,#105 8847 0000800c afa50004 sw 4(r29),r5 8848 00008010 0fffbe20 jal _dindex 8849 00008014 54000000 nop; not filled. 8850 00008018 23bd0008 addi r29,r29,#8 8851 0000801c 64210000 snei r1,r1,#0 8852 00008020 1420002c bnez r1,L65_LF6 8853 00008024 54000000 nop; not filled. 8854 00008028 23bdfff8 addi r29,r29,#-8 8855 0000802c afa40000 sw (r29),r4 8856 00008030 2005002b addi r5,r0,#43 8857 00008034 afa50004 sw 4(r29),r5 8858 00008038 0fffbdf8 jal _dindex 8859 0000803c 54000000 nop; not filled. 8860 00008040 23bd0008 addi r29,r29,#8 8861 00008044 64210000 snei r1,r1,#0 8862 00008048 10200024 beqz r1,L64_LF6 8863 0000804c 54000000 nop; not filled. 8864 00008050 L65_LF6: 8865 00008050 23bdfff8 addi r29,r29,#-8 8866 00008054 3c050001 lhi r5,((LC0_LF6)>>16)&0xffff 8867 00008058 24a51d74 addui r5,r5,(LC0_LF6)&0xffff 8868 0000805c afa50000 sw (r29),r5 8869 00008060 afa30004 sw 4(r29),r3 8870 00008064 0c003068 jal _printf 8871 00008068 54000000 nop; not filled. 8872 0000806c 23bd0008 addi r29,r29,#8 8873 00008070 L64_LF6: 8874 00008070 20050000 addi r5,r0,#0 8875 00008074 ac450000 sw (r2),r5 8876 00008078 23bdfff8 addi r29,r29,#-8 8877 0000807c afa20000 sw (r29),r2 8878 00008080 0c000078 jal _QueueFreeLink 8879 00008084 54000000 nop; not filled. 8880 00008088 23bd0008 addi r29,r29,#8 8881 0000808c 20420010 addi r2,r2,#16 8882 00008090 20630001 addi r3,r3,#1 8883 00008094 7061018f slei r1,r3,#399 8884 00008098 1420ff64 bnez r1,L63_LF6 8885 0000809c 54000000 nop; not filled. 8886 000080a0 8fa20000 lw r2,0(r29) 8887 000080a4 8fa30004 lw r3,4(r29) 8888 000080a8 8fa40008 lw r4,8(r29) 8889 000080ac 8fa5000c lw r5,12(r29) 8890 000080b0 8fdffff8 lw r31,-8(r30) 8891 000080b4 001ee820 add r29,r0,r30 8892 000080b8 8fdefffc lw r30,-4(r30) 8893 000080bc 4be00000 jr r31 8894 000080c0 54000000 nop 8895 000080c4 .endproc _QueueModuleInit 8896 000080c4 .align 2 8897 000080c4 .proc _QueueInit 8898 000080c4 .global _QueueInit 8899 000080c4 _QueueInit: 8900 ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. 8901 000080c4 afbefffc sw -4(r29),r30; push fp 8902 000080c8 001df020 add r30,r0,r29; fp = sp 8903 000080cc afbffff8 sw -8(r29),r31; push ret addr 8904 000080d0 2fbd0008 subui r29,r29,#8; alloc local storage 8905 000080d4 8fc10000 lw r1,(r30) 8906 000080d8 ac210000 sw (r1),r1 8907 000080dc ac210004 sw 4(r1),r1 8908 000080e0 201f0000 addi r31,r0,#0 8909 000080e4 ac3f0008 sw 8(r1),r31 8910 000080e8 8fdffff8 lw r31,-8(r30) 8911 000080ec 001ee820 add r29,r0,r30 8912 000080f0 8fdefffc lw r30,-4(r30) 8913 000080f4 4be00000 jr r31 8914 000080f8 54000000 nop 8915 000080fc .endproc _QueueInit 8916 000080fc .data 8917 00011d91 .align 2 8918 00011d94 LC1_LF6: 8919 00011d94 25733a20 .ascii "%s: %s\n\000" 8919 00011d98 25730a00 8920 00011d9c .align 2 8921 00011d9c LC2_LF6: 8922 00011d9c 51756575 .ascii "QueueFreeLink\000" 8922 00011da0 65467265 8922 00011da4 654c696e 8922 00011da8 6b00 8923 00011daa .align 2 8924 00011dac LC3_LF6: 8925 00011dac 4c696e6b .ascii "Link not empty\000" 8925 00011db0 206e6f74 8925 00011db4 20656d70 8925 00011db8 747900 8926 00011dbb .text 8927 000080fc .align 2 8928 000080fc .proc _QueueFreeLink 8929 000080fc .global _QueueFreeLink 8930 000080fc _QueueFreeLink: 8931 ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. 8932 000080fc afbefffc sw -4(r29),r30; push fp 8933 00008100 001df020 add r30,r0,r29; fp = sp 8934 00008104 afbffff8 sw -8(r29),r31; push ret addr 8935 00008108 2fbd0018 subui r29,r29,#24; alloc local storage 8936 0000810c afa20000 sw 0(r29),r2 8937 00008110 afa30004 sw 4(r29),r3 8938 00008114 afa40008 sw 8(r29),r4 8939 00008118 8fc30000 lw r3,(r30) 8940 0000811c 8c610000 lw r1,(r3) 8941 00008120 64210000 snei r1,r1,#0 8942 00008124 10200038 beqz r1,L77_LF6 8943 00008128 54000000 nop; not filled. 8944 0000812c 23bdfff0 addi r29,r29,#-16 8945 00008130 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 8946 00008134 24841d94 addui r4,r4,(LC1_LF6)&0xffff 8947 00008138 afa40000 sw (r29),r4 8948 0000813c 3c010001 lhi r1,((LC2_LF6)>>16)&0xffff 8949 00008140 24211d9c addui r1,r1,(LC2_LF6)&0xffff 8950 00008144 afa10004 sw 4(r29),r1 8951 00008148 3c040001 lhi r4,((LC3_LF6)>>16)&0xffff 8952 0000814c 24841dac addui r4,r4,(LC3_LF6)&0xffff 8953 00008150 afa40008 sw 8(r29),r4 8954 00008154 0c002f78 jal _printf 8955 00008158 54000000 nop; not filled. 8956 0000815c 23bd0010 addi r29,r29,#16 8957 00008160 L77_LF6: 8958 00008160 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 8959 00008164 24421de0 addui r2,r2,(_freeLinks)&0xffff 8960 00008168 8c410004 lw r1,4(r2) 8961 0000816c ac620008 sw 8(r3),r2 8962 00008170 ac610004 sw 4(r3),r1 8963 00008174 8c240000 lw r4,(r1) 8964 00008178 ac640000 sw (r3),r4 8965 0000817c ac230000 sw (r1),r3 8966 00008180 8c610000 lw r1,(r3) 8967 00008184 ac230004 sw 4(r1),r3 8968 00008188 8c410008 lw r1,8(r2) 8969 0000818c 20210001 addi r1,r1,#1 8970 00008190 ac410008 sw 8(r2),r1 8971 00008194 8fa20000 lw r2,0(r29) 8972 00008198 8fa30004 lw r3,4(r29) 8973 0000819c 8fa40008 lw r4,8(r29) 8974 000081a0 8fdffff8 lw r31,-8(r30) 8975 000081a4 001ee820 add r29,r0,r30 8976 000081a8 8fdefffc lw r30,-4(r30) 8977 000081ac 4be00000 jr r31 8978 000081b0 54000000 nop 8979 000081b4 .endproc _QueueFreeLink 8980 000081b4 .data 8981 00011dbb .align 2 8982 00011dbc LC4_LF6: 8983 00011dbc 51756575 .ascii "QueueAllocLink\000" 8983 00011dc0 65416c6c 8983 00011dc4 6f634c69 8983 00011dc8 6e6b00 8984 00011dcb .align 2 8985 00011dcc LC5_LF6: 8986 00011dcc 4c696e6b .ascii "Link not allocated!\000" 8986 00011dd0 206e6f74 8986 00011dd4 20616c6c 8986 00011dd8 6f636174 8986 00011ddc 65642100 8987 00011de0 .text 8988 000081b4 .align 2 8989 000081b4 .proc _QueueAllocLink 8990 000081b4 .global _QueueAllocLink 8991 000081b4 _QueueAllocLink: 8992 ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. 8993 000081b4 afbefffc sw -4(r29),r30; push fp 8994 000081b8 001df020 add r30,r0,r29; fp = sp 8995 000081bc afbffff8 sw -8(r29),r31; push ret addr 8996 000081c0 2fbd0018 subui r29,r29,#24; alloc local storage 8997 000081c4 afa20000 sw 0(r29),r2 8998 000081c8 afa30004 sw 4(r29),r3 8999 000081cc afa40008 sw 8(r29),r4 9000 000081d0 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 9001 000081d4 24421de0 addui r2,r2,(_freeLinks)&0xffff 9002 000081d8 8c410008 lw r1,8(r2) 9003 000081dc 60210000 seqi r1,r1,#0 9004 000081e0 14200054 bnez r1,L92_LF6 9005 000081e4 54000000 nop; not filled. 9006 000081e8 8c430000 lw r3,(r2) 9007 000081ec 8c610008 lw r1,8(r3) 9008 000081f0 8c210008 lw r1,8(r1) 9009 000081f4 6c210000 sgti r1,r1,#0 9010 000081f8 1020002c beqz r1,L97_LF6 9011 000081fc 54000000 nop; not filled. 9012 00008200 8c610004 lw r1,4(r3) 9013 00008204 8c640000 lw r4,(r3) 9014 00008208 ac240000 sw (r1),r4 9015 0000820c 8c610000 lw r1,(r3) 9016 00008210 8c640004 lw r4,4(r3) 9017 00008214 ac240004 sw 4(r1),r4 9018 00008218 8c620008 lw r2,8(r3) 9019 0000821c 8c410008 lw r1,8(r2) 9020 00008220 2021ffff addi r1,r1,#-1 9021 00008224 ac410008 sw 8(r2),r1 9022 00008228 L97_LF6: 9023 00008228 20040000 addi r4,r0,#0 9024 0000822c ac640000 sw (r3),r4 9025 00008230 08000008 j L98_LF6 9026 00008234 54000000 nop; not filled. 9027 00008238 L92_LF6: 9028 00008238 20030000 addi r3,r0,#0 9029 0000823c L98_LF6: 9030 0000823c 64610000 snei r1,r3,#0 9031 00008240 14200038 bnez r1,L100_LF6 9032 00008244 54000000 nop; not filled. 9033 00008248 23bdfff0 addi r29,r29,#-16 9034 0000824c 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 9035 00008250 24841d94 addui r4,r4,(LC1_LF6)&0xffff 9036 00008254 afa40000 sw (r29),r4 9037 00008258 3c010001 lhi r1,((LC4_LF6)>>16)&0xffff 9038 0000825c 24211dbc addui r1,r1,(LC4_LF6)&0xffff 9039 00008260 afa10004 sw 4(r29),r1 9040 00008264 3c040001 lhi r4,((LC5_LF6)>>16)&0xffff 9041 00008268 24841dcc addui r4,r4,(LC5_LF6)&0xffff 9042 0000826c afa40008 sw 8(r29),r4 9043 00008270 0c002e5c jal _printf 9044 00008274 54000000 nop; not filled. 9045 00008278 23bd0010 addi r29,r29,#16 9046 0000827c L100_LF6: 9047 0000827c 00030820 add r1,r0,r3 9048 00008280 8fa20000 lw r2,0(r29) 9049 00008284 8fa30004 lw r3,4(r29) 9050 00008288 8fa40008 lw r4,8(r29) 9051 0000828c 8fdffff8 lw r31,-8(r30) 9052 00008290 001ee820 add r29,r0,r30 9053 00008294 8fdefffc lw r30,-4(r30) 9054 00008298 4be00000 jr r31 9055 0000829c 54000000 nop 9056 000082a0 .endproc _QueueAllocLink 9057 000082a0 .data 9058 00011de0 .align 2 9059 00011de0 .global _freeLinks 9060 00011de0 _freeLinks: 9061 00011de0 .space 12 9062 00011dec .align 2 9063 00011dec _linkpool_LF6: 9064 00011dec .space 6400 9065 ; Compiled by GCC 9066 000136ec .text 9067 000082a0 .align 2 9068 000082a0 .proc _isspace 9069 000082a0 .global _isspace 9070 000082a0 _isspace: 9071 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 9072 000082a0 afbefffc sw -4(r29),r30; push fp 9073 000082a4 001df020 add r30,r0,r29; fp = sp 9074 000082a8 afbffff8 sw -8(r29),r31; push ret addr 9075 000082ac 2fbd0010 subui r29,r29,#16; alloc local storage 9076 000082b0 afa20000 sw 0(r29),r2 9077 000082b4 83c20003 lb r2,3(r30) 9078 000082b8 201f0000 addi r31,r0,#0 9079 000082bc 304100ff andi r1,r2,#0x00ff 9080 000082c0 60210020 seqi r1,r1,#32 9081 000082c4 14200018 bnez r1,L6_LF7 9082 000082c8 54000000 nop; not filled. 9083 000082cc 2041fff7 addi r1,r2,#-9 9084 000082d0 302100ff andi r1,r1,#0x00ff 9085 000082d4 70210001 sleui r1,r1,#1 9086 000082d8 10200008 beqz r1,L5_LF7 9087 000082dc 54000000 nop; not filled. 9088 000082e0 L6_LF7: 9089 000082e0 201f0001 addi r31,r0,#1 9090 000082e4 L5_LF7: 9091 000082e4 001f0820 add r1,r0,r31 9092 000082e8 8fa20000 lw r2,0(r29) 9093 000082ec 8fdffff8 lw r31,-8(r30) 9094 000082f0 001ee820 add r29,r0,r30 9095 000082f4 8fdefffc lw r30,-4(r30) 9096 000082f8 4be00000 jr r31 9097 000082fc 54000000 nop 9098 00008300 .endproc _isspace 9099 00008300 .align 2 9100 00008300 .proc _isxdigit 9101 00008300 .global _isxdigit 9102 00008300 _isxdigit: 9103 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 9104 00008300 afbefffc sw -4(r29),r30; push fp 9105 00008304 001df020 add r30,r0,r29; fp = sp 9106 00008308 afbffff8 sw -8(r29),r31; push ret addr 9107 0000830c 2fbd0010 subui r29,r29,#16; alloc local storage 9108 00008310 afa20000 sw 0(r29),r2 9109 00008314 83df0003 lb r31,3(r30) 9110 00008318 20020000 addi r2,r0,#0 9111 0000831c 23e1ffd0 addi r1,r31,#-48 9112 00008320 302100ff andi r1,r1,#0x00ff 9113 00008324 70210009 sleui r1,r1,#9 9114 00008328 14200028 bnez r1,L12_LF7 9115 0000832c 54000000 nop; not filled. 9116 00008330 23e1ff9f addi r1,r31,#-97 9117 00008334 302100ff andi r1,r1,#0x00ff 9118 00008338 70210005 sleui r1,r1,#5 9119 0000833c 14200014 bnez r1,L12_LF7 9120 00008340 54000000 nop; not filled. 9121 00008344 33e100ff andi r1,r31,#0x00ff 9122 00008348 64210041 snei r1,r1,#65 9123 0000834c 14200008 bnez r1,L11_LF7 9124 00008350 54000000 nop; not filled. 9125 00008354 L12_LF7: 9126 00008354 20020001 addi r2,r0,#1 9127 00008358 L11_LF7: 9128 00008358 00020820 add r1,r0,r2 9129 0000835c 8fa20000 lw r2,0(r29) 9130 00008360 8fdffff8 lw r31,-8(r30) 9131 00008364 001ee820 add r29,r0,r30 9132 00008368 8fdefffc lw r30,-4(r30) 9133 0000836c 4be00000 jr r31 9134 00008370 54000000 nop 9135 00008374 .endproc _isxdigit 9136 00008374 .align 2 9137 00008374 .proc _DisableIntrs 9138 00008374 .global _DisableIntrs 9139 00008374 _DisableIntrs: 9140 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 9141 00008374 afbefffc sw -4(r29),r30; push fp 9142 00008378 001df020 add r30,r0,r29; fp = sp 9143 0000837c afbffff8 sw -8(r29),r31; push ret addr 9144 00008380 2fbd0010 subui r29,r29,#16; alloc local storage 9145 00008384 afa20000 sw 0(r29),r2 9146 00008388 23bdfff8 addi r29,r29,#-8 9147 0000838c 2002000f addi r2,r0,#15 9148 00008390 afa20000 sw (r29),r2 9149 00008394 0fff8ef0 jal _SetIntrs 9150 00008398 54000000 nop; not filled. 9151 0000839c 23bd0008 addi r29,r29,#8 9152 000083a0 8fa20000 lw r2,0(r29) 9153 000083a4 8fdffff8 lw r31,-8(r30) 9154 000083a8 001ee820 add r29,r0,r30 9155 000083ac 8fdefffc lw r30,-4(r30) 9156 000083b0 4be00000 jr r31 9157 000083b4 54000000 nop 9158 000083b8 .endproc _DisableIntrs 9159 000083b8 .align 2 9160 000083b8 .proc _EnableIntrs 9161 000083b8 .global _EnableIntrs 9162 000083b8 _EnableIntrs: 9163 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 9164 000083b8 afbefffc sw -4(r29),r30; push fp 9165 000083bc 001df020 add r30,r0,r29; fp = sp 9166 000083c0 afbffff8 sw -8(r29),r31; push ret addr 9167 000083c4 2fbd0010 subui r29,r29,#16; alloc local storage 9168 000083c8 afa20000 sw 0(r29),r2 9169 000083cc 23bdfff8 addi r29,r29,#-8 9170 000083d0 20020000 addi r2,r0,#0 9171 000083d4 afa20000 sw (r29),r2 9172 000083d8 0fff8eac jal _SetIntrs 9173 000083dc 54000000 nop; not filled. 9174 000083e0 23bd0008 addi r29,r29,#8 9175 000083e4 8fa20000 lw r2,0(r29) 9176 000083e8 8fdffff8 lw r31,-8(r30) 9177 000083ec 001ee820 add r29,r0,r30 9178 000083f0 8fdefffc lw r30,-4(r30) 9179 000083f4 4be00000 jr r31 9180 000083f8 54000000 nop 9181 000083fc .endproc _EnableIntrs 9182 000083fc .align 2 9183 000083fc .proc _RestoreIntrs 9184 000083fc .global _RestoreIntrs 9185 000083fc _RestoreIntrs: 9186 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 9187 000083fc afbefffc sw -4(r29),r30; push fp 9188 00008400 001df020 add r30,r0,r29; fp = sp 9189 00008404 afbffff8 sw -8(r29),r31; push ret addr 9190 00008408 2fbd0010 subui r29,r29,#16; alloc local storage 9191 0000840c afa20000 sw 0(r29),r2 9192 00008410 23bdfff8 addi r29,r29,#-8 9193 00008414 8fc20000 lw r2,(r30) 9194 00008418 afa20000 sw (r29),r2 9195 0000841c 0fff8e68 jal _SetIntrs 9196 00008420 54000000 nop; not filled. 9197 00008424 23bd0008 addi r29,r29,#8 9198 00008428 8fa20000 lw r2,0(r29) 9199 0000842c 8fdffff8 lw r31,-8(r30) 9200 00008430 001ee820 add r29,r0,r30 9201 00008434 8fdefffc lw r30,-4(r30) 9202 00008438 4be00000 jr r31 9203 0000843c 54000000 nop 9204 00008440 .endproc _RestoreIntrs 9205 00008440 .align 2 9206 00008440 .proc _QueueLinkInit 9207 00008440 .global _QueueLinkInit 9208 00008440 _QueueLinkInit: 9209 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 9210 00008440 afbefffc sw -4(r29),r30; push fp 9211 00008444 001df020 add r30,r0,r29; fp = sp 9212 00008448 afbffff8 sw -8(r29),r31; push ret addr 9213 0000844c 2fbd0010 subui r29,r29,#16; alloc local storage 9214 00008450 afa20000 sw 0(r29),r2 9215 00008454 8fc10000 lw r1,(r30) 9216 00008458 8fc20004 lw r2,4(r30) 9217 0000845c 201f0000 addi r31,r0,#0 9218 00008460 ac3f0000 sw (r1),r31 9219 00008464 ac22000c sw 12(r1),r2 9220 00008468 8fa20000 lw r2,0(r29) 9221 0000846c 8fdffff8 lw r31,-8(r30) 9222 00008470 001ee820 add r29,r0,r30 9223 00008474 8fdefffc lw r30,-4(r30) 9224 00008478 4be00000 jr r31 9225 0000847c 54000000 nop 9226 00008480 .endproc _QueueLinkInit 9227 00008480 .align 2 9228 00008480 .proc _QueueNext 9229 00008480 .global _QueueNext 9230 00008480 _QueueNext: 9231 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 9232 00008480 afbefffc sw -4(r29),r30; push fp 9233 00008484 001df020 add r30,r0,r29; fp = sp 9234 00008488 afbffff8 sw -8(r29),r31; push ret addr 9235 0000848c 2fbd0008 subui r29,r29,#8; alloc local storage 9236 00008490 8fc10000 lw r1,(r30) 9237 00008494 8c210000 lw r1,(r1) 9238 00008498 8fdffff8 lw r31,-8(r30) 9239 0000849c 001ee820 add r29,r0,r30 9240 000084a0 8fdefffc lw r30,-4(r30) 9241 000084a4 4be00000 jr r31 9242 000084a8 54000000 nop 9243 000084ac .endproc _QueueNext 9244 000084ac .align 2 9245 000084ac .proc _QueuePrev 9246 000084ac .global _QueuePrev 9247 000084ac _QueuePrev: 9248 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 9249 000084ac afbefffc sw -4(r29),r30; push fp 9250 000084b0 001df020 add r30,r0,r29; fp = sp 9251 000084b4 afbffff8 sw -8(r29),r31; push ret addr 9252 000084b8 2fbd0008 subui r29,r29,#8; alloc local storage 9253 000084bc 8fc10000 lw r1,(r30) 9254 000084c0 8c210004 lw r1,4(r1) 9255 000084c4 8fdffff8 lw r31,-8(r30) 9256 000084c8 001ee820 add r29,r0,r30 9257 000084cc 8fdefffc lw r30,-4(r30) 9258 000084d0 4be00000 jr r31 9259 000084d4 54000000 nop 9260 000084d8 .endproc _QueuePrev 9261 000084d8 .align 2 9262 000084d8 .proc _QueueFirst 9263 000084d8 .global _QueueFirst 9264 000084d8 _QueueFirst: 9265 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 9266 000084d8 afbefffc sw -4(r29),r30; push fp 9267 000084dc 001df020 add r30,r0,r29; fp = sp 9268 000084e0 afbffff8 sw -8(r29),r31; push ret addr 9269 000084e4 2fbd0008 subui r29,r29,#8; alloc local storage 9270 000084e8 8fc10000 lw r1,(r30) 9271 000084ec 8c210000 lw r1,(r1) 9272 000084f0 8fdffff8 lw r31,-8(r30) 9273 000084f4 001ee820 add r29,r0,r30 9274 000084f8 8fdefffc lw r30,-4(r30) 9275 000084fc 4be00000 jr r31 9276 00008500 54000000 nop 9277 00008504 .endproc _QueueFirst 9278 00008504 .align 2 9279 00008504 .proc _QueueLast 9280 00008504 .global _QueueLast 9281 00008504 _QueueLast: 9282 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 9283 00008504 afbefffc sw -4(r29),r30; push fp 9284 00008508 001df020 add r30,r0,r29; fp = sp 9285 0000850c afbffff8 sw -8(r29),r31; push ret addr 9286 00008510 2fbd0008 subui r29,r29,#8; alloc local storage 9287 00008514 8fc10000 lw r1,(r30) 9288 00008518 8c210004 lw r1,4(r1) 9289 0000851c 8fdffff8 lw r31,-8(r30) 9290 00008520 001ee820 add r29,r0,r30 9291 00008524 8fdefffc lw r30,-4(r30) 9292 00008528 4be00000 jr r31 9293 0000852c 54000000 nop 9294 00008530 .endproc _QueueLast 9295 00008530 .align 2 9296 00008530 .proc _QueueInsertAfter 9297 00008530 .global _QueueInsertAfter 9298 00008530 _QueueInsertAfter: 9299 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 9300 00008530 afbefffc sw -4(r29),r30; push fp 9301 00008534 001df020 add r30,r0,r29; fp = sp 9302 00008538 afbffff8 sw -8(r29),r31; push ret addr 9303 0000853c 2fbd0010 subui r29,r29,#16; alloc local storage 9304 00008540 afa20000 sw 0(r29),r2 9305 00008544 afa30004 sw 4(r29),r3 9306 00008548 8fc30000 lw r3,(r30) 9307 0000854c 8fc20004 lw r2,4(r30) 9308 00008550 8fc10008 lw r1,8(r30) 9309 00008554 ac230008 sw 8(r1),r3 9310 00008558 ac220004 sw 4(r1),r2 9311 0000855c 8c5f0000 lw r31,(r2) 9312 00008560 ac3f0000 sw (r1),r31 9313 00008564 ac410000 sw (r2),r1 9314 00008568 8c220000 lw r2,(r1) 9315 0000856c ac410004 sw 4(r2),r1 9316 00008570 8c610008 lw r1,8(r3) 9317 00008574 20210001 addi r1,r1,#1 9318 00008578 ac610008 sw 8(r3),r1 9319 0000857c 8fa20000 lw r2,0(r29) 9320 00008580 8fa30004 lw r3,4(r29) 9321 00008584 8fdffff8 lw r31,-8(r30) 9322 00008588 001ee820 add r29,r0,r30 9323 0000858c 8fdefffc lw r30,-4(r30) 9324 00008590 4be00000 jr r31 9325 00008594 54000000 nop 9326 00008598 .endproc _QueueInsertAfter 9327 00008598 .align 2 9328 00008598 .proc _QueueInsertFirst 9329 00008598 .global _QueueInsertFirst 9330 00008598 _QueueInsertFirst: 9331 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 9332 00008598 afbefffc sw -4(r29),r30; push fp 9333 0000859c 001df020 add r30,r0,r29; fp = sp 9334 000085a0 afbffff8 sw -8(r29),r31; push ret addr 9335 000085a4 2fbd0010 subui r29,r29,#16; alloc local storage 9336 000085a8 afa20000 sw 0(r29),r2 9337 000085ac afa30004 sw 4(r29),r3 9338 000085b0 8fc30000 lw r3,(r30) 9339 000085b4 8fc10004 lw r1,4(r30) 9340 000085b8 ac230008 sw 8(r1),r3 9341 000085bc ac230004 sw 4(r1),r3 9342 000085c0 8c7f0000 lw r31,(r3) 9343 000085c4 ac3f0000 sw (r1),r31 9344 000085c8 ac610000 sw (r3),r1 9345 000085cc 8c220000 lw r2,(r1) 9346 000085d0 ac410004 sw 4(r2),r1 9347 000085d4 8c610008 lw r1,8(r3) 9348 000085d8 20210001 addi r1,r1,#1 9349 000085dc ac610008 sw 8(r3),r1 9350 000085e0 8fa20000 lw r2,0(r29) 9351 000085e4 8fa30004 lw r3,4(r29) 9352 000085e8 8fdffff8 lw r31,-8(r30) 9353 000085ec 001ee820 add r29,r0,r30 9354 000085f0 8fdefffc lw r30,-4(r30) 9355 000085f4 4be00000 jr r31 9356 000085f8 54000000 nop 9357 000085fc .endproc _QueueInsertFirst 9358 000085fc .align 2 9359 000085fc .proc _QueueInsertLast 9360 000085fc .global _QueueInsertLast 9361 000085fc _QueueInsertLast: 9362 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 9363 000085fc afbefffc sw -4(r29),r30; push fp 9364 00008600 001df020 add r30,r0,r29; fp = sp 9365 00008604 afbffff8 sw -8(r29),r31; push ret addr 9366 00008608 2fbd0010 subui r29,r29,#16; alloc local storage 9367 0000860c afa20000 sw 0(r29),r2 9368 00008610 afa30004 sw 4(r29),r3 9369 00008614 8fc30000 lw r3,(r30) 9370 00008618 8fc10004 lw r1,4(r30) 9371 0000861c 8c620004 lw r2,4(r3) 9372 00008620 ac230008 sw 8(r1),r3 9373 00008624 ac220004 sw 4(r1),r2 9374 00008628 8c5f0000 lw r31,(r2) 9375 0000862c ac3f0000 sw (r1),r31 9376 00008630 ac410000 sw (r2),r1 9377 00008634 8c220000 lw r2,(r1) 9378 00008638 ac410004 sw 4(r2),r1 9379 0000863c 8c610008 lw r1,8(r3) 9380 00008640 20210001 addi r1,r1,#1 9381 00008644 ac610008 sw 8(r3),r1 9382 00008648 8fa20000 lw r2,0(r29) 9383 0000864c 8fa30004 lw r3,4(r29) 9384 00008650 8fdffff8 lw r31,-8(r30) 9385 00008654 001ee820 add r29,r0,r30 9386 00008658 8fdefffc lw r30,-4(r30) 9387 0000865c 4be00000 jr r31 9388 00008660 54000000 nop 9389 00008664 .endproc _QueueInsertLast 9390 00008664 .align 2 9391 00008664 .proc _QueueRemove 9392 00008664 .global _QueueRemove 9393 00008664 _QueueRemove: 9394 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 9395 00008664 afbefffc sw -4(r29),r30; push fp 9396 00008668 001df020 add r30,r0,r29; fp = sp 9397 0000866c afbffff8 sw -8(r29),r31; push ret addr 9398 00008670 2fbd0010 subui r29,r29,#16; alloc local storage 9399 00008674 afa20000 sw 0(r29),r2 9400 00008678 afa30004 sw 4(r29),r3 9401 0000867c 8fdf0000 lw r31,(r30) 9402 00008680 8fe10008 lw r1,8(r31) 9403 00008684 8c210008 lw r1,8(r1) 9404 00008688 6c210000 sgti r1,r1,#0 9405 0000868c 1020002c beqz r1,L44_LF7 9406 00008690 54000000 nop; not filled. 9407 00008694 8fe10004 lw r1,4(r31) 9408 00008698 8fe30000 lw r3,(r31) 9409 0000869c ac230000 sw (r1),r3 9410 000086a0 8fe10000 lw r1,(r31) 9411 000086a4 8fe30004 lw r3,4(r31) 9412 000086a8 ac230004 sw 4(r1),r3 9413 000086ac 8fe20008 lw r2,8(r31) 9414 000086b0 8c410008 lw r1,8(r2) 9415 000086b4 2021ffff addi r1,r1,#-1 9416 000086b8 ac410008 sw 8(r2),r1 9417 000086bc L44_LF7: 9418 000086bc 20030000 addi r3,r0,#0 9419 000086c0 afe30000 sw (r31),r3 9420 000086c4 8fa20000 lw r2,0(r29) 9421 000086c8 8fa30004 lw r3,4(r29) 9422 000086cc 8fdffff8 lw r31,-8(r30) 9423 000086d0 001ee820 add r29,r0,r30 9424 000086d4 8fdefffc lw r30,-4(r30) 9425 000086d8 4be00000 jr r31 9426 000086dc 54000000 nop 9427 000086e0 .endproc _QueueRemove 9428 000086e0 .align 2 9429 000086e0 .proc _QueueLength 9430 000086e0 .global _QueueLength 9431 000086e0 _QueueLength: 9432 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 9433 000086e0 afbefffc sw -4(r29),r30; push fp 9434 000086e4 001df020 add r30,r0,r29; fp = sp 9435 000086e8 afbffff8 sw -8(r29),r31; push ret addr 9436 000086ec 2fbd0008 subui r29,r29,#8; alloc local storage 9437 000086f0 8fc10000 lw r1,(r30) 9438 000086f4 8c210008 lw r1,8(r1) 9439 000086f8 8fdffff8 lw r31,-8(r30) 9440 000086fc 001ee820 add r29,r0,r30 9441 00008700 8fdefffc lw r30,-4(r30) 9442 00008704 4be00000 jr r31 9443 00008708 54000000 nop 9444 0000870c .endproc _QueueLength 9445 0000870c .align 2 9446 0000870c .proc _QueueEmpty 9447 0000870c .global _QueueEmpty 9448 0000870c _QueueEmpty: 9449 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 9450 0000870c afbefffc sw -4(r29),r30; push fp 9451 00008710 001df020 add r30,r0,r29; fp = sp 9452 00008714 afbffff8 sw -8(r29),r31; push ret addr 9453 00008718 2fbd0008 subui r29,r29,#8; alloc local storage 9454 0000871c 8fc10000 lw r1,(r30) 9455 00008720 8c210008 lw r1,8(r1) 9456 00008724 60210000 seqi r1,r1,#0 9457 00008728 8fdffff8 lw r31,-8(r30) 9458 0000872c 001ee820 add r29,r0,r30 9459 00008730 8fdefffc lw r30,-4(r30) 9460 00008734 4be00000 jr r31 9461 00008738 54000000 nop 9462 0000873c .endproc _QueueEmpty 9463 0000873c .data 9464 000136ec .align 2 9465 000136ec LC0_LF7: 9466 000136ec 456e7465 .ascii "Entering SynchModuleInit\n\000" 9466 000136f0 72696e67 9466 000136f4 2053796e 9466 000136f8 63684d6f 9466 000136fc 64756c65 9466 00013700 496e6974 9466 00013704 0a00 9467 00013706 .align 2 9468 00013708 LC1_LF7: 9469 00013708 4c656176 .ascii "Leaving SynchModuleInit\n\000" 9469 0001370c 696e6720 9469 00013710 53796e63 9469 00013714 684d6f64 9469 00013718 756c6549 9469 0001371c 6e69740a 9469 00013720 00 9470 00013721 .text 9471 0000873c .align 2 9472 0000873c .proc _SynchModuleInit 9473 0000873c .global _SynchModuleInit 9474 0000873c _SynchModuleInit: 9475 ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. 9476 0000873c afbefffc sw -4(r29),r30; push fp 9477 00008740 001df020 add r30,r0,r29; fp = sp 9478 00008744 afbffff8 sw -8(r29),r31; push ret addr 9479 00008748 2fbd0010 subui r29,r29,#16; alloc local storage 9480 0000874c afa20000 sw 0(r29),r2 9481 00008750 afa30004 sw 4(r29),r3 9482 00008754 23bdfff8 addi r29,r29,#-8 9483 00008758 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9484 0000875c 24420d78 addui r2,r2,(_debugstr)&0xffff 9485 00008760 afa20000 sw (r29),r2 9486 00008764 20030070 addi r3,r0,#112 9487 00008768 afa30004 sw 4(r29),r3 9488 0000876c 0fffb6c4 jal _dindex 9489 00008770 54000000 nop; not filled. 9490 00008774 23bd0008 addi r29,r29,#8 9491 00008778 64210000 snei r1,r1,#0 9492 0000877c 1420002c bnez r1,L53_LF7 9493 00008780 54000000 nop; not filled. 9494 00008784 23bdfff8 addi r29,r29,#-8 9495 00008788 afa20000 sw (r29),r2 9496 0000878c 2003002b addi r3,r0,#43 9497 00008790 afa30004 sw 4(r29),r3 9498 00008794 0fffb69c jal _dindex 9499 00008798 54000000 nop; not filled. 9500 0000879c 23bd0008 addi r29,r29,#8 9501 000087a0 64210000 snei r1,r1,#0 9502 000087a4 10200020 beqz r1,L52_LF7 9503 000087a8 54000000 nop; not filled. 9504 000087ac L53_LF7: 9505 000087ac 23bdfff8 addi r29,r29,#-8 9506 000087b0 3c030001 lhi r3,((LC0_LF7)>>16)&0xffff 9507 000087b4 246336ec addui r3,r3,(LC0_LF7)&0xffff 9508 000087b8 afa30000 sw (r29),r3 9509 000087bc 0c002910 jal _printf 9510 000087c0 54000000 nop; not filled. 9511 000087c4 23bd0008 addi r29,r29,#8 9512 000087c8 L52_LF7: 9513 000087c8 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9514 000087cc 27ff37d0 addui r31,r31,(_sems_LF7)&0xffff 9515 000087d0 23e2026c addi r2,r31,#620 9516 000087d4 L57_LF7: 9517 000087d4 20030000 addi r3,r0,#0 9518 000087d8 afe30010 sw 16(r31),r3 9519 000087dc 23ff0014 addi r31,r31,#20 9520 000087e0 03e2082c sle r1,r31,r2 9521 000087e4 1420ffec bnez r1,L57_LF7 9522 000087e8 54000000 nop; not filled. 9523 000087ec 23bdfff8 addi r29,r29,#-8 9524 000087f0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9525 000087f4 24420d78 addui r2,r2,(_debugstr)&0xffff 9526 000087f8 afa20000 sw (r29),r2 9527 000087fc 20030070 addi r3,r0,#112 9528 00008800 afa30004 sw 4(r29),r3 9529 00008804 0fffb62c jal _dindex 9530 00008808 54000000 nop; not filled. 9531 0000880c 23bd0008 addi r29,r29,#8 9532 00008810 64210000 snei r1,r1,#0 9533 00008814 1420002c bnez r1,L60_LF7 9534 00008818 54000000 nop; not filled. 9535 0000881c 23bdfff8 addi r29,r29,#-8 9536 00008820 afa20000 sw (r29),r2 9537 00008824 2003002b addi r3,r0,#43 9538 00008828 afa30004 sw 4(r29),r3 9539 0000882c 0fffb604 jal _dindex 9540 00008830 54000000 nop; not filled. 9541 00008834 23bd0008 addi r29,r29,#8 9542 00008838 64210000 snei r1,r1,#0 9543 0000883c 10200020 beqz r1,L59_LF7 9544 00008840 54000000 nop; not filled. 9545 00008844 L60_LF7: 9546 00008844 23bdfff8 addi r29,r29,#-8 9547 00008848 3c030001 lhi r3,((LC1_LF7)>>16)&0xffff 9548 0000884c 24633708 addui r3,r3,(LC1_LF7)&0xffff 9549 00008850 afa30000 sw (r29),r3 9550 00008854 0c002878 jal _printf 9551 00008858 54000000 nop; not filled. 9552 0000885c 23bd0008 addi r29,r29,#8 9553 00008860 L59_LF7: 9554 00008860 8fa20000 lw r2,0(r29) 9555 00008864 8fa30004 lw r3,4(r29) 9556 00008868 8fdffff8 lw r31,-8(r30) 9557 0000886c 001ee820 add r29,r0,r30 9558 00008870 8fdefffc lw r30,-4(r30) 9559 00008874 4be00000 jr r31 9560 00008878 54000000 nop 9561 0000887c .endproc _SynchModuleInit 9562 0000887c .align 2 9563 0000887c .proc _SemInit 9564 0000887c .global _SemInit 9565 0000887c _SemInit: 9566 ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. 9567 0000887c afbefffc sw -4(r29),r30; push fp 9568 00008880 001df020 add r30,r0,r29; fp = sp 9569 00008884 afbffff8 sw -8(r29),r31; push ret addr 9570 00008888 2fbd0010 subui r29,r29,#16; alloc local storage 9571 0000888c afa20000 sw 0(r29),r2 9572 00008890 afa30004 sw 4(r29),r3 9573 00008894 8fc20000 lw r2,(r30) 9574 00008898 8fc30004 lw r3,4(r30) 9575 0000889c 23bdfff8 addi r29,r29,#-8 9576 000088a0 afa20000 sw (r29),r2 9577 000088a4 0ffff81c jal _QueueInit 9578 000088a8 54000000 nop; not filled. 9579 000088ac ac43000c sw 12(r2),r3 9580 000088b0 23bd0008 addi r29,r29,#8 9581 000088b4 8fa20000 lw r2,0(r29) 9582 000088b8 8fa30004 lw r3,4(r29) 9583 000088bc 8fdffff8 lw r31,-8(r30) 9584 000088c0 001ee820 add r29,r0,r30 9585 000088c4 8fdefffc lw r30,-4(r30) 9586 000088c8 4be00000 jr r31 9587 000088cc 54000000 nop 9588 000088d0 .endproc _SemInit 9589 000088d0 .align 2 9590 000088d0 .proc _SemCreate 9591 000088d0 .global _SemCreate 9592 000088d0 _SemCreate: 9593 ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. 9594 000088d0 afbefffc sw -4(r29),r30; push fp 9595 000088d4 001df020 add r30,r0,r29; fp = sp 9596 000088d8 afbffff8 sw -8(r29),r31; push ret addr 9597 000088dc 2fbd0018 subui r29,r29,#24; alloc local storage 9598 000088e0 afa20000 sw 0(r29),r2 9599 000088e4 afa30004 sw 4(r29),r3 9600 000088e8 afa40008 sw 8(r29),r4 9601 000088ec afa5000c sw 12(r29),r5 9602 000088f0 23bdfff8 addi r29,r29,#-8 9603 000088f4 2005000f addi r5,r0,#15 9604 000088f8 afa50000 sw (r29),r5 9605 000088fc 0fff8988 jal _SetIntrs 9606 00008900 54000000 nop; not filled. 9607 00008904 00012020 add r4,r0,r1 9608 00008908 23bd0008 addi r29,r29,#8 9609 0000890c 20030000 addi r3,r0,#0 9610 00008910 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9611 00008914 27ff37d0 addui r31,r31,(_sems_LF7)&0xffff 9612 00008918 L79_LF7: 9613 00008918 001f1020 add r2,r0,r31 9614 0000891c 8fe10010 lw r1,16(r31) 9615 00008920 64210000 snei r1,r1,#0 9616 00008924 10200078 beqz r1,L86_LF7 9617 00008928 54000000 nop; not filled. 9618 0000892c 205f0014 addi r31,r2,#20 9619 00008930 20630001 addi r3,r3,#1 9620 00008934 7061001f slei r1,r3,#31 9621 00008938 1420ffdc bnez r1,L79_LF7 9622 0000893c 54000000 nop; not filled. 9623 00008940 L77_LF7: 9624 00008940 23bdfff8 addi r29,r29,#-8 9625 00008944 afa40000 sw (r29),r4 9626 00008948 0fff893c jal _SetIntrs 9627 0000894c 54000000 nop; not filled. 9628 00008950 23bd0008 addi r29,r29,#8 9629 00008954 60610020 seqi r1,r3,#32 9630 00008958 14200054 bnez r1,L83_LF7 9631 0000895c 54000000 nop; not filled. 9632 00008960 50610002 slli r1,r3,#0x2 9633 00008964 00230820 add r1,r1,r3 9634 00008968 50210002 slli r1,r1,#0x2 9635 0000896c 3c050001 lhi r5,((_sems_LF7)>>16)&0xffff 9636 00008970 24a537d0 addui r5,r5,(_sems_LF7)&0xffff 9637 00008974 00251020 add r2,r1,r5 9638 00008978 23bdfff8 addi r29,r29,#-8 9639 0000897c afa20000 sw (r29),r2 9640 00008980 0ffff740 jal _QueueInit 9641 00008984 54000000 nop; not filled. 9642 00008988 8fc50000 lw r5,(r30) 9643 0000898c ac45000c sw 12(r2),r5 9644 00008990 23bd0008 addi r29,r29,#8 9645 00008994 00030820 add r1,r0,r3 9646 00008998 08000018 j L85_LF7 9647 0000899c 54000000 nop; not filled. 9648 000089a0 L86_LF7: 9649 000089a0 20050001 addi r5,r0,#1 9650 000089a4 afe50010 sw 16(r31),r5 9651 000089a8 0bffff94 j L77_LF7 9652 000089ac 54000000 nop; not filled. 9653 000089b0 L83_LF7: 9654 000089b0 2001ffff addi r1,r0,#-1 9655 000089b4 L85_LF7: 9656 000089b4 8fa20000 lw r2,0(r29) 9657 000089b8 8fa30004 lw r3,4(r29) 9658 000089bc 8fa40008 lw r4,8(r29) 9659 000089c0 8fa5000c lw r5,12(r29) 9660 000089c4 8fdffff8 lw r31,-8(r30) 9661 000089c8 001ee820 add r29,r0,r30 9662 000089cc 8fdefffc lw r30,-4(r30) 9663 000089d0 4be00000 jr r31 9664 000089d4 54000000 nop 9665 000089d8 .endproc _SemCreate 9666 000089d8 .data 9667 00013721 .align 2 9668 00013724 LC2_LF7: 9669 00013724 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 9669 00013728 696e7465 9669 0001372c 72727570 9669 00013730 74207661 9669 00013734 6c756520 9669 00013738 77617320 9669 0001373c 30782578 9669 00013740 2e0a00 9670 00013743 .align 2 9671 00013744 LC3_LF7: 9672 00013744 50726f63 .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" 9672 00013748 20307825 9672 0001374c 78207761 9672 00013750 6974696e 9672 00013754 67206f6e 9672 00013758 2073656d 9672 0001375c 20307825 9672 00013760 782c2063 9672 00013764 6f756e74 9672 00013768 3d25642e 9672 0001376c 0a00 9673 0001376e .align 2 9674 00013770 LC4_LF7: 9675 00013770 53757370 .ascii "Suspending current proc (0x%x).\n\000" 9675 00013774 656e6469 9675 00013778 6e672063 9675 0001377c 75727265 9675 00013780 6e742070 9675 00013784 726f6320 9675 00013788 28307825 9675 0001378c 78292e0a 9675 00013790 00 9676 00013791 .text 9677 000089d8 .align 2 9678 000089d8 .proc _SemWait 9679 000089d8 .global _SemWait 9680 000089d8 _SemWait: 9681 ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. 9682 000089d8 afbefffc sw -4(r29),r30; push fp 9683 000089dc 001df020 add r30,r0,r29; fp = sp 9684 000089e0 afbffff8 sw -8(r29),r31; push ret addr 9685 000089e4 2fbd0020 subui r29,r29,#32; alloc local storage 9686 000089e8 afa20000 sw 0(r29),r2 9687 000089ec afa30004 sw 4(r29),r3 9688 000089f0 afa40008 sw 8(r29),r4 9689 000089f4 afa5000c sw 12(r29),r5 9690 000089f8 afa60010 sw 16(r29),r6 9691 000089fc afa70014 sw 20(r29),r7 9692 00008a00 8fc40000 lw r4,(r30) 9693 00008a04 23bdfff8 addi r29,r29,#-8 9694 00008a08 2007000f addi r7,r0,#15 9695 00008a0c afa70000 sw (r29),r7 9696 00008a10 0fff8874 jal _SetIntrs 9697 00008a14 54000000 nop; not filled. 9698 00008a18 00013020 add r6,r0,r1 9699 00008a1c 23bd0008 addi r29,r29,#8 9700 00008a20 23bdfff8 addi r29,r29,#-8 9701 00008a24 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9702 00008a28 24420d78 addui r2,r2,(_debugstr)&0xffff 9703 00008a2c afa20000 sw (r29),r2 9704 00008a30 20070049 addi r7,r0,#73 9705 00008a34 afa70004 sw 4(r29),r7 9706 00008a38 0fffb3f8 jal _dindex 9707 00008a3c 54000000 nop; not filled. 9708 00008a40 23bd0008 addi r29,r29,#8 9709 00008a44 64210000 snei r1,r1,#0 9710 00008a48 1420002c bnez r1,L90_LF7 9711 00008a4c 54000000 nop; not filled. 9712 00008a50 23bdfff8 addi r29,r29,#-8 9713 00008a54 afa20000 sw (r29),r2 9714 00008a58 2007002b addi r7,r0,#43 9715 00008a5c afa70004 sw 4(r29),r7 9716 00008a60 0fffb3d0 jal _dindex 9717 00008a64 54000000 nop; not filled. 9718 00008a68 23bd0008 addi r29,r29,#8 9719 00008a6c 64210000 snei r1,r1,#0 9720 00008a70 10200024 beqz r1,L89_LF7 9721 00008a74 54000000 nop; not filled. 9722 00008a78 L90_LF7: 9723 00008a78 23bdfff8 addi r29,r29,#-8 9724 00008a7c 3c070001 lhi r7,((LC2_LF7)>>16)&0xffff 9725 00008a80 24e73724 addui r7,r7,(LC2_LF7)&0xffff 9726 00008a84 afa70000 sw (r29),r7 9727 00008a88 afa60004 sw 4(r29),r6 9728 00008a8c 0c002640 jal _printf 9729 00008a90 54000000 nop; not filled. 9730 00008a94 23bd0008 addi r29,r29,#8 9731 00008a98 L89_LF7: 9732 00008a98 23bdfff8 addi r29,r29,#-8 9733 00008a9c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9734 00008aa0 24420d78 addui r2,r2,(_debugstr)&0xffff 9735 00008aa4 afa20000 sw (r29),r2 9736 00008aa8 20070073 addi r7,r0,#115 9737 00008aac afa70004 sw 4(r29),r7 9738 00008ab0 0fffb380 jal _dindex 9739 00008ab4 54000000 nop; not filled. 9740 00008ab8 23bd0008 addi r29,r29,#8 9741 00008abc 64210000 snei r1,r1,#0 9742 00008ac0 1420002c bnez r1,L92_LF7 9743 00008ac4 54000000 nop; not filled. 9744 00008ac8 23bdfff8 addi r29,r29,#-8 9745 00008acc afa20000 sw (r29),r2 9746 00008ad0 2007002b addi r7,r0,#43 9747 00008ad4 afa70004 sw 4(r29),r7 9748 00008ad8 0fffb358 jal _dindex 9749 00008adc 54000000 nop; not filled. 9750 00008ae0 23bd0008 addi r29,r29,#8 9751 00008ae4 64210000 snei r1,r1,#0 9752 00008ae8 1020003c beqz r1,L91_LF7 9753 00008aec 54000000 nop; not filled. 9754 00008af0 L92_LF7: 9755 00008af0 23bdfff0 addi r29,r29,#-16 9756 00008af4 3c070001 lhi r7,((LC3_LF7)>>16)&0xffff 9757 00008af8 24e73744 addui r7,r7,(LC3_LF7)&0xffff 9758 00008afc afa70000 sw (r29),r7 9759 00008b00 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 9760 00008b04 24210e40 addui r1,r1,(_currentPCB)&0xffff 9761 00008b08 8c210000 lw r1,(r1) 9762 00008b0c afa10004 sw 4(r29),r1 9763 00008b10 afa40008 sw 8(r29),r4 9764 00008b14 8c87000c lw r7,12(r4) 9765 00008b18 afa7000c sw 12(r29),r7 9766 00008b1c 0c0025b0 jal _printf 9767 00008b20 54000000 nop; not filled. 9768 00008b24 23bd0010 addi r29,r29,#16 9769 00008b28 L91_LF7: 9770 00008b28 8c81000c lw r1,12(r4) 9771 00008b2c 2021ffff addi r1,r1,#-1 9772 00008b30 ac81000c sw 12(r4),r1 9773 00008b34 68210000 slti r1,r1,#0 9774 00008b38 102000d8 beqz r1,L93_LF7 9775 00008b3c 54000000 nop; not filled. 9776 00008b40 0ffff670 jal _QueueAllocLink 9777 00008b44 54000000 nop; not filled. 9778 00008b48 00011020 add r2,r0,r1 9779 00008b4c 3c050001 lhi r5,((_currentPCB)>>16)&0xffff 9780 00008b50 24a50e40 addui r5,r5,(_currentPCB)&0xffff 9781 00008b54 8ca10000 lw r1,(r5) 9782 00008b58 20070000 addi r7,r0,#0 9783 00008b5c ac470000 sw (r2),r7 9784 00008b60 ac41000c sw 12(r2),r1 9785 00008b64 23bdfff8 addi r29,r29,#-8 9786 00008b68 3c030001 lhi r3,((_debugstr)>>16)&0xffff 9787 00008b6c 24630d78 addui r3,r3,(_debugstr)&0xffff 9788 00008b70 afa30000 sw (r29),r3 9789 00008b74 20070073 addi r7,r0,#115 9790 00008b78 afa70004 sw 4(r29),r7 9791 00008b7c 0fffb2b4 jal _dindex 9792 00008b80 54000000 nop; not filled. 9793 00008b84 23bd0008 addi r29,r29,#8 9794 00008b88 64210000 snei r1,r1,#0 9795 00008b8c 1420002c bnez r1,L96_LF7 9796 00008b90 54000000 nop; not filled. 9797 00008b94 23bdfff8 addi r29,r29,#-8 9798 00008b98 afa30000 sw (r29),r3 9799 00008b9c 2007002b addi r7,r0,#43 9800 00008ba0 afa70004 sw 4(r29),r7 9801 00008ba4 0fffb28c jal _dindex 9802 00008ba8 54000000 nop; not filled. 9803 00008bac 23bd0008 addi r29,r29,#8 9804 00008bb0 64210000 snei r1,r1,#0 9805 00008bb4 10200028 beqz r1,L95_LF7 9806 00008bb8 54000000 nop; not filled. 9807 00008bbc L96_LF7: 9808 00008bbc 23bdfff8 addi r29,r29,#-8 9809 00008bc0 3c070001 lhi r7,((LC4_LF7)>>16)&0xffff 9810 00008bc4 24e73770 addui r7,r7,(LC4_LF7)&0xffff 9811 00008bc8 afa70000 sw (r29),r7 9812 00008bcc 8ca10000 lw r1,(r5) 9813 00008bd0 afa10004 sw 4(r29),r1 9814 00008bd4 0c0024f8 jal _printf 9815 00008bd8 54000000 nop; not filled. 9816 00008bdc 23bd0008 addi r29,r29,#8 9817 00008be0 L95_LF7: 9818 00008be0 8c810004 lw r1,4(r4) 9819 00008be4 ac440008 sw 8(r2),r4 9820 00008be8 ac410004 sw 4(r2),r1 9821 00008bec 8c270000 lw r7,(r1) 9822 00008bf0 ac470000 sw (r2),r7 9823 00008bf4 ac220000 sw (r1),r2 9824 00008bf8 8c410000 lw r1,(r2) 9825 00008bfc ac220004 sw 4(r1),r2 9826 00008c00 8c810008 lw r1,8(r4) 9827 00008c04 20210001 addi r1,r1,#1 9828 00008c08 ac810008 sw 8(r4),r1 9829 00008c0c 0fff86c4 jal _ProcessSleep 9830 00008c10 54000000 nop; not filled. 9831 00008c14 L93_LF7: 9832 00008c14 23bdfff8 addi r29,r29,#-8 9833 00008c18 afa60000 sw (r29),r6 9834 00008c1c 0fff8668 jal _SetIntrs 9835 00008c20 54000000 nop; not filled. 9836 00008c24 23bd0008 addi r29,r29,#8 9837 00008c28 8fa20000 lw r2,0(r29) 9838 00008c2c 8fa30004 lw r3,4(r29) 9839 00008c30 8fa40008 lw r4,8(r29) 9840 00008c34 8fa5000c lw r5,12(r29) 9841 00008c38 8fa60010 lw r6,16(r29) 9842 00008c3c 8fa70014 lw r7,20(r29) 9843 00008c40 8fdffff8 lw r31,-8(r30) 9844 00008c44 001ee820 add r29,r0,r30 9845 00008c48 8fdefffc lw r30,-4(r30) 9846 00008c4c 4be00000 jr r31 9847 00008c50 54000000 nop 9848 00008c54 .endproc _SemWait 9849 00008c54 .align 2 9850 00008c54 .proc _SemHandleWait 9851 00008c54 .global _SemHandleWait 9852 00008c54 _SemHandleWait: 9853 ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. 9854 00008c54 afbefffc sw -4(r29),r30; push fp 9855 00008c58 001df020 add r30,r0,r29; fp = sp 9856 00008c5c afbffff8 sw -8(r29),r31; push ret addr 9857 00008c60 2fbd0010 subui r29,r29,#16; alloc local storage 9858 00008c64 afa20000 sw 0(r29),r2 9859 00008c68 8fdf0000 lw r31,(r30) 9860 00008c6c 73e1001f sleui r1,r31,#31 9861 00008c70 10200058 beqz r1,L106_LF7 9862 00008c74 54000000 nop; not filled. 9863 00008c78 53e10002 slli r1,r31,#0x2 9864 00008c7c 003f0820 add r1,r1,r31 9865 00008c80 50210002 slli r1,r1,#0x2 9866 00008c84 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 9867 00008c88 244237d0 addui r2,r2,(_sems_LF7)&0xffff 9868 00008c8c 0022f820 add r31,r1,r2 9869 00008c90 8fe10010 lw r1,16(r31) 9870 00008c94 64210000 snei r1,r1,#0 9871 00008c98 10200024 beqz r1,L107_LF7 9872 00008c9c 54000000 nop; not filled. 9873 00008ca0 23bdfff8 addi r29,r29,#-8 9874 00008ca4 afbf0000 sw (r29),r31 9875 00008ca8 0ffffd2c jal _SemWait 9876 00008cac 54000000 nop; not filled. 9877 00008cb0 20010000 addi r1,r0,#0 9878 00008cb4 23bd0008 addi r29,r29,#8 9879 00008cb8 08000014 j L105_LF7 9880 00008cbc 54000000 nop; not filled. 9881 00008cc0 L107_LF7: 9882 00008cc0 20010001 addi r1,r0,#1 9883 00008cc4 08000008 j L105_LF7 9884 00008cc8 54000000 nop; not filled. 9885 00008ccc L106_LF7: 9886 00008ccc 20010001 addi r1,r0,#1 9887 00008cd0 L105_LF7: 9888 00008cd0 8fa20000 lw r2,0(r29) 9889 00008cd4 8fdffff8 lw r31,-8(r30) 9890 00008cd8 001ee820 add r29,r0,r30 9891 00008cdc 8fdefffc lw r30,-4(r30) 9892 00008ce0 4be00000 jr r31 9893 00008ce4 54000000 nop 9894 00008ce8 .endproc _SemHandleWait 9895 00008ce8 .data 9896 00013791 .align 2 9897 00013794 LC5_LF7: 9898 00013794 5369676e .ascii "Signalling on sem 0x%x, count=%d.\n\000" 9898 00013798 616c6c69 9898 0001379c 6e67206f 9898 000137a0 6e207365 9898 000137a4 6d203078 9898 000137a8 25782c20 9898 000137ac 636f756e 9898 000137b0 743d2564 9898 000137b4 2e0a00 9899 000137b7 .align 2 9900 000137b8 LC6_LF7: 9901 000137b8 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 9901 000137bc 6e672075 9901 000137c0 70205043 9901 000137c4 42203078 9901 000137c8 25782e0a 9901 000137cc 00 9902 000137cd .text 9903 00008ce8 .align 2 9904 00008ce8 .proc _SemSignal 9905 00008ce8 .global _SemSignal 9906 00008ce8 _SemSignal: 9907 ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. 9908 00008ce8 afbefffc sw -4(r29),r30; push fp 9909 00008cec 001df020 add r30,r0,r29; fp = sp 9910 00008cf0 afbffff8 sw -8(r29),r31; push ret addr 9911 00008cf4 2fbd0018 subui r29,r29,#24; alloc local storage 9912 00008cf8 afa20000 sw 0(r29),r2 9913 00008cfc afa30004 sw 4(r29),r3 9914 00008d00 afa40008 sw 8(r29),r4 9915 00008d04 afa5000c sw 12(r29),r5 9916 00008d08 8fc20000 lw r2,(r30) 9917 00008d0c 23bdfff8 addi r29,r29,#-8 9918 00008d10 2005000f addi r5,r0,#15 9919 00008d14 afa50000 sw (r29),r5 9920 00008d18 0fff856c jal _SetIntrs 9921 00008d1c 54000000 nop; not filled. 9922 00008d20 00012020 add r4,r0,r1 9923 00008d24 23bd0008 addi r29,r29,#8 9924 00008d28 23bdfff8 addi r29,r29,#-8 9925 00008d2c 3c030001 lhi r3,((_debugstr)>>16)&0xffff 9926 00008d30 24630d78 addui r3,r3,(_debugstr)&0xffff 9927 00008d34 afa30000 sw (r29),r3 9928 00008d38 20050073 addi r5,r0,#115 9929 00008d3c afa50004 sw 4(r29),r5 9930 00008d40 0fffb0f0 jal _dindex 9931 00008d44 54000000 nop; not filled. 9932 00008d48 23bd0008 addi r29,r29,#8 9933 00008d4c 64210000 snei r1,r1,#0 9934 00008d50 1420002c bnez r1,L113_LF7 9935 00008d54 54000000 nop; not filled. 9936 00008d58 23bdfff8 addi r29,r29,#-8 9937 00008d5c afa30000 sw (r29),r3 9938 00008d60 2005002b addi r5,r0,#43 9939 00008d64 afa50004 sw 4(r29),r5 9940 00008d68 0fffb0c8 jal _dindex 9941 00008d6c 54000000 nop; not filled. 9942 00008d70 23bd0008 addi r29,r29,#8 9943 00008d74 64210000 snei r1,r1,#0 9944 00008d78 1020002c beqz r1,L112_LF7 9945 00008d7c 54000000 nop; not filled. 9946 00008d80 L113_LF7: 9947 00008d80 23bdfff0 addi r29,r29,#-16 9948 00008d84 3c050001 lhi r5,((LC5_LF7)>>16)&0xffff 9949 00008d88 24a53794 addui r5,r5,(LC5_LF7)&0xffff 9950 00008d8c afa50000 sw (r29),r5 9951 00008d90 afa20004 sw 4(r29),r2 9952 00008d94 8c45000c lw r5,12(r2) 9953 00008d98 afa50008 sw 8(r29),r5 9954 00008d9c 0c002330 jal _printf 9955 00008da0 54000000 nop; not filled. 9956 00008da4 23bd0010 addi r29,r29,#16 9957 00008da8 L112_LF7: 9958 00008da8 8c41000c lw r1,12(r2) 9959 00008dac 20210001 addi r1,r1,#1 9960 00008db0 ac41000c sw 12(r2),r1 9961 00008db4 70210000 slei r1,r1,#0 9962 00008db8 102000ec beqz r1,L114_LF7 9963 00008dbc 54000000 nop; not filled. 9964 00008dc0 8c430000 lw r3,(r2) 9965 00008dc4 8c610008 lw r1,8(r3) 9966 00008dc8 8c210008 lw r1,8(r1) 9967 00008dcc 6c210000 sgti r1,r1,#0 9968 00008dd0 1020002c beqz r1,L117_LF7 9969 00008dd4 54000000 nop; not filled. 9970 00008dd8 8c610004 lw r1,4(r3) 9971 00008ddc 8c650000 lw r5,(r3) 9972 00008de0 ac250000 sw (r1),r5 9973 00008de4 8c610000 lw r1,(r3) 9974 00008de8 8c650004 lw r5,4(r3) 9975 00008dec ac250004 sw 4(r1),r5 9976 00008df0 8c620008 lw r2,8(r3) 9977 00008df4 8c410008 lw r1,8(r2) 9978 00008df8 2021ffff addi r1,r1,#-1 9979 00008dfc ac410008 sw 8(r2),r1 9980 00008e00 L117_LF7: 9981 00008e00 20050000 addi r5,r0,#0 9982 00008e04 ac650000 sw (r3),r5 9983 00008e08 23bdfff8 addi r29,r29,#-8 9984 00008e0c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9985 00008e10 24420d78 addui r2,r2,(_debugstr)&0xffff 9986 00008e14 afa20000 sw (r29),r2 9987 00008e18 20050073 addi r5,r0,#115 9988 00008e1c afa50004 sw 4(r29),r5 9989 00008e20 0fffb010 jal _dindex 9990 00008e24 54000000 nop; not filled. 9991 00008e28 23bd0008 addi r29,r29,#8 9992 00008e2c 64210000 snei r1,r1,#0 9993 00008e30 1420002c bnez r1,L119_LF7 9994 00008e34 54000000 nop; not filled. 9995 00008e38 23bdfff8 addi r29,r29,#-8 9996 00008e3c afa20000 sw (r29),r2 9997 00008e40 2005002b addi r5,r0,#43 9998 00008e44 afa50004 sw 4(r29),r5 9999 00008e48 0fffafe8 jal _dindex 10000 00008e4c 54000000 nop; not filled. 10001 00008e50 23bd0008 addi r29,r29,#8 10002 00008e54 64210000 snei r1,r1,#0 10003 00008e58 10200028 beqz r1,L118_LF7 10004 00008e5c 54000000 nop; not filled. 10005 00008e60 L119_LF7: 10006 00008e60 23bdfff8 addi r29,r29,#-8 10007 00008e64 3c050001 lhi r5,((LC6_LF7)>>16)&0xffff 10008 00008e68 24a537b8 addui r5,r5,(LC6_LF7)&0xffff 10009 00008e6c afa50000 sw (r29),r5 10010 00008e70 8c61000c lw r1,12(r3) 10011 00008e74 afa10004 sw 4(r29),r1 10012 00008e78 0c002254 jal _printf 10013 00008e7c 54000000 nop; not filled. 10014 00008e80 23bd0008 addi r29,r29,#8 10015 00008e84 L118_LF7: 10016 00008e84 23bdfff8 addi r29,r29,#-8 10017 00008e88 8c65000c lw r5,12(r3) 10018 00008e8c afa50000 sw (r29),r5 10019 00008e90 0fffc2e4 jal _ProcessWakeup 10020 00008e94 54000000 nop; not filled. 10021 00008e98 afa30000 sw (r29),r3 10022 00008e9c 0ffff25c jal _QueueFreeLink 10023 00008ea0 54000000 nop; not filled. 10024 00008ea4 23bd0008 addi r29,r29,#8 10025 00008ea8 L114_LF7: 10026 00008ea8 23bdfff8 addi r29,r29,#-8 10027 00008eac afa40000 sw (r29),r4 10028 00008eb0 0fff83d4 jal _SetIntrs 10029 00008eb4 54000000 nop; not filled. 10030 00008eb8 23bd0008 addi r29,r29,#8 10031 00008ebc 8fa20000 lw r2,0(r29) 10032 00008ec0 8fa30004 lw r3,4(r29) 10033 00008ec4 8fa40008 lw r4,8(r29) 10034 00008ec8 8fa5000c lw r5,12(r29) 10035 00008ecc 8fdffff8 lw r31,-8(r30) 10036 00008ed0 001ee820 add r29,r0,r30 10037 00008ed4 8fdefffc lw r30,-4(r30) 10038 00008ed8 4be00000 jr r31 10039 00008edc 54000000 nop 10040 00008ee0 .endproc _SemSignal 10041 00008ee0 .align 2 10042 00008ee0 .proc _SemHandleSignal 10043 00008ee0 .global _SemHandleSignal 10044 00008ee0 _SemHandleSignal: 10045 ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. 10046 00008ee0 afbefffc sw -4(r29),r30; push fp 10047 00008ee4 001df020 add r30,r0,r29; fp = sp 10048 00008ee8 afbffff8 sw -8(r29),r31; push ret addr 10049 00008eec 2fbd0010 subui r29,r29,#16; alloc local storage 10050 00008ef0 afa20000 sw 0(r29),r2 10051 00008ef4 8fdf0000 lw r31,(r30) 10052 00008ef8 73e1001f sleui r1,r31,#31 10053 00008efc 10200058 beqz r1,L126_LF7 10054 00008f00 54000000 nop; not filled. 10055 00008f04 53e10002 slli r1,r31,#0x2 10056 00008f08 003f0820 add r1,r1,r31 10057 00008f0c 50210002 slli r1,r1,#0x2 10058 00008f10 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 10059 00008f14 244237d0 addui r2,r2,(_sems_LF7)&0xffff 10060 00008f18 0022f820 add r31,r1,r2 10061 00008f1c 8fe10010 lw r1,16(r31) 10062 00008f20 64210000 snei r1,r1,#0 10063 00008f24 10200024 beqz r1,L127_LF7 10064 00008f28 54000000 nop; not filled. 10065 00008f2c 23bdfff8 addi r29,r29,#-8 10066 00008f30 afbf0000 sw (r29),r31 10067 00008f34 0ffffdb0 jal _SemSignal 10068 00008f38 54000000 nop; not filled. 10069 00008f3c 20010000 addi r1,r0,#0 10070 00008f40 23bd0008 addi r29,r29,#8 10071 00008f44 08000014 j L125_LF7 10072 00008f48 54000000 nop; not filled. 10073 00008f4c L127_LF7: 10074 00008f4c 20010001 addi r1,r0,#1 10075 00008f50 08000008 j L125_LF7 10076 00008f54 54000000 nop; not filled. 10077 00008f58 L126_LF7: 10078 00008f58 20010001 addi r1,r0,#1 10079 00008f5c L125_LF7: 10080 00008f5c 8fa20000 lw r2,0(r29) 10081 00008f60 8fdffff8 lw r31,-8(r30) 10082 00008f64 001ee820 add r29,r0,r30 10083 00008f68 8fdefffc lw r30,-4(r30) 10084 00008f6c 4be00000 jr r31 10085 00008f70 54000000 nop 10086 00008f74 .endproc _SemHandleSignal 10087 00008f74 .data 10088 000137cd .align 2 10089 000137d0 _sems_LF7: 10090 000137d0 .space 640 10091 ; Compiled by GCC 10093 00013a50 .align 2 10094 00013a50 _rcsid_LF8: 10095 00013a50 3a207472 .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 10095 00013a54 6170732e 10095 00013a58 632c7620 10095 00013a5c 312e3120 10095 00013a60 32303030 10095 00013a64 2f30392f 10095 00013a68 32302030 10095 00013a6c 313a3530 10095 00013a70 3a313920 10095 00013a74 656c6d20 10095 00013a78 45787020 10095 00013a7c 656c6d20 10095 00013a80 303030 10096 00013a83 .text 10097 00008f74 .align 2 10098 00008f74 .proc _isspace 10099 00008f74 .global _isspace 10100 00008f74 _isspace: 10101 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 10102 00008f74 afbefffc sw -4(r29),r30; push fp 10103 00008f78 001df020 add r30,r0,r29; fp = sp 10104 00008f7c afbffff8 sw -8(r29),r31; push ret addr 10105 00008f80 2fbd0010 subui r29,r29,#16; alloc local storage 10106 00008f84 afa20000 sw 0(r29),r2 10107 00008f88 83c20003 lb r2,3(r30) 10108 00008f8c 201f0000 addi r31,r0,#0 10109 00008f90 304100ff andi r1,r2,#0x00ff 10110 00008f94 60210020 seqi r1,r1,#32 10111 00008f98 14200018 bnez r1,L6_LF8 10112 00008f9c 54000000 nop; not filled. 10113 00008fa0 2041fff7 addi r1,r2,#-9 10114 00008fa4 302100ff andi r1,r1,#0x00ff 10115 00008fa8 70210001 sleui r1,r1,#1 10116 00008fac 10200008 beqz r1,L5_LF8 10117 00008fb0 54000000 nop; not filled. 10118 00008fb4 L6_LF8: 10119 00008fb4 201f0001 addi r31,r0,#1 10120 00008fb8 L5_LF8: 10121 00008fb8 001f0820 add r1,r0,r31 10122 00008fbc 8fa20000 lw r2,0(r29) 10123 00008fc0 8fdffff8 lw r31,-8(r30) 10124 00008fc4 001ee820 add r29,r0,r30 10125 00008fc8 8fdefffc lw r30,-4(r30) 10126 00008fcc 4be00000 jr r31 10127 00008fd0 54000000 nop 10128 00008fd4 .endproc _isspace 10129 00008fd4 .align 2 10130 00008fd4 .proc _isxdigit 10131 00008fd4 .global _isxdigit 10132 00008fd4 _isxdigit: 10133 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 10134 00008fd4 afbefffc sw -4(r29),r30; push fp 10135 00008fd8 001df020 add r30,r0,r29; fp = sp 10136 00008fdc afbffff8 sw -8(r29),r31; push ret addr 10137 00008fe0 2fbd0010 subui r29,r29,#16; alloc local storage 10138 00008fe4 afa20000 sw 0(r29),r2 10139 00008fe8 83df0003 lb r31,3(r30) 10140 00008fec 20020000 addi r2,r0,#0 10141 00008ff0 23e1ffd0 addi r1,r31,#-48 10142 00008ff4 302100ff andi r1,r1,#0x00ff 10143 00008ff8 70210009 sleui r1,r1,#9 10144 00008ffc 14200028 bnez r1,L12_LF8 10145 00009000 54000000 nop; not filled. 10146 00009004 23e1ff9f addi r1,r31,#-97 10147 00009008 302100ff andi r1,r1,#0x00ff 10148 0000900c 70210005 sleui r1,r1,#5 10149 00009010 14200014 bnez r1,L12_LF8 10150 00009014 54000000 nop; not filled. 10151 00009018 33e100ff andi r1,r31,#0x00ff 10152 0000901c 64210041 snei r1,r1,#65 10153 00009020 14200008 bnez r1,L11_LF8 10154 00009024 54000000 nop; not filled. 10155 00009028 L12_LF8: 10156 00009028 20020001 addi r2,r0,#1 10157 0000902c L11_LF8: 10158 0000902c 00020820 add r1,r0,r2 10159 00009030 8fa20000 lw r2,0(r29) 10160 00009034 8fdffff8 lw r31,-8(r30) 10161 00009038 001ee820 add r29,r0,r30 10162 0000903c 8fdefffc lw r30,-4(r30) 10163 00009040 4be00000 jr r31 10164 00009044 54000000 nop 10165 00009048 .endproc _isxdigit 10166 00009048 .align 2 10167 00009048 .proc _DisableIntrs 10168 00009048 .global _DisableIntrs 10169 00009048 _DisableIntrs: 10170 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 10171 00009048 afbefffc sw -4(r29),r30; push fp 10172 0000904c 001df020 add r30,r0,r29; fp = sp 10173 00009050 afbffff8 sw -8(r29),r31; push ret addr 10174 00009054 2fbd0010 subui r29,r29,#16; alloc local storage 10175 00009058 afa20000 sw 0(r29),r2 10176 0000905c 23bdfff8 addi r29,r29,#-8 10177 00009060 2002000f addi r2,r0,#15 10178 00009064 afa20000 sw (r29),r2 10179 00009068 0fff821c jal _SetIntrs 10180 0000906c 54000000 nop; not filled. 10181 00009070 23bd0008 addi r29,r29,#8 10182 00009074 8fa20000 lw r2,0(r29) 10183 00009078 8fdffff8 lw r31,-8(r30) 10184 0000907c 001ee820 add r29,r0,r30 10185 00009080 8fdefffc lw r30,-4(r30) 10186 00009084 4be00000 jr r31 10187 00009088 54000000 nop 10188 0000908c .endproc _DisableIntrs 10189 0000908c .align 2 10190 0000908c .proc _EnableIntrs 10191 0000908c .global _EnableIntrs 10192 0000908c _EnableIntrs: 10193 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 10194 0000908c afbefffc sw -4(r29),r30; push fp 10195 00009090 001df020 add r30,r0,r29; fp = sp 10196 00009094 afbffff8 sw -8(r29),r31; push ret addr 10197 00009098 2fbd0010 subui r29,r29,#16; alloc local storage 10198 0000909c afa20000 sw 0(r29),r2 10199 000090a0 23bdfff8 addi r29,r29,#-8 10200 000090a4 20020000 addi r2,r0,#0 10201 000090a8 afa20000 sw (r29),r2 10202 000090ac 0fff81d8 jal _SetIntrs 10203 000090b0 54000000 nop; not filled. 10204 000090b4 23bd0008 addi r29,r29,#8 10205 000090b8 8fa20000 lw r2,0(r29) 10206 000090bc 8fdffff8 lw r31,-8(r30) 10207 000090c0 001ee820 add r29,r0,r30 10208 000090c4 8fdefffc lw r30,-4(r30) 10209 000090c8 4be00000 jr r31 10210 000090cc 54000000 nop 10211 000090d0 .endproc _EnableIntrs 10212 000090d0 .align 2 10213 000090d0 .proc _RestoreIntrs 10214 000090d0 .global _RestoreIntrs 10215 000090d0 _RestoreIntrs: 10216 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 10217 000090d0 afbefffc sw -4(r29),r30; push fp 10218 000090d4 001df020 add r30,r0,r29; fp = sp 10219 000090d8 afbffff8 sw -8(r29),r31; push ret addr 10220 000090dc 2fbd0010 subui r29,r29,#16; alloc local storage 10221 000090e0 afa20000 sw 0(r29),r2 10222 000090e4 23bdfff8 addi r29,r29,#-8 10223 000090e8 8fc20000 lw r2,(r30) 10224 000090ec afa20000 sw (r29),r2 10225 000090f0 0fff8194 jal _SetIntrs 10226 000090f4 54000000 nop; not filled. 10227 000090f8 23bd0008 addi r29,r29,#8 10228 000090fc 8fa20000 lw r2,0(r29) 10229 00009100 8fdffff8 lw r31,-8(r30) 10230 00009104 001ee820 add r29,r0,r30 10231 00009108 8fdefffc lw r30,-4(r30) 10232 0000910c 4be00000 jr r31 10233 00009110 54000000 nop 10234 00009114 .endproc _RestoreIntrs 10235 00009114 .align 2 10236 00009114 .proc _QueueLinkInit 10237 00009114 .global _QueueLinkInit 10238 00009114 _QueueLinkInit: 10239 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 10240 00009114 afbefffc sw -4(r29),r30; push fp 10241 00009118 001df020 add r30,r0,r29; fp = sp 10242 0000911c afbffff8 sw -8(r29),r31; push ret addr 10243 00009120 2fbd0010 subui r29,r29,#16; alloc local storage 10244 00009124 afa20000 sw 0(r29),r2 10245 00009128 8fc10000 lw r1,(r30) 10246 0000912c 8fc20004 lw r2,4(r30) 10247 00009130 201f0000 addi r31,r0,#0 10248 00009134 ac3f0000 sw (r1),r31 10249 00009138 ac22000c sw 12(r1),r2 10250 0000913c 8fa20000 lw r2,0(r29) 10251 00009140 8fdffff8 lw r31,-8(r30) 10252 00009144 001ee820 add r29,r0,r30 10253 00009148 8fdefffc lw r30,-4(r30) 10254 0000914c 4be00000 jr r31 10255 00009150 54000000 nop 10256 00009154 .endproc _QueueLinkInit 10257 00009154 .align 2 10258 00009154 .proc _QueueNext 10259 00009154 .global _QueueNext 10260 00009154 _QueueNext: 10261 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 10262 00009154 afbefffc sw -4(r29),r30; push fp 10263 00009158 001df020 add r30,r0,r29; fp = sp 10264 0000915c afbffff8 sw -8(r29),r31; push ret addr 10265 00009160 2fbd0008 subui r29,r29,#8; alloc local storage 10266 00009164 8fc10000 lw r1,(r30) 10267 00009168 8c210000 lw r1,(r1) 10268 0000916c 8fdffff8 lw r31,-8(r30) 10269 00009170 001ee820 add r29,r0,r30 10270 00009174 8fdefffc lw r30,-4(r30) 10271 00009178 4be00000 jr r31 10272 0000917c 54000000 nop 10273 00009180 .endproc _QueueNext 10274 00009180 .align 2 10275 00009180 .proc _QueuePrev 10276 00009180 .global _QueuePrev 10277 00009180 _QueuePrev: 10278 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 10279 00009180 afbefffc sw -4(r29),r30; push fp 10280 00009184 001df020 add r30,r0,r29; fp = sp 10281 00009188 afbffff8 sw -8(r29),r31; push ret addr 10282 0000918c 2fbd0008 subui r29,r29,#8; alloc local storage 10283 00009190 8fc10000 lw r1,(r30) 10284 00009194 8c210004 lw r1,4(r1) 10285 00009198 8fdffff8 lw r31,-8(r30) 10286 0000919c 001ee820 add r29,r0,r30 10287 000091a0 8fdefffc lw r30,-4(r30) 10288 000091a4 4be00000 jr r31 10289 000091a8 54000000 nop 10290 000091ac .endproc _QueuePrev 10291 000091ac .align 2 10292 000091ac .proc _QueueFirst 10293 000091ac .global _QueueFirst 10294 000091ac _QueueFirst: 10295 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 10296 000091ac afbefffc sw -4(r29),r30; push fp 10297 000091b0 001df020 add r30,r0,r29; fp = sp 10298 000091b4 afbffff8 sw -8(r29),r31; push ret addr 10299 000091b8 2fbd0008 subui r29,r29,#8; alloc local storage 10300 000091bc 8fc10000 lw r1,(r30) 10301 000091c0 8c210000 lw r1,(r1) 10302 000091c4 8fdffff8 lw r31,-8(r30) 10303 000091c8 001ee820 add r29,r0,r30 10304 000091cc 8fdefffc lw r30,-4(r30) 10305 000091d0 4be00000 jr r31 10306 000091d4 54000000 nop 10307 000091d8 .endproc _QueueFirst 10308 000091d8 .align 2 10309 000091d8 .proc _QueueLast 10310 000091d8 .global _QueueLast 10311 000091d8 _QueueLast: 10312 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 10313 000091d8 afbefffc sw -4(r29),r30; push fp 10314 000091dc 001df020 add r30,r0,r29; fp = sp 10315 000091e0 afbffff8 sw -8(r29),r31; push ret addr 10316 000091e4 2fbd0008 subui r29,r29,#8; alloc local storage 10317 000091e8 8fc10000 lw r1,(r30) 10318 000091ec 8c210004 lw r1,4(r1) 10319 000091f0 8fdffff8 lw r31,-8(r30) 10320 000091f4 001ee820 add r29,r0,r30 10321 000091f8 8fdefffc lw r30,-4(r30) 10322 000091fc 4be00000 jr r31 10323 00009200 54000000 nop 10324 00009204 .endproc _QueueLast 10325 00009204 .align 2 10326 00009204 .proc _QueueInsertAfter 10327 00009204 .global _QueueInsertAfter 10328 00009204 _QueueInsertAfter: 10329 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 10330 00009204 afbefffc sw -4(r29),r30; push fp 10331 00009208 001df020 add r30,r0,r29; fp = sp 10332 0000920c afbffff8 sw -8(r29),r31; push ret addr 10333 00009210 2fbd0010 subui r29,r29,#16; alloc local storage 10334 00009214 afa20000 sw 0(r29),r2 10335 00009218 afa30004 sw 4(r29),r3 10336 0000921c 8fc30000 lw r3,(r30) 10337 00009220 8fc20004 lw r2,4(r30) 10338 00009224 8fc10008 lw r1,8(r30) 10339 00009228 ac230008 sw 8(r1),r3 10340 0000922c ac220004 sw 4(r1),r2 10341 00009230 8c5f0000 lw r31,(r2) 10342 00009234 ac3f0000 sw (r1),r31 10343 00009238 ac410000 sw (r2),r1 10344 0000923c 8c220000 lw r2,(r1) 10345 00009240 ac410004 sw 4(r2),r1 10346 00009244 8c610008 lw r1,8(r3) 10347 00009248 20210001 addi r1,r1,#1 10348 0000924c ac610008 sw 8(r3),r1 10349 00009250 8fa20000 lw r2,0(r29) 10350 00009254 8fa30004 lw r3,4(r29) 10351 00009258 8fdffff8 lw r31,-8(r30) 10352 0000925c 001ee820 add r29,r0,r30 10353 00009260 8fdefffc lw r30,-4(r30) 10354 00009264 4be00000 jr r31 10355 00009268 54000000 nop 10356 0000926c .endproc _QueueInsertAfter 10357 0000926c .align 2 10358 0000926c .proc _QueueInsertFirst 10359 0000926c .global _QueueInsertFirst 10360 0000926c _QueueInsertFirst: 10361 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 10362 0000926c afbefffc sw -4(r29),r30; push fp 10363 00009270 001df020 add r30,r0,r29; fp = sp 10364 00009274 afbffff8 sw -8(r29),r31; push ret addr 10365 00009278 2fbd0010 subui r29,r29,#16; alloc local storage 10366 0000927c afa20000 sw 0(r29),r2 10367 00009280 afa30004 sw 4(r29),r3 10368 00009284 8fc30000 lw r3,(r30) 10369 00009288 8fc10004 lw r1,4(r30) 10370 0000928c ac230008 sw 8(r1),r3 10371 00009290 ac230004 sw 4(r1),r3 10372 00009294 8c7f0000 lw r31,(r3) 10373 00009298 ac3f0000 sw (r1),r31 10374 0000929c ac610000 sw (r3),r1 10375 000092a0 8c220000 lw r2,(r1) 10376 000092a4 ac410004 sw 4(r2),r1 10377 000092a8 8c610008 lw r1,8(r3) 10378 000092ac 20210001 addi r1,r1,#1 10379 000092b0 ac610008 sw 8(r3),r1 10380 000092b4 8fa20000 lw r2,0(r29) 10381 000092b8 8fa30004 lw r3,4(r29) 10382 000092bc 8fdffff8 lw r31,-8(r30) 10383 000092c0 001ee820 add r29,r0,r30 10384 000092c4 8fdefffc lw r30,-4(r30) 10385 000092c8 4be00000 jr r31 10386 000092cc 54000000 nop 10387 000092d0 .endproc _QueueInsertFirst 10388 000092d0 .align 2 10389 000092d0 .proc _QueueInsertLast 10390 000092d0 .global _QueueInsertLast 10391 000092d0 _QueueInsertLast: 10392 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 10393 000092d0 afbefffc sw -4(r29),r30; push fp 10394 000092d4 001df020 add r30,r0,r29; fp = sp 10395 000092d8 afbffff8 sw -8(r29),r31; push ret addr 10396 000092dc 2fbd0010 subui r29,r29,#16; alloc local storage 10397 000092e0 afa20000 sw 0(r29),r2 10398 000092e4 afa30004 sw 4(r29),r3 10399 000092e8 8fc30000 lw r3,(r30) 10400 000092ec 8fc10004 lw r1,4(r30) 10401 000092f0 8c620004 lw r2,4(r3) 10402 000092f4 ac230008 sw 8(r1),r3 10403 000092f8 ac220004 sw 4(r1),r2 10404 000092fc 8c5f0000 lw r31,(r2) 10405 00009300 ac3f0000 sw (r1),r31 10406 00009304 ac410000 sw (r2),r1 10407 00009308 8c220000 lw r2,(r1) 10408 0000930c ac410004 sw 4(r2),r1 10409 00009310 8c610008 lw r1,8(r3) 10410 00009314 20210001 addi r1,r1,#1 10411 00009318 ac610008 sw 8(r3),r1 10412 0000931c 8fa20000 lw r2,0(r29) 10413 00009320 8fa30004 lw r3,4(r29) 10414 00009324 8fdffff8 lw r31,-8(r30) 10415 00009328 001ee820 add r29,r0,r30 10416 0000932c 8fdefffc lw r30,-4(r30) 10417 00009330 4be00000 jr r31 10418 00009334 54000000 nop 10419 00009338 .endproc _QueueInsertLast 10420 00009338 .align 2 10421 00009338 .proc _QueueRemove 10422 00009338 .global _QueueRemove 10423 00009338 _QueueRemove: 10424 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 10425 00009338 afbefffc sw -4(r29),r30; push fp 10426 0000933c 001df020 add r30,r0,r29; fp = sp 10427 00009340 afbffff8 sw -8(r29),r31; push ret addr 10428 00009344 2fbd0010 subui r29,r29,#16; alloc local storage 10429 00009348 afa20000 sw 0(r29),r2 10430 0000934c afa30004 sw 4(r29),r3 10431 00009350 8fdf0000 lw r31,(r30) 10432 00009354 8fe10008 lw r1,8(r31) 10433 00009358 8c210008 lw r1,8(r1) 10434 0000935c 6c210000 sgti r1,r1,#0 10435 00009360 1020002c beqz r1,L44_LF8 10436 00009364 54000000 nop; not filled. 10437 00009368 8fe10004 lw r1,4(r31) 10438 0000936c 8fe30000 lw r3,(r31) 10439 00009370 ac230000 sw (r1),r3 10440 00009374 8fe10000 lw r1,(r31) 10441 00009378 8fe30004 lw r3,4(r31) 10442 0000937c ac230004 sw 4(r1),r3 10443 00009380 8fe20008 lw r2,8(r31) 10444 00009384 8c410008 lw r1,8(r2) 10445 00009388 2021ffff addi r1,r1,#-1 10446 0000938c ac410008 sw 8(r2),r1 10447 00009390 L44_LF8: 10448 00009390 20030000 addi r3,r0,#0 10449 00009394 afe30000 sw (r31),r3 10450 00009398 8fa20000 lw r2,0(r29) 10451 0000939c 8fa30004 lw r3,4(r29) 10452 000093a0 8fdffff8 lw r31,-8(r30) 10453 000093a4 001ee820 add r29,r0,r30 10454 000093a8 8fdefffc lw r30,-4(r30) 10455 000093ac 4be00000 jr r31 10456 000093b0 54000000 nop 10457 000093b4 .endproc _QueueRemove 10458 000093b4 .align 2 10459 000093b4 .proc _QueueLength 10460 000093b4 .global _QueueLength 10461 000093b4 _QueueLength: 10462 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 10463 000093b4 afbefffc sw -4(r29),r30; push fp 10464 000093b8 001df020 add r30,r0,r29; fp = sp 10465 000093bc afbffff8 sw -8(r29),r31; push ret addr 10466 000093c0 2fbd0008 subui r29,r29,#8; alloc local storage 10467 000093c4 8fc10000 lw r1,(r30) 10468 000093c8 8c210008 lw r1,8(r1) 10469 000093cc 8fdffff8 lw r31,-8(r30) 10470 000093d0 001ee820 add r29,r0,r30 10471 000093d4 8fdefffc lw r30,-4(r30) 10472 000093d8 4be00000 jr r31 10473 000093dc 54000000 nop 10474 000093e0 .endproc _QueueLength 10475 000093e0 .align 2 10476 000093e0 .proc _QueueEmpty 10477 000093e0 .global _QueueEmpty 10478 000093e0 _QueueEmpty: 10479 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 10480 000093e0 afbefffc sw -4(r29),r30; push fp 10481 000093e4 001df020 add r30,r0,r29; fp = sp 10482 000093e8 afbffff8 sw -8(r29),r31; push ret addr 10483 000093ec 2fbd0008 subui r29,r29,#8; alloc local storage 10484 000093f0 8fc10000 lw r1,(r30) 10485 000093f4 8c210008 lw r1,8(r1) 10486 000093f8 60210000 seqi r1,r1,#0 10487 000093fc 8fdffff8 lw r31,-8(r30) 10488 00009400 001ee820 add r29,r0,r30 10489 00009404 8fdefffc lw r30,-4(r30) 10490 00009408 4be00000 jr r31 10491 0000940c 54000000 nop 10492 00009410 .endproc _QueueEmpty 10493 00009410 .align 2 10494 00009410 .proc _TimerSet 10495 00009410 .global _TimerSet 10496 00009410 _TimerSet: 10497 ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. 10498 00009410 afbefffc sw -4(r29),r30; push fp 10499 00009414 001df020 add r30,r0,r29; fp = sp 10500 00009418 afbffff8 sw -8(r29),r31; push ret addr 10501 0000941c 2fbd0008 subui r29,r29,#8; alloc local storage 10502 00009420 3c01fff0 lhi r1,#-16 10503 00009424 24210010 addui r1,r1,#16 10504 00009428 8fdf0000 lw r31,(r30) 10505 0000942c ac3f0000 sw (r1),r31 10506 00009430 8fdffff8 lw r31,-8(r30) 10507 00009434 001ee820 add r29,r0,r30 10508 00009438 8fdefffc lw r30,-4(r30) 10509 0000943c 4be00000 jr r31 10510 00009440 54000000 nop 10511 00009444 .endproc _TimerSet 10512 00009444 .align 2 10513 00009444 .proc _KbdModuleInit 10514 00009444 .global _KbdModuleInit 10515 00009444 _KbdModuleInit: 10516 ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. 10517 00009444 afbefffc sw -4(r29),r30; push fp 10518 00009448 001df020 add r30,r0,r29; fp = sp 10519 0000944c afbffff8 sw -8(r29),r31; push ret addr 10520 00009450 2fbd0008 subui r29,r29,#8; alloc local storage 10521 00009454 3c01fff0 lhi r1,#-16 10522 00009458 242101c0 addui r1,r1,#448 10523 0000945c 201f0001 addi r31,r0,#1 10524 00009460 ac3f0000 sw (r1),r31 10525 00009464 8fdffff8 lw r31,-8(r30) 10526 00009468 001ee820 add r29,r0,r30 10527 0000946c 8fdefffc lw r30,-4(r30) 10528 00009470 4be00000 jr r31 10529 00009474 54000000 nop 10530 00009478 .endproc _KbdModuleInit 10531 00009478 .data 10532 00013a83 .align 2 10533 00013a84 LC0_LF8: 10534 00013a84 46617461 .ascii "Fatal: Cumulative length of all arguments > 100\n\000" 10534 00013a88 6c3a2043 10534 00013a8c 756d756c 10534 00013a90 61746976 10534 00013a94 65206c65 10534 00013a98 6e677468 10534 00013a9c 206f6620 10534 00013aa0 616c6c20 10534 00013aa4 61726775 10534 00013aa8 6d656e74 10534 00013aac 73203e20 10534 00013ab0 3130300a 10534 00013ab4 00 10535 00013ab5 .text 10536 00009478 .align 2 10537 00009478 .proc _TrapProcessCreateHandler_LF8 10538 00009478 _TrapProcessCreateHandler_LF8: 10539 ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. 10540 00009478 afbefffc sw -4(r29),r30; push fp 10541 0000947c 001df020 add r30,r0,r29; fp = sp 10542 00009480 afbffff8 sw -8(r29),r31; push ret addr 10543 00009484 2fbd06a0 subui r29,r29,#1696; alloc local storage 10544 00009488 afa20000 sw 0(r29),r2 10545 0000948c afa30004 sw 4(r29),r3 10546 00009490 afa40008 sw 8(r29),r4 10547 00009494 afa5000c sw 12(r29),r5 10548 00009498 afa60010 sw 16(r29),r6 10549 0000949c afa70014 sw 20(r29),r7 10550 000094a0 afa80018 sw 24(r29),r8 10551 000094a4 afa9001c sw 28(r29),r9 10552 000094a8 afaa0020 sw 32(r29),r10 10553 000094ac afab0024 sw 36(r29),r11 10554 000094b0 afac0028 sw 40(r29),r12 10555 000094b4 8fc40000 lw r4,(r30) 10556 000094b8 8fc60004 lw r6,4(r30) 10557 000094bc 23c2fbf8 addi r2,r30,#-1032 10558 000094c0 23c3fc5b addi r3,r30,#-933 10559 000094c4 L65_LF8: 10560 000094c4 200c0000 addi r12,r0,(#0x0)&0xff 10561 000094c8 a04c0000 sb (r2),r12 10562 000094cc 20420001 addi r2,r2,#1 10563 000094d0 0043082c sle r1,r2,r3 10564 000094d4 1420ffec bnez r1,L65_LF8 10565 000094d8 54000000 nop; not filled. 10566 000094dc 20050000 addi r5,r0,#0 10567 000094e0 64c10000 snei r1,r6,#0 10568 000094e4 142000a0 bnez r1,L67_LF8 10569 000094e8 54000000 nop; not filled. 10570 000094ec 23bdfff0 addi r29,r29,#-16 10571 000094f0 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 10572 000094f4 24420e40 addui r2,r2,(_currentPCB)&0xffff 10573 000094f8 8c4c0000 lw r12,(r2) 10574 000094fc afac0000 sw (r29),r12 10575 00009500 afa40004 sw 4(r29),r4 10576 00009504 23c1f990 addi r1,r30,#-1648 10577 00009508 afa10008 sw 8(r29),r1 10578 0000950c 200c0200 addi r12,r0,#512 10579 00009510 afac000c sw 12(r29),r12 10580 00009514 0fffa06c jal _MemoryCopyUserToSystem 10581 00009518 54000000 nop; not filled. 10582 0000951c 23bd0010 addi r29,r29,#16 10583 00009520 23c4fb8f addi r4,r30,#-1137 10584 00009524 23c3fb90 addi r3,r30,#-1136 10585 00009528 L68_LF8: 10586 00009528 23bdfff0 addi r29,r29,#-16 10587 0000952c 8c4c0000 lw r12,(r2) 10588 00009530 afac0000 sw (r29),r12 10589 00009534 8fc1f990 lw r1,-1648(r30) 10590 00009538 00250820 add r1,r1,r5 10591 0000953c afa10004 sw 4(r29),r1 10592 00009540 afa30008 sw 8(r29),r3 10593 00009544 200c0001 addi r12,r0,#1 10594 00009548 afac000c sw 12(r29),r12 10595 0000954c 0fffa034 jal _MemoryCopyUserToSystem 10596 00009550 54000000 nop; not filled. 10597 00009554 20840001 addi r4,r4,#1 10598 00009558 20630001 addi r3,r3,#1 10599 0000955c 20a50001 addi r5,r5,#1 10600 00009560 23bd0010 addi r29,r29,#16 10601 00009564 70a10063 sleui r1,r5,#99 10602 00009568 10200060 beqz r1,L73_LF8 10603 0000956c 54000000 nop; not filled. 10604 00009570 90810000 lbu r1,(r4) 10605 00009574 64210000 snei r1,r1,#0 10606 00009578 10200050 beqz r1,L73_LF8 10607 0000957c 54000000 nop; not filled. 10608 00009580 0bffffa4 j L68_LF8 10609 00009584 54000000 nop; not filled. 10610 00009588 L67_LF8: 10611 00009588 23bdfff0 addi r29,r29,#-16 10612 0000958c afa40000 sw (r29),r4 10613 00009590 23c1f990 addi r1,r30,#-1648 10614 00009594 afa10004 sw 4(r29),r1 10615 00009598 200c0200 addi r12,r0,#512 10616 0000959c afac0008 sw 8(r29),r12 10617 000095a0 0fffac20 jal _bcopy 10618 000095a4 54000000 nop; not filled. 10619 000095a8 8fccf990 lw r12,-1648(r30) 10620 000095ac afac0000 sw (r29),r12 10621 000095b0 23c1fb90 addi r1,r30,#-1136 10622 000095b4 afa10004 sw 4(r29),r1 10623 000095b8 200c0064 addi r12,r0,#100 10624 000095bc afac0008 sw 8(r29),r12 10625 000095c0 0fffa414 jal _dstrncpy 10626 000095c4 54000000 nop; not filled. 10627 000095c8 23bd0010 addi r29,r29,#16 10628 000095cc L73_LF8: 10629 000095cc 200c0000 addi r12,r0,(#0x0)&0xff 10630 000095d0 a3ccfbf3 sb -1037(r30),r12 10631 000095d4 20050000 addi r5,r0,#0 10632 000095d8 64c10000 snei r1,r6,#0 10633 000095dc 142000b0 bnez r1,L74_LF8 10634 000095e0 54000000 nop; not filled. 10635 000095e4 3c080001 lhi r8,((_currentPCB)>>16)&0xffff 10636 000095e8 25080e40 addui r8,r8,(_currentPCB)&0xffff 10637 000095ec 23cbfbf8 addi r11,r30,#-1032 10638 000095f0 23cafbf7 addi r10,r30,#-1033 10639 000095f4 23c6fff8 addi r6,r30,#-8 10640 000095f8 23c90020 addi r9,r30,#32 10641 000095fc L85_LF8: 10642 000095fc 8cc1f998 lw r1,-1640(r6) 10643 00009600 64210000 snei r1,r1,#0 10644 00009604 1020012c beqz r1,L86_LF8 10645 00009608 54000000 nop; not filled. 10646 0000960c 20020000 addi r2,r0,#0 10647 00009610 00063820 add r7,r0,r6 10648 00009614 00aa2020 add r4,r5,r10 10649 00009618 00ab1820 add r3,r5,r11 10650 0000961c L80_LF8: 10651 0000961c 23bdfff0 addi r29,r29,#-16 10652 00009620 8d0c0000 lw r12,(r8) 10653 00009624 afac0000 sw (r29),r12 10654 00009628 8ce1f998 lw r1,-1640(r7) 10655 0000962c 00220820 add r1,r1,r2 10656 00009630 afa10004 sw 4(r29),r1 10657 00009634 afa30008 sw 8(r29),r3 10658 00009638 200c0001 addi r12,r0,#1 10659 0000963c afac000c sw 12(r29),r12 10660 00009640 0fff9f40 jal _MemoryCopyUserToSystem 10661 00009644 54000000 nop; not filled. 10662 00009648 20840001 addi r4,r4,#1 10663 0000964c 20630001 addi r3,r3,#1 10664 00009650 20a50001 addi r5,r5,#1 10665 00009654 20420001 addi r2,r2,#1 10666 00009658 23bd0010 addi r29,r29,#16 10667 0000965c 70a103ff sleui r1,r5,#1023 10668 00009660 10200014 beqz r1,L77_LF8 10669 00009664 54000000 nop; not filled. 10670 00009668 90810000 lbu r1,(r4) 10671 0000966c 64210000 snei r1,r1,#0 10672 00009670 1420ffa8 bnez r1,L80_LF8 10673 00009674 54000000 nop; not filled. 10674 00009678 L77_LF8: 10675 00009678 20c60004 addi r6,r6,#4 10676 0000967c 00c9082c sle r1,r6,r9 10677 00009680 102000b0 beqz r1,L86_LF8 10678 00009684 54000000 nop; not filled. 10679 00009688 0bffff70 j L85_LF8 10680 0000968c 54000000 nop; not filled. 10681 00009690 L74_LF8: 10682 00009690 23c5fbf8 addi r5,r30,#-1032 10683 00009694 00053820 add r7,r0,r5 10684 00009698 23c3fff8 addi r3,r30,#-8 10685 0000969c 23c60020 addi r6,r30,#32 10686 000096a0 L93_LF8: 10687 000096a0 2064f998 addi r4,r3,#-1640 10688 000096a4 8c820000 lw r2,(r4) 10689 000096a8 64410000 snei r1,r2,#0 10690 000096ac 10200084 beqz r1,L86_LF8 10691 000096b0 54000000 nop; not filled. 10692 000096b4 23bdfff8 addi r29,r29,#-8 10693 000096b8 afa20000 sw (r29),r2 10694 000096bc 0fffa504 jal _dstrlen 10695 000096c0 54000000 nop; not filled. 10696 000096c4 00a11020 add r2,r5,r1 10697 000096c8 00470822 sub r1,r2,r7 10698 000096cc 23bd0008 addi r29,r29,#8 10699 000096d0 6c210064 sgti r1,r1,#100 10700 000096d4 10200028 beqz r1,L92_LF8 10701 000096d8 54000000 nop; not filled. 10702 000096dc 23bdfff8 addi r29,r29,#-8 10703 000096e0 3c0c0001 lhi r12,((LC0_LF8)>>16)&0xffff 10704 000096e4 258c3a84 addui r12,r12,(LC0_LF8)&0xffff 10705 000096e8 afac0000 sw (r29),r12 10706 000096ec 0c0019e0 jal _printf 10707 000096f0 54000000 nop; not filled. 10708 000096f4 0c0019c0 jal _exitsim 10709 000096f8 54000000 nop; not filled. 10710 000096fc 23bd0008 addi r29,r29,#8 10711 00009700 L92_LF8: 10712 00009700 23bdfff8 addi r29,r29,#-8 10713 00009704 afa50000 sw (r29),r5 10714 00009708 8c810000 lw r1,(r4) 10715 0000970c afa10004 sw 4(r29),r1 10716 00009710 0fffa260 jal _dstrcpy 10717 00009714 54000000 nop; not filled. 10718 00009718 200c0000 addi r12,r0,(#0x0)&0xff 10719 0000971c a04c0000 sb (r2),r12 10720 00009720 23bd0008 addi r29,r29,#8 10721 00009724 20630004 addi r3,r3,#4 10722 00009728 0066082c sle r1,r3,r6 10723 0000972c 1420ff70 bnez r1,L93_LF8 10724 00009730 54000000 nop; not filled. 10725 00009734 L86_LF8: 10726 00009734 200c0000 addi r12,r0,(#0x0)&0xff 10727 00009738 a3ccfff7 sb -9(r30),r12 10728 0000973c 23bdfff0 addi r29,r29,#-16 10729 00009740 200c0000 addi r12,r0,#0 10730 00009744 afac0000 sw (r29),r12 10731 00009748 23c1fbf8 addi r1,r30,#-1032 10732 0000974c afa10004 sw 4(r29),r1 10733 00009750 23c1fb90 addi r1,r30,#-1136 10734 00009754 afa10008 sw 8(r29),r1 10735 00009758 200c0001 addi r12,r0,#1 10736 0000975c afac000c sw 12(r29),r12 10737 00009760 0fffbe68 jal _ProcessFork 10738 00009764 54000000 nop; not filled. 10739 00009768 23bd0010 addi r29,r29,#16 10740 0000976c 8fa20000 lw r2,0(r29) 10741 00009770 8fa30004 lw r3,4(r29) 10742 00009774 8fa40008 lw r4,8(r29) 10743 00009778 8fa5000c lw r5,12(r29) 10744 0000977c 8fa60010 lw r6,16(r29) 10745 00009780 8fa70014 lw r7,20(r29) 10746 00009784 8fa80018 lw r8,24(r29) 10747 00009788 8fa9001c lw r9,28(r29) 10748 0000978c 8faa0020 lw r10,32(r29) 10749 00009790 8fab0024 lw r11,36(r29) 10750 00009794 8fac0028 lw r12,40(r29) 10751 00009798 8fdffff8 lw r31,-8(r30) 10752 0000979c 001ee820 add r29,r0,r30 10753 000097a0 8fdefffc lw r30,-4(r30) 10754 000097a4 4be00000 jr r31 10755 000097a8 54000000 nop 10756 000097ac .endproc _TrapProcessCreateHandler_LF8 10757 000097ac .align 2 10758 000097ac .proc _TrapPrintfHandler_LF8 10759 000097ac _TrapPrintfHandler_LF8: 10760 ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. 10761 000097ac afbefffc sw -4(r29),r30; push fp 10762 000097b0 001df020 add r30,r0,r29; fp = sp 10763 000097b4 afbffff8 sw -8(r29),r31; push ret addr 10764 000097b8 2fbd00d0 subui r29,r29,#208; alloc local storage 10765 000097bc afa20000 sw 0(r29),r2 10766 000097c0 afa30004 sw 4(r29),r3 10767 000097c4 afa40008 sw 8(r29),r4 10768 000097c8 afa5000c sw 12(r29),r5 10769 000097cc afa60010 sw 16(r29),r6 10770 000097d0 afa70014 sw 20(r29),r7 10771 000097d4 afa80018 sw 24(r29),r8 10772 000097d8 afa9001c sw 28(r29),r9 10773 000097dc afaa0020 sw 32(r29),r10 10774 000097e0 afab0024 sw 36(r29),r11 10775 000097e4 8fc40000 lw r4,(r30) 10776 000097e8 8fc10004 lw r1,4(r30) 10777 000097ec 20080000 addi r8,r0,#0 10778 000097f0 00081820 add r3,r0,r8 10779 000097f4 64210000 snei r1,r1,#0 10780 000097f8 142000a0 bnez r1,L95_LF8 10781 000097fc 54000000 nop; not filled. 10782 00009800 23bdfff0 addi r29,r29,#-16 10783 00009804 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 10784 00009808 24420e40 addui r2,r2,(_currentPCB)&0xffff 10785 0000980c 8c4b0000 lw r11,(r2) 10786 00009810 afab0000 sw (r29),r11 10787 00009814 afa40004 sw 4(r29),r4 10788 00009818 23c1ff58 addi r1,r30,#-168 10789 0000981c afa10008 sw 8(r29),r1 10790 00009820 200b0028 addi r11,r0,#40 10791 00009824 afab000c sw 12(r29),r11 10792 00009828 0fff9d58 jal _MemoryCopyUserToSystem 10793 0000982c 54000000 nop; not filled. 10794 00009830 23bd0010 addi r29,r29,#16 10795 00009834 23c5ffa7 addi r5,r30,#-89 10796 00009838 23c4ffa8 addi r4,r30,#-88 10797 0000983c L96_LF8: 10798 0000983c 23bdfff0 addi r29,r29,#-16 10799 00009840 8c4b0000 lw r11,(r2) 10800 00009844 afab0000 sw (r29),r11 10801 00009848 8fc1ff58 lw r1,-168(r30) 10802 0000984c 00230820 add r1,r1,r3 10803 00009850 afa10004 sw 4(r29),r1 10804 00009854 afa40008 sw 8(r29),r4 10805 00009858 200b0001 addi r11,r0,#1 10806 0000985c afab000c sw 12(r29),r11 10807 00009860 0fff9d20 jal _MemoryCopyUserToSystem 10808 00009864 54000000 nop; not filled. 10809 00009868 20a50001 addi r5,r5,#1 10810 0000986c 20840001 addi r4,r4,#1 10811 00009870 20630001 addi r3,r3,#1 10812 00009874 23bd0010 addi r29,r29,#16 10813 00009878 7061004f sleui r1,r3,#79 10814 0000987c 10200060 beqz r1,L101_LF8 10815 00009880 54000000 nop; not filled. 10816 00009884 90a10000 lbu r1,(r5) 10817 00009888 64210000 snei r1,r1,#0 10818 0000988c 10200050 beqz r1,L101_LF8 10819 00009890 54000000 nop; not filled. 10820 00009894 0bffffa4 j L96_LF8 10821 00009898 54000000 nop; not filled. 10822 0000989c L95_LF8: 10823 0000989c 23bdfff0 addi r29,r29,#-16 10824 000098a0 afa40000 sw (r29),r4 10825 000098a4 23c1ff58 addi r1,r30,#-168 10826 000098a8 afa10004 sw 4(r29),r1 10827 000098ac 200b0028 addi r11,r0,#40 10828 000098b0 afab0008 sw 8(r29),r11 10829 000098b4 0fffa90c jal _bcopy 10830 000098b8 54000000 nop; not filled. 10831 000098bc 8fcbff58 lw r11,-168(r30) 10832 000098c0 afab0000 sw (r29),r11 10833 000098c4 23c1ffa8 addi r1,r30,#-88 10834 000098c8 afa10004 sw 4(r29),r1 10835 000098cc 200b0050 addi r11,r0,#80 10836 000098d0 afab0008 sw 8(r29),r11 10837 000098d4 0fffa100 jal _dstrncpy 10838 000098d8 54000000 nop; not filled. 10839 000098dc 23bd0010 addi r29,r29,#16 10840 000098e0 L101_LF8: 10841 000098e0 200b0000 addi r11,r0,(#0x0)&0xff 10842 000098e4 a3cbfff7 sb -9(r30),r11 10843 000098e8 23c3ffa8 addi r3,r30,#-88 10844 000098ec 80620000 lb r2,(r3) 10845 000098f0 304100ff andi r1,r2,#0x00ff 10846 000098f4 64210000 snei r1,r1,#0 10847 000098f8 102000f0 beqz r1,L103_LF8 10848 000098fc 54000000 nop; not filled. 10849 00009900 23cafff8 addi r10,r30,#-8 10850 00009904 23c9ff5c addi r9,r30,#-164 10851 00009908 51010002 slli r1,r8,#0x2 10852 0000990c 00293820 add r7,r1,r9 10853 00009910 002a3020 add r6,r1,r10 10854 00009914 L105_LF8: 10855 00009914 304100ff andi r1,r2,#0x00ff 10856 00009918 60210025 seqi r1,r1,#37 10857 0000991c 102000b4 beqz r1,L104_LF8 10858 00009920 54000000 nop; not filled. 10859 00009924 90610001 lbu r1,1(r3) 10860 00009928 60210025 seqi r1,r1,#37 10861 0000992c 10200010 beqz r1,L107_LF8 10862 00009930 54000000 nop; not filled. 10863 00009934 20630001 addi r3,r3,#1 10864 00009938 08000098 j L104_LF8 10865 0000993c 54000000 nop; not filled. 10866 00009940 L107_LF8: 10867 00009940 8ceb0000 lw r11,(r7) 10868 00009944 accbff88 sw -120(r6),r11 10869 00009948 51010002 slli r1,r8,#0x2 10870 0000994c 00292820 add r5,r1,r9 10871 00009950 002a2020 add r4,r1,r10 10872 00009954 L110_LF8: 10873 00009954 20630001 addi r3,r3,#1 10874 00009958 807f0000 lb r31,(r3) 10875 0000995c 33e200ff andi r2,r31,#0x00ff 10876 00009960 60410073 seqi r1,r2,#115 10877 00009964 14200060 bnez r1,L109_LF8 10878 00009968 54000000 nop; not filled. 10879 0000996c 6041006c seqi r1,r2,#108 10880 00009970 1420ffe0 bnez r1,L110_LF8 10881 00009974 54000000 nop; not filled. 10882 00009978 23e1ff9a addi r1,r31,#-102 10883 0000997c 302100ff andi r1,r1,#0x00ff 10884 00009980 70210001 sleui r1,r1,#1 10885 00009984 14200010 bnez r1,L116_LF8 10886 00009988 54000000 nop; not filled. 10887 0000998c 60410065 seqi r1,r2,#101 10888 00009990 10200020 beqz r1,L115_LF8 10889 00009994 54000000 nop; not filled. 10890 00009998 L116_LF8: 10891 00009998 20e70004 addi r7,r7,#4 10892 0000999c 20c60004 addi r6,r6,#4 10893 000099a0 21080001 addi r8,r8,#1 10894 000099a4 8ca50004 lw r5,4(r5) 10895 000099a8 ac85ff8c sw -116(r4),r5 10896 000099ac 08000018 j L109_LF8 10897 000099b0 54000000 nop; not filled. 10898 000099b4 L115_LF8: 10899 000099b4 23e1ff9f addi r1,r31,#-97 10900 000099b8 302100ff andi r1,r1,#0x00ff 10901 000099bc 70210019 sleui r1,r1,#25 10902 000099c0 1020ff90 beqz r1,L110_LF8 10903 000099c4 54000000 nop; not filled. 10904 000099c8 L109_LF8: 10905 000099c8 20e70004 addi r7,r7,#4 10906 000099cc 20c60004 addi r6,r6,#4 10907 000099d0 21080001 addi r8,r8,#1 10908 000099d4 L104_LF8: 10909 000099d4 20630001 addi r3,r3,#1 10910 000099d8 80620000 lb r2,(r3) 10911 000099dc 304100ff andi r1,r2,#0x00ff 10912 000099e0 64210000 snei r1,r1,#0 10913 000099e4 1420ff2c bnez r1,L105_LF8 10914 000099e8 54000000 nop; not filled. 10915 000099ec L103_LF8: 10916 000099ec 23bdffd8 addi r29,r29,#-40 10917 000099f0 23c1ffa8 addi r1,r30,#-88 10918 000099f4 afa10000 sw (r29),r1 10919 000099f8 8fc1ff80 lw r1,-128(r30) 10920 000099fc afa10004 sw 4(r29),r1 10921 00009a00 8fcbff84 lw r11,-124(r30) 10922 00009a04 afab0008 sw 8(r29),r11 10923 00009a08 8fcbff88 lw r11,-120(r30) 10924 00009a0c afab000c sw 12(r29),r11 10925 00009a10 8fcbff8c lw r11,-116(r30) 10926 00009a14 afab0010 sw 16(r29),r11 10927 00009a18 8fcbff90 lw r11,-112(r30) 10928 00009a1c afab0014 sw 20(r29),r11 10929 00009a20 8fcbff94 lw r11,-108(r30) 10930 00009a24 afab0018 sw 24(r29),r11 10931 00009a28 8fcbff98 lw r11,-104(r30) 10932 00009a2c afab001c sw 28(r29),r11 10933 00009a30 8fcbff9c lw r11,-100(r30) 10934 00009a34 afab0020 sw 32(r29),r11 10935 00009a38 0c001694 jal _printf 10936 00009a3c 54000000 nop; not filled. 10937 00009a40 23bd0028 addi r29,r29,#40 10938 00009a44 8fa20000 lw r2,0(r29) 10939 00009a48 8fa30004 lw r3,4(r29) 10940 00009a4c 8fa40008 lw r4,8(r29) 10941 00009a50 8fa5000c lw r5,12(r29) 10942 00009a54 8fa60010 lw r6,16(r29) 10943 00009a58 8fa70014 lw r7,20(r29) 10944 00009a5c 8fa80018 lw r8,24(r29) 10945 00009a60 8fa9001c lw r9,28(r29) 10946 00009a64 8faa0020 lw r10,32(r29) 10947 00009a68 8fab0024 lw r11,36(r29) 10948 00009a6c 8fdffff8 lw r31,-8(r30) 10949 00009a70 001ee820 add r29,r0,r30 10950 00009a74 8fdefffc lw r30,-4(r30) 10951 00009a78 4be00000 jr r31 10952 00009a7c 54000000 nop 10953 00009a80 .endproc _TrapPrintfHandler_LF8 10954 00009a80 .data 10955 00013ab5 .align 2 10956 00013ab8 LC1_LF8: 10957 00013ab8 496e7465 .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" 10957 00013abc 72727570 10957 00013ac0 74206361 10957 00013ac4 7573653d 10957 00013ac8 30782578 10957 00013acc 20696172 10957 00013ad0 3d307825 10957 00013ad4 78206973 10957 00013ad8 723d3078 10957 00013adc 25782061 10957 00013ae0 7267733d 10957 00013ae4 30782530 10957 00013ae8 38782e0a 10957 00013aec 00 10958 00013aed .align 2 10959 00013af0 LC2_LF8: 10960 00013af0 476f7420 .ascii "Got a context switch trap!\n\000" 10960 00013af4 6120636f 10960 00013af8 6e746578 10960 00013afc 74207377 10960 00013b00 69746368 10960 00013b04 20747261 10960 00013b08 70210a00 10961 00013b0c .align 2 10962 00013b0c LC3_LF8: 10963 00013b0c 476f7420 .ascii "Got an exit trap!\n\000" 10963 00013b10 616e2065 10963 00013b14 78697420 10963 00013b18 74726170 10963 00013b1c 210a00 10964 00013b1f .align 2 10965 00013b20 LC4_LF8: 10966 00013b20 476f7420 .ascii "Got a fork trap!\n\000" 10966 00013b24 6120666f 10966 00013b28 726b2074 10966 00013b2c 72617021 10966 00013b30 0a00 10967 00013b32 .align 2 10968 00013b34 LC5_LF8: 10969 00013b34 476f7420 .ascii "Got a process sleep trap!\n\000" 10969 00013b38 61207072 10969 00013b3c 6f636573 10969 00013b40 7320736c 10969 00013b44 65657020 10969 00013b48 74726170 10969 00013b4c 210a00 10970 00013b4f .align 2 10971 00013b50 LC6_LF8: 10972 00013b50 476f7420 .ascii "Got a printf trap!\n\000" 10972 00013b54 61207072 10972 00013b58 696e7466 10972 00013b5c 20747261 10972 00013b60 70210a00 10973 00013b64 .align 2 10974 00013b64 LC7_LF8: 10975 00013b64 476f7420 .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" 10975 00013b68 616e206f 10975 00013b6c 70656e20 10975 00013b70 77697468 10975 00013b74 20706172 10975 00013b78 616d6574 10975 00013b7c 65727320 10975 00013b80 28272573 10975 00013b84 272c3078 10975 00013b88 2578290a 10975 00013b8c 00 10976 00013b8d .align 2 10977 00013b90 LC8_LF8: 10978 00013b90 476f7420 .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" 10978 00013b94 616e2075 10978 00013b98 6e726563 10978 00013b9c 6f676e69 10978 00013ba0 7a656420 10978 00013ba4 74726170 10978 00013ba8 20283078 10978 00013bac 25782920 10978 00013bb0 2d206578 10978 00013bb4 6974696e 10978 00013bb8 67210a00 10979 00013bbc .align 2 10980 00013bbc LC9_LF8: 10981 00013bbc 476f7420 .ascii "Got a timer interrupt!\n\000" 10981 00013bc0 61207469 10981 00013bc4 6d657220 10981 00013bc8 696e7465 10981 00013bcc 72727570 10981 00013bd0 74210a00 10982 00013bd4 .align 2 10983 00013bd4 LC10_LF8: 10984 00013bd4 476f7420 .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" 10984 00013bd8 61206b65 10984 00013bdc 79626f61 10984 00013be0 72642069 10984 00013be4 6e746572 10984 00013be8 72757074 10984 00013bec 20286368 10984 00013bf0 61723d30 10984 00013bf4 78257828 10984 00013bf8 2563292c 10984 00013bfc 206e6c65 10984 00013c00 66743d25 10984 00013c04 6429210a 10984 00013c08 00 10985 00013c09 .align 2 10986 00013c0c LC11_LF8: 10987 00013c0c 54726170 .ascii "Trap access\n\000" 10987 00013c10 20616363 10987 00013c14 6573730a 10987 00013c18 00 10988 00013c19 .align 2 10989 00013c1c LC12_LF8: 10990 00013c1c 43757272 .ascii "Current PROC %s\n\000" 10990 00013c20 656e7420 10990 00013c24 50524f43 10990 00013c28 2025730a 10990 00013c2c 00 10991 00013c2d .align 2 10992 00013c30 LC13_LF8: 10993 00013c30 45786974 .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" 10993 00013c34 696e6720 10993 00013c38 61667465 10993 00013c3c 7220696c 10993 00013c40 6c656761 10993 00013c44 6c206164 10993 00013c48 64726573 10993 00013c4c 73206174 10993 00013c50 20696172 10993 00013c54 3d307825 10993 00013c58 782c2069 10993 00013c5c 73723d30 10993 00013c60 7825780a 10993 00013c64 00 10994 00013c65 .align 2 10995 00013c68 LC14_LF8: 10996 00013c68 45786974 .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" 10996 00013c6c 696e6720 10996 00013c70 61667465 10996 00013c74 7220696c 10996 00013c78 6c656761 10996 00013c7c 6c20696e 10996 00013c80 73747275 10996 00013c84 6374696f 10996 00013c88 6e206174 10996 00013c8c 20696172 10996 00013c90 3d307825 10996 00013c94 782c2069 10996 00013c98 73723d30 10996 00013c9c 7825780a 10996 00013ca0 00 10997 00013ca1 .align 2 10998 00013ca4 LC15_LF8: 10999 00013ca4 476f7420 .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" 10999 00013ca8 616e2075 10999 00013cac 6e726563 10999 00013cb0 6f676e69 10999 00013cb4 7a656420 10999 00013cb8 73797374 10999 00013cbc 656d2069 10999 00013cc0 6e746572 10999 00013cc4 72757074 10999 00013cc8 20283078 10999 00013ccc 25782920 10999 00013cd0 2d206578 10999 00013cd4 6974696e 10999 00013cd8 67210a00 11000 00013cdc .align 2 11001 00013cdc LC16_LF8: 11002 00013cdc 41626f75 .ascii "About to return from dointerrupt.\n\000" 11002 00013ce0 7420746f 11002 00013ce4 20726574 11002 00013ce8 75726e20 11002 00013cec 66726f6d 11002 00013cf0 20646f69 11002 00013cf4 6e746572 11002 00013cf8 72757074 11002 00013cfc 2e0a00 11003 00013cff .text 11004 00009a80 .align 2 11005 00009a80 .proc _dointerrupt 11006 00009a80 .global _dointerrupt 11007 00009a80 _dointerrupt: 11008 ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. 11009 00009a80 afbefffc sw -4(r29),r30; push fp 11010 00009a84 001df020 add r30,r0,r29; fp = sp 11011 00009a88 afbffff8 sw -8(r29),r31; push ret addr 11012 00009a8c 2fbd0058 subui r29,r29,#88; alloc local storage 11013 00009a90 afa20000 sw 0(r29),r2 11014 00009a94 afa30004 sw 4(r29),r3 11015 00009a98 afa40008 sw 8(r29),r4 11016 00009a9c afa5000c sw 12(r29),r5 11017 00009aa0 afa60010 sw 16(r29),r6 11018 00009aa4 afa70014 sw 20(r29),r7 11019 00009aa8 8fc20000 lw r2,(r30) 11020 00009aac 8fc60004 lw r6,4(r30) 11021 00009ab0 8fc50008 lw r5,8(r30) 11022 00009ab4 8fc3000c lw r3,12(r30) 11023 00009ab8 23bdfff8 addi r29,r29,#-8 11024 00009abc 3c040001 lhi r4,((_debugstr)>>16)&0xffff 11025 00009ac0 24840d78 addui r4,r4,(_debugstr)&0xffff 11026 00009ac4 afa40000 sw (r29),r4 11027 00009ac8 20070074 addi r7,r0,#116 11028 00009acc afa70004 sw 4(r29),r7 11029 00009ad0 0fffa360 jal _dindex 11030 00009ad4 54000000 nop; not filled. 11031 00009ad8 23bd0008 addi r29,r29,#8 11032 00009adc 64210000 snei r1,r1,#0 11033 00009ae0 1420002c bnez r1,L123_LF8 11034 00009ae4 54000000 nop; not filled. 11035 00009ae8 23bdfff8 addi r29,r29,#-8 11036 00009aec afa40000 sw (r29),r4 11037 00009af0 2007002b addi r7,r0,#43 11038 00009af4 afa70004 sw 4(r29),r7 11039 00009af8 0fffa338 jal _dindex 11040 00009afc 54000000 nop; not filled. 11041 00009b00 23bd0008 addi r29,r29,#8 11042 00009b04 64210000 snei r1,r1,#0 11043 00009b08 10200030 beqz r1,L122_LF8 11044 00009b0c 54000000 nop; not filled. 11045 00009b10 L123_LF8: 11046 00009b10 23bdffe8 addi r29,r29,#-24 11047 00009b14 3c070001 lhi r7,((LC1_LF8)>>16)&0xffff 11048 00009b18 24e73ab8 addui r7,r7,(LC1_LF8)&0xffff 11049 00009b1c afa70000 sw (r29),r7 11050 00009b20 afa20004 sw 4(r29),r2 11051 00009b24 afa60008 sw 8(r29),r6 11052 00009b28 afa5000c sw 12(r29),r5 11053 00009b2c afa30010 sw 16(r29),r3 11054 00009b30 0c00159c jal _printf 11055 00009b34 54000000 nop; not filled. 11056 00009b38 23bd0018 addi r29,r29,#24 11057 00009b3c L122_LF8: 11058 00009b3c 3c070800 lhi r7,#2048 11059 00009b40 24e70000 addui r7,r7,#0 11060 00009b44 00470824 and r1,r2,r7 11061 00009b48 64210000 snei r1,r1,#0 11062 00009b4c 10200998 beqz r1,L124_LF8 11063 00009b50 54000000 nop; not filled. 11064 00009b54 3c07f7ff lhi r7,#-2049 11065 00009b58 24e7ffff addui r7,r7,#65535 11066 00009b5c 00471024 and r2,r2,r7 11067 00009b60 60410400 seqi r1,r2,#1024 11068 00009b64 14200110 bnez r1,L126_LF8 11069 00009b68 54000000 nop; not filled. 11070 00009b6c 6c410400 sgtui r1,r2,#1024 11071 00009b70 14200074 bnez r1,L179_LF8 11072 00009b74 54000000 nop; not filled. 11073 00009b78 60410212 seqi r1,r2,#530 11074 00009b7c 142006ac bnez r1,L160_LF8 11075 00009b80 54000000 nop; not filled. 11076 00009b84 6c410212 sgtui r1,r2,#530 11077 00009b88 14200030 bnez r1,L180_LF8 11078 00009b8c 54000000 nop; not filled. 11079 00009b90 60410210 seqi r1,r2,#528 11080 00009b94 14200580 bnez r1,L151_LF8 11081 00009b98 54000000 nop; not filled. 11082 00009b9c 6c410210 sgtui r1,r2,#528 11083 00009ba0 142005d0 bnez r1,L154_LF8 11084 00009ba4 54000000 nop; not filled. 11085 00009ba8 60410201 seqi r1,r2,#513 11086 00009bac 10200924 beqz r1,L177_LF8 11087 00009bb0 54000000 nop; not filled. 11088 00009bb4 08000350 j L140_LF8 11089 00009bb8 54000000 nop; not filled. 11090 00009bbc L180_LF8: 11091 00009bbc 60410214 seqi r1,r2,#532 11092 00009bc0 142004f8 bnez r1,L148_LF8 11093 00009bc4 54000000 nop; not filled. 11094 00009bc8 68410214 sltui r1,r2,#532 11095 00009bcc 142003cc bnez r1,L143_LF8 11096 00009bd0 54000000 nop; not filled. 11097 00009bd4 60410300 seqi r1,r2,#768 11098 00009bd8 102008f8 beqz r1,L177_LF8 11099 00009bdc 54000000 nop; not filled. 11100 00009be0 08000100 j L129_LF8 11101 00009be4 54000000 nop; not filled. 11102 00009be8 L179_LF8: 11103 00009be8 60410432 seqi r1,r2,#1074 11104 00009bec 142006cc bnez r1,L164_LF8 11105 00009bf0 54000000 nop; not filled. 11106 00009bf4 6c410432 sgtui r1,r2,#1074 11107 00009bf8 14200030 bnez r1,L181_LF8 11108 00009bfc 54000000 nop; not filled. 11109 00009c00 60410430 seqi r1,r2,#1072 11110 00009c04 142001e8 bnez r1,L134_LF8 11111 00009c08 54000000 nop; not filled. 11112 00009c0c 6c410430 sgtui r1,r2,#1072 11113 00009c10 14200674 bnez r1,L163_LF8 11114 00009c14 54000000 nop; not filled. 11115 00009c18 60410410 seqi r1,r2,#1040 11116 00009c1c 102008b4 beqz r1,L177_LF8 11117 00009c20 54000000 nop; not filled. 11118 00009c24 08000240 j L137_LF8 11119 00009c28 54000000 nop; not filled. 11120 00009c2c L181_LF8: 11121 00009c2c 60410451 seqi r1,r2,#1105 11122 00009c30 14200750 bnez r1,L169_LF8 11123 00009c34 54000000 nop; not filled. 11124 00009c38 6c410451 sgtui r1,r2,#1105 11125 00009c3c 14200018 bnez r1,L182_LF8 11126 00009c40 54000000 nop; not filled. 11127 00009c44 60410450 seqi r1,r2,#1104 11128 00009c48 10200888 beqz r1,L177_LF8 11129 00009c4c 54000000 nop; not filled. 11130 00009c50 08000688 j L165_LF8 11131 00009c54 54000000 nop; not filled. 11132 00009c58 L182_LF8: 11133 00009c58 60410452 seqi r1,r2,#1106 11134 00009c5c 142007cc bnez r1,L173_LF8 11135 00009c60 54000000 nop; not filled. 11136 00009c64 60410580 seqi r1,r2,#1408 11137 00009c68 10200868 beqz r1,L177_LF8 11138 00009c6c 54000000 nop; not filled. 11139 00009c70 0800055c j L157_LF8 11140 00009c74 54000000 nop; not filled. 11141 00009c78 L126_LF8: 11142 00009c78 23bdfff8 addi r29,r29,#-8 11143 00009c7c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11144 00009c80 24420d78 addui r2,r2,(_debugstr)&0xffff 11145 00009c84 afa20000 sw (r29),r2 11146 00009c88 20070074 addi r7,r0,#116 11147 00009c8c afa70004 sw 4(r29),r7 11148 00009c90 0fffa1a0 jal _dindex 11149 00009c94 54000000 nop; not filled. 11150 00009c98 23bd0008 addi r29,r29,#8 11151 00009c9c 64210000 snei r1,r1,#0 11152 00009ca0 1420002c bnez r1,L128_LF8 11153 00009ca4 54000000 nop; not filled. 11154 00009ca8 23bdfff8 addi r29,r29,#-8 11155 00009cac afa20000 sw (r29),r2 11156 00009cb0 2007002b addi r7,r0,#43 11157 00009cb4 afa70004 sw 4(r29),r7 11158 00009cb8 0fffa178 jal _dindex 11159 00009cbc 54000000 nop; not filled. 11160 00009cc0 23bd0008 addi r29,r29,#8 11161 00009cc4 64210000 snei r1,r1,#0 11162 00009cc8 10200908 beqz r1,L186_LF8 11163 00009ccc 54000000 nop; not filled. 11164 00009cd0 L128_LF8: 11165 00009cd0 23bdfff8 addi r29,r29,#-8 11166 00009cd4 3c070001 lhi r7,((LC2_LF8)>>16)&0xffff 11167 00009cd8 24e73af0 addui r7,r7,(LC2_LF8)&0xffff 11168 00009cdc 080008e4 j L209_LF8 11169 00009ce0 54000000 nop; not filled. 11170 00009ce4 L129_LF8: 11171 00009ce4 23bdfff8 addi r29,r29,#-8 11172 00009ce8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11173 00009cec 24420d78 addui r2,r2,(_debugstr)&0xffff 11174 00009cf0 afa20000 sw (r29),r2 11175 00009cf4 20070074 addi r7,r0,#116 11176 00009cf8 afa70004 sw 4(r29),r7 11177 00009cfc 0fffa134 jal _dindex 11178 00009d00 54000000 nop; not filled. 11179 00009d04 23bd0008 addi r29,r29,#8 11180 00009d08 64210000 snei r1,r1,#0 11181 00009d0c 1420002c bnez r1,L131_LF8 11182 00009d10 54000000 nop; not filled. 11183 00009d14 23bdfff8 addi r29,r29,#-8 11184 00009d18 afa20000 sw (r29),r2 11185 00009d1c 2007002b addi r7,r0,#43 11186 00009d20 afa70004 sw 4(r29),r7 11187 00009d24 0fffa10c jal _dindex 11188 00009d28 54000000 nop; not filled. 11189 00009d2c 23bd0008 addi r29,r29,#8 11190 00009d30 64210000 snei r1,r1,#0 11191 00009d34 10200020 beqz r1,L130_LF8 11192 00009d38 54000000 nop; not filled. 11193 00009d3c L131_LF8: 11194 00009d3c 23bdfff8 addi r29,r29,#-8 11195 00009d40 3c070001 lhi r7,((LC3_LF8)>>16)&0xffff 11196 00009d44 24e73b0c addui r7,r7,(LC3_LF8)&0xffff 11197 00009d48 afa70000 sw (r29),r7 11198 00009d4c 0c001380 jal _printf 11199 00009d50 54000000 nop; not filled. 11200 00009d54 23bd0008 addi r29,r29,#8 11201 00009d58 L130_LF8: 11202 00009d58 23bdfff8 addi r29,r29,#-8 11203 00009d5c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11204 00009d60 24420d78 addui r2,r2,(_debugstr)&0xffff 11205 00009d64 afa20000 sw (r29),r2 11206 00009d68 20070074 addi r7,r0,#116 11207 00009d6c afa70004 sw 4(r29),r7 11208 00009d70 0fffa0c0 jal _dindex 11209 00009d74 54000000 nop; not filled. 11210 00009d78 23bd0008 addi r29,r29,#8 11211 00009d7c 64210000 snei r1,r1,#0 11212 00009d80 1420002c bnez r1,L133_LF8 11213 00009d84 54000000 nop; not filled. 11214 00009d88 23bdfff8 addi r29,r29,#-8 11215 00009d8c afa20000 sw (r29),r2 11216 00009d90 2007002b addi r7,r0,#43 11217 00009d94 afa70004 sw 4(r29),r7 11218 00009d98 0fffa098 jal _dindex 11219 00009d9c 54000000 nop; not filled. 11220 00009da0 23bd0008 addi r29,r29,#8 11221 00009da4 64210000 snei r1,r1,#0 11222 00009da8 10200020 beqz r1,L132_LF8 11223 00009dac 54000000 nop; not filled. 11224 00009db0 L133_LF8: 11225 00009db0 23bdfff8 addi r29,r29,#-8 11226 00009db4 3c070001 lhi r7,((LC3_LF8)>>16)&0xffff 11227 00009db8 24e73b0c addui r7,r7,(LC3_LF8)&0xffff 11228 00009dbc afa70000 sw (r29),r7 11229 00009dc0 0c00130c jal _printf 11230 00009dc4 54000000 nop; not filled. 11231 00009dc8 23bd0008 addi r29,r29,#8 11232 00009dcc L132_LF8: 11233 00009dcc 23bdfff8 addi r29,r29,#-8 11234 00009dd0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11235 00009dd4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11236 00009dd8 8c210000 lw r1,(r1) 11237 00009ddc afa10000 sw (r29),r1 11238 00009de0 0fffdcb4 jal _ProcessKill 11239 00009de4 54000000 nop; not filled. 11240 00009de8 08000958 j L203_LF8 11241 00009dec 54000000 nop; not filled. 11242 00009df0 L134_LF8: 11243 00009df0 23bdfff8 addi r29,r29,#-8 11244 00009df4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11245 00009df8 24420d78 addui r2,r2,(_debugstr)&0xffff 11246 00009dfc afa20000 sw (r29),r2 11247 00009e00 20070074 addi r7,r0,#116 11248 00009e04 afa70004 sw 4(r29),r7 11249 00009e08 0fffa028 jal _dindex 11250 00009e0c 54000000 nop; not filled. 11251 00009e10 23bd0008 addi r29,r29,#8 11252 00009e14 64210000 snei r1,r1,#0 11253 00009e18 1420002c bnez r1,L136_LF8 11254 00009e1c 54000000 nop; not filled. 11255 00009e20 23bdfff8 addi r29,r29,#-8 11256 00009e24 afa20000 sw (r29),r2 11257 00009e28 2007002b addi r7,r0,#43 11258 00009e2c afa70004 sw 4(r29),r7 11259 00009e30 0fffa000 jal _dindex 11260 00009e34 54000000 nop; not filled. 11261 00009e38 23bd0008 addi r29,r29,#8 11262 00009e3c 64210000 snei r1,r1,#0 11263 00009e40 10200904 beqz r1,L183_LF8 11264 00009e44 54000000 nop; not filled. 11265 00009e48 L136_LF8: 11266 00009e48 23bdfff8 addi r29,r29,#-8 11267 00009e4c 3c070001 lhi r7,((LC4_LF8)>>16)&0xffff 11268 00009e50 24e73b20 addui r7,r7,(LC4_LF8)&0xffff 11269 00009e54 afa70000 sw (r29),r7 11270 00009e58 0c001274 jal _printf 11271 00009e5c 54000000 nop; not filled. 11272 00009e60 080008e0 j L203_LF8 11273 00009e64 54000000 nop; not filled. 11274 00009e68 L137_LF8: 11275 00009e68 23bdfff8 addi r29,r29,#-8 11276 00009e6c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11277 00009e70 24420d78 addui r2,r2,(_debugstr)&0xffff 11278 00009e74 afa20000 sw (r29),r2 11279 00009e78 20070074 addi r7,r0,#116 11280 00009e7c afa70004 sw 4(r29),r7 11281 00009e80 0fff9fb0 jal _dindex 11282 00009e84 54000000 nop; not filled. 11283 00009e88 23bd0008 addi r29,r29,#8 11284 00009e8c 64210000 snei r1,r1,#0 11285 00009e90 1420002c bnez r1,L139_LF8 11286 00009e94 54000000 nop; not filled. 11287 00009e98 23bdfff8 addi r29,r29,#-8 11288 00009e9c afa20000 sw (r29),r2 11289 00009ea0 2007002b addi r7,r0,#43 11290 00009ea4 afa70004 sw 4(r29),r7 11291 00009ea8 0fff9f88 jal _dindex 11292 00009eac 54000000 nop; not filled. 11293 00009eb0 23bd0008 addi r29,r29,#8 11294 00009eb4 64210000 snei r1,r1,#0 11295 00009eb8 10200020 beqz r1,L138_LF8 11296 00009ebc 54000000 nop; not filled. 11297 00009ec0 L139_LF8: 11298 00009ec0 23bdfff8 addi r29,r29,#-8 11299 00009ec4 3c070001 lhi r7,((LC5_LF8)>>16)&0xffff 11300 00009ec8 24e73b34 addui r7,r7,(LC5_LF8)&0xffff 11301 00009ecc afa70000 sw (r29),r7 11302 00009ed0 0c0011fc jal _printf 11303 00009ed4 54000000 nop; not filled. 11304 00009ed8 23bd0008 addi r29,r29,#8 11305 00009edc L138_LF8: 11306 00009edc 23bdfff8 addi r29,r29,#-8 11307 00009ee0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11308 00009ee4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11309 00009ee8 8c210000 lw r1,(r1) 11310 00009eec afa10000 sw (r29),r1 11311 00009ef0 0fffb0ec jal _ProcessSuspend 11312 00009ef4 54000000 nop; not filled. 11313 00009ef8 0fffac50 jal _ProcessSchedule 11314 00009efc 54000000 nop; not filled. 11315 00009f00 08000840 j L203_LF8 11316 00009f04 54000000 nop; not filled. 11317 00009f08 L140_LF8: 11318 00009f08 23bdfff8 addi r29,r29,#-8 11319 00009f0c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11320 00009f10 24420d78 addui r2,r2,(_debugstr)&0xffff 11321 00009f14 afa20000 sw (r29),r2 11322 00009f18 20070074 addi r7,r0,#116 11323 00009f1c afa70004 sw 4(r29),r7 11324 00009f20 0fff9f10 jal _dindex 11325 00009f24 54000000 nop; not filled. 11326 00009f28 23bd0008 addi r29,r29,#8 11327 00009f2c 64210000 snei r1,r1,#0 11328 00009f30 1420002c bnez r1,L142_LF8 11329 00009f34 54000000 nop; not filled. 11330 00009f38 23bdfff8 addi r29,r29,#-8 11331 00009f3c afa20000 sw (r29),r2 11332 00009f40 2007002b addi r7,r0,#43 11333 00009f44 afa70004 sw 4(r29),r7 11334 00009f48 0fff9ee8 jal _dindex 11335 00009f4c 54000000 nop; not filled. 11336 00009f50 23bd0008 addi r29,r29,#8 11337 00009f54 64210000 snei r1,r1,#0 11338 00009f58 10200020 beqz r1,L141_LF8 11339 00009f5c 54000000 nop; not filled. 11340 00009f60 L142_LF8: 11341 00009f60 23bdfff8 addi r29,r29,#-8 11342 00009f64 3c070001 lhi r7,((LC6_LF8)>>16)&0xffff 11343 00009f68 24e73b50 addui r7,r7,(LC6_LF8)&0xffff 11344 00009f6c afa70000 sw (r29),r7 11345 00009f70 0c00115c jal _printf 11346 00009f74 54000000 nop; not filled. 11347 00009f78 23bd0008 addi r29,r29,#8 11348 00009f7c L141_LF8: 11349 00009f7c 23bdfff8 addi r29,r29,#-8 11350 00009f80 afa30000 sw (r29),r3 11351 00009f84 30a10040 andi r1,r5,#64 11352 00009f88 afa10004 sw 4(r29),r1 11353 00009f8c 0ffff81c jal _TrapPrintfHandler_LF8 11354 00009f90 54000000 nop; not filled. 11355 00009f94 080007ac j L203_LF8 11356 00009f98 54000000 nop; not filled. 11357 00009f9c L143_LF8: 11358 00009f9c 30a10040 andi r1,r5,#64 11359 00009fa0 64210000 snei r1,r1,#0 11360 00009fa4 1020001c beqz r1,L144_LF8 11361 00009fa8 54000000 nop; not filled. 11362 00009fac 8c670000 lw r7,(r3) 11363 00009fb0 afc7ffe8 sw -24(r30),r7 11364 00009fb4 8c630004 lw r3,4(r3) 11365 00009fb8 afc3ffec sw -20(r30),r3 11366 00009fbc 0800006c j L145_LF8 11367 00009fc0 54000000 nop; not filled. 11368 00009fc4 L144_LF8: 11369 00009fc4 23bdfff0 addi r29,r29,#-16 11370 00009fc8 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 11371 00009fcc 24420e40 addui r2,r2,(_currentPCB)&0xffff 11372 00009fd0 8c470000 lw r7,(r2) 11373 00009fd4 afa70000 sw (r29),r7 11374 00009fd8 afa30004 sw 4(r29),r3 11375 00009fdc 23c1ffe8 addi r1,r30,#-24 11376 00009fe0 afa10008 sw 8(r29),r1 11377 00009fe4 20070008 addi r7,r0,#8 11378 00009fe8 afa7000c sw 12(r29),r7 11379 00009fec 0fff9594 jal _MemoryCopyUserToSystem 11380 00009ff0 54000000 nop; not filled. 11381 00009ff4 8c420000 lw r2,(r2) 11382 00009ff8 afa20000 sw (r29),r2 11383 00009ffc 8fc1ffe8 lw r1,-24(r30) 11384 0000a000 afa10004 sw 4(r29),r1 11385 0000a004 23c2ffc8 addi r2,r30,#-56 11386 0000a008 afa20008 sw 8(r29),r2 11387 0000a00c 2007001f addi r7,r0,#31 11388 0000a010 afa7000c sw 12(r29),r7 11389 0000a014 0fff956c jal _MemoryCopyUserToSystem 11390 0000a018 54000000 nop; not filled. 11391 0000a01c 20070000 addi r7,r0,(#0x0)&0xff 11392 0000a020 a3c7ffe7 sb -25(r30),r7 11393 0000a024 afc2ffe8 sw -24(r30),r2 11394 0000a028 23bd0010 addi r29,r29,#16 11395 0000a02c L145_LF8: 11396 0000a02c 23bdfff8 addi r29,r29,#-8 11397 0000a030 20070000 addi r7,r0,#0 11398 0000a034 afa70000 sw (r29),r7 11399 0000a038 0fff724c jal _SetIntrs 11400 0000a03c 54000000 nop; not filled. 11401 0000a040 00011020 add r2,r0,r1 11402 0000a044 23bd0008 addi r29,r29,#8 11403 0000a048 23bdfff8 addi r29,r29,#-8 11404 0000a04c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11405 0000a050 24210e40 addui r1,r1,(_currentPCB)&0xffff 11406 0000a054 8c210000 lw r1,(r1) 11407 0000a058 afa10000 sw (r29),r1 11408 0000a05c 8fc1ffec lw r1,-20(r30) 11409 0000a060 3c070001 lhi r7,#1 11410 0000a064 24e70000 addui r7,r7,#0 11411 0000a068 00270820 add r1,r1,r7 11412 0000a06c afa10004 sw 4(r29),r1 11413 0000a070 0fffaaa4 jal _ProcessSetResult 11414 0000a074 54000000 nop; not filled. 11415 0000a078 23bdfff8 addi r29,r29,#-8 11416 0000a07c 3c070001 lhi r7,((LC7_LF8)>>16)&0xffff 11417 0000a080 24e73b64 addui r7,r7,(LC7_LF8)&0xffff 11418 0000a084 afa70000 sw (r29),r7 11419 0000a088 8fc1ffe8 lw r1,-24(r30) 11420 0000a08c afa10004 sw 4(r29),r1 11421 0000a090 8fc7ffec lw r7,-20(r30) 11422 0000a094 afa70008 sw 8(r29),r7 11423 0000a098 0c001034 jal _printf 11424 0000a09c 54000000 nop; not filled. 11425 0000a0a0 23bd0010 addi r29,r29,#16 11426 0000a0a4 23bdfff8 addi r29,r29,#-8 11427 0000a0a8 afa20000 sw (r29),r2 11428 0000a0ac 0fff71d8 jal _SetIntrs 11429 0000a0b0 54000000 nop; not filled. 11430 0000a0b4 0800068c j L203_LF8 11431 0000a0b8 54000000 nop; not filled. 11432 0000a0bc L148_LF8: 11433 0000a0bc 23bdfff8 addi r29,r29,#-8 11434 0000a0c0 20070000 addi r7,r0,#0 11435 0000a0c4 afa70000 sw (r29),r7 11436 0000a0c8 0fff71bc jal _SetIntrs 11437 0000a0cc 54000000 nop; not filled. 11438 0000a0d0 00011020 add r2,r0,r1 11439 0000a0d4 23bd0008 addi r29,r29,#8 11440 0000a0d8 23bdfff8 addi r29,r29,#-8 11441 0000a0dc 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11442 0000a0e0 24210e40 addui r1,r1,(_currentPCB)&0xffff 11443 0000a0e4 8c210000 lw r1,(r1) 11444 0000a0e8 afa10000 sw (r29),r1 11445 0000a0ec 2007ffff addi r7,r0,#-1 11446 0000a0f0 afa70004 sw 4(r29),r7 11447 0000a0f4 0fffaa20 jal _ProcessSetResult 11448 0000a0f8 54000000 nop; not filled. 11449 0000a0fc 23bd0008 addi r29,r29,#8 11450 0000a100 23bdfff8 addi r29,r29,#-8 11451 0000a104 afa20000 sw (r29),r2 11452 0000a108 0fff717c jal _SetIntrs 11453 0000a10c 54000000 nop; not filled. 11454 0000a110 08000630 j L203_LF8 11455 0000a114 54000000 nop; not filled. 11456 0000a118 L151_LF8: 11457 0000a118 23bdfff8 addi r29,r29,#-8 11458 0000a11c 20070000 addi r7,r0,#0 11459 0000a120 afa70000 sw (r29),r7 11460 0000a124 0fff7160 jal _SetIntrs 11461 0000a128 54000000 nop; not filled. 11462 0000a12c 00011020 add r2,r0,r1 11463 0000a130 23bd0008 addi r29,r29,#8 11464 0000a134 23bdfff8 addi r29,r29,#-8 11465 0000a138 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11466 0000a13c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11467 0000a140 8c210000 lw r1,(r1) 11468 0000a144 afa10000 sw (r29),r1 11469 0000a148 2007ffff addi r7,r0,#-1 11470 0000a14c afa70004 sw 4(r29),r7 11471 0000a150 0fffa9c4 jal _ProcessSetResult 11472 0000a154 54000000 nop; not filled. 11473 0000a158 23bd0008 addi r29,r29,#8 11474 0000a15c 23bdfff8 addi r29,r29,#-8 11475 0000a160 afa20000 sw (r29),r2 11476 0000a164 0fff7120 jal _SetIntrs 11477 0000a168 54000000 nop; not filled. 11478 0000a16c 080005d4 j L203_LF8 11479 0000a170 54000000 nop; not filled. 11480 0000a174 L154_LF8: 11481 0000a174 23bdfff8 addi r29,r29,#-8 11482 0000a178 20070000 addi r7,r0,#0 11483 0000a17c afa70000 sw (r29),r7 11484 0000a180 0fff7104 jal _SetIntrs 11485 0000a184 54000000 nop; not filled. 11486 0000a188 00011020 add r2,r0,r1 11487 0000a18c 23bd0008 addi r29,r29,#8 11488 0000a190 23bdfff8 addi r29,r29,#-8 11489 0000a194 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11490 0000a198 24210e40 addui r1,r1,(_currentPCB)&0xffff 11491 0000a19c 8c210000 lw r1,(r1) 11492 0000a1a0 afa10000 sw (r29),r1 11493 0000a1a4 2007ffff addi r7,r0,#-1 11494 0000a1a8 afa70004 sw 4(r29),r7 11495 0000a1ac 0fffa968 jal _ProcessSetResult 11496 0000a1b0 54000000 nop; not filled. 11497 0000a1b4 23bd0008 addi r29,r29,#8 11498 0000a1b8 23bdfff8 addi r29,r29,#-8 11499 0000a1bc afa20000 sw (r29),r2 11500 0000a1c0 0fff70c4 jal _SetIntrs 11501 0000a1c4 54000000 nop; not filled. 11502 0000a1c8 08000578 j L203_LF8 11503 0000a1cc 54000000 nop; not filled. 11504 0000a1d0 L157_LF8: 11505 0000a1d0 23bdfff8 addi r29,r29,#-8 11506 0000a1d4 20070000 addi r7,r0,#0 11507 0000a1d8 afa70000 sw (r29),r7 11508 0000a1dc 0fff70a8 jal _SetIntrs 11509 0000a1e0 54000000 nop; not filled. 11510 0000a1e4 00011020 add r2,r0,r1 11511 0000a1e8 23bd0008 addi r29,r29,#8 11512 0000a1ec 23bdfff8 addi r29,r29,#-8 11513 0000a1f0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11514 0000a1f4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11515 0000a1f8 8c210000 lw r1,(r1) 11516 0000a1fc afa10000 sw (r29),r1 11517 0000a200 2007ffff addi r7,r0,#-1 11518 0000a204 afa70004 sw 4(r29),r7 11519 0000a208 0fffa90c jal _ProcessSetResult 11520 0000a20c 54000000 nop; not filled. 11521 0000a210 23bd0008 addi r29,r29,#8 11522 0000a214 23bdfff8 addi r29,r29,#-8 11523 0000a218 afa20000 sw (r29),r2 11524 0000a21c 0fff7068 jal _SetIntrs 11525 0000a220 54000000 nop; not filled. 11526 0000a224 0800051c j L203_LF8 11527 0000a228 54000000 nop; not filled. 11528 0000a22c L160_LF8: 11529 0000a22c 23bdfff8 addi r29,r29,#-8 11530 0000a230 20070000 addi r7,r0,#0 11531 0000a234 afa70000 sw (r29),r7 11532 0000a238 0fff704c jal _SetIntrs 11533 0000a23c 54000000 nop; not filled. 11534 0000a240 00011020 add r2,r0,r1 11535 0000a244 23bd0008 addi r29,r29,#8 11536 0000a248 23bdfff8 addi r29,r29,#-8 11537 0000a24c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11538 0000a250 24210e40 addui r1,r1,(_currentPCB)&0xffff 11539 0000a254 8c210000 lw r1,(r1) 11540 0000a258 afa10000 sw (r29),r1 11541 0000a25c 2007ffff addi r7,r0,#-1 11542 0000a260 afa70004 sw 4(r29),r7 11543 0000a264 0fffa8b0 jal _ProcessSetResult 11544 0000a268 54000000 nop; not filled. 11545 0000a26c 23bd0008 addi r29,r29,#8 11546 0000a270 23bdfff8 addi r29,r29,#-8 11547 0000a274 afa20000 sw (r29),r2 11548 0000a278 0fff700c jal _SetIntrs 11549 0000a27c 54000000 nop; not filled. 11550 0000a280 080004c0 j L203_LF8 11551 0000a284 54000000 nop; not filled. 11552 0000a288 L163_LF8: 11553 0000a288 0fffd64c jal _GetCurrentPid 11554 0000a28c 54000000 nop; not filled. 11555 0000a290 00011020 add r2,r0,r1 11556 0000a294 23bdfff8 addi r29,r29,#-8 11557 0000a298 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11558 0000a29c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11559 0000a2a0 8c210000 lw r1,(r1) 11560 0000a2a4 afa10000 sw (r29),r1 11561 0000a2a8 afa20004 sw 4(r29),r2 11562 0000a2ac 0fffa868 jal _ProcessSetResult 11563 0000a2b0 54000000 nop; not filled. 11564 0000a2b4 0800048c j L203_LF8 11565 0000a2b8 54000000 nop; not filled. 11566 0000a2bc L164_LF8: 11567 0000a2bc 23bdfff8 addi r29,r29,#-8 11568 0000a2c0 afa30000 sw (r29),r3 11569 0000a2c4 30a10040 andi r1,r5,#64 11570 0000a2c8 afa10004 sw 4(r29),r1 11571 0000a2cc 0ffff1a8 jal _TrapProcessCreateHandler_LF8 11572 0000a2d0 54000000 nop; not filled. 11573 0000a2d4 0800046c j L203_LF8 11574 0000a2d8 54000000 nop; not filled. 11575 0000a2dc L165_LF8: 11576 0000a2dc 30a10040 andi r1,r5,#64 11577 0000a2e0 64210000 snei r1,r1,#0 11578 0000a2e4 1420003c bnez r1,L167_LF8 11579 0000a2e8 54000000 nop; not filled. 11580 0000a2ec 23bdfff0 addi r29,r29,#-16 11581 0000a2f0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11582 0000a2f4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11583 0000a2f8 8c210000 lw r1,(r1) 11584 0000a2fc afa10000 sw (r29),r1 11585 0000a300 afa30004 sw 4(r29),r3 11586 0000a304 23c1ffc4 addi r1,r30,#-60 11587 0000a308 afa10008 sw 8(r29),r1 11588 0000a30c 20070004 addi r7,r0,#4 11589 0000a310 afa7000c sw 12(r29),r7 11590 0000a314 0fff926c jal _MemoryCopyUserToSystem 11591 0000a318 54000000 nop; not filled. 11592 0000a31c 08000024 j L204_LF8 11593 0000a320 54000000 nop; not filled. 11594 0000a324 L167_LF8: 11595 0000a324 23bdfff0 addi r29,r29,#-16 11596 0000a328 afa30000 sw (r29),r3 11597 0000a32c 23c1ffc4 addi r1,r30,#-60 11598 0000a330 afa10004 sw 4(r29),r1 11599 0000a334 20070004 addi r7,r0,#4 11600 0000a338 afa70008 sw 8(r29),r7 11601 0000a33c 0fff9e84 jal _bcopy 11602 0000a340 54000000 nop; not filled. 11603 0000a344 L204_LF8: 11604 0000a344 23bd0010 addi r29,r29,#16 11605 0000a348 23bdfff8 addi r29,r29,#-8 11606 0000a34c 8fc7ffc4 lw r7,-60(r30) 11607 0000a350 afa70000 sw (r29),r7 11608 0000a354 0fffe578 jal _SemCreate 11609 0000a358 54000000 nop; not filled. 11610 0000a35c 00011020 add r2,r0,r1 11611 0000a360 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11612 0000a364 24210e40 addui r1,r1,(_currentPCB)&0xffff 11613 0000a368 8c210000 lw r1,(r1) 11614 0000a36c afa10000 sw (r29),r1 11615 0000a370 afa20004 sw 4(r29),r2 11616 0000a374 0fffa7a0 jal _ProcessSetResult 11617 0000a378 54000000 nop; not filled. 11618 0000a37c 080003c4 j L203_LF8 11619 0000a380 54000000 nop; not filled. 11620 0000a384 L169_LF8: 11621 0000a384 30a10040 andi r1,r5,#64 11622 0000a388 64210000 snei r1,r1,#0 11623 0000a38c 1420003c bnez r1,L171_LF8 11624 0000a390 54000000 nop; not filled. 11625 0000a394 23bdfff0 addi r29,r29,#-16 11626 0000a398 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11627 0000a39c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11628 0000a3a0 8c210000 lw r1,(r1) 11629 0000a3a4 afa10000 sw (r29),r1 11630 0000a3a8 afa30004 sw 4(r29),r3 11631 0000a3ac 23c1ffc4 addi r1,r30,#-60 11632 0000a3b0 afa10008 sw 8(r29),r1 11633 0000a3b4 20070004 addi r7,r0,#4 11634 0000a3b8 afa7000c sw 12(r29),r7 11635 0000a3bc 0fff91c4 jal _MemoryCopyUserToSystem 11636 0000a3c0 54000000 nop; not filled. 11637 0000a3c4 08000024 j L205_LF8 11638 0000a3c8 54000000 nop; not filled. 11639 0000a3cc L171_LF8: 11640 0000a3cc 23bdfff0 addi r29,r29,#-16 11641 0000a3d0 afa30000 sw (r29),r3 11642 0000a3d4 23c1ffc4 addi r1,r30,#-60 11643 0000a3d8 afa10004 sw 4(r29),r1 11644 0000a3dc 20070004 addi r7,r0,#4 11645 0000a3e0 afa70008 sw 8(r29),r7 11646 0000a3e4 0fff9ddc jal _bcopy 11647 0000a3e8 54000000 nop; not filled. 11648 0000a3ec L205_LF8: 11649 0000a3ec 23bd0010 addi r29,r29,#16 11650 0000a3f0 23bdfff8 addi r29,r29,#-8 11651 0000a3f4 8fc7ffc4 lw r7,-60(r30) 11652 0000a3f8 afa70000 sw (r29),r7 11653 0000a3fc 0fffe854 jal _SemHandleWait 11654 0000a400 54000000 nop; not filled. 11655 0000a404 00011020 add r2,r0,r1 11656 0000a408 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11657 0000a40c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11658 0000a410 8c210000 lw r1,(r1) 11659 0000a414 afa10000 sw (r29),r1 11660 0000a418 afa20004 sw 4(r29),r2 11661 0000a41c 0fffa6f8 jal _ProcessSetResult 11662 0000a420 54000000 nop; not filled. 11663 0000a424 0800031c j L203_LF8 11664 0000a428 54000000 nop; not filled. 11665 0000a42c L173_LF8: 11666 0000a42c 30a10040 andi r1,r5,#64 11667 0000a430 64210000 snei r1,r1,#0 11668 0000a434 1420003c bnez r1,L175_LF8 11669 0000a438 54000000 nop; not filled. 11670 0000a43c 23bdfff0 addi r29,r29,#-16 11671 0000a440 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11672 0000a444 24210e40 addui r1,r1,(_currentPCB)&0xffff 11673 0000a448 8c210000 lw r1,(r1) 11674 0000a44c afa10000 sw (r29),r1 11675 0000a450 afa30004 sw 4(r29),r3 11676 0000a454 23c1ffc4 addi r1,r30,#-60 11677 0000a458 afa10008 sw 8(r29),r1 11678 0000a45c 20070004 addi r7,r0,#4 11679 0000a460 afa7000c sw 12(r29),r7 11680 0000a464 0fff911c jal _MemoryCopyUserToSystem 11681 0000a468 54000000 nop; not filled. 11682 0000a46c 08000024 j L206_LF8 11683 0000a470 54000000 nop; not filled. 11684 0000a474 L175_LF8: 11685 0000a474 23bdfff0 addi r29,r29,#-16 11686 0000a478 afa30000 sw (r29),r3 11687 0000a47c 23c1ffc4 addi r1,r30,#-60 11688 0000a480 afa10004 sw 4(r29),r1 11689 0000a484 20070004 addi r7,r0,#4 11690 0000a488 afa70008 sw 8(r29),r7 11691 0000a48c 0fff9d34 jal _bcopy 11692 0000a490 54000000 nop; not filled. 11693 0000a494 L206_LF8: 11694 0000a494 23bd0010 addi r29,r29,#16 11695 0000a498 23bdfff8 addi r29,r29,#-8 11696 0000a49c 8fc7ffc4 lw r7,-60(r30) 11697 0000a4a0 afa70000 sw (r29),r7 11698 0000a4a4 0fffea38 jal _SemHandleSignal 11699 0000a4a8 54000000 nop; not filled. 11700 0000a4ac 00011020 add r2,r0,r1 11701 0000a4b0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11702 0000a4b4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11703 0000a4b8 8c210000 lw r1,(r1) 11704 0000a4bc afa10000 sw (r29),r1 11705 0000a4c0 afa20004 sw 4(r29),r2 11706 0000a4c4 0fffa650 jal _ProcessSetResult 11707 0000a4c8 54000000 nop; not filled. 11708 0000a4cc 08000274 j L203_LF8 11709 0000a4d0 54000000 nop; not filled. 11710 0000a4d4 L177_LF8: 11711 0000a4d4 23bdfff8 addi r29,r29,#-8 11712 0000a4d8 3c070001 lhi r7,((LC8_LF8)>>16)&0xffff 11713 0000a4dc 24e73b90 addui r7,r7,(LC8_LF8)&0xffff 11714 0000a4e0 08000248 j L207_LF8 11715 0000a4e4 54000000 nop; not filled. 11716 0000a4e8 L124_LF8: 11717 0000a4e8 60410003 seqi r1,r2,#3 11718 0000a4ec 14200148 bnez r1,L193_LF8 11719 0000a4f0 54000000 nop; not filled. 11720 0000a4f4 6c410003 sgtui r1,r2,#3 11721 0000a4f8 14200024 bnez r1,L199_LF8 11722 0000a4fc 54000000 nop; not filled. 11723 0000a500 60410001 seqi r1,r2,#1 11724 0000a504 142001a8 bnez r1,L195_LF8 11725 0000a508 54000000 nop; not filled. 11726 0000a50c 60410002 seqi r1,r2,#2 11727 0000a510 1020020c beqz r1,L197_LF8 11728 0000a514 54000000 nop; not filled. 11729 0000a518 08000154 j L194_LF8 11730 0000a51c 54000000 nop; not filled. 11731 0000a520 L199_LF8: 11732 0000a520 60410040 seqi r1,r2,#64 11733 0000a524 14200038 bnez r1,L185_LF8 11734 0000a528 54000000 nop; not filled. 11735 0000a52c 6c410040 sgtui r1,r2,#64 11736 0000a530 14200018 bnez r1,L200_LF8 11737 0000a534 54000000 nop; not filled. 11738 0000a538 60410020 seqi r1,r2,#32 11739 0000a53c 102001e0 beqz r1,L197_LF8 11740 0000a540 54000000 nop; not filled. 11741 0000a544 080001c8 j L196_LF8 11742 0000a548 54000000 nop; not filled. 11743 0000a54c L200_LF8: 11744 0000a54c 60410048 seqi r1,r2,#72 11745 0000a550 102001cc beqz r1,L197_LF8 11746 0000a554 54000000 nop; not filled. 11747 0000a558 08000088 j L188_LF8 11748 0000a55c 54000000 nop; not filled. 11749 0000a560 L185_LF8: 11750 0000a560 23bdfff8 addi r29,r29,#-8 11751 0000a564 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11752 0000a568 24420d78 addui r2,r2,(_debugstr)&0xffff 11753 0000a56c afa20000 sw (r29),r2 11754 0000a570 20070074 addi r7,r0,#116 11755 0000a574 afa70004 sw 4(r29),r7 11756 0000a578 0fff98b8 jal _dindex 11757 0000a57c 54000000 nop; not filled. 11758 0000a580 23bd0008 addi r29,r29,#8 11759 0000a584 64210000 snei r1,r1,#0 11760 0000a588 1420002c bnez r1,L187_LF8 11761 0000a58c 54000000 nop; not filled. 11762 0000a590 23bdfff8 addi r29,r29,#-8 11763 0000a594 afa20000 sw (r29),r2 11764 0000a598 2007002b addi r7,r0,#43 11765 0000a59c afa70004 sw 4(r29),r7 11766 0000a5a0 0fff9890 jal _dindex 11767 0000a5a4 54000000 nop; not filled. 11768 0000a5a8 23bd0008 addi r29,r29,#8 11769 0000a5ac 64210000 snei r1,r1,#0 11770 0000a5b0 10200020 beqz r1,L186_LF8 11771 0000a5b4 54000000 nop; not filled. 11772 0000a5b8 L187_LF8: 11773 0000a5b8 23bdfff8 addi r29,r29,#-8 11774 0000a5bc 3c070001 lhi r7,((LC9_LF8)>>16)&0xffff 11775 0000a5c0 24e73bbc addui r7,r7,(LC9_LF8)&0xffff 11776 0000a5c4 L209_LF8: 11777 0000a5c4 afa70000 sw (r29),r7 11778 0000a5c8 0c000b04 jal _printf 11779 0000a5cc 54000000 nop; not filled. 11780 0000a5d0 23bd0008 addi r29,r29,#8 11781 0000a5d4 L186_LF8: 11782 0000a5d4 0fffa574 jal _ProcessSchedule 11783 0000a5d8 54000000 nop; not filled. 11784 0000a5dc 08000168 j L183_LF8 11785 0000a5e0 54000000 nop; not filled. 11786 0000a5e4 L188_LF8: 11787 0000a5e4 3c04fff0 lhi r4,#-16 11788 0000a5e8 248401a0 addui r4,r4,#416 11789 0000a5ec 3c03fff0 lhi r3,#-16 11790 0000a5f0 24630180 addui r3,r3,#384 11791 0000a5f4 L189_LF8: 11792 0000a5f4 8c820000 lw r2,(r4) 11793 0000a5f8 8c610000 lw r1,(r3) 11794 0000a5fc 23bdfff0 addi r29,r29,#-16 11795 0000a600 3c070001 lhi r7,((LC10_LF8)>>16)&0xffff 11796 0000a604 24e73bd4 addui r7,r7,(LC10_LF8)&0xffff 11797 0000a608 afa70000 sw (r29),r7 11798 0000a60c afa10004 sw 4(r29),r1 11799 0000a610 afa10008 sw 8(r29),r1 11800 0000a614 afa2000c sw 12(r29),r2 11801 0000a618 0c000ab4 jal _printf 11802 0000a61c 54000000 nop; not filled. 11803 0000a620 23bd0010 addi r29,r29,#16 11804 0000a624 6c410001 sgti r1,r2,#1 11805 0000a628 1020011c beqz r1,L183_LF8 11806 0000a62c 54000000 nop; not filled. 11807 0000a630 0bffffc0 j L189_LF8 11808 0000a634 54000000 nop; not filled. 11809 0000a638 L193_LF8: 11810 0000a638 23bdfff8 addi r29,r29,#-8 11811 0000a63c 3c070001 lhi r7,((LC11_LF8)>>16)&0xffff 11812 0000a640 24e73c0c addui r7,r7,(LC11_LF8)&0xffff 11813 0000a644 afa70000 sw (r29),r7 11814 0000a648 0c000a84 jal _printf 11815 0000a64c 54000000 nop; not filled. 11816 0000a650 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11817 0000a654 24210e40 addui r1,r1,(_currentPCB)&0xffff 11818 0000a658 8c210000 lw r1,(r1) 11819 0000a65c afa10000 sw (r29),r1 11820 0000a660 0fffd434 jal _ProcessKill 11821 0000a664 54000000 nop; not filled. 11822 0000a668 080000d8 j L203_LF8 11823 0000a66c 54000000 nop; not filled. 11824 0000a670 L194_LF8: 11825 0000a670 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11826 0000a674 24210e40 addui r1,r1,(_currentPCB)&0xffff 11827 0000a678 8c210000 lw r1,(r1) 11828 0000a67c 23bdfff8 addi r29,r29,#-8 11829 0000a680 3c070001 lhi r7,((LC12_LF8)>>16)&0xffff 11830 0000a684 24e73c1c addui r7,r7,(LC12_LF8)&0xffff 11831 0000a688 afa70000 sw (r29),r7 11832 0000a68c 20210010 addi r1,r1,#16 11833 0000a690 afa10004 sw 4(r29),r1 11834 0000a694 0c000a38 jal _printf 11835 0000a698 54000000 nop; not filled. 11836 0000a69c 23bdfff8 addi r29,r29,#-8 11837 0000a6a0 3c070001 lhi r7,((LC13_LF8)>>16)&0xffff 11838 0000a6a4 24e73c30 addui r7,r7,(LC13_LF8)&0xffff 11839 0000a6a8 0800003c j L208_LF8 11840 0000a6ac 54000000 nop; not filled. 11841 0000a6b0 L195_LF8: 11842 0000a6b0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11843 0000a6b4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11844 0000a6b8 8c210000 lw r1,(r1) 11845 0000a6bc 23bdfff8 addi r29,r29,#-8 11846 0000a6c0 3c070001 lhi r7,((LC12_LF8)>>16)&0xffff 11847 0000a6c4 24e73c1c addui r7,r7,(LC12_LF8)&0xffff 11848 0000a6c8 afa70000 sw (r29),r7 11849 0000a6cc 20210010 addi r1,r1,#16 11850 0000a6d0 afa10004 sw 4(r29),r1 11851 0000a6d4 0c0009f8 jal _printf 11852 0000a6d8 54000000 nop; not filled. 11853 0000a6dc 23bdfff8 addi r29,r29,#-8 11854 0000a6e0 3c070001 lhi r7,((LC14_LF8)>>16)&0xffff 11855 0000a6e4 24e73c68 addui r7,r7,(LC14_LF8)&0xffff 11856 0000a6e8 L208_LF8: 11857 0000a6e8 afa70000 sw (r29),r7 11858 0000a6ec afa60004 sw 4(r29),r6 11859 0000a6f0 afa50008 sw 8(r29),r5 11860 0000a6f4 0c0009d8 jal _printf 11861 0000a6f8 54000000 nop; not filled. 11862 0000a6fc 0c0009b8 jal _exitsim 11863 0000a700 54000000 nop; not filled. 11864 0000a704 23bd0010 addi r29,r29,#16 11865 0000a708 0800003c j L183_LF8 11866 0000a70c 54000000 nop; not filled. 11867 0000a710 L196_LF8: 11868 0000a710 0fffd3b0 jal _PageFaultHandler 11869 0000a714 54000000 nop; not filled. 11870 0000a718 0800002c j L183_LF8 11871 0000a71c 54000000 nop; not filled. 11872 0000a720 L197_LF8: 11873 0000a720 23bdfff8 addi r29,r29,#-8 11874 0000a724 3c070001 lhi r7,((LC15_LF8)>>16)&0xffff 11875 0000a728 24e73ca4 addui r7,r7,(LC15_LF8)&0xffff 11876 0000a72c L207_LF8: 11877 0000a72c afa70000 sw (r29),r7 11878 0000a730 afa20004 sw 4(r29),r2 11879 0000a734 0c000998 jal _printf 11880 0000a738 54000000 nop; not filled. 11881 0000a73c 0c000978 jal _exitsim 11882 0000a740 54000000 nop; not filled. 11883 0000a744 L203_LF8: 11884 0000a744 23bd0008 addi r29,r29,#8 11885 0000a748 L183_LF8: 11886 0000a748 23bdfff8 addi r29,r29,#-8 11887 0000a74c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11888 0000a750 24420d78 addui r2,r2,(_debugstr)&0xffff 11889 0000a754 afa20000 sw (r29),r2 11890 0000a758 20070074 addi r7,r0,#116 11891 0000a75c afa70004 sw 4(r29),r7 11892 0000a760 0fff96d0 jal _dindex 11893 0000a764 54000000 nop; not filled. 11894 0000a768 23bd0008 addi r29,r29,#8 11895 0000a76c 64210000 snei r1,r1,#0 11896 0000a770 1420002c bnez r1,L202_LF8 11897 0000a774 54000000 nop; not filled. 11898 0000a778 23bdfff8 addi r29,r29,#-8 11899 0000a77c afa20000 sw (r29),r2 11900 0000a780 2007002b addi r7,r0,#43 11901 0000a784 afa70004 sw 4(r29),r7 11902 0000a788 0fff96a8 jal _dindex 11903 0000a78c 54000000 nop; not filled. 11904 0000a790 23bd0008 addi r29,r29,#8 11905 0000a794 64210000 snei r1,r1,#0 11906 0000a798 10200020 beqz r1,L201_LF8 11907 0000a79c 54000000 nop; not filled. 11908 0000a7a0 L202_LF8: 11909 0000a7a0 23bdfff8 addi r29,r29,#-8 11910 0000a7a4 3c070001 lhi r7,((LC16_LF8)>>16)&0xffff 11911 0000a7a8 24e73cdc addui r7,r7,(LC16_LF8)&0xffff 11912 0000a7ac afa70000 sw (r29),r7 11913 0000a7b0 0c00091c jal _printf 11914 0000a7b4 54000000 nop; not filled. 11915 0000a7b8 23bd0008 addi r29,r29,#8 11916 0000a7bc L201_LF8: 11917 0000a7bc 0fff69a8 jal _intrreturn 11918 0000a7c0 54000000 nop; not filled. 11919 0000a7c4 8fa20000 lw r2,0(r29) 11920 0000a7c8 8fa30004 lw r3,4(r29) 11921 0000a7cc 8fa40008 lw r4,8(r29) 11922 0000a7d0 8fa5000c lw r5,12(r29) 11923 0000a7d4 8fa60010 lw r6,16(r29) 11924 0000a7d8 8fa70014 lw r7,20(r29) 11925 0000a7dc 8fdffff8 lw r31,-8(r30) 11926 0000a7e0 001ee820 add r29,r0,r30 11927 0000a7e4 8fdefffc lw r30,-4(r30) 11928 0000a7e8 4be00000 jr r31 11929 0000a7ec 54000000 nop 11930 0000a7f0 .endproc _dointerrupt 11931 ; Compiled by GCC 11933 0000a7f0 .align 2 11934 0000a7f0 .proc _isspace 11935 0000a7f0 .global _isspace 11936 0000a7f0 _isspace: 11937 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 11938 0000a7f0 afbefffc sw -4(r29),r30; push fp 11939 0000a7f4 001df020 add r30,r0,r29; fp = sp 11940 0000a7f8 afbffff8 sw -8(r29),r31; push ret addr 11941 0000a7fc 2fbd0010 subui r29,r29,#16; alloc local storage 11942 0000a800 afa20000 sw 0(r29),r2 11943 0000a804 83c20003 lb r2,3(r30) 11944 0000a808 201f0000 addi r31,r0,#0 11945 0000a80c 304100ff andi r1,r2,#0x00ff 11946 0000a810 60210020 seqi r1,r1,#32 11947 0000a814 14200018 bnez r1,L6_LF9 11948 0000a818 54000000 nop; not filled. 11949 0000a81c 2041fff7 addi r1,r2,#-9 11950 0000a820 302100ff andi r1,r1,#0x00ff 11951 0000a824 70210001 sleui r1,r1,#1 11952 0000a828 10200008 beqz r1,L5_LF9 11953 0000a82c 54000000 nop; not filled. 11954 0000a830 L6_LF9: 11955 0000a830 201f0001 addi r31,r0,#1 11956 0000a834 L5_LF9: 11957 0000a834 001f0820 add r1,r0,r31 11958 0000a838 8fa20000 lw r2,0(r29) 11959 0000a83c 8fdffff8 lw r31,-8(r30) 11960 0000a840 001ee820 add r29,r0,r30 11961 0000a844 8fdefffc lw r30,-4(r30) 11962 0000a848 4be00000 jr r31 11963 0000a84c 54000000 nop 11964 0000a850 .endproc _isspace 11965 0000a850 .align 2 11966 0000a850 .proc _isxdigit 11967 0000a850 .global _isxdigit 11968 0000a850 _isxdigit: 11969 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 11970 0000a850 afbefffc sw -4(r29),r30; push fp 11971 0000a854 001df020 add r30,r0,r29; fp = sp 11972 0000a858 afbffff8 sw -8(r29),r31; push ret addr 11973 0000a85c 2fbd0010 subui r29,r29,#16; alloc local storage 11974 0000a860 afa20000 sw 0(r29),r2 11975 0000a864 83df0003 lb r31,3(r30) 11976 0000a868 20020000 addi r2,r0,#0 11977 0000a86c 23e1ffd0 addi r1,r31,#-48 11978 0000a870 302100ff andi r1,r1,#0x00ff 11979 0000a874 70210009 sleui r1,r1,#9 11980 0000a878 14200028 bnez r1,L12_LF9 11981 0000a87c 54000000 nop; not filled. 11982 0000a880 23e1ff9f addi r1,r31,#-97 11983 0000a884 302100ff andi r1,r1,#0x00ff 11984 0000a888 70210005 sleui r1,r1,#5 11985 0000a88c 14200014 bnez r1,L12_LF9 11986 0000a890 54000000 nop; not filled. 11987 0000a894 33e100ff andi r1,r31,#0x00ff 11988 0000a898 64210041 snei r1,r1,#65 11989 0000a89c 14200008 bnez r1,L11_LF9 11990 0000a8a0 54000000 nop; not filled. 11991 0000a8a4 L12_LF9: 11992 0000a8a4 20020001 addi r2,r0,#1 11993 0000a8a8 L11_LF9: 11994 0000a8a8 00020820 add r1,r0,r2 11995 0000a8ac 8fa20000 lw r2,0(r29) 11996 0000a8b0 8fdffff8 lw r31,-8(r30) 11997 0000a8b4 001ee820 add r29,r0,r30 11998 0000a8b8 8fdefffc lw r30,-4(r30) 11999 0000a8bc 4be00000 jr r31 12000 0000a8c0 54000000 nop 12001 0000a8c4 .endproc _isxdigit 12002 0000a8c4 .align 2 12003 0000a8c4 .proc _DisableIntrs 12004 0000a8c4 .global _DisableIntrs 12005 0000a8c4 _DisableIntrs: 12006 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 12007 0000a8c4 afbefffc sw -4(r29),r30; push fp 12008 0000a8c8 001df020 add r30,r0,r29; fp = sp 12009 0000a8cc afbffff8 sw -8(r29),r31; push ret addr 12010 0000a8d0 2fbd0010 subui r29,r29,#16; alloc local storage 12011 0000a8d4 afa20000 sw 0(r29),r2 12012 0000a8d8 23bdfff8 addi r29,r29,#-8 12013 0000a8dc 2002000f addi r2,r0,#15 12014 0000a8e0 afa20000 sw (r29),r2 12015 0000a8e4 0fff69a0 jal _SetIntrs 12016 0000a8e8 54000000 nop; not filled. 12017 0000a8ec 23bd0008 addi r29,r29,#8 12018 0000a8f0 8fa20000 lw r2,0(r29) 12019 0000a8f4 8fdffff8 lw r31,-8(r30) 12020 0000a8f8 001ee820 add r29,r0,r30 12021 0000a8fc 8fdefffc lw r30,-4(r30) 12022 0000a900 4be00000 jr r31 12023 0000a904 54000000 nop 12024 0000a908 .endproc _DisableIntrs 12025 0000a908 .align 2 12026 0000a908 .proc _EnableIntrs 12027 0000a908 .global _EnableIntrs 12028 0000a908 _EnableIntrs: 12029 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 12030 0000a908 afbefffc sw -4(r29),r30; push fp 12031 0000a90c 001df020 add r30,r0,r29; fp = sp 12032 0000a910 afbffff8 sw -8(r29),r31; push ret addr 12033 0000a914 2fbd0010 subui r29,r29,#16; alloc local storage 12034 0000a918 afa20000 sw 0(r29),r2 12035 0000a91c 23bdfff8 addi r29,r29,#-8 12036 0000a920 20020000 addi r2,r0,#0 12037 0000a924 afa20000 sw (r29),r2 12038 0000a928 0fff695c jal _SetIntrs 12039 0000a92c 54000000 nop; not filled. 12040 0000a930 23bd0008 addi r29,r29,#8 12041 0000a934 8fa20000 lw r2,0(r29) 12042 0000a938 8fdffff8 lw r31,-8(r30) 12043 0000a93c 001ee820 add r29,r0,r30 12044 0000a940 8fdefffc lw r30,-4(r30) 12045 0000a944 4be00000 jr r31 12046 0000a948 54000000 nop 12047 0000a94c .endproc _EnableIntrs 12048 0000a94c .align 2 12049 0000a94c .proc _RestoreIntrs 12050 0000a94c .global _RestoreIntrs 12051 0000a94c _RestoreIntrs: 12052 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 12053 0000a94c afbefffc sw -4(r29),r30; push fp 12054 0000a950 001df020 add r30,r0,r29; fp = sp 12055 0000a954 afbffff8 sw -8(r29),r31; push ret addr 12056 0000a958 2fbd0010 subui r29,r29,#16; alloc local storage 12057 0000a95c afa20000 sw 0(r29),r2 12058 0000a960 23bdfff8 addi r29,r29,#-8 12059 0000a964 8fc20000 lw r2,(r30) 12060 0000a968 afa20000 sw (r29),r2 12061 0000a96c 0fff6918 jal _SetIntrs 12062 0000a970 54000000 nop; not filled. 12063 0000a974 23bd0008 addi r29,r29,#8 12064 0000a978 8fa20000 lw r2,0(r29) 12065 0000a97c 8fdffff8 lw r31,-8(r30) 12066 0000a980 001ee820 add r29,r0,r30 12067 0000a984 8fdefffc lw r30,-4(r30) 12068 0000a988 4be00000 jr r31 12069 0000a98c 54000000 nop 12070 0000a990 .endproc _RestoreIntrs 12071 0000a990 .align 2 12072 0000a990 .proc _QueueLinkInit 12073 0000a990 .global _QueueLinkInit 12074 0000a990 _QueueLinkInit: 12075 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 12076 0000a990 afbefffc sw -4(r29),r30; push fp 12077 0000a994 001df020 add r30,r0,r29; fp = sp 12078 0000a998 afbffff8 sw -8(r29),r31; push ret addr 12079 0000a99c 2fbd0010 subui r29,r29,#16; alloc local storage 12080 0000a9a0 afa20000 sw 0(r29),r2 12081 0000a9a4 8fc10000 lw r1,(r30) 12082 0000a9a8 8fc20004 lw r2,4(r30) 12083 0000a9ac 201f0000 addi r31,r0,#0 12084 0000a9b0 ac3f0000 sw (r1),r31 12085 0000a9b4 ac22000c sw 12(r1),r2 12086 0000a9b8 8fa20000 lw r2,0(r29) 12087 0000a9bc 8fdffff8 lw r31,-8(r30) 12088 0000a9c0 001ee820 add r29,r0,r30 12089 0000a9c4 8fdefffc lw r30,-4(r30) 12090 0000a9c8 4be00000 jr r31 12091 0000a9cc 54000000 nop 12092 0000a9d0 .endproc _QueueLinkInit 12093 0000a9d0 .align 2 12094 0000a9d0 .proc _QueueNext 12095 0000a9d0 .global _QueueNext 12096 0000a9d0 _QueueNext: 12097 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 12098 0000a9d0 afbefffc sw -4(r29),r30; push fp 12099 0000a9d4 001df020 add r30,r0,r29; fp = sp 12100 0000a9d8 afbffff8 sw -8(r29),r31; push ret addr 12101 0000a9dc 2fbd0008 subui r29,r29,#8; alloc local storage 12102 0000a9e0 8fc10000 lw r1,(r30) 12103 0000a9e4 8c210000 lw r1,(r1) 12104 0000a9e8 8fdffff8 lw r31,-8(r30) 12105 0000a9ec 001ee820 add r29,r0,r30 12106 0000a9f0 8fdefffc lw r30,-4(r30) 12107 0000a9f4 4be00000 jr r31 12108 0000a9f8 54000000 nop 12109 0000a9fc .endproc _QueueNext 12110 0000a9fc .align 2 12111 0000a9fc .proc _QueuePrev 12112 0000a9fc .global _QueuePrev 12113 0000a9fc _QueuePrev: 12114 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 12115 0000a9fc afbefffc sw -4(r29),r30; push fp 12116 0000aa00 001df020 add r30,r0,r29; fp = sp 12117 0000aa04 afbffff8 sw -8(r29),r31; push ret addr 12118 0000aa08 2fbd0008 subui r29,r29,#8; alloc local storage 12119 0000aa0c 8fc10000 lw r1,(r30) 12120 0000aa10 8c210004 lw r1,4(r1) 12121 0000aa14 8fdffff8 lw r31,-8(r30) 12122 0000aa18 001ee820 add r29,r0,r30 12123 0000aa1c 8fdefffc lw r30,-4(r30) 12124 0000aa20 4be00000 jr r31 12125 0000aa24 54000000 nop 12126 0000aa28 .endproc _QueuePrev 12127 0000aa28 .align 2 12128 0000aa28 .proc _QueueFirst 12129 0000aa28 .global _QueueFirst 12130 0000aa28 _QueueFirst: 12131 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 12132 0000aa28 afbefffc sw -4(r29),r30; push fp 12133 0000aa2c 001df020 add r30,r0,r29; fp = sp 12134 0000aa30 afbffff8 sw -8(r29),r31; push ret addr 12135 0000aa34 2fbd0008 subui r29,r29,#8; alloc local storage 12136 0000aa38 8fc10000 lw r1,(r30) 12137 0000aa3c 8c210000 lw r1,(r1) 12138 0000aa40 8fdffff8 lw r31,-8(r30) 12139 0000aa44 001ee820 add r29,r0,r30 12140 0000aa48 8fdefffc lw r30,-4(r30) 12141 0000aa4c 4be00000 jr r31 12142 0000aa50 54000000 nop 12143 0000aa54 .endproc _QueueFirst 12144 0000aa54 .align 2 12145 0000aa54 .proc _QueueLast 12146 0000aa54 .global _QueueLast 12147 0000aa54 _QueueLast: 12148 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 12149 0000aa54 afbefffc sw -4(r29),r30; push fp 12150 0000aa58 001df020 add r30,r0,r29; fp = sp 12151 0000aa5c afbffff8 sw -8(r29),r31; push ret addr 12152 0000aa60 2fbd0008 subui r29,r29,#8; alloc local storage 12153 0000aa64 8fc10000 lw r1,(r30) 12154 0000aa68 8c210004 lw r1,4(r1) 12155 0000aa6c 8fdffff8 lw r31,-8(r30) 12156 0000aa70 001ee820 add r29,r0,r30 12157 0000aa74 8fdefffc lw r30,-4(r30) 12158 0000aa78 4be00000 jr r31 12159 0000aa7c 54000000 nop 12160 0000aa80 .endproc _QueueLast 12161 0000aa80 .align 2 12162 0000aa80 .proc _QueueInsertAfter 12163 0000aa80 .global _QueueInsertAfter 12164 0000aa80 _QueueInsertAfter: 12165 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 12166 0000aa80 afbefffc sw -4(r29),r30; push fp 12167 0000aa84 001df020 add r30,r0,r29; fp = sp 12168 0000aa88 afbffff8 sw -8(r29),r31; push ret addr 12169 0000aa8c 2fbd0010 subui r29,r29,#16; alloc local storage 12170 0000aa90 afa20000 sw 0(r29),r2 12171 0000aa94 afa30004 sw 4(r29),r3 12172 0000aa98 8fc30000 lw r3,(r30) 12173 0000aa9c 8fc20004 lw r2,4(r30) 12174 0000aaa0 8fc10008 lw r1,8(r30) 12175 0000aaa4 ac230008 sw 8(r1),r3 12176 0000aaa8 ac220004 sw 4(r1),r2 12177 0000aaac 8c5f0000 lw r31,(r2) 12178 0000aab0 ac3f0000 sw (r1),r31 12179 0000aab4 ac410000 sw (r2),r1 12180 0000aab8 8c220000 lw r2,(r1) 12181 0000aabc ac410004 sw 4(r2),r1 12182 0000aac0 8c610008 lw r1,8(r3) 12183 0000aac4 20210001 addi r1,r1,#1 12184 0000aac8 ac610008 sw 8(r3),r1 12185 0000aacc 8fa20000 lw r2,0(r29) 12186 0000aad0 8fa30004 lw r3,4(r29) 12187 0000aad4 8fdffff8 lw r31,-8(r30) 12188 0000aad8 001ee820 add r29,r0,r30 12189 0000aadc 8fdefffc lw r30,-4(r30) 12190 0000aae0 4be00000 jr r31 12191 0000aae4 54000000 nop 12192 0000aae8 .endproc _QueueInsertAfter 12193 0000aae8 .align 2 12194 0000aae8 .proc _QueueInsertFirst 12195 0000aae8 .global _QueueInsertFirst 12196 0000aae8 _QueueInsertFirst: 12197 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 12198 0000aae8 afbefffc sw -4(r29),r30; push fp 12199 0000aaec 001df020 add r30,r0,r29; fp = sp 12200 0000aaf0 afbffff8 sw -8(r29),r31; push ret addr 12201 0000aaf4 2fbd0010 subui r29,r29,#16; alloc local storage 12202 0000aaf8 afa20000 sw 0(r29),r2 12203 0000aafc afa30004 sw 4(r29),r3 12204 0000ab00 8fc30000 lw r3,(r30) 12205 0000ab04 8fc10004 lw r1,4(r30) 12206 0000ab08 ac230008 sw 8(r1),r3 12207 0000ab0c ac230004 sw 4(r1),r3 12208 0000ab10 8c7f0000 lw r31,(r3) 12209 0000ab14 ac3f0000 sw (r1),r31 12210 0000ab18 ac610000 sw (r3),r1 12211 0000ab1c 8c220000 lw r2,(r1) 12212 0000ab20 ac410004 sw 4(r2),r1 12213 0000ab24 8c610008 lw r1,8(r3) 12214 0000ab28 20210001 addi r1,r1,#1 12215 0000ab2c ac610008 sw 8(r3),r1 12216 0000ab30 8fa20000 lw r2,0(r29) 12217 0000ab34 8fa30004 lw r3,4(r29) 12218 0000ab38 8fdffff8 lw r31,-8(r30) 12219 0000ab3c 001ee820 add r29,r0,r30 12220 0000ab40 8fdefffc lw r30,-4(r30) 12221 0000ab44 4be00000 jr r31 12222 0000ab48 54000000 nop 12223 0000ab4c .endproc _QueueInsertFirst 12224 0000ab4c .align 2 12225 0000ab4c .proc _QueueInsertLast 12226 0000ab4c .global _QueueInsertLast 12227 0000ab4c _QueueInsertLast: 12228 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 12229 0000ab4c afbefffc sw -4(r29),r30; push fp 12230 0000ab50 001df020 add r30,r0,r29; fp = sp 12231 0000ab54 afbffff8 sw -8(r29),r31; push ret addr 12232 0000ab58 2fbd0010 subui r29,r29,#16; alloc local storage 12233 0000ab5c afa20000 sw 0(r29),r2 12234 0000ab60 afa30004 sw 4(r29),r3 12235 0000ab64 8fc30000 lw r3,(r30) 12236 0000ab68 8fc10004 lw r1,4(r30) 12237 0000ab6c 8c620004 lw r2,4(r3) 12238 0000ab70 ac230008 sw 8(r1),r3 12239 0000ab74 ac220004 sw 4(r1),r2 12240 0000ab78 8c5f0000 lw r31,(r2) 12241 0000ab7c ac3f0000 sw (r1),r31 12242 0000ab80 ac410000 sw (r2),r1 12243 0000ab84 8c220000 lw r2,(r1) 12244 0000ab88 ac410004 sw 4(r2),r1 12245 0000ab8c 8c610008 lw r1,8(r3) 12246 0000ab90 20210001 addi r1,r1,#1 12247 0000ab94 ac610008 sw 8(r3),r1 12248 0000ab98 8fa20000 lw r2,0(r29) 12249 0000ab9c 8fa30004 lw r3,4(r29) 12250 0000aba0 8fdffff8 lw r31,-8(r30) 12251 0000aba4 001ee820 add r29,r0,r30 12252 0000aba8 8fdefffc lw r30,-4(r30) 12253 0000abac 4be00000 jr r31 12254 0000abb0 54000000 nop 12255 0000abb4 .endproc _QueueInsertLast 12256 0000abb4 .align 2 12257 0000abb4 .proc _QueueRemove 12258 0000abb4 .global _QueueRemove 12259 0000abb4 _QueueRemove: 12260 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 12261 0000abb4 afbefffc sw -4(r29),r30; push fp 12262 0000abb8 001df020 add r30,r0,r29; fp = sp 12263 0000abbc afbffff8 sw -8(r29),r31; push ret addr 12264 0000abc0 2fbd0010 subui r29,r29,#16; alloc local storage 12265 0000abc4 afa20000 sw 0(r29),r2 12266 0000abc8 afa30004 sw 4(r29),r3 12267 0000abcc 8fdf0000 lw r31,(r30) 12268 0000abd0 8fe10008 lw r1,8(r31) 12269 0000abd4 8c210008 lw r1,8(r1) 12270 0000abd8 6c210000 sgti r1,r1,#0 12271 0000abdc 1020002c beqz r1,L44_LF9 12272 0000abe0 54000000 nop; not filled. 12273 0000abe4 8fe10004 lw r1,4(r31) 12274 0000abe8 8fe30000 lw r3,(r31) 12275 0000abec ac230000 sw (r1),r3 12276 0000abf0 8fe10000 lw r1,(r31) 12277 0000abf4 8fe30004 lw r3,4(r31) 12278 0000abf8 ac230004 sw 4(r1),r3 12279 0000abfc 8fe20008 lw r2,8(r31) 12280 0000ac00 8c410008 lw r1,8(r2) 12281 0000ac04 2021ffff addi r1,r1,#-1 12282 0000ac08 ac410008 sw 8(r2),r1 12283 0000ac0c L44_LF9: 12284 0000ac0c 20030000 addi r3,r0,#0 12285 0000ac10 afe30000 sw (r31),r3 12286 0000ac14 8fa20000 lw r2,0(r29) 12287 0000ac18 8fa30004 lw r3,4(r29) 12288 0000ac1c 8fdffff8 lw r31,-8(r30) 12289 0000ac20 001ee820 add r29,r0,r30 12290 0000ac24 8fdefffc lw r30,-4(r30) 12291 0000ac28 4be00000 jr r31 12292 0000ac2c 54000000 nop 12293 0000ac30 .endproc _QueueRemove 12294 0000ac30 .align 2 12295 0000ac30 .proc _QueueLength 12296 0000ac30 .global _QueueLength 12297 0000ac30 _QueueLength: 12298 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 12299 0000ac30 afbefffc sw -4(r29),r30; push fp 12300 0000ac34 001df020 add r30,r0,r29; fp = sp 12301 0000ac38 afbffff8 sw -8(r29),r31; push ret addr 12302 0000ac3c 2fbd0008 subui r29,r29,#8; alloc local storage 12303 0000ac40 8fc10000 lw r1,(r30) 12304 0000ac44 8c210008 lw r1,8(r1) 12305 0000ac48 8fdffff8 lw r31,-8(r30) 12306 0000ac4c 001ee820 add r29,r0,r30 12307 0000ac50 8fdefffc lw r30,-4(r30) 12308 0000ac54 4be00000 jr r31 12309 0000ac58 54000000 nop 12310 0000ac5c .endproc _QueueLength 12311 0000ac5c .align 2 12312 0000ac5c .proc _QueueEmpty 12313 0000ac5c .global _QueueEmpty 12314 0000ac5c _QueueEmpty: 12315 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 12316 0000ac5c afbefffc sw -4(r29),r30; push fp 12317 0000ac60 001df020 add r30,r0,r29; fp = sp 12318 0000ac64 afbffff8 sw -8(r29),r31; push ret addr 12319 0000ac68 2fbd0008 subui r29,r29,#8; alloc local storage 12320 0000ac6c 8fc10000 lw r1,(r30) 12321 0000ac70 8c210008 lw r1,8(r1) 12322 0000ac74 60210000 seqi r1,r1,#0 12323 0000ac78 8fdffff8 lw r31,-8(r30) 12324 0000ac7c 001ee820 add r29,r0,r30 12325 0000ac80 8fdefffc lw r30,-4(r30) 12326 0000ac84 4be00000 jr r31 12327 0000ac88 54000000 nop 12328 0000ac8c .endproc _QueueEmpty 12329 0000ac8c .data 12330 00013cff .align 2 12331 00013d00 LC0_LF9: 12332 00013d00 50726f63 .ascii "Process #\000" 12332 00013d04 65737320 12332 00013d08 2300 12333 00013d0a .align 2 12334 00013d0c LC1_LF9: 12335 00013d0c 52756e6e .ascii "Running process %d (iteration %d)!\n\000" 12335 00013d10 696e6720 12335 00013d14 70726f63 12335 00013d18 65737320 12335 00013d1c 25642028 12335 00013d20 69746572 12335 00013d24 6174696f 12335 00013d28 6e202564 12335 00013d2c 29210a00 12336 00013d30 .text 12337 0000ac8c .align 2 12338 0000ac8c .proc _doSomething_LF9 12339 0000ac8c _doSomething_LF9: 12340 ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. 12341 0000ac8c afbefffc sw -4(r29),r30; push fp 12342 0000ac90 001df020 add r30,r0,r29; fp = sp 12343 0000ac94 afbffff8 sw -8(r29),r31; push ret addr 12344 0000ac98 2fbd0078 subui r29,r29,#120; alloc local storage 12345 0000ac9c afa20000 sw 0(r29),r2 12346 0000aca0 afa30004 sw 4(r29),r3 12347 0000aca4 afa40008 sw 8(r29),r4 12348 0000aca8 afa5000c sw 12(r29),r5 12349 0000acac afa60010 sw 16(r29),r6 12350 0000acb0 afa70014 sw 20(r29),r7 12351 0000acb4 afa80018 sw 24(r29),r8 12352 0000acb8 8fc60000 lw r6,(r30) 12353 0000acbc 2001000a addi r1,r0,#10 12354 0000acc0 00c00035 movi2fp f0,r6 12355 0000acc4 00200835 movi2fp f1,r1 12356 0000acc8 0401000f div f0,f0,f1 12357 0000accc 00001034 movfp2i r2,f0 12358 0000acd0 50410002 slli r1,r2,#0x2 12359 0000acd4 00220820 add r1,r1,r2 12360 0000acd8 50210001 slli r1,r1,#0x1 12361 0000acdc 00c13822 sub r7,r6,r1 12362 0000ace0 70c10063 slei r1,r6,#99 12363 0000ace4 102000dc beqz r1,L52_LF9 12364 0000ace8 54000000 nop; not filled. 12365 0000acec 23bdfff8 addi r29,r29,#-8 12366 0000acf0 50e10002 slli r1,r7,#0x2 12367 0000acf4 00270820 add r1,r1,r7 12368 0000acf8 50210002 slli r1,r1,#0x2 12369 0000acfc 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12370 0000ad00 25083da4 addui r8,r8,(_mysems_LF9)&0xffff 12371 0000ad04 00280820 add r1,r1,r8 12372 0000ad08 afa10000 sw (r29),r1 12373 0000ad0c 20080001 addi r8,r0,#1 12374 0000ad10 afa80004 sw 4(r29),r8 12375 0000ad14 0fffdb64 jal _SemInit 12376 0000ad18 54000000 nop; not filled. 12377 0000ad1c 20030001 addi r3,r0,#1 12378 0000ad20 23bd0008 addi r29,r29,#8 12379 0000ad24 23c4ffd0 addi r4,r30,#-48 12380 0000ad28 23c5ffa8 addi r5,r30,#-88 12381 0000ad2c 00061020 add r2,r0,r6 12382 0000ad30 L56_LF9: 12383 0000ad30 23bdfff8 addi r29,r29,#-8 12384 0000ad34 afa40000 sw (r29),r4 12385 0000ad38 3c080001 lhi r8,((LC0_LF9)>>16)&0xffff 12386 0000ad3c 25083d00 addui r8,r8,(LC0_LF9)&0xffff 12387 0000ad40 afa80004 sw 4(r29),r8 12388 0000ad44 0fff8c2c jal _dstrcpy 12389 0000ad48 54000000 nop; not filled. 12390 0000ad4c afa30000 sw (r29),r3 12391 0000ad50 afa50004 sw 4(r29),r5 12392 0000ad54 0fff9158 jal _ditoa 12393 0000ad58 54000000 nop; not filled. 12394 0000ad5c afa40000 sw (r29),r4 12395 0000ad60 afa50004 sw 4(r29),r5 12396 0000ad64 0fff8cfc jal _dstrcat 12397 0000ad68 54000000 nop; not filled. 12398 0000ad6c 23bdfff8 addi r29,r29,#-8 12399 0000ad70 3c080000 lhi r8,((_doSomething_LF9)>>16)&0xffff 12400 0000ad74 2508ac8c addui r8,r8,(_doSomething_LF9)&0xffff 12401 0000ad78 afa80000 sw (r29),r8 12402 0000ad7c 50410005 slli r1,r2,#0x5 12403 0000ad80 00220822 sub r1,r1,r2 12404 0000ad84 50210002 slli r1,r1,#0x2 12405 0000ad88 00220820 add r1,r1,r2 12406 0000ad8c 50210003 slli r1,r1,#0x3 12407 0000ad90 00260820 add r1,r1,r6 12408 0000ad94 afa10004 sw 4(r29),r1 12409 0000ad98 afa40008 sw 8(r29),r4 12410 0000ad9c 20080000 addi r8,r0,#0 12411 0000ada0 afa8000c sw 12(r29),r8 12412 0000ada4 0fffa824 jal _ProcessFork 12413 0000ada8 54000000 nop; not filled. 12414 0000adac 23bd0010 addi r29,r29,#16 12415 0000adb0 00461020 add r2,r2,r6 12416 0000adb4 20630001 addi r3,r3,#1 12417 0000adb8 70610006 slei r1,r3,#6 12418 0000adbc 1420ff70 bnez r1,L56_LF9 12419 0000adc0 54000000 nop; not filled. 12420 0000adc4 L52_LF9: 12421 0000adc4 23bdfff8 addi r29,r29,#-8 12422 0000adc8 50e10002 slli r1,r7,#0x2 12423 0000adcc 00270820 add r1,r1,r7 12424 0000add0 50210002 slli r1,r1,#0x2 12425 0000add4 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12426 0000add8 25083da4 addui r8,r8,(_mysems_LF9)&0xffff 12427 0000addc 00280820 add r1,r1,r8 12428 0000ade0 afa10000 sw (r29),r1 12429 0000ade4 0fffdbf0 jal _SemWait 12430 0000ade8 54000000 nop; not filled. 12431 0000adec 20030000 addi r3,r0,#0 12432 0000adf0 23bd0008 addi r29,r29,#8 12433 0000adf4 50c20001 slli r2,r6,#0x1 12434 0000adf8 0062082a slt r1,r3,r2 12435 0000adfc 10200070 beqz r1,L59_LF9 12436 0000ae00 54000000 nop; not filled. 12437 0000ae04 200503e8 addi r5,r0,#1000 12438 0000ae08 00022020 add r4,r0,r2 12439 0000ae0c L61_LF9: 12440 0000ae0c 00600035 movi2fp f0,r3 12441 0000ae10 00a00835 movi2fp f1,r5 12442 0000ae14 0401000f div f0,f0,f1 12443 0000ae18 00001034 movfp2i r2,f0 12444 0000ae1c 50410005 slli r1,r2,#0x5 12445 0000ae20 00220822 sub r1,r1,r2 12446 0000ae24 50210002 slli r1,r1,#0x2 12447 0000ae28 00220820 add r1,r1,r2 12448 0000ae2c 50210003 slli r1,r1,#0x3 12449 0000ae30 00610829 sne r1,r3,r1 12450 0000ae34 14200028 bnez r1,L62_LF9 12451 0000ae38 54000000 nop; not filled. 12452 0000ae3c 23bdfff0 addi r29,r29,#-16 12453 0000ae40 3c080001 lhi r8,((LC1_LF9)>>16)&0xffff 12454 0000ae44 25083d0c addui r8,r8,(LC1_LF9)&0xffff 12455 0000ae48 afa80000 sw (r29),r8 12456 0000ae4c afa60004 sw 4(r29),r6 12457 0000ae50 afa30008 sw 8(r29),r3 12458 0000ae54 0c000278 jal _printf 12459 0000ae58 54000000 nop; not filled. 12460 0000ae5c 23bd0010 addi r29,r29,#16 12461 0000ae60 L62_LF9: 12462 0000ae60 20630001 addi r3,r3,#1 12463 0000ae64 0064082a slt r1,r3,r4 12464 0000ae68 1420ffa0 bnez r1,L61_LF9 12465 0000ae6c 54000000 nop; not filled. 12466 0000ae70 L59_LF9: 12467 0000ae70 23bdfff8 addi r29,r29,#-8 12468 0000ae74 50e10002 slli r1,r7,#0x2 12469 0000ae78 00270820 add r1,r1,r7 12470 0000ae7c 50210002 slli r1,r1,#0x2 12471 0000ae80 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12472 0000ae84 25083da4 addui r8,r8,(_mysems_LF9)&0xffff 12473 0000ae88 00280820 add r1,r1,r8 12474 0000ae8c afa10000 sw (r29),r1 12475 0000ae90 0fffde54 jal _SemSignal 12476 0000ae94 54000000 nop; not filled. 12477 0000ae98 23bd0008 addi r29,r29,#8 12478 0000ae9c 8fa20000 lw r2,0(r29) 12479 0000aea0 8fa30004 lw r3,4(r29) 12480 0000aea4 8fa40008 lw r4,8(r29) 12481 0000aea8 8fa5000c lw r5,12(r29) 12482 0000aeac 8fa60010 lw r6,16(r29) 12483 0000aeb0 8fa70014 lw r7,20(r29) 12484 0000aeb4 8fa80018 lw r8,24(r29) 12485 0000aeb8 8fdffff8 lw r31,-8(r30) 12486 0000aebc 001ee820 add r29,r0,r30 12487 0000aec0 8fdefffc lw r30,-4(r30) 12488 0000aec4 4be00000 jr r31 12489 0000aec8 54000000 nop 12490 0000aecc .endproc _doSomething_LF9 12491 0000aecc .data 12492 00013d30 .align 2 12493 00013d30 LC2_LF9: 12494 00013d30 63686173 .ascii "chasetail\000" 12494 00013d34 65746169 12494 00013d38 6c00 12495 00013d3a .align 2 12496 00013d3c LC3_LF9: 12497 00013d3c 43686173 .ascii "Chasing tail %d.\n\000" 12497 00013d40 696e6720 12497 00013d44 7461696c 12497 00013d48 2025642e 12497 00013d4c 0a00 12498 00013d4e .align 2 12499 00013d50 LC4_LF9: 12500 00013d50 4f70656e .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" 12500 00013d54 206f6620 12500 00013d58 2825732c 12500 00013d5c 30782578 12500 00013d60 29207265 12500 00013d64 7475726e 12500 00013d68 73203078 12500 00013d6c 25782e0a 12500 00013d70 00 12501 00013d71 .align 2 12502 00013d74 LC5_LF9: 12503 00013d74 43686173 .ascii "ChaseTail\000" 12503 00013d78 65546169 12503 00013d7c 6c00 12504 00013d7e .text 12505 0000aecc .align 2 12506 0000aecc .proc _chaseTail_LF9 12507 0000aecc _chaseTail_LF9: 12508 ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. 12509 0000aecc afbefffc sw -4(r29),r30; push fp 12510 0000aed0 001df020 add r30,r0,r29; fp = sp 12511 0000aed4 afbffff8 sw -8(r29),r31; push ret addr 12512 0000aed8 2fbd0018 subui r29,r29,#24; alloc local storage 12513 0000aedc afa20000 sw 0(r29),r2 12514 0000aee0 afa30004 sw 4(r29),r3 12515 0000aee4 afa40008 sw 8(r29),r4 12516 0000aee8 afa5000c sw 12(r29),r5 12517 0000aeec 8fc40000 lw r4,(r30) 12518 0000aef0 3c030001 lhi r3,((LC2_LF9)>>16)&0xffff 12519 0000aef4 24633d30 addui r3,r3,(LC2_LF9)&0xffff 12520 0000aef8 23bdfff8 addi r29,r29,#-8 12521 0000aefc 3c050001 lhi r5,((LC3_LF9)>>16)&0xffff 12522 0000af00 24a53d3c addui r5,r5,(LC3_LF9)&0xffff 12523 0000af04 afa50000 sw (r29),r5 12524 0000af08 afa40004 sw 4(r29),r4 12525 0000af0c 0c0001c0 jal _printf 12526 0000af10 54000000 nop; not filled. 12527 0000af14 afa30000 sw (r29),r3 12528 0000af18 20822000 addi r2,r4,#8192 12529 0000af1c afa20004 sw 4(r29),r2 12530 0000af20 0c000158 jal _Open 12531 0000af24 54000000 nop; not filled. 12532 0000af28 23bdfff8 addi r29,r29,#-8 12533 0000af2c 3c050001 lhi r5,((LC4_LF9)>>16)&0xffff 12534 0000af30 24a53d50 addui r5,r5,(LC4_LF9)&0xffff 12535 0000af34 afa50000 sw (r29),r5 12536 0000af38 afa30004 sw 4(r29),r3 12537 0000af3c afa20008 sw 8(r29),r2 12538 0000af40 afa1000c sw 12(r29),r1 12539 0000af44 0c000188 jal _printf 12540 0000af48 54000000 nop; not filled. 12541 0000af4c 23bd0010 addi r29,r29,#16 12542 0000af50 70810027 slei r1,r4,#39 12543 0000af54 1020003c beqz r1,L67_LF9 12544 0000af58 54000000 nop; not filled. 12545 0000af5c 23bdfff0 addi r29,r29,#-16 12546 0000af60 3c050000 lhi r5,((_chaseTail_LF9)>>16)&0xffff 12547 0000af64 24a5aecc addui r5,r5,(_chaseTail_LF9)&0xffff 12548 0000af68 afa50000 sw (r29),r5 12549 0000af6c 20810001 addi r1,r4,#1 12550 0000af70 afa10004 sw 4(r29),r1 12551 0000af74 3c050001 lhi r5,((LC5_LF9)>>16)&0xffff 12552 0000af78 24a53d74 addui r5,r5,(LC5_LF9)&0xffff 12553 0000af7c afa50008 sw 8(r29),r5 12554 0000af80 20050000 addi r5,r0,#0 12555 0000af84 afa5000c sw 12(r29),r5 12556 0000af88 0fffa640 jal _ProcessFork 12557 0000af8c 54000000 nop; not filled. 12558 0000af90 23bd0010 addi r29,r29,#16 12559 0000af94 L67_LF9: 12560 0000af94 8fa20000 lw r2,0(r29) 12561 0000af98 8fa30004 lw r3,4(r29) 12562 0000af9c 8fa40008 lw r4,8(r29) 12563 0000afa0 8fa5000c lw r5,12(r29) 12564 0000afa4 8fdffff8 lw r31,-8(r30) 12565 0000afa8 001ee820 add r29,r0,r30 12566 0000afac 8fdefffc lw r30,-4(r30) 12567 0000afb0 4be00000 jr r31 12568 0000afb4 54000000 nop 12569 0000afb8 .endproc _chaseTail_LF9 12570 0000afb8 .data 12571 00013d7e .align 2 12572 00013d80 LC6_LF9: 12573 00013d80 25642000 .ascii "%d \000" 12574 00013d84 .align 2 12575 00013d84 LC7_LF9: 12576 00013d84 52616e64 .ascii "Random number %02i is 0x%08x.\n\000" 12576 00013d88 6f6d206e 12576 00013d8c 756d6265 12576 00013d90 72202530 12576 00013d94 32692069 12576 00013d98 73203078 12576 00013d9c 25303878 12576 00013da0 2e0a00 12577 00013da3 .text 12578 0000afb8 .align 2 12579 0000afb8 .proc _SysprocCreateProcesses 12580 0000afb8 .global _SysprocCreateProcesses 12581 0000afb8 _SysprocCreateProcesses: 12582 ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. 12583 0000afb8 afbefffc sw -4(r29),r30; push fp 12584 0000afbc 001df020 add r30,r0,r29; fp = sp 12585 0000afc0 afbffff8 sw -8(r29),r31; push ret addr 12586 0000afc4 2fbd0018 subui r29,r29,#24; alloc local storage 12587 0000afc8 afa20000 sw 0(r29),r2 12588 0000afcc afa30004 sw 4(r29),r3 12589 0000afd0 afa40008 sw 8(r29),r4 12590 0000afd4 3c020001 lhi r2,((_mysems_LF9)>>16)&0xffff 12591 0000afd8 24423da4 addui r2,r2,(_mysems_LF9)&0xffff 12592 0000afdc 204300b4 addi r3,r2,#180 12593 0000afe0 L90_LF9: 12594 0000afe0 23bdfff8 addi r29,r29,#-8 12595 0000afe4 afa20000 sw (r29),r2 12596 0000afe8 20040001 addi r4,r0,#1 12597 0000afec afa40004 sw 4(r29),r4 12598 0000aff0 0fffd888 jal _SemInit 12599 0000aff4 54000000 nop; not filled. 12600 0000aff8 23bd0008 addi r29,r29,#8 12601 0000affc 20420014 addi r2,r2,#20 12602 0000b000 0043082c sle r1,r2,r3 12603 0000b004 1420ffd8 bnez r1,L90_LF9 12604 0000b008 54000000 nop; not filled. 12605 0000b00c 8fa20000 lw r2,0(r29) 12606 0000b010 8fa30004 lw r3,4(r29) 12607 0000b014 8fa40008 lw r4,8(r29) 12608 0000b018 8fdffff8 lw r31,-8(r30) 12609 0000b01c 001ee820 add r29,r0,r30 12610 0000b020 8fdefffc lw r30,-4(r30) 12611 0000b024 4be00000 jr r31 12612 0000b028 54000000 nop 12613 0000b02c .endproc _SysprocCreateProcesses 12614 0000b02c .data 12615 00013da3 .align 2 12616 00013da4 _mysems_LF9: 12617 00013da4 .space 200 12618 ;;; This file just includes a single variable that contains the last address 12619 ;;; in the operating system. The rest of memory is available for use by 12620 ;;; processes. 12622 00013e6c .align 2 12623 00013e6c .global _lastosaddress 12624 00013e6c _lastosaddress: 12625 00013e6c 00013e74 .word _lastosaddress+8 12626 ;;; Ethan L. Miller, 1999. Released to the public domain 12627 ;;; 12628 ;;; Most of the traps are called in files from libtraps. 12630 00013e70 .text 12631 0000b02c .align 2 12632 0000b02c .proc _exit 12633 0000b02c .global _exit 12634 0000b02c _exit: 12635 0000b02c 44000300 trap #0x300 12636 0000b030 4be00000 jr r31 12637 0000b034 54000000 nop 12638 0000b038 .endproc _exit 12640 ; for the benefit of gcc. 12641 0000b038 .proc ___main 12642 0000b038 .global ___main 12643 0000b038 ___main: 12644 0000b038 4be00000 jr r31 12645 0000b03c 54000000 nop 12646 0000b040 .endproc ___main 12647 ;;; 12648 ;;; Stub functions for DLX traps. 12649 ;;; 12650 ;;; Ethan L. Miller, 1999. Released to the public domain. 12651 ;;; 12652 ;;; There are two sets of traps here. The traps such as Open and Close 12653 ;;; (note the capital letters) are for use by user programs. The traps 12654 ;;; with names such as open and close (lower case) are for use by the OS. 12655 ;;; 12658 0000b040 .align 2 12659 0000b040 .proc _open 12660 0000b040 .global _open 12661 0000b040 _open: 12662 0000b040 44002013 trap #0x2013 12663 0000b044 4be00000 jr r31 12664 0000b048 54000000 nop 12665 0000b04c .endproc _open 12667 0000b04c .proc _close 12668 0000b04c .global _close 12669 0000b04c _close: 12670 0000b04c 44002014 trap #0x2014 12671 0000b050 4be00000 jr r31 12672 0000b054 54000000 nop 12673 0000b058 .endproc _close 12675 0000b058 .proc _read 12676 0000b058 .global _read 12677 0000b058 _read: 12678 0000b058 44002010 trap #0x2010 12679 0000b05c 4be00000 jr r31 12680 0000b060 54000000 nop 12681 0000b064 .endproc _read 12683 0000b064 .proc _write 12684 0000b064 .global _write 12685 0000b064 _write: 12686 0000b064 44002011 trap #0x2011 12687 0000b068 4be00000 jr r31 12688 0000b06c 54000000 nop 12689 0000b070 .endproc _write 12691 0000b070 .proc _lseek 12692 0000b070 .global _lseek 12693 0000b070 _lseek: 12694 0000b070 44002012 trap #0x2012 12695 0000b074 4be00000 jr r31 12696 0000b078 54000000 nop 12697 0000b07c .endproc _lseek 12699 ;;; The following are the traps to be used by user-level programs 12700 ;;; 12702 0000b07c .align 2 12703 0000b07c .proc _Open 12704 0000b07c .global _Open 12705 0000b07c _Open: 12706 0000b07c 44000213 trap #0x213 12707 0000b080 4be00000 jr r31 12708 0000b084 54000000 nop 12709 0000b088 .endproc _Open 12711 0000b088 .proc _Close 12712 0000b088 .global _Close 12713 0000b088 _Close: 12714 0000b088 44000214 trap #0x214 12715 0000b08c 4be00000 jr r31 12716 0000b090 54000000 nop 12717 0000b094 .endproc _Close 12719 0000b094 .proc _Read 12720 0000b094 .global _Read 12721 0000b094 _Read: 12722 0000b094 44000210 trap #0x210 12723 0000b098 4be00000 jr r31 12724 0000b09c 54000000 nop 12725 0000b0a0 .endproc _Read 12727 0000b0a0 .proc _Write 12728 0000b0a0 .global _Write 12729 0000b0a0 _Write: 12730 0000b0a0 44000211 trap #0x211 12731 0000b0a4 4be00000 jr r31 12732 0000b0a8 54000000 nop 12733 0000b0ac .endproc _Write 12735 0000b0ac .proc _Lseek 12736 0000b0ac .global _Lseek 12737 0000b0ac _Lseek: 12738 0000b0ac 44000212 trap #0x212 12739 0000b0b0 4be00000 jr r31 12740 0000b0b4 54000000 nop 12741 0000b0b8 .endproc _Lseek 12743 ;;; 12744 ;;; Stub functions for DLX traps. 12745 ;;; 12746 ;;; Ethan L. Miller, 1999. Released to the public domain. 12747 ;;; 12748 ;;; There are two exit traps. The first, _exitsim, actually exits the 12749 ;;; simulator. The second, _exit, simply calls a regular trap in the 12750 ;;; DLX simulator, and would be suitable for a user program that wants 12751 ;;; to signal the OS that it's exiting. 12752 ;;; 12753 ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and 12754 ;;; programs run without an OS - should call exitsim() rather than just 12755 ;;; falling through to exit. 12756 ;;; 12759 0000b0b8 .align 2 12760 0000b0b8 .proc _exitsim 12761 0000b0b8 .global _exitsim 12762 0000b0b8 _exitsim: 12763 0000b0b8 44002f00 trap #0x2f00 12764 0000b0bc 4be00000 jr r31 12765 0000b0c0 54000000 nop 12766 0000b0c4 .endproc _exitsim 12768 0000b0c4 .proc _exit 12769 0000b0c4 .global _exit 12770 0000b0c4 _exit: 12771 0000b0c4 44000300 trap #0x300 12772 0000b0c8 4be00000 jr r31 12773 0000b0cc 54000000 nop 12774 0000b0d0 .endproc _exit 12776 ; 12777 ; Stub functions for DLX traps. 12778 ; 12779 ; Aaron Sawdey 1996; released to the Public Domain. 12780 ; 12782 0000b0d0 .proc _printf 12783 0000b0d0 .global _printf 12784 0000b0d0 _printf: 12785 0000b0d0 44002001 trap #0x2001 12786 0000b0d4 4be00000 jr r31 12787 0000b0d8 54000000 nop 12788 0000b0dc .endproc _printf 12790 0000b0dc .text 12791 0000b0dc .global _etext 12792 0000b0dc _etext: 12793 0000b0dc .align 3 12794 0000b0e0 .data 12795 00013e70 .global _edata 12796 00013e70 _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/dlxos.s

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

home/bshapir/cs314/project4/option1/lab4_2/src/synch.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // // Semaphores are the only "native" synchronization primitive. #ifndef _synch_h_ #define _synch_h_ #include "queue.h" #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system typedef int sem_t; #define INVALID_SEM -1 #define INVALID_PROC -1 typedef struct Sem { Queue waiting; int count; uint32 inuse; //indicates whether the semaphore is being //used by any process } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); #endif //_synch_h_

home/bshapir/cs314/project4/option1/lab4_2/src/filesys.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1: .ascii "dlx:\000" .align 2 LC2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55 nop ; not filled. L56: addi r29,r29,#-16 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L55: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74 nop ; not filled. addi r3,r0,#0 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r2,r0,r6 L61: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59 nop ; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61 nop ; not filled. L59: sgti r1,r3,#31 beqz r1,L64 nop ; not filled. L74: addi r1,r0,#-1 j L73 nop ; not filled. L64: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75 nop ; not filled. L65: addi r8,r0,#0 L75: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67 nop ; not filled. L68: addi r29,r29,#-16 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L67: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs)>>16)&0xffff addui r8,r8,(_fs)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop ; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69 nop ; not filled. lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73 nop ; not filled. L69: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-24 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L71: add r1,r0,r3 L73: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84 nop ; not filled. addi r2,r0,#1 L84: snei r1,r2,#0 beqz r1,L82 nop ; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs)>>16)&0xffff addui r4,r4,(_fs)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86 nop ; not filled. L82: addi r1,r0,#-1 L86: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94 nop ; not filled. addi r2,r0,#1 L94: snei r1,r2,#0 beqz r1,L92 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L91 nop ; not filled. L92: addi r1,r0,#-1 L91: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r2,r0,#1 L103: snei r1,r2,#0 beqz r1,L101 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L100 nop ; not filled. L101: addi r1,r0,#-1 L100: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112 nop ; not filled. addi r2,r0,#1 L112: snei r1,r2,#0 beqz r1,L110 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L109 nop ; not filled. L110: addi r1,r0,#-1 L109: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118 nop ; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs+44)>>16)&0xffff addui r1,r1,(_fs+44)&0xffff j L120 nop ; not filled. L118: addi r29,r29,#-8 lhi r1,((_fs+20)>>16)&0xffff addui r1,r1,(_fs+20)&0xffff L120: sw (r29),r2 lw r1,(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126 nop ; not filled. L127: addi r29,r29,#-16 lhi r6,((LC4)>>16)&0xffff addui r6,r6,(LC4)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L126: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop ; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128 nop ; not filled. addi r1,r0,#1 L128: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff addi r2,r31,#8308 L182: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182 nop ; not filled. lhi r1,((_fs)>>16)&0xffff addui r1,r1,(_fs)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs: .space 48 .align 2 _openfiles: .space 8576

home/bshapir/cs314/project4/option1/lab4_2/src/memory.h

// // memory.h // // Definitions for dealing with memory. // // // $Id: memory.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ #ifndef _memory_h_ #define _memory_h_ // We can read this address in I/O space to figure out how much memory // is available on the system. #define DLX_MEMSIZE_ADDRESS 0xffff0000 // We currently support 64 KB pages. This is done as 64 KB pages in // the level 1 page table and no level 2 page table // These two constants should be set as follows: // L1_PAGE_SIZE_BITS -> amount mapped by a single entry in the L1 table // L2_PAGE_SIZE_BITS -> amount mapped by a single entry in the L2 table // // For example, if you have 4KB pages and each L2 page table has 512 entries, // you'd have 2MB per entry in a L1 table. That would mean L1_BITS=21 and // L2_BITS=12. #define MEMORY_L1_PAGE_SIZE_BITS 16 // each entry in L1 is 64 KB #define MEMORY_L2_PAGE_SIZE_BITS 16 // if L1 == L2, there's no L2 tables #define MEMORY_PAGE_SIZE (1 << MEMORY_L2_PAGE_SIZE_BITS) #define MEMORY_PAGE_MASK (MEMORY_PAGE_SIZE-1) #define MEMORY_MAX_PAGES 0x10000 #define TOP_VIRTUAL_ADDRESS_SPACE MEMORY_PAGE_SIZE #define L1_MAX_ENTRIES 0x01 #define L2_MAX_ENTRIES 0x01 // The PTE is valid if this bit is set in the PTE! #define MEMORY_PTE_VALID 0x00000001 // The page is dirty if this bit is set in the PTE #define MEMORY_PTE_DIRTY 0x00000002 // The page has been referenced if this bit is set in the PTE #define MEMORY_PTE_REFERENCED 0x00000004 #define MEMORY_PTE_MASK (~(MEMORY_PTE_VALID|MEMORY_PTE_DIRTY|MEMORY_PTE_REFERENCED)) extern int lastosaddress; // Defined in an assembly file extern int MemoryGetSize (); extern int MemoryAllocPage (); extern void MemoryFreePage (uint32 page); extern uint32 MemorySetupPte (uint32 page); extern void MemoryFreePte (uint32 pte); extern uint32 MemoryPteToPage (); extern void MemoryModuleInit (); extern uint32 MemoryTranslateUserToSystem (); extern int MemoryCopySystemToUser (); extern int MemoryCopyUserToSystem (); #endif // _memory_h_

home/bshapir/cs314/project4/option1/lab4_2/src/synch.working.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // Lock // Condition // // Semaphores are the only "native" synchronization primitive. // Condition variables and locks are implemented using semaphores. // #ifndef _synch_h_ #define _synch_h_ #include "queue.h" typedef struct Sem { Queue waiting; int count; } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); typedef struct Lock { Sem mutex; // Overall mutex for the Lock. Sem pri; // Semaphore on which "high-priority" processes wait int npri; // Number of high-priority processes waiting } Lock; typedef struct Cond { Lock *condLock; Sem condSem; // Semaphore on which condition variables wait int nwaiters; // Number of processes waiting for this condition } Cond; extern void LockInit (Lock *); extern void LockAcquire (Lock *); extern void LockRelease (Lock *); extern void CondInit (Cond *, Lock *); extern void CondWait (Cond *); extern void CondSignal (Cond *); extern void CondBroadcast (Cond *); #endif //_synch_h_

home/bshapir/cs314/project4/option1/lab4_2/src/sysproc.c

// // sysproc.c // // This file defines system processes run by the OS. It also // includes a routine to initialize system processes. #include "process.h" #include "synch.h" //---------------------------------------------------------------------- // // doSomething // // A useless little function that does some small stuff to test // process switching and the like. // //---------------------------------------------------------------------- static Sem mysems[10]; static void doSomething (int me) { int i; int j; int mygrp = me % 10; char buf[40]; char buf2[40]; if (me < 100) { SemInit (&(mysems[mygrp]), 1); for (i = 1; i <= 6; i++) { dstrcpy (buf, "Process #"); ditoa (i, buf2); dstrcat (buf, buf2); ProcessFork (&doSomething, i * me * 1000 + me, buf, 0); } } SemWait (&mysems[mygrp]); for (i = 0, j = 0; i < (me * 2); i++) { if ((i % 1000) == 0) { printf ("Running process %d (iteration %d)!\n", me, i); } j += (i & 3); } SemSignal (&mysems[mygrp]); } � //---------------------------------------------------------------------- // // chaseTail // // A little function that chases its tail, forking off other // processes before exiting. This can be used to test resource // allocation and reclamation. // //---------------------------------------------------------------------- static void chaseTail (int me) { char *str = "chasetail"; printf ("Chasing tail %d.\n", me); printf ("Open of (%s,0x%x) returns 0x%x.\n", str, me+0x2000, Open (str, me + 0x2000)); if (me < 40) { ProcessFork (&chaseTail, me + 1, "ChaseTail", 0); } } //---------------------------------------------------------------------- // // emptyLoop // // This is an empty loop. It's used to test running code. A similar // loop could be used as the "idle" process. // //---------------------------------------------------------------------- static void emptyLoop (int me) { int i; int limit = me * 50000; i = 0; while (1) { i += 1; if (i > limit) { i = 0; printf ("%d ", me); } } } � //---------------------------------------------------------------------- // // randomStuff // // This routine tests random number usage in DLXOS. // //---------------------------------------------------------------------- static void randomStuff (int seed) { int i,rn; extern int random(),srandom(); srandom (seed); for (i = 0; i < 40; i++) { rn = random (); printf ("Random number %02i is 0x%08x.\n", i, rn); } } //---------------------------------------------------------------------- // // SysprocCreateProcesses // // This is the routine that is called by main to create processes. // It must create at least one process, and there must always be // at least one runnable process. If there isn't, the OS will // exit. // //---------------------------------------------------------------------- void SysprocCreateProcesses () { int i; for (i = 0; i < 10; i++) { SemInit (&mysems[i], 1); } // ProcessFork (&emptyLoop, 1, "Loop1", 0); // ProcessFork (&emptyLoop, 2, "Loop1", 0); // ProcessFork (&emptyLoop, 3, "Loop1", 0); // ProcessFork (&doSomething, 1, "Creator1", 0); // ProcessFork (&doSomething, 2, "Creator2", 0); // ProcessFork (&randomStuff, 1234, "randomStuff", 0); // ProcessFork (&chaseTail, 10, "ChaseTail", 0); }

home/bshapir/cs314/project4/option1/lab4_2/src/userprog2.c

// This test case should generate 5 page faults and display output as Sum=210. main() { int i,j; int Sum=0; int nArray[10000]; for(i=0,j=1;i<10000;i+=500) nArray[i]=j++; for(i=0;i<10000;i+=500) Sum+= nArray[i]; Printf("\nIn Userprog2, Sum : %d\n\n",Sum); }

home/bshapir/cs314/project4/option1/lab4_2/src/process.c

// // process.c // // This file defines routines for dealing with processes. This // includes the "main" routine for the OS, which creates a process // for the initial thread of execution. It also includes // code to create and delete processes, as well as context switch // code. Note, however, that the actual context switching is // done in assembly language elsewhere. #include "dlxos.h" #include "memory.h" #include "process.h" #include "synch.h" #include "filesys.h" float MyFuncRetZero(); // Pointer to the current PCB. This is used by the assembly language // routines for context switches. PCB *currentPCB; // List of free PCBs. static Queue freepcbs; // List of processes that are ready to run (ie, not waiting for something // to happen). static Queue runQueue; // List of processes that are waiting for something to happen. There's no // reason why this must be a single list; there could be many lists for many // different conditions. static Queue waitQueue; // List of processes waiting to be deleted. See below for a description of // the reason that we need a separate queue for processes about to die. static Queue zombieQueue; // Static area for all process control blocks. This is necessary because // we can't use malloc() inside the OS. static PCB pcbs[PROCESS_MAX_PROCS]; // Default value for scheduler quantum. This could be set to any value. // In fact, it could even be dynamic, though that would require modifying // the timer trap handler.... static processQuantum = DLX_PROCESS_QUANTUM; // String listing debugging options to print out. char debugstr[200]; � //---------------------------------------------------------------------- // // ProcessModuleInit // // Initialize the process module. This involves initializing all // of the process control blocks to appropriate values (ie, free // and available). We also need to initialize all of the queues. // //---------------------------------------------------------------------- void ProcessModuleInit () { int i; dbprintf ('p', "Entering ProcessModuleInit\n"); QueueInit (&freepcbs); QueueInit (&runQueue); QueueInit (&waitQueue); QueueInit (&zombieQueue); for (i = 0; i < PROCESS_MAX_PROCS; i++) { dbprintf ('p', "Initializing PCB %d @ 0x%x.\n", i, &(pcbs[i])); pcbs[i].flags = PROCESS_STATUS_FREE; QueueLinkInit (&(pcbs[i].l), (void *)&pcbs[i]); QueueInsertFirst(&freepcbs, &(pcbs[i].l)); } currentPCB = NULL; dbprintf ('p', "Leaving ProcessModuleInit\n"); } � //---------------------------------------------------------------------- // // ProcessSetStatus // // Set the status of a process. // //---------------------------------------------------------------------- void ProcessSetStatus (PCB *pcb, int status) { pcb->flags &= ~PROCESS_STATUS_MASK; pcb->flags |= status; } //---------------------------------------------------------------------- // // ProcessFreeResources // // Free the resources associated with a process. This assumes the // process isn't currently on any queue. // //---------------------------------------------------------------------- void ProcessFreeResources (PCB *pcb) { int i; int npages; QueueInsertLast (&freepcbs, &pcb->l); // Free the process's memory. This is easy with a one-level page // table, but could get more complex with two-level page tables. //------------------------------------------ // You may change the code below //------------------------------------------ npages = pcb->npages; for (i = 0; i < pcb->npages; i++) { MemoryFreePte (pcb->pagetable[i]); } // Free the page allocated for the system stack MemoryFreePage (pcb->sysStackArea / MEMORY_PAGE_SIZE); ProcessSetStatus (pcb, PROCESS_STATUS_FREE); } //---------------------------------------------------------------------- // // ProcessSetResult // // Set the result returned to a process. This is done by storing // the value into the current register save area for r1. When the // context is restored, r1 will contain the return value. This // routine should only be called from a trap. Calling it at other // times (such as an interrupt handler) will cause unpredictable // results. // //---------------------------------------------------------------------- void ProcessSetResult (PCB * pcb, uint32 result) { pcb->currentSavedFrame[PROCESS_STACK_IREG+1] = result; } � //---------------------------------------------------------------------- // // ProcessSchedule // // Schedule the next process to run. If there are no processes to // run, exit. This means that there should be an idle loop process // if you want to allow the system to "run" when there's no real // work to be done. // // NOTE: the scheduler should only be called from a trap or interrupt // handler. This way, interrupts are disabled. Also, it must be // called consistently, and because it might be called from an interrupt // handler (the timer interrupt), it must ALWAYS be called from a trap // or interrupt handler. // // Note that this procedure doesn't actually START the next process. // It only changes the currentPCB and other variables so the next // return from interrupt will restore a different context from that // which was saved. // //---------------------------------------------------------------------- void ProcessSchedule () { PCB *pcb; int i; dbprintf ('p', "Now entering ProcessSchedule (cur=0x%x, %d ready)\n", currentPCB, QueueLength (&runQueue)); // The OS exits if there's no runnable process. This is a feature, not a // bug. An easy solution to allowing no runnable "user" processes is to // have an "idle" process that's simply an infinite loop. if (QueueEmpty (&runQueue)) { printf ("No runnable processes - exiting!\n"); exitsim (); // NEVER RETURNS } // Move the front of the queue to the end, if it is the running process. pcb = (PCB *)((QueueFirst (&runQueue))->object); if (pcb == currentPCB) { QueueRemove (&pcb->l); QueueInsertLast (&runQueue, &pcb->l); } // Now, run the one at the head of the queue. pcb = (PCB *)((QueueFirst (&runQueue))->object); currentPCB = pcb; dbprintf ('p',"About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n", pcb, pcb->flags, pcb->sysStackPtr[PROCESS_STACK_IAR]); // Clean up zombie processes here. This is done at interrupt time // because it can't be done while the process might still be running while (!QueueEmpty (&zombieQueue)) { pcb = (PCB *)(QueueFirst (&zombieQueue)->object); dbprintf ('p', "Freeing zombie PCB 0x%x.\n", pcb); QueueRemove (&pcb->l); ProcessFreeResources (pcb); } // Set the timer so this process gets at most a fixed quantum of time. TimerSet (processQuantum); dbprintf ('p', "Leaving ProcessSchedule (cur=0x%x)\n", currentPCB); } � //---------------------------------------------------------------------- // // ProcessSuspend // // Place a process in suspended animation until it's // awakened by ProcessAwaken. // // NOTE: This must only be called from an interrupt or trap. It // should be immediately followed by ProcessSchedule(). // //---------------------------------------------------------------------- void ProcessSuspend (PCB *suspend) { // Make sure it's already a runnable process. dbprintf ('p', "Suspending PCB 0x%x (%s).\n", suspend, suspend->name); ASSERT (suspend->flags & PROCESS_STATUS_RUNNABLE, "Trying to suspend a non-running process!\n"); ProcessSetStatus (suspend, PROCESS_STATUS_WAITING); QueueRemove (&suspend->l); QueueInsertLast (&waitQueue, &suspend->l); } //---------------------------------------------------------------------- // // ProcessWakeup // // Wake up a process from its slumber. This only involves putting // it on the run queue; it's not guaranteed to be the next one to // run. // // NOTE: This must only be called from an interrupt or trap. It // need not be followed immediately by ProcessSchedule() because // the currently running process is unaffected. // //---------------------------------------------------------------------- void ProcessWakeup (PCB *wakeup) { dbprintf ('p',"Waking up PCB 0x%x.\n", wakeup); // Make sure it's not yet a runnable process. ASSERT (wakeup->flags & PROCESS_STATUS_WAITING, "Trying to wake up a non-sleeping process!\n"); ProcessSetStatus (wakeup, PROCESS_STATUS_RUNNABLE); QueueRemove (&wakeup->l); QueueInsertLast (&runQueue, &wakeup->l); } � //---------------------------------------------------------------------- // // ProcessDestroy // // Destroy a process by setting its status to zombie and putting it // on the zombie queue. The next time the scheduler is called, this // process will be marked as free. We can't necessarily do it now // because we might be the currently running process. // // NOTE: This must only be called from an interrupt or trap. However, // it need not be followed immediately by a ProcessSchedule() because // the process can continue running. // //---------------------------------------------------------------------- void ProcessDestroy (PCB *pcb) { dbprintf('p', "Entering ProcessDestroy for 0x%x.\n", pcb); ProcessSetStatus (pcb, PROCESS_STATUS_ZOMBIE); QueueRemove (&pcb->l); QueueInsertFirst (&zombieQueue, &pcb->l); dbprintf('p', "Leaving ProcessDestroy for 0x%x.\n", pcb); } //---------------------------------------------------------------------- // // ProcessExit // // This routine is called to exit from a system process. It simply // calls an exit trap, which will be caught to exit the process. // //---------------------------------------------------------------------- static void ProcessExit () { exit (); } uint32 get_argument(char *string) { static char *str; static int location=0; int location2; if(string) { str=string; location = 0; } location2 = location; if(str[location]=='\0'||location>=99) return 0; for(;location<100;location++) { if(str[location]=='\0') { location++; break; } } return location2; } //---------------------------------------------------------------------- // // ProcessFork // // Create a new process and make it runnable. This involves the // following steps: // * Allocate resources for the process (PCB, memory, etc.) // * Initialize the resources // * Place the PCB on the runnable queue // // NOTE: This code has been tested for system processes, but not // for user processes. // //---------------------------------------------------------------------- int ProcessFork (VoidFunc func, uint32 param, char *name, int isUser) { int i, j, fd, n; Link *l; int start, codeS, codeL, dataS, dataL; uint32 *stackframe; int newPage; PCB *pcb; int addr = 0; int intrs; unsigned char buf[100]; uint32 dum[MAX_ARGS+8], count, offset; char *str; intrs = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrs); dbprintf ('p', "Entering ProcessFork args=0x%x 0x%x %s %d\n", func, param, name, isUser); // Get a free PCB for the new process if (QueueEmpty (&freepcbs)) { printf ("FATAL error: no free processes!\n"); exitsim (); // NEVER RETURNS! } l = QueueFirst (&freepcbs); dbprintf ('p', "Got a link @ 0x%x\n", l); QueueRemove (l); pcb = (PCB *)(l->object); // This prevents someone else from grabbing this process ProcessSetStatus (pcb, PROCESS_STATUS_RUNNABLE); // At this point, the PCB is allocated and nobody else can get it. // However, it's not in the run queue, so it won't be run. Thus, we // can turn on interrupts here. dbprintf ('I', "Before restore interrupt value is 0x%x.\n", CurrentIntrs()); RestoreIntrs (intrs); dbprintf ('I', "New interrupt value is 0x%x.\n", CurrentIntrs()); // Copy the process name into the PCB. dstrcpy (pcb->name, name); //---------------------------------------------------------------------- // This section initializes the memory for this process //---------------------------------------------------------------------- // For now, we'll use one user page and a page for the system stack. // For system processes, though, all pages must be contiguous. // Of course, system processes probably need just a single page for // their stack, and don't need any code or data pages allocated for them. //------------------------------------------------------------ // Put your own code here //------------------------------------------------------------ pcb->npages = 1; newPage = MemoryAllocPage (); if (newPage == 0) { printf ("aFATAL: couldn't allocate memory - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->pagetable[0] = MemorySetupPte (newPage); newPage = MemoryAllocPage (); if (newPage == 0) { printf ("bFATAL: couldn't allocate system stack - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->sysStackArea = newPage * MEMORY_PAGE_SIZE; //---------------------------------------------------------------------- // Stacks grow down from the top. The current system stack pointer has // to be set to the bottom of the interrupt stack frame, which is at the // high end (address-wise) of the system stack. stackframe = ((uint32 *)(pcb->sysStackArea + MEMORY_PAGE_SIZE)) - (PROCESS_STACK_FRAME_SIZE + 8); // The system stack pointer is set to the base of the current interrupt // stack frame. pcb->sysStackPtr = stackframe; // The current stack frame pointer is set to the same thing. pcb->currentSavedFrame = stackframe; dbprintf ('p', "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n", pcb, pcb->sysStackArea, pcb->pagetable[0], pcb->npages * MEMORY_PAGE_SIZE); //---------------------------------------------------------------------- // This section sets up the stack frame for the process. This is done // so that the frame looks to the interrupt handler like the process // was "suspended" right before it began execution. The standard // mechanism of swapping in the registers and returning to the place // where it was "interrupted" will then work. //---------------------------------------------------------------------- // The previous stack frame pointer is set to 0, meaning there is no // previous frame. stackframe[PROCESS_STACK_PREV_FRAME] = 0; // Set the base of the level 1 page table. If there's only one page // table level, this is it. For 2-level page tables, put the address // of the level 1 page table here. For 2-level page tables, we'll also // have to build up the necessary tables.... stackframe[PROCESS_STACK_PTBASE] = (uint32)&(pcb->pagetable[0]); //---------------------------------------------- // You may change the code below //---------------------------------------------- // Set the size (maximum number of entries) of the level 1 page table. // In our case, it's just one page, but it could be larger. stackframe[PROCESS_STACK_PTSIZE] = pcb->npages; // Set the number of bits for both the level 1 and level 2 page tables. // This can be changed on a per-process basis if desired. For now, // though, it's fixed. stackframe[PROCESS_STACK_PTBITS] = (MEMORY_L1_PAGE_SIZE_BITS + (MEMORY_L2_PAGE_SIZE_BITS << 16)); if (isUser) { dbprintf ('p', "About to load %s\n", name); fd = ProcessGetCodeInfo (name, &start, &codeS, &codeL, &dataS, &dataL); if (fd < 0) { // Free newpage and pcb so we don't run out... ProcessFreeResources (pcb); return (-1); } dbprintf ('p', "File %s -> start=0x%08x\n", name, start); dbprintf ('p', "File %s -> code @ 0x%08x (size=0x%08x)\n", name, codeS, codeL); dbprintf ('p', "File %s -> data @ 0x%08x (size=0x%08x)\n", name, dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { dbprintf ('p', "Placing %d bytes at vaddr %08x.\n", n, addr - n); // Copy the data to user memory. Note that the user memory needs to // have enough space so that this copy will succeed! MemoryCopySystemToUser (pcb, buf, addr - n, n); } FsClose (fd); stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_USER; // Set the initial stack pointer correctly. Currently, it's just set // to the top of the (single) user address space allocated to this // process. str = (char *)param; stackframe[PROCESS_STACK_IREG+29] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF; // Copy the initial parameter to the top of stack MemoryCopySystemToUser (pcb, (char *)str, (char *)stackframe[PROCESS_STACK_IREG+29], SIZE_ARG_BUFF-32); offset = get_argument((char *)param); dum[2] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; for(count=3;;count++) { offset=get_argument(NULL); dum[count] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; if(offset==0) { break; } } dum[0] = count-2; dum[1] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF - (count-2)*4; MemoryCopySystemToUser (pcb, (char *)dum, (char *)(stackframe[PROCESS_STACK_IREG+29]-count*4), (count)*sizeof(uint32)); stackframe[PROCESS_STACK_IREG+29] -= 4*count; // Set the correct address at which to execute a user process. stackframe[PROCESS_STACK_IAR] = (uint32)start; pcb->flags |= PROCESS_TYPE_USER; } else { // Set r31 to ProcessExit(). This will only be called for a system // process; user processes do an exit() trap. stackframe[PROCESS_STACK_IREG+31] = (uint32)ProcessExit; // Set the stack register to the base of the system stack. stackframe[PROCESS_STACK_IREG+29]=pcb->sysStackArea + MEMORY_PAGE_SIZE-32; // Set the initial parameter properly by placing it on the stack frame // at the location pointed to by the "saved" stack pointer (r29). *((uint32 *)(stackframe[PROCESS_STACK_IREG+29])) = param; // Set up the initial address at which to execute. This is done by // placing the address into the IAR slot of the stack frame. stackframe[PROCESS_STACK_IAR] = (uint32)func; // Set the initial value for the interrupt status register stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_SYS; // Mark this as a system process. pcb->flags |= PROCESS_TYPE_SYSTEM; } // Place the PCB onto the run queue. intrs = DisableIntrs (); QueueInsertLast (&runQueue, l); RestoreIntrs (intrs); // If this is the first process, make it the current one if (currentPCB == NULL) { dbprintf ('p', "Setting currentPCB=0x%x, stackframe=0x%x\n", pcb, pcb->currentSavedFrame); currentPCB = pcb; } dbprintf ('p', "Leaving ProcessFork (%s)\n", name); // Return the process number (found by subtracting the PCB number // from the base of the PCB array). return (pcb - pcbs); } � //---------------------------------------------------------------------- // // getxvalue // // Convert a hex digit into an actual value. // //---------------------------------------------------------------------- static inline int getxvalue (int x) { if ((x >= '0') && (x <= '9')) { return (x - '0'); } else if ((x >= 'a') && (x <= 'f')) { return (x + 10 - 'a'); } else if ((x >= 'A') && (x <= 'F')) { return (x + 10 - 'A'); } else { return (0); } } � //---------------------------------------------------------------------- // // ProcessGetCodeSizes // // Get the code sizes (stack & data) for a file. A file descriptor // for the named file is returned. This descriptor MUST be closed // (presumably by the caller) at some point. // //---------------------------------------------------------------------- int ProcessGetCodeInfo (const char *file, uint32 *startAddr, uint32 *codeStart, uint32 *codeSize, uint32 *dataStart, uint32 *dataSize) { int fd; int totalsize; char buf[100]; char *pos; // Open the file for reading. If it returns a negative number, the open // didn't work. if ((fd = FsOpen (file, FS_MODE_READ)) < 0) { dbprintf ('f', "ProcessGetCodeInfo: open of %s failed (%d).\n", file, fd); return (-1); } dbprintf ('f', "File descriptor is now %d.\n", fd); if ((totalsize = FsRead (fd, buf, sizeof (buf))) != sizeof (buf)) { dbprintf ('f', "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n", totalsize, sizeof (buf), file); FsClose (fd); return (-1); } if (dstrstr (buf, "start:") == NULL) { dbprintf ('f', "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n", file); return (-1); } pos = (char *)dindex (buf, ':') + 1; // Get the start address and overall size *startAddr = dstrtol (pos, &pos, 16); totalsize = dstrtol (pos, &pos, 16); // Get code & data section start & sizes *codeStart = dstrtol (pos, &pos, 16); *codeSize = dstrtol (pos, &pos, 16); *dataStart = dstrtol (pos, &pos, 16); *dataSize = dstrtol (pos, &pos, 16); // Seek to start of first real line FsSeek (fd, 1 + dindex (buf, '\n') - buf, 0); return (fd); } � //---------------------------------------------------------------------- // // ProcessGetFromFile // // Inputs: // addr - points to an integer that contains the address of // the byte past that previously returned. If this is the // first call to this routine, *addr should be set to 0. // fd - File descriptor from which to read data. The file format // is the same as that used by the DLX simulator. // buf - points to a buffer that will receive data from the input // file. Note that the data is NOT 0-terminated, and may // include any number of 0 bytes. // max - maximum length of data to return. The routine collects data // until either the address changes or it has read max bytes. // // Returns the number of bytes actually stored into buf. In addition, // *addr is updated to point to the byte following the last byte in // the buffer. // // Load a file into memory. The file format consists of a // leading address, followed by a colon, followed by the data // to go at that address. If the address is omitted, the data // follows that from the previous line of the file. // //---------------------------------------------------------------------- int ProcessGetFromFile (int fd, unsigned char *buf, uint32 *addr, int max) { char localbuf[204]; int nbytes; int seekpos; unsigned char *pos = buf; char *lpos = localbuf; // Remember our position at the start of the routine so we can adjust // it later. seekpos = FsSeek (fd, 0, FS_SEEK_CUR); // The maximum number of characters we could read is limited to the // maximum buffer space available to the caller * 2 because each 2 // characters in the input file result in a single byte of program // info being read in. max = max * 2; // If the callers maximum is greater than the available buffer space, // limit the buffer space further. if (max > (sizeof(localbuf)-4)) { max = sizeof(localbuf)-4; } if ((nbytes = FsRead (fd, localbuf, max)) <= 0) { return (0); } // 'Z' is unused in load file, so use it to mark the end of the buffer // Back up until just after the last newline in the data we read. dbprintf ('f', "Got %d bytes at offset %d ...", nbytes, seekpos); while (localbuf[--nbytes] != '\n') { } localbuf[nbytes+1] = 'Z'; localbuf[nbytes+2] = '\0'; dbprintf ('f', " terminated at %d.\n", nbytes); dbprintf ('f', "Buffer is '%s'\n", localbuf); nbytes = 0; while (dindex (lpos, 'Z') != NULL) { if (dindex (lpos, ':') == NULL) { break; } if (*lpos != ':') { // If we're going to go to a new address, we break out of the // loop and return what we've got already. if (nbytes > 0) { break; } *addr = dstrtol (lpos, &lpos, 16); dbprintf ('f', "New address is 0x%x.\n", *addr); } if (*lpos != ':') { break; } lpos++; // skip past colon while (1) { while (((*lpos) == ' ') || (*lpos == '\t')) { lpos++; } if (*lpos == '\n') { lpos++; break; } else if (!(isxdigit (*lpos) && isxdigit (*(lpos+1)))) { // Exit loop if at least one digit isn't a hex digit. break; } pos[nbytes++] = (getxvalue(*lpos) * 16) + getxvalue(*(lpos+1)); lpos += 2; (*addr)++; } } // Seek to just past the last line we read. FsSeek (fd, seekpos + lpos - localbuf, FS_SEEK_SET); dbprintf ('f', "Seeking to %d and returning %d bytes!\n", seekpos + lpos - localbuf, nbytes); return (nbytes); } � //---------------------------------------------------------------------- // // main // // This routine is called when the OS starts up. It allocates a // PCB for the first process - the one corresponding to the initial // thread of execution. Note that the stack pointer is already // set correctly by _osinit (assembly language code) to point // to the stack for the 0th process. This stack isn't very big, // though, so it should be replaced by the system stack of the // currently running process. // //---------------------------------------------------------------------- main (int argc, char *argv[]) { int i, j; int n; char buf[120]; char *userprog = (char *)0; static PCB temppcb; uint32 addr; extern void SysprocCreateProcesses (); char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; int base; debugstr[0] = '\0'; printf("Hi Uday, How are you?\n"); MyFuncRetZero(); printf ("Got %d arguments.\n", argc); printf ("Available memory: 0x%x -> 0x%x.\n", lastosaddress, MemoryGetSize ()); printf ("Argument count is %d.\n", argc); for (i = 0; i < argc; i++) { printf ("Argument %d is %s.\n", i, argv[i]); } // *((int *)0xfff00100) = 't'; FsModuleInit (); for (i = 0; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'D': dstrcpy (debugstr, argv[++i]); break; case 'i': n = dstrtol (argv[++i], (void *)0, 0); ditoa (n, buf); printf ("Converted %s to %d=%s\n", argv[i], n, buf); break; case 'f': { int start, codeS, codeL, dataS, dataL, fd, j; int addr = 0; static unsigned char buf[200]; fd = ProcessGetCodeInfo (argv[++i], &start, &codeS, &codeL, &dataS, &dataL); printf ("File %s -> start=0x%08x\n", argv[i], start); printf ("File %s -> code @ 0x%08x (size=0x%08x)\n", argv[i], codeS, codeL); printf ("File %s -> data @ 0x%08x (size=0x%08x)\n", argv[i], dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { for (j = 0; j < n; j += 4) { printf ("%08x: %02x%02x%02x%02x\n", addr + j - n, buf[j], buf[j+1], buf[j+2], buf[j+3]); } } close (fd); break; } case 'u': userprog = argv[++i]; base = i; break; default: printf ("Option %s not recognized.\n", argv[i]); break; } if(userprog) break; } } dbprintf ('i', "About to initialize queues.\n"); QueueModuleInit (); dbprintf ('i', "After initializing queues.\n"); MemoryModuleInit (); dbprintf ('i', "After initializing memory.\n"); ProcessModuleInit (); dbprintf ('i', "After initializing processes.\n"); SynchModuleInit (); dbprintf ('i', "After initializing synchronization tools.\n"); KbdModuleInit (); dbprintf ('i', "After initializing keyboard.\n"); for (i = 0; i < 100; i++) { buf[i] = 'a'; } i = FsOpen ("vm", FS_MODE_WRITE); dbprintf ('i', "VM Descriptor is %d\n", i); FsSeek (i, 0, FS_SEEK_SET); FsWrite (i, buf, 80); FsClose (i); if (userprog != (char *)0) { for(i=base;i<argc&&i-base<11; i++) { param[i-base] = argv[i]; } process_create(param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7], param[8], param[9], param[10], param[11]); // ProcessFork (0, (uint32)"Help Me man!", userprog, 1); } SysprocCreateProcesses (); dbprintf ('i', "Created processes - about to set timer quantum.\n"); TimerSet (processQuantum); dbprintf ('i', "Set timer quantum to %d, about to run first process.\n", processQuantum); intrreturn (); // Should never be called because the scheduler exits when there // are no runnable processes left. exitsim(); // NEVER RETURNS! } float MyFuncRetZero() { return 0; } unsigned GetCurrentPid() { return (unsigned)(currentPCB - pcbs); } unsigned findpid(PCB *pcb) { return (unsigned)(pcb - pcbs); } void process_create(char *name, ...) { char **args; int i, j, k; char allargs[1000]; args = &name; k=0; for(i=0; args[i]!=NULL; i++) { j=0; do { allargs[k] = args[i][j]; j++; k++; } while(args[i][j-1]!='\0'); } allargs[k] = allargs[k+1] = 0; ProcessFork(0, (uint32)allargs, name, 1); } void ProcessKill (PCB *pcb) { // add your code below ProcessSchedule (); } void PageFaultHandler() { // add your code below uint32 *tempstackframe; uint32 fault_address; tempstackframe = currentPCB->currentSavedFrame ; fault_address = tempstackframe[PROCESS_STACK_FAULT]; }

home/bshapir/cs314/project4/option1/lab4_2/src/Makefile.depend

filesys.o: filesys.c dlxos.h misc.h process.h queue.h memory.h \ filesys.h memory.o: memory.c dlxos.h misc.h memory.h process.h queue.h misc.o: misc.c misc.h process.o: process.c dlxos.h misc.h memory.h process.h queue.h synch.h \ filesys.h queue.o: queue.c dlxos.h misc.h queue.h synch.o: synch.c dlxos.h misc.h process.h queue.h memory.h synch.h traps.o: traps.c dlx.h dlxos.h misc.h traps.h process.h queue.h \ memory.h sysproc.o: sysproc.c process.h dlxos.h misc.h queue.h memory.h synch.h

home/bshapir/cs314/project4/option1/lab4_2/src/queue.h

// // queue.h // // Definitions for routines used to manage queues. The queues are // doubly-linked lists so it's easier to add and remove from them. // Also, the links themselves have pointers to objects so that objects // may be on more than one queue. // #ifndef _queue_h_ #define _queue_h_ #ifndef NULL #define NULL ((void *)0) #endif #define QUEUE_MAX_LINKS 400 typedef struct Link { struct Link *next; struct Link *prev; struct Queue *queue; void *object; } Link; typedef struct Queue { struct Link *first; struct Link *last; int nitems; } Queue; inline void QueueLinkInit (Link *l, void *obj) { l->next = NULL; l->object = obj; } inline Link * QueueNext (Link *l) { return (l->next); } inline Link * QueuePrev (Link *l) { return (l->prev); } inline Link * QueueFirst (Queue *q) { return (q->first); } inline Link * QueueLast (Queue *q) { return (q->last); } inline void QueueInsertAfter (Queue *q, Link *after, Link *l) { l->queue = q; l->prev = after; l->next = after->next; after->next = l; l->next->prev = l; q->nitems += 1; } inline void QueueInsertFirst (Queue *q, Link *l) { QueueInsertAfter (q, (Link *)q, l); } inline void QueueInsertLast (Queue *q, Link *l) { QueueInsertAfter (q, QueueLast(q), l); } inline void QueueRemove (Link *l) { if (l->queue->nitems > 0) { l->prev->next = l->next; l->next->prev = l->prev; l->queue->nitems -= 1; } l->next = NULL; } inline int QueueLength (Queue *q) { return (q->nitems); } inline int QueueEmpty (Queue *q) { return (QueueLength (q) == 0); } extern void QueueModuleInit (); extern void QueueFreeLink (Link *l); extern Link *QueueAllocLink (); extern void QueueInit (Queue *q); #endif // _queue_h_

home/bshapir/cs314/project4/option1/lab4_2/src/userprog1.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 24 4 ; Text size: 2872 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 496e2055 .ascii "In Userprog1, Sum : %d\n\000" 12 00002004 73657270 12 00002008 726f6731 12 0000200c 2c205375 12 00002010 6d203a20 12 00002014 25640a00 13 00002018 .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 0 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 23 00001010 0c000b1c jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20030000 addi r3,r0,(#0x0)&0xff 26 0000101c 3c040010 lhi r4,#16 27 00001020 24840000 addui r4,r4,#0 28 00001024 201f0000 addi r31,r0,#0 29 00001028 00041020 add r2,r0,r4 30 0000102c L16_LF0: 31 0000102c a05f0000 sb (r2),r31 32 00001030 20422004 addi r2,r2,#8196 33 00001034 23ff0001 addi r31,r31,#1 34 00001038 73e1000b slei r1,r31,#11 35 0000103c 1420ffec bnez r1,L16_LF0 36 00001040 54000000 nop; not filled. 37 00001044 0004f820 add r31,r0,r4 38 00001048 3c050001 lhi r5,#1 39 0000104c 24a5602c addui r5,r5,#24620 40 00001050 03e51025 or r2,r31,r5 41 00001054 L21_LF0: 42 00001054 83e50000 lb r5,(r31) 43 00001058 00a31820 add r3,r5,r3 44 0000105c 23ff2004 addi r31,r31,#8196 45 00001060 03e2082c sle r1,r31,r2 46 00001064 1420ffec bnez r1,L21_LF0 47 00001068 54000000 nop; not filled. 48 0000106c 23bdfff8 addi r29,r29,#-8 49 00001070 3c050000 lhi r5,((LC0_LF0)>>16)&0xffff 50 00001074 24a52000 addui r5,r5,(LC0_LF0)&0xffff 51 00001078 afa50000 sw (r29),r5 52 0000107c 306100ff andi r1,r3,#0x00ff 53 00001080 afa10004 sw 4(r29),r1 54 00001084 0c000058 jal _Printf 55 00001088 54000000 nop; not filled. 56 0000108c 23bd0008 addi r29,r29,#8 57 00001090 0c000a90 jal _exit 58 00001094 54000000 nop 59 00001098 .endproc _main 60 ;;; 61 ;;; Stub functions for DLX traps. 62 ;;; 63 ;;; Ethan L. Miller, 1999. Released to the public domain. 64 ;;; 65 ;;; The traps such as Open and Close 66 ;;; (note the capital letters) are for use by user programs. The traps 67 ;;; with names such as open and close (lower case) are for use by the OS. 68 ;;; 71 00001098 .align 2 73 ;;; The following are the traps to be used by user-level programs 74 ;;; 76 00001098 .align 2 77 00001098 .proc _Open 78 00001098 .global _Open 79 00001098 _Open: 80 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 81 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 82 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 83 00001098 44000213 trap #0x213 84 0000109c 4be00000 jr r31 85 000010a0 54000000 nop 86 000010a4 .endproc _Open 88 000010a4 .proc _Close 89 000010a4 .global _Close 90 000010a4 _Close: 91 000010a4 44000214 trap #0x214 92 000010a8 4be00000 jr r31 93 000010ac 54000000 nop 94 000010b0 .endproc _Close 96 000010b0 .proc _Read 97 000010b0 .global _Read 98 000010b0 _Read: 99 000010b0 44000210 trap #0x210 100 000010b4 4be00000 jr r31 101 000010b8 54000000 nop 102 000010bc .endproc _Read 104 000010bc .proc _Write 105 000010bc .global _Write 106 000010bc _Write: 107 000010bc 44000211 trap #0x211 108 000010c0 4be00000 jr r31 109 000010c4 54000000 nop 110 000010c8 .endproc _Write 112 000010c8 .proc _Lseek 113 000010c8 .global _Lseek 114 000010c8 _Lseek: 115 000010c8 44000212 trap #0x212 116 000010cc 4be00000 jr r31 117 000010d0 54000000 nop 118 000010d4 .endproc _Lseek 120 000010d4 .proc _Putchar 121 000010d4 .global _Putchar 122 000010d4 _Putchar: 123 000010d4 44000280 trap #0x280 124 000010d8 4be00000 jr r31 125 000010dc 54000000 nop 126 000010e0 .endproc _Putchar 128 000010e0 .proc _Printf 129 000010e0 .global _Printf 130 000010e0 _Printf: 131 000010e0 44000201 trap #0x201 132 000010e4 4be00000 jr r31 133 000010e8 54000000 nop 134 000010ec .endproc _Printf 136 000010ec .proc _getpid 137 000010ec .global _getpid 138 000010ec _getpid: 139 000010ec 44000431 trap #0x431 140 000010f0 4be00000 jr r31 141 000010f4 54000000 nop 142 000010f8 .endproc _getpid 144 000010f8 .proc _process_create 145 000010f8 .global _process_create 146 000010f8 _process_create: 147 000010f8 44000432 trap #0x432 148 000010fc 4be00000 jr r31 149 00001100 54000000 nop 150 00001104 .endproc _process_create 153 00001104 .proc _sem_create 154 00001104 .global _sem_create 155 00001104 _sem_create: 156 00001104 44000450 trap #0x450 157 00001108 4be00000 jr r31 158 0000110c 54000000 nop 159 00001110 .endproc _sem_create 161 00001110 .proc _sem_wait 162 00001110 .global _sem_wait 163 00001110 _sem_wait: 164 00001110 44000451 trap #0x451 165 00001114 4be00000 jr r31 166 00001118 54000000 nop 167 0000111c .endproc _sem_wait 169 0000111c .proc _sem_signal 170 0000111c .global _sem_signal 171 0000111c _sem_signal: 172 0000111c 44000452 trap #0x452 173 00001120 4be00000 jr r31 174 00001124 54000000 nop 175 00001128 .endproc _sem_signal 178 ; Compiled by GCC 180 00001128 .align 2 181 00001128 .proc _isspace 182 00001128 .global _isspace 183 00001128 _isspace: 184 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 185 00001128 afbefffc sw -4(r29),r30; push fp 186 0000112c 001df020 add r30,r0,r29; fp = sp 187 00001130 afbffff8 sw -8(r29),r31; push ret addr 188 00001134 2fbd0010 subui r29,r29,#16; alloc local storage 189 00001138 afa20000 sw 0(r29),r2 190 0000113c 83c20003 lb r2,3(r30) 191 00001140 201f0000 addi r31,r0,#0 192 00001144 304100ff andi r1,r2,#0x00ff 193 00001148 60210020 seqi r1,r1,#32 194 0000114c 14200018 bnez r1,L6_LF2 195 00001150 54000000 nop; not filled. 196 00001154 2041fff7 addi r1,r2,#-9 197 00001158 302100ff andi r1,r1,#0x00ff 198 0000115c 70210001 sleui r1,r1,#1 199 00001160 10200008 beqz r1,L5_LF2 200 00001164 54000000 nop; not filled. 201 00001168 L6_LF2: 202 00001168 201f0001 addi r31,r0,#1 203 0000116c L5_LF2: 204 0000116c 001f0820 add r1,r0,r31 205 00001170 8fa20000 lw r2,0(r29) 206 00001174 8fdffff8 lw r31,-8(r30) 207 00001178 001ee820 add r29,r0,r30 208 0000117c 8fdefffc lw r30,-4(r30) 209 00001180 4be00000 jr r31 210 00001184 54000000 nop 211 00001188 .endproc _isspace 212 00001188 .align 2 213 00001188 .proc _isxdigit 214 00001188 .global _isxdigit 215 00001188 _isxdigit: 216 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 217 00001188 afbefffc sw -4(r29),r30; push fp 218 0000118c 001df020 add r30,r0,r29; fp = sp 219 00001190 afbffff8 sw -8(r29),r31; push ret addr 220 00001194 2fbd0010 subui r29,r29,#16; alloc local storage 221 00001198 afa20000 sw 0(r29),r2 222 0000119c 83df0003 lb r31,3(r30) 223 000011a0 20020000 addi r2,r0,#0 224 000011a4 23e1ffd0 addi r1,r31,#-48 225 000011a8 302100ff andi r1,r1,#0x00ff 226 000011ac 70210009 sleui r1,r1,#9 227 000011b0 14200028 bnez r1,L12_LF2 228 000011b4 54000000 nop; not filled. 229 000011b8 23e1ff9f addi r1,r31,#-97 230 000011bc 302100ff andi r1,r1,#0x00ff 231 000011c0 70210005 sleui r1,r1,#5 232 000011c4 14200014 bnez r1,L12_LF2 233 000011c8 54000000 nop; not filled. 234 000011cc 33e100ff andi r1,r31,#0x00ff 235 000011d0 64210041 snei r1,r1,#65 236 000011d4 14200008 bnez r1,L11_LF2 237 000011d8 54000000 nop; not filled. 238 000011dc L12_LF2: 239 000011dc 20020001 addi r2,r0,#1 240 000011e0 L11_LF2: 241 000011e0 00020820 add r1,r0,r2 242 000011e4 8fa20000 lw r2,0(r29) 243 000011e8 8fdffff8 lw r31,-8(r30) 244 000011ec 001ee820 add r29,r0,r30 245 000011f0 8fdefffc lw r30,-4(r30) 246 000011f4 4be00000 jr r31 247 000011f8 54000000 nop 248 000011fc .endproc _isxdigit 249 000011fc .align 2 250 000011fc .proc _dstrcpy 251 000011fc .global _dstrcpy 252 000011fc _dstrcpy: 253 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 254 000011fc afbefffc sw -4(r29),r30; push fp 255 00001200 001df020 add r30,r0,r29; fp = sp 256 00001204 afbffff8 sw -8(r29),r31; push ret addr 257 00001208 2fbd0010 subui r29,r29,#16; alloc local storage 258 0000120c afa20000 sw 0(r29),r2 259 00001210 afa30004 sw 4(r29),r3 260 00001214 8fdf0000 lw r31,(r30) 261 00001218 8fc20004 lw r2,4(r30) 262 0000121c 001f1820 add r3,r0,r31 263 00001220 L19_LF2: 264 00001220 80410000 lb r1,(r2) 265 00001224 a3e10000 sb (r31),r1 266 00001228 20420001 addi r2,r2,#1 267 0000122c 23ff0001 addi r31,r31,#1 268 00001230 302100ff andi r1,r1,#0x00ff 269 00001234 64210000 snei r1,r1,#0 270 00001238 1420ffe4 bnez r1,L19_LF2 271 0000123c 54000000 nop; not filled. 272 00001240 00030820 add r1,r0,r3 273 00001244 8fa20000 lw r2,0(r29) 274 00001248 8fa30004 lw r3,4(r29) 275 0000124c 8fdffff8 lw r31,-8(r30) 276 00001250 001ee820 add r29,r0,r30 277 00001254 8fdefffc lw r30,-4(r30) 278 00001258 4be00000 jr r31 279 0000125c 54000000 nop 280 00001260 .endproc _dstrcpy 281 00001260 .align 2 282 00001260 .proc _dstrncpy 283 00001260 .global _dstrncpy 284 00001260 _dstrncpy: 285 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 286 00001260 afbefffc sw -4(r29),r30; push fp 287 00001264 001df020 add r30,r0,r29; fp = sp 288 00001268 afbffff8 sw -8(r29),r31; push ret addr 289 0000126c 2fbd0018 subui r29,r29,#24; alloc local storage 290 00001270 afa20000 sw 0(r29),r2 291 00001274 afa30004 sw 4(r29),r3 292 00001278 afa40008 sw 8(r29),r4 293 0000127c 8fc20000 lw r2,(r30) 294 00001280 8fc30004 lw r3,4(r30) 295 00001284 8fdf0008 lw r31,8(r30) 296 00001288 00022020 add r4,r0,r2 297 0000128c 08000024 j L37_LF2 298 00001290 54000000 nop; not filled. 299 00001294 L34_LF2: 300 00001294 80610000 lb r1,(r3) 301 00001298 a0410000 sb (r2),r1 302 0000129c 20630001 addi r3,r3,#1 303 000012a0 20420001 addi r2,r2,#1 304 000012a4 302100ff andi r1,r1,#0x00ff 305 000012a8 64210000 snei r1,r1,#0 306 000012ac 10200018 beqz r1,L32_LF2 307 000012b0 54000000 nop; not filled. 308 000012b4 L37_LF2: 309 000012b4 001f0820 add r1,r0,r31 310 000012b8 23ffffff addi r31,r31,#-1 311 000012bc 70210000 slei r1,r1,#0 312 000012c0 1020ffd0 beqz r1,L34_LF2 313 000012c4 54000000 nop; not filled. 314 000012c8 L32_LF2: 315 000012c8 00040820 add r1,r0,r4 316 000012cc 8fa20000 lw r2,0(r29) 317 000012d0 8fa30004 lw r3,4(r29) 318 000012d4 8fa40008 lw r4,8(r29) 319 000012d8 8fdffff8 lw r31,-8(r30) 320 000012dc 001ee820 add r29,r0,r30 321 000012e0 8fdefffc lw r30,-4(r30) 322 000012e4 4be00000 jr r31 323 000012e8 54000000 nop 324 000012ec .endproc _dstrncpy 325 000012ec .align 2 326 000012ec .proc _dstrcat 327 000012ec .global _dstrcat 328 000012ec _dstrcat: 329 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 330 000012ec afbefffc sw -4(r29),r30; push fp 331 000012f0 001df020 add r30,r0,r29; fp = sp 332 000012f4 afbffff8 sw -8(r29),r31; push ret addr 333 000012f8 2fbd0010 subui r29,r29,#16; alloc local storage 334 000012fc afa20000 sw 0(r29),r2 335 00001300 afa30004 sw 4(r29),r3 336 00001304 8fdf0000 lw r31,(r30) 337 00001308 001f1820 add r3,r0,r31 338 0000130c 90610000 lbu r1,(r3) 339 00001310 64210000 snei r1,r1,#0 340 00001314 10200018 beqz r1,L50_LF2 341 00001318 54000000 nop; not filled. 342 0000131c L51_LF2: 343 0000131c 23ff0001 addi r31,r31,#1 344 00001320 93e10000 lbu r1,(r31) 345 00001324 64210000 snei r1,r1,#0 346 00001328 1420fff0 bnez r1,L51_LF2 347 0000132c 54000000 nop; not filled. 348 00001330 L50_LF2: 349 00001330 001f1020 add r2,r0,r31 350 00001334 8fdf0004 lw r31,4(r30) 351 00001338 L54_LF2: 352 00001338 83e10000 lb r1,(r31) 353 0000133c a0410000 sb (r2),r1 354 00001340 23ff0001 addi r31,r31,#1 355 00001344 20420001 addi r2,r2,#1 356 00001348 302100ff andi r1,r1,#0x00ff 357 0000134c 64210000 snei r1,r1,#0 358 00001350 1420ffe4 bnez r1,L54_LF2 359 00001354 54000000 nop; not filled. 360 00001358 00030820 add r1,r0,r3 361 0000135c 8fa20000 lw r2,0(r29) 362 00001360 8fa30004 lw r3,4(r29) 363 00001364 8fdffff8 lw r31,-8(r30) 364 00001368 001ee820 add r29,r0,r30 365 0000136c 8fdefffc lw r30,-4(r30) 366 00001370 4be00000 jr r31 367 00001374 54000000 nop 368 00001378 .endproc _dstrcat 369 00001378 .align 2 370 00001378 .proc _dstrncmp 371 00001378 .global _dstrncmp 372 00001378 _dstrncmp: 373 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 374 00001378 afbefffc sw -4(r29),r30; push fp 375 0000137c 001df020 add r30,r0,r29; fp = sp 376 00001380 afbffff8 sw -8(r29),r31; push ret addr 377 00001384 2fbd0018 subui r29,r29,#24; alloc local storage 378 00001388 afa20000 sw 0(r29),r2 379 0000138c afa30004 sw 4(r29),r3 380 00001390 afa40008 sw 8(r29),r4 381 00001394 afa5000c sw 12(r29),r5 382 00001398 8fc30000 lw r3,(r30) 383 0000139c 8fc40004 lw r4,4(r30) 384 000013a0 8fc50008 lw r5,8(r30) 385 000013a4 20020000 addi r2,r0,#0 386 000013a8 0045082a slt r1,r2,r5 387 000013ac 1020003c beqz r1,L73_LF2 388 000013b0 54000000 nop; not filled. 389 000013b4 L75_LF2: 390 000013b4 909f0000 lbu r31,(r4) 391 000013b8 67e10000 snei r1,r31,#0 392 000013bc 10200038 beqz r1,L86_LF2 393 000013c0 54000000 nop; not filled. 394 000013c4 90610000 lbu r1,(r3) 395 000013c8 003f0829 sne r1,r1,r31 396 000013cc 1420001c bnez r1,L73_LF2 397 000013d0 54000000 nop; not filled. 398 000013d4 20630001 addi r3,r3,#1 399 000013d8 20840001 addi r4,r4,#1 400 000013dc 20420001 addi r2,r2,#1 401 000013e0 0045082a slt r1,r2,r5 402 000013e4 1420ffcc bnez r1,L75_LF2 403 000013e8 54000000 nop; not filled. 404 000013ec L73_LF2: 405 000013ec 00450828 seq r1,r2,r5 406 000013f0 10200010 beqz r1,L80_LF2 407 000013f4 54000000 nop; not filled. 408 000013f8 L86_LF2: 409 000013f8 20010000 addi r1,r0,#0 410 000013fc 08000028 j L84_LF2 411 00001400 54000000 nop; not filled. 412 00001404 L80_LF2: 413 00001404 907f0000 lbu r31,(r3) 414 00001408 90830000 lbu r3,(r4) 415 0000140c 03e30822 sub r1,r31,r3 416 00001410 74210000 sgei r1,r1,#0 417 00001414 2002ffff addi r2,r0,#-1 418 00001418 10200008 beqz r1,L82_LF2 419 0000141c 54000000 nop; not filled. 420 00001420 03e31029 sne r2,r31,r3 421 00001424 L82_LF2: 422 00001424 00020820 add r1,r0,r2 423 00001428 L84_LF2: 424 00001428 8fa20000 lw r2,0(r29) 425 0000142c 8fa30004 lw r3,4(r29) 426 00001430 8fa40008 lw r4,8(r29) 427 00001434 8fa5000c lw r5,12(r29) 428 00001438 8fdffff8 lw r31,-8(r30) 429 0000143c 001ee820 add r29,r0,r30 430 00001440 8fdefffc lw r30,-4(r30) 431 00001444 4be00000 jr r31 432 00001448 54000000 nop 433 0000144c .endproc _dstrncmp 434 0000144c .align 2 435 0000144c .proc _dstrlen 436 0000144c .global _dstrlen 437 0000144c _dstrlen: 438 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 439 0000144c afbefffc sw -4(r29),r30; push fp 440 00001450 001df020 add r30,r0,r29; fp = sp 441 00001454 afbffff8 sw -8(r29),r31; push ret addr 442 00001458 2fbd0010 subui r29,r29,#16; alloc local storage 443 0000145c afa20000 sw 0(r29),r2 444 00001460 8fdf0000 lw r31,(r30) 445 00001464 20020000 addi r2,r0,#0 446 00001468 08000008 j L97_LF2 447 0000146c 54000000 nop; not filled. 448 00001470 L95_LF2: 449 00001470 20420001 addi r2,r2,#1 450 00001474 L97_LF2: 451 00001474 93e10000 lbu r1,(r31) 452 00001478 23ff0001 addi r31,r31,#1 453 0000147c 64210000 snei r1,r1,#0 454 00001480 1420ffec bnez r1,L95_LF2 455 00001484 54000000 nop; not filled. 456 00001488 00020820 add r1,r0,r2 457 0000148c 8fa20000 lw r2,0(r29) 458 00001490 8fdffff8 lw r31,-8(r30) 459 00001494 001ee820 add r29,r0,r30 460 00001498 8fdefffc lw r30,-4(r30) 461 0000149c 4be00000 jr r31 462 000014a0 54000000 nop 463 000014a4 .endproc _dstrlen 464 000014a4 .align 2 465 000014a4 .proc _dstrstr 466 000014a4 .global _dstrstr 467 000014a4 _dstrstr: 468 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 469 000014a4 afbefffc sw -4(r29),r30; push fp 470 000014a8 001df020 add r30,r0,r29; fp = sp 471 000014ac afbffff8 sw -8(r29),r31; push ret addr 472 000014b0 2fbd0020 subui r29,r29,#32; alloc local storage 473 000014b4 afa20000 sw 0(r29),r2 474 000014b8 afa30004 sw 4(r29),r3 475 000014bc afa40008 sw 8(r29),r4 476 000014c0 afa5000c sw 12(r29),r5 477 000014c4 afa60010 sw 16(r29),r6 478 000014c8 afa70014 sw 20(r29),r7 479 000014cc 8fc50000 lw r5,(r30) 480 000014d0 8fc70004 lw r7,4(r30) 481 000014d4 20030000 addi r3,r0,#0 482 000014d8 90e10000 lbu r1,(r7) 483 000014dc 20e20001 addi r2,r7,#1 484 000014e0 64210000 snei r1,r1,#0 485 000014e4 1020001c beqz r1,L125_LF2 486 000014e8 54000000 nop; not filled. 487 000014ec L126_LF2: 488 000014ec 20630001 addi r3,r3,#1 489 000014f0 90410000 lbu r1,(r2) 490 000014f4 20420001 addi r2,r2,#1 491 000014f8 64210000 snei r1,r1,#0 492 000014fc 1420ffec bnez r1,L126_LF2 493 00001500 54000000 nop; not filled. 494 00001504 L125_LF2: 495 00001504 00033020 add r6,r0,r3 496 00001508 080000ac j L149_LF2 497 0000150c 54000000 nop; not filled. 498 00001510 L130_LF2: 499 00001510 00051820 add r3,r0,r5 500 00001514 00072020 add r4,r0,r7 501 00001518 20020000 addi r2,r0,#0 502 0000151c 0046082a slt r1,r2,r6 503 00001520 1020003c beqz r1,L134_LF2 504 00001524 54000000 nop; not filled. 505 00001528 L136_LF2: 506 00001528 909f0000 lbu r31,(r4) 507 0000152c 67e10000 snei r1,r31,#0 508 00001530 10200038 beqz r1,L150_LF2 509 00001534 54000000 nop; not filled. 510 00001538 90610000 lbu r1,(r3) 511 0000153c 003f0829 sne r1,r1,r31 512 00001540 1420001c bnez r1,L134_LF2 513 00001544 54000000 nop; not filled. 514 00001548 20630001 addi r3,r3,#1 515 0000154c 20840001 addi r4,r4,#1 516 00001550 20420001 addi r2,r2,#1 517 00001554 0046082a slt r1,r2,r6 518 00001558 1420ffcc bnez r1,L136_LF2 519 0000155c 54000000 nop; not filled. 520 00001560 L134_LF2: 521 00001560 00460828 seq r1,r2,r6 522 00001564 10200010 beqz r1,L141_LF2 523 00001568 54000000 nop; not filled. 524 0000156c L150_LF2: 525 0000156c 20010000 addi r1,r0,#0 526 00001570 08000028 j L132_LF2 527 00001574 54000000 nop; not filled. 528 00001578 L141_LF2: 529 00001578 90630000 lbu r3,(r3) 530 0000157c 90820000 lbu r2,(r4) 531 00001580 00620822 sub r1,r3,r2 532 00001584 74210000 sgei r1,r1,#0 533 00001588 201fffff addi r31,r0,#-1 534 0000158c 10200008 beqz r1,L143_LF2 535 00001590 54000000 nop; not filled. 536 00001594 0062f829 sne r31,r3,r2 537 00001598 L143_LF2: 538 00001598 001f0820 add r1,r0,r31 539 0000159c L132_LF2: 540 0000159c 64210000 snei r1,r1,#0 541 000015a0 14200010 bnez r1,L131_LF2 542 000015a4 54000000 nop; not filled. 543 000015a8 00050820 add r1,r0,r5 544 000015ac 0800001c j L146_LF2 545 000015b0 54000000 nop; not filled. 546 000015b4 L131_LF2: 547 000015b4 20a50001 addi r5,r5,#1 548 000015b8 L149_LF2: 549 000015b8 90a10000 lbu r1,(r5) 550 000015bc 64210000 snei r1,r1,#0 551 000015c0 1420ff4c bnez r1,L130_LF2 552 000015c4 54000000 nop; not filled. 553 000015c8 20010000 addi r1,r0,#0 554 000015cc L146_LF2: 555 000015cc 8fa20000 lw r2,0(r29) 556 000015d0 8fa30004 lw r3,4(r29) 557 000015d4 8fa40008 lw r4,8(r29) 558 000015d8 8fa5000c lw r5,12(r29) 559 000015dc 8fa60010 lw r6,16(r29) 560 000015e0 8fa70014 lw r7,20(r29) 561 000015e4 8fdffff8 lw r31,-8(r30) 562 000015e8 001ee820 add r29,r0,r30 563 000015ec 8fdefffc lw r30,-4(r30) 564 000015f0 4be00000 jr r31 565 000015f4 54000000 nop 566 000015f8 .endproc _dstrstr 567 000015f8 .align 2 568 000015f8 .proc _dmindex 569 000015f8 .global _dmindex 570 000015f8 _dmindex: 571 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 572 000015f8 afbefffc sw -4(r29),r30; push fp 573 000015fc 001df020 add r30,r0,r29; fp = sp 574 00001600 afbffff8 sw -8(r29),r31; push ret addr 575 00001604 2fbd0020 subui r29,r29,#32; alloc local storage 576 00001608 afa20000 sw 0(r29),r2 577 0000160c afa30004 sw 4(r29),r3 578 00001610 afa40008 sw 8(r29),r4 579 00001614 afa5000c sw 12(r29),r5 580 00001618 afa60010 sw 16(r29),r6 581 0000161c 8fc40000 lw r4,(r30) 582 00001620 8fc60004 lw r6,4(r30) 583 00001624 90810000 lbu r1,(r4) 584 00001628 64210000 snei r1,r1,#0 585 0000162c 10200060 beqz r1,L164_LF2 586 00001630 54000000 nop; not filled. 587 00001634 00012820 add r5,r0,r1 588 00001638 L165_LF2: 589 00001638 00061020 add r2,r0,r6 590 0000163c 80df0000 lb r31,(r6) 591 00001640 33e100ff andi r1,r31,#0x00ff 592 00001644 64210000 snei r1,r1,#0 593 00001648 1020003c beqz r1,L163_LF2 594 0000164c 54000000 nop; not filled. 595 00001650 90830000 lbu r3,(r4) 596 00001654 L169_LF2: 597 00001654 33e100ff andi r1,r31,#0x00ff 598 00001658 00610828 seq r1,r3,r1 599 0000165c 10200010 beqz r1,L168_LF2 600 00001660 54000000 nop; not filled. 601 00001664 00040820 add r1,r0,r4 602 00001668 08000028 j L173_LF2 603 0000166c 54000000 nop; not filled. 604 00001670 L168_LF2: 605 00001670 20420001 addi r2,r2,#1 606 00001674 805f0000 lb r31,(r2) 607 00001678 33e100ff andi r1,r31,#0x00ff 608 0000167c 64210000 snei r1,r1,#0 609 00001680 1420ffd0 bnez r1,L169_LF2 610 00001684 54000000 nop; not filled. 611 00001688 L163_LF2: 612 00001688 14a0ffac bnez r5,L165_LF2 613 0000168c 54000000 nop; not filled. 614 00001690 L164_LF2: 615 00001690 20010000 addi r1,r0,#0 616 00001694 L173_LF2: 617 00001694 8fa20000 lw r2,0(r29) 618 00001698 8fa30004 lw r3,4(r29) 619 0000169c 8fa40008 lw r4,8(r29) 620 000016a0 8fa5000c lw r5,12(r29) 621 000016a4 8fa60010 lw r6,16(r29) 622 000016a8 8fdffff8 lw r31,-8(r30) 623 000016ac 001ee820 add r29,r0,r30 624 000016b0 8fdefffc lw r30,-4(r30) 625 000016b4 4be00000 jr r31 626 000016b8 54000000 nop 627 000016bc .endproc _dmindex 628 000016bc .align 2 629 000016bc .proc _dindex 630 000016bc .global _dindex 631 000016bc _dindex: 632 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 633 000016bc afbefffc sw -4(r29),r30; push fp 634 000016c0 001df020 add r30,r0,r29; fp = sp 635 000016c4 afbffff8 sw -8(r29),r31; push ret addr 636 000016c8 2fbd0010 subui r29,r29,#16; alloc local storage 637 000016cc afa20000 sw 0(r29),r2 638 000016d0 afa30004 sw 4(r29),r3 639 000016d4 8fc20000 lw r2,(r30) 640 000016d8 8fc30004 lw r3,4(r30) 641 000016dc 08000024 j L187_LF2 642 000016e0 54000000 nop; not filled. 643 000016e4 L183_LF2: 644 000016e4 33e100ff andi r1,r31,#0x00ff 645 000016e8 00230828 seq r1,r1,r3 646 000016ec 10200010 beqz r1,L184_LF2 647 000016f0 54000000 nop; not filled. 648 000016f4 00020820 add r1,r0,r2 649 000016f8 08000020 j L186_LF2 650 000016fc 54000000 nop; not filled. 651 00001700 L184_LF2: 652 00001700 20420001 addi r2,r2,#1 653 00001704 L187_LF2: 654 00001704 805f0000 lb r31,(r2) 655 00001708 33e100ff andi r1,r31,#0x00ff 656 0000170c 64210000 snei r1,r1,#0 657 00001710 1420ffd0 bnez r1,L183_LF2 658 00001714 54000000 nop; not filled. 659 00001718 20010000 addi r1,r0,#0 660 0000171c L186_LF2: 661 0000171c 8fa20000 lw r2,0(r29) 662 00001720 8fa30004 lw r3,4(r29) 663 00001724 8fdffff8 lw r31,-8(r30) 664 00001728 001ee820 add r29,r0,r30 665 0000172c 8fdefffc lw r30,-4(r30) 666 00001730 4be00000 jr r31 667 00001734 54000000 nop 668 00001738 .endproc _dindex 669 00001738 .align 2 670 00001738 .proc _ditoa 671 00001738 .global _ditoa 672 00001738 _ditoa: 673 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 674 00001738 afbefffc sw -4(r29),r30; push fp 675 0000173c 001df020 add r30,r0,r29; fp = sp 676 00001740 afbffff8 sw -8(r29),r31; push ret addr 677 00001744 2fbd0020 subui r29,r29,#32; alloc local storage 678 00001748 afa20000 sw 0(r29),r2 679 0000174c afa30004 sw 4(r29),r3 680 00001750 afa40008 sw 8(r29),r4 681 00001754 afa5000c sw 12(r29),r5 682 00001758 afa60010 sw 16(r29),r6 683 0000175c 8fc30000 lw r3,(r30) 684 00001760 8fc40004 lw r4,4(r30) 685 00001764 68610000 slti r1,r3,#0 686 00001768 10200010 beqz r1,L203_LF2 687 0000176c 54000000 nop; not filled. 688 00001770 2006002d addi r6,r0,(#0x2d)&0xff 689 00001774 08000014 j L216_LF2 690 00001778 54000000 nop; not filled. 691 0000177c L203_LF2: 692 0000177c 64610000 snei r1,r3,#0 693 00001780 14200018 bnez r1,L205_LF2 694 00001784 54000000 nop; not filled. 695 00001788 20060030 addi r6,r0,(#0x30)&0xff 696 0000178c L216_LF2: 697 0000178c a0860000 sb (r4),r6 698 00001790 20840001 addi r4,r4,#1 699 00001794 0800007c j L204_LF2 700 00001798 54000000 nop; not filled. 701 0000179c L205_LF2: 702 0000179c 201f0001 addi r31,r0,#1 703 000017a0 03e3082c sle r1,r31,r3 704 000017a4 1020001c beqz r1,L208_LF2 705 000017a8 54000000 nop; not filled. 706 000017ac L209_LF2: 707 000017ac 53e10002 slli r1,r31,#0x2 708 000017b0 003f0820 add r1,r1,r31 709 000017b4 503f0001 slli r31,r1,#0x1 710 000017b8 03e3082c sle r1,r31,r3 711 000017bc 1420ffec bnez r1,L209_LF2 712 000017c0 54000000 nop; not filled. 713 000017c4 L208_LF2: 714 000017c4 2005000a addi r5,r0,#10 715 000017c8 L212_LF2: 716 000017c8 03e00035 movi2fp f0,r31 717 000017cc 00a00835 movi2fp f1,r5 718 000017d0 0401000f div f0,f0,f1 719 000017d4 0000f834 movfp2i r31,f0 720 000017d8 00600035 movi2fp f0,r3 721 000017dc 03e00835 movi2fp f1,r31 722 000017e0 0401000f div f0,f0,f1 723 000017e4 00001034 movfp2i r2,f0 724 000017e8 20410030 addi r1,r2,#48 725 000017ec a0810000 sb (r4),r1 726 000017f0 20840001 addi r4,r4,#1 727 000017f4 00400035 movi2fp f0,r2 728 000017f8 03e00835 movi2fp f1,r31 729 000017fc 0401000e mult f0,f0,f1 730 00001800 00000834 movfp2i r1,f0 731 00001804 00611822 sub r3,r3,r1 732 00001808 6fe10001 sgti r1,r31,#1 733 0000180c 1420ffb8 bnez r1,L212_LF2 734 00001810 54000000 nop; not filled. 735 00001814 L204_LF2: 736 00001814 20060000 addi r6,r0,(#0x0)&0xff 737 00001818 a0860000 sb (r4),r6 738 0000181c 8fa20000 lw r2,0(r29) 739 00001820 8fa30004 lw r3,4(r29) 740 00001824 8fa40008 lw r4,8(r29) 741 00001828 8fa5000c lw r5,12(r29) 742 0000182c 8fa60010 lw r6,16(r29) 743 00001830 8fdffff8 lw r31,-8(r30) 744 00001834 001ee820 add r29,r0,r30 745 00001838 8fdefffc lw r30,-4(r30) 746 0000183c 4be00000 jr r31 747 00001840 54000000 nop 748 00001844 .endproc _ditoa 749 00001844 .align 2 750 00001844 .proc _dstrtol 751 00001844 .global _dstrtol 752 00001844 _dstrtol: 753 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 754 00001844 afbefffc sw -4(r29),r30; push fp 755 00001848 001df020 add r30,r0,r29; fp = sp 756 0000184c afbffff8 sw -8(r29),r31; push ret addr 757 00001850 2fbd0020 subui r29,r29,#32; alloc local storage 758 00001854 afa20000 sw 0(r29),r2 759 00001858 afa30004 sw 4(r29),r3 760 0000185c afa40008 sw 8(r29),r4 761 00001860 afa5000c sw 12(r29),r5 762 00001864 afa60010 sw 16(r29),r6 763 00001868 8fc20000 lw r2,(r30) 764 0000186c 8fc50004 lw r5,4(r30) 765 00001870 8fc40008 lw r4,8(r30) 766 00001874 20030000 addi r3,r0,#0 767 00001878 08000008 j L247_LF2 768 0000187c 54000000 nop; not filled. 769 00001880 L220_LF2: 770 00001880 20420001 addi r2,r2,#1 771 00001884 L247_LF2: 772 00001884 805f0000 lb r31,(r2) 773 00001888 33e100ff andi r1,r31,#0x00ff 774 0000188c 60210020 seqi r1,r1,#32 775 00001890 1420ffec bnez r1,L220_LF2 776 00001894 54000000 nop; not filled. 777 00001898 23e1fff7 addi r1,r31,#-9 778 0000189c 302100ff andi r1,r1,#0x00ff 779 000018a0 70210001 sleui r1,r1,#1 780 000018a4 1420ffd8 bnez r1,L220_LF2 781 000018a8 54000000 nop; not filled. 782 000018ac 64a10000 snei r1,r5,#0 783 000018b0 10200008 beqz r1,L222_LF2 784 000018b4 54000000 nop; not filled. 785 000018b8 aca20000 sw (r5),r2 786 000018bc L222_LF2: 787 000018bc 905f0000 lbu r31,(r2) 788 000018c0 67e10000 snei r1,r31,#0 789 000018c4 10200090 beqz r1,L248_LF2 790 000018c8 54000000 nop; not filled. 791 000018cc 63e1002d seqi r1,r31,#45 792 000018d0 10200014 beqz r1,L224_LF2 793 000018d4 54000000 nop; not filled. 794 000018d8 2006ffff addi r6,r0,#-1 795 000018dc 20420001 addi r2,r2,#1 796 000018e0 08000008 j L225_LF2 797 000018e4 54000000 nop; not filled. 798 000018e8 L224_LF2: 799 000018e8 20060001 addi r6,r0,#1 800 000018ec L225_LF2: 801 000018ec 64810000 snei r1,r4,#0 802 000018f0 14200054 bnez r1,L226_LF2 803 000018f4 54000000 nop; not filled. 804 000018f8 90410000 lbu r1,(r2) 805 000018fc 60210030 seqi r1,r1,#48 806 00001900 10200040 beqz r1,L227_LF2 807 00001904 54000000 nop; not filled. 808 00001908 20420001 addi r2,r2,#1 809 0000190c 905f0000 lbu r31,(r2) 810 00001910 63e10078 seqi r1,r31,#120 811 00001914 14200010 bnez r1,L229_LF2 812 00001918 54000000 nop; not filled. 813 0000191c 63e10058 seqi r1,r31,#88 814 00001920 10200014 beqz r1,L228_LF2 815 00001924 54000000 nop; not filled. 816 00001928 L229_LF2: 817 00001928 20040010 addi r4,r0,#16 818 0000192c 20420001 addi r2,r2,#1 819 00001930 08000014 j L226_LF2 820 00001934 54000000 nop; not filled. 821 00001938 L228_LF2: 822 00001938 20040008 addi r4,r0,#8 823 0000193c 08000008 j L226_LF2 824 00001940 54000000 nop; not filled. 825 00001944 L227_LF2: 826 00001944 2004000a addi r4,r0,#10 827 00001948 L226_LF2: 828 00001948 2081ffff addi r1,r4,#-1 829 0000194c 6c21000f sgtui r1,r1,#15 830 00001950 10200010 beqz r1,L233_LF2 831 00001954 54000000 nop; not filled. 832 00001958 L248_LF2: 833 00001958 00030820 add r1,r0,r3 834 0000195c 080000c4 j L245_LF2 835 00001960 54000000 nop; not filled. 836 00001964 L233_LF2: 837 00001964 805f0000 lb r31,(r2) 838 00001968 23e1ffd0 addi r1,r31,#-48 839 0000196c 302100ff andi r1,r1,#0x00ff 840 00001970 70210009 sleui r1,r1,#9 841 00001974 10200014 beqz r1,L236_LF2 842 00001978 54000000 nop; not filled. 843 0000197c 33e100ff andi r1,r31,#0x00ff 844 00001980 2021ffd0 addi r1,r1,#-48 845 00001984 08000050 j L237_LF2 846 00001988 54000000 nop; not filled. 847 0000198c L236_LF2: 848 0000198c 23e1ff9f addi r1,r31,#-97 849 00001990 302100ff andi r1,r1,#0x00ff 850 00001994 70210019 sleui r1,r1,#25 851 00001998 10200014 beqz r1,L238_LF2 852 0000199c 54000000 nop; not filled. 853 000019a0 33e100ff andi r1,r31,#0x00ff 854 000019a4 2021ffa9 addi r1,r1,#-87 855 000019a8 0800002c j L237_LF2 856 000019ac 54000000 nop; not filled. 857 000019b0 L238_LF2: 858 000019b0 23e1ffbf addi r1,r31,#-65 859 000019b4 302100ff andi r1,r1,#0x00ff 860 000019b8 70210019 sleui r1,r1,#25 861 000019bc 10200014 beqz r1,L240_LF2 862 000019c0 54000000 nop; not filled. 863 000019c4 33e100ff andi r1,r31,#0x00ff 864 000019c8 2021ffc9 addi r1,r1,#-55 865 000019cc 08000008 j L237_LF2 866 000019d0 54000000 nop; not filled. 867 000019d4 L240_LF2: 868 000019d4 200103e8 addi r1,r0,#1000 869 000019d8 L237_LF2: 870 000019d8 0024f82a slt r31,r1,r4 871 000019dc 13e00024 beqz r31,L246_LF2 872 000019e0 54000000 nop; not filled. 873 000019e4 00600035 movi2fp f0,r3 874 000019e8 00800835 movi2fp f1,r4 875 000019ec 0401000e mult f0,f0,f1 876 000019f0 00001834 movfp2i r3,f0 877 000019f4 00611820 add r3,r3,r1 878 000019f8 20420001 addi r2,r2,#1 879 000019fc 17e0ff64 bnez r31,L233_LF2 880 00001a00 54000000 nop; not filled. 881 00001a04 L246_LF2: 882 00001a04 64a10000 snei r1,r5,#0 883 00001a08 10200008 beqz r1,L244_LF2 884 00001a0c 54000000 nop; not filled. 885 00001a10 aca20000 sw (r5),r2 886 00001a14 L244_LF2: 887 00001a14 00600035 movi2fp f0,r3 888 00001a18 00c00835 movi2fp f1,r6 889 00001a1c 0401000e mult f0,f0,f1 890 00001a20 00000834 movfp2i r1,f0 891 00001a24 L245_LF2: 892 00001a24 8fa20000 lw r2,0(r29) 893 00001a28 8fa30004 lw r3,4(r29) 894 00001a2c 8fa40008 lw r4,8(r29) 895 00001a30 8fa5000c lw r5,12(r29) 896 00001a34 8fa60010 lw r6,16(r29) 897 00001a38 8fdffff8 lw r31,-8(r30) 898 00001a3c 001ee820 add r29,r0,r30 899 00001a40 8fdefffc lw r30,-4(r30) 900 00001a44 4be00000 jr r31 901 00001a48 54000000 nop 902 00001a4c .endproc _dstrtol 903 00001a4c .align 2 904 00001a4c .proc _bcopy 905 00001a4c .global _bcopy 906 00001a4c _bcopy: 907 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 908 00001a4c afbefffc sw -4(r29),r30; push fp 909 00001a50 001df020 add r30,r0,r29; fp = sp 910 00001a54 afbffff8 sw -8(r29),r31; push ret addr 911 00001a58 2fbd0018 subui r29,r29,#24; alloc local storage 912 00001a5c afa20000 sw 0(r29),r2 913 00001a60 afa30004 sw 4(r29),r3 914 00001a64 afa40008 sw 8(r29),r4 915 00001a68 8fc30000 lw r3,(r30) 916 00001a6c 8fc20004 lw r2,4(r30) 917 00001a70 8fdf0008 lw r31,8(r30) 918 00001a74 08000014 j L259_LF2 919 00001a78 54000000 nop; not filled. 920 00001a7c L257_LF2: 921 00001a7c 80640000 lb r4,(r3) 922 00001a80 a0440000 sb (r2),r4 923 00001a84 20630001 addi r3,r3,#1 924 00001a88 20420001 addi r2,r2,#1 925 00001a8c L259_LF2: 926 00001a8c 001f0820 add r1,r0,r31 927 00001a90 23ffffff addi r31,r31,#-1 928 00001a94 6c210000 sgti r1,r1,#0 929 00001a98 1420ffe0 bnez r1,L257_LF2 930 00001a9c 54000000 nop; not filled. 931 00001aa0 8fa20000 lw r2,0(r29) 932 00001aa4 8fa30004 lw r3,4(r29) 933 00001aa8 8fa40008 lw r4,8(r29) 934 00001aac 8fdffff8 lw r31,-8(r30) 935 00001ab0 001ee820 add r29,r0,r30 936 00001ab4 8fdefffc lw r30,-4(r30) 937 00001ab8 4be00000 jr r31 938 00001abc 54000000 nop 939 00001ac0 .endproc _bcopy 940 00001ac0 .align 2 941 00001ac0 .proc _bzero 942 00001ac0 .global _bzero 943 00001ac0 _bzero: 944 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 945 00001ac0 afbefffc sw -4(r29),r30; push fp 946 00001ac4 001df020 add r30,r0,r29; fp = sp 947 00001ac8 afbffff8 sw -8(r29),r31; push ret addr 948 00001acc 2fbd0010 subui r29,r29,#16; alloc local storage 949 00001ad0 afa20000 sw 0(r29),r2 950 00001ad4 afa30004 sw 4(r29),r3 951 00001ad8 8fc20000 lw r2,(r30) 952 00001adc 8fdf0004 lw r31,4(r30) 953 00001ae0 08000010 j L270_LF2 954 00001ae4 54000000 nop; not filled. 955 00001ae8 L268_LF2: 956 00001ae8 20030000 addi r3,r0,(#0x0)&0xff 957 00001aec a0430000 sb (r2),r3 958 00001af0 20420001 addi r2,r2,#1 959 00001af4 L270_LF2: 960 00001af4 001f0820 add r1,r0,r31 961 00001af8 23ffffff addi r31,r31,#-1 962 00001afc 6c210000 sgti r1,r1,#0 963 00001b00 1420ffe4 bnez r1,L268_LF2 964 00001b04 54000000 nop; not filled. 965 00001b08 8fa20000 lw r2,0(r29) 966 00001b0c 8fa30004 lw r3,4(r29) 967 00001b10 8fdffff8 lw r31,-8(r30) 968 00001b14 001ee820 add r29,r0,r30 969 00001b18 8fdefffc lw r30,-4(r30) 970 00001b1c 4be00000 jr r31 971 00001b20 54000000 nop 972 00001b24 .endproc _bzero 973 ;;; Ethan L. Miller, 1999. Released to the public domain 974 ;;; 975 ;;; Most of the traps are called in files from libtraps. 978 00001b24 .align 2 979 00001b24 .proc _exit 980 00001b24 .global _exit 981 00001b24 _exit: 982 00001b24 44000300 trap #0x300 983 00001b28 4be00000 jr r31 984 00001b2c 54000000 nop 985 00001b30 .endproc _exit 987 ; for the benefit of gcc. 988 00001b30 .proc ___main 989 00001b30 .global ___main 990 00001b30 ___main: 991 00001b30 4be00000 jr r31 992 00001b34 54000000 nop 993 00001b38 .endproc ___main 994 00001b38 .text 995 00001b38 .global _etext 996 00001b38 _etext: 997 00001b38 .align 3 998 00001b38 .data 999 00002018 .global _edata 1000 00002018 _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/queue.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool)>>16)&0xffff addui r2,r2,(_linkpool)&0xffff L63: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1: .ascii "%s: %s\n\000" .align 2 LC2: .ascii "QueueFreeLink\000" .align 2 LC3: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC2)>>16)&0xffff addui r1,r1,(LC2)&0xffff sw 4(r29),r1 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L77: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4: .ascii "QueueAllocLink\000" .align 2 LC5: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97: addi r4,r0,#0 sw (r3),r4 j L98 nop ; not filled. L92: addi r3,r0,#0 L98: snei r1,r3,#0 bnez r1,L100 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC4)>>16)&0xffff addui r1,r1,(LC4)&0xffff sw 4(r29),r1 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L100: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool: .space 6400

home/bshapir/cs314/project4/option1/lab4_2/src/userprog2.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 26 ; Text size: 2880 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\nIn Userprog2, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 40000 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40008; alloc local storage jal ___main nop; not filled. addi r4,r0,#0 addi r2,r0,#1 lhi r5,#-1 addui r5,r5,#25536 addi r31,r30,#-8 addui r3,r31,#39996 L16_LF0: add r1,r31,r5 sw (r1),r2 addi r2,r2,#1 addi r31,r31,#2000 sle r1,r31,r3 bnez r1,L16_LF0 nop; not filled. lhi r3,#-1 addui r3,r3,#25536 addi r31,r30,#-8 addui r2,r31,#39996 L21_LF0: add r1,r31,r3 lw r1,(r1) add r4,r4,r1 addi r31,r31,#2000 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r6,((LC0_LF0)>>16)&0xffff addui r6,r6,(LC0_LF0)&0xffff sw (r29),r6 sw 4(r29),r4 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/misc.c

// // misc.c // // Miscellaneous routines for the operating system. These include // basic routines that would be in libc if we had access to it. // #include "misc.h" //---------------------------------------------------------------------- // // dstrcpy // dstrncpy // dstrcat // // These three functions do exactly what their counterparts in the // standard C library do. // //---------------------------------------------------------------------- char* dstrcpy (char *to, const char *from) { char *tokeep = to; char last; do { last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char* dstrncpy (char *to, const char *from, int n) { char *tokeep = to; char last; int cur = 0; do { // Stop if we're exceeded the maximum string length if (n-- <= 0) { break; } last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char * dstrcat (char *onto, const char *addn) { char *konto = onto; while (*onto != '\0') { onto++; } dstrcpy (onto, addn); return (konto); } int dstrncmp (const char *s1, const char *s2, int n) { int i; for (i = 0; i < n; i++) { // If they don't match, end the loop if (*s2 == '\0') { // If the second string is NULL, we're at the end of the string and // have a match. return (0); } else if (*s1 != *s2) { break; } s1++; s2++; } if (i == n) { return (0); } else { return (((*s1 - *s2) < 0) ? -1 : ((*s1 == *s2) ? 0 : 1)); } } int dstrlen (const char *s) { int i = 0; while (*(s++) != '\0') { i++; } return (i); } const char * dstrstr (const char *buf, const char *pattern) { int n = dstrlen (pattern); while (*buf != '\0') { if (dstrncmp (buf, pattern, n) == 0) { return (buf); } buf++; } return ((char *)0); } � //---------------------------------------------------------------------- // // dindex // dmindex // // dindex is identical to the libc function index. dmindex is // similar to dindex, but it reports the index in the string of the // first match for any one of the characters passed (rather than // matching only on a single specific character). // //---------------------------------------------------------------------- const char * dmindex (const char *s, const char *match) { const char *c; while (*s != '\0') { for (c = match; *c != '\0'; c++) { if (*s == *c) { return (s); } } } return ((const char *)0); } const char* dindex (const char *s, int c) { while (*s != '\0') { if (*s == c) { return (s); } s++; } return ((char *)0); } � //---------------------------------------------------------------------- // // ditoa: Convert an integer into an ASCII number. // dstrtol: Convert ASCII into an integer // //---------------------------------------------------------------------- void ditoa (int n, char *buf) { int k; if (n < 0) { *(buf++) = '-'; n = -n; } else if (n == 0) { *(buf++) = '0'; } else { for (k = 1; k <= n; k *= 10) { } do { k /= 10; *(buf++) = (n / k) + '0'; n %= k; } while (k > 1); } *buf = '\0'; } int dstrtol (char *c, char **newpos, int base) { int v = 0; int curdigit; int sign; while ((*c == ' ') || (*c == '\t') || (*c == '\n')) { c++; } if (newpos != (char **)0) { *newpos = c; } if (*c == '\0') { return (v); } if (*c == '-') { sign = -1; c++; } else { sign = 1; } if (base == 0) { if (*c == '0') { c++; if ((*c == 'x') || (*c == 'X')) { base = 16; c++; } else { base = 8; } } else { base = 10; } } if ((base <= 0) || (base > 16)) { return (v); } do { if ((*c >= '0') && (*c <= '9')) { curdigit = (*c) - '0'; } else if ((*c >= 'a') && (*c <= 'z')) { curdigit = (*c) + 10 - 'a'; } else if ((*c >= 'A') && (*c <= 'Z')) { curdigit = (*c) + 10 - 'A'; } else { curdigit = 1000; } if (curdigit < base) { v *= base; v += curdigit; c++; } } while (curdigit < base); if (newpos != (char **)0) { *newpos = c; } v *= sign; return (v); } � //---------------------------------------------------------------------- // // bcopy: Copy bytes from one location to another. // bzero: Set all the bytes in a region to zero. // //---------------------------------------------------------------------- void bcopy (char *src, char *dst, int count) { while (count-- > 0) { *(dst++) = *(src++); } } void bzero (char *dst, int count) { while (count-- > 0) { *(dst++) = 0; } }

home/bshapir/cs314/project4/option1/lab4_2/src/memory.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61 nop ; not filled. addi r2,r3,#31 L61: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68 nop ; not filled. addui r2,r2,#65535 L68: srai r8,r2,#0x10 lhi r3,((_pagestart)>>16)&0xffff addui r3,r3,(_pagestart)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69 nop ; not filled. addui r2,r2,#65535 L69: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax)>>16)&0xffff addui r3,r3,(_freemapmax)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70 nop ; not filled. addi r2,r8,#62 L70: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-16 lhi r11,((LC1)>>16)&0xffff addui r11,r11,(LC1)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop ; not filled. addi r29,r29,#16 L71: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73 nop ; not filled. L74: addi r29,r29,#-8 lhi r11,((LC2)>>16)&0xffff addui r11,r11,(LC2)&0xffff sw (r29),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L73: addi r2,r0,#0 lhi r4,((_freemapmax)>>16)&0xffff addui r4,r4,(_freemapmax)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76 nop ; not filled. lhi r3,((_freepages)>>16)&0xffff addui r3,r3,(_freepages)&0xffff L78: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78 nop ; not filled. L76: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81 nop ; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone)>>16)&0xffff addui r9,r9,(_negativeone)&0xffff L83: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85 nop ; not filled. addi r2,r4,#31 L85: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages)>>16)&0xffff addui r11,r11,(_freepages)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82 nop ; not filled. L89: addi r29,r29,#-16 lhi r11,((LC0)>>16)&0xffff addui r11,r11,(LC0)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L82: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83 nop ; not filled. L81: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-8 lhi r11,((LC3)>>16)&0xffff addui r11,r11,(LC3)&0xffff sw (r29),r11 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42: .word 0 .align 2 LC4: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111 nop ; not filled. addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110 nop ; not filled. L111: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L112: lhi r2,((_mapnum42)>>16)&0xffff addui r2,r2,(_mapnum42)&0xffff lw r1,(r2) lhi r4,((_freepages)>>16)&0xffff addui r4,r4,(_freepages)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115 nop ; not filled. lhi r1,((_freemapmax)>>16)&0xffff addui r1,r1,(_freemapmax)&0xffff lw r3,(r1) L116: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114 nop ; not filled. addi r7,r0,#0 sw (r2),r7 L114: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116 nop ; not filled. L115: lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120 nop ; not filled. addi r2,r0,#1 L121: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121 nop ; not filled. L120: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42)>>16)&0xffff addui r5,r5,(_mapnum42)&0xffff lw r3,(r5) lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125 nop ; not filled. L126: addi r29,r29,#-16 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L125: lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129 nop ; not filled. addi r2,r6,#31 L129: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133 nop ; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128 nop ; not filled. L133: addi r29,r29,#-16 lhi r7,((LC0)>>16)&0xffff addui r7,r7,(LC0)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L128: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134 nop ; not filled. L135: addi r29,r29,#-16 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L134: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140 nop ; not filled. L139: addi r1,r0,#0 L140: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L168: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170 nop ; not filled. addi r31,r0,#0 j L169 nop ; not filled. L170: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169: snei r1,r31,#0 beqz r1,L167 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172 nop ; not filled. add r2,r0,r3 L172: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168 nop ; not filled. L167: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L192: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194 nop ; not filled. addi r31,r0,#0 j L193 nop ; not filled. L194: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193: snei r1,r31,#0 beqz r1,L191 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197 nop ; not filled. add r2,r0,r3 L197: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192 nop ; not filled. L191: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61: .word 13316 .align 2 LC8: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214 nop ; not filled. lhi r1,((_invalidOps61)>>16)&0xffff addui r1,r1,(_invalidOps61)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213 nop ; not filled. L214: addi r1,r0,#-1 j L218 nop ; not filled. L213: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215 nop ; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216 nop ; not filled. L217: addi r29,r29,#-24 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L216: add r1,r0,r4 L218: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart: .space 4 .align 2 _freemapmax: .space 4 .align 2 _nfreepages: .space 4 .align 2 _freepages: .space 8192

home/bshapir/cs314/project4/option1/lab4_2/src/dlxsim.cc

home/bshapir/cs314/project4/option1/lab4_2/src/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  Copyright (c) 1999 by Ethan L. Miller
//  University of Maryland Baltimore County
//

static   char  rcsid []   =   "$Id: dlxsim.cc,v 1.2 2000/09/20 22:16:34 elm Exp elm $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   "dlx.h"

extern   int  errno ;
char     debug [ 100 ];

//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu   ( int  msize )
{
   int        i ;
   struct  timeval t ;

  flags  =   0 ;
  usElapsed  =   0.0 ;
  instrsExecuted  =   0.0 ;
  usPerInst  =   1.0 ;
   for   ( =   0 ;  i  <   32 ;  i ++ )   {
    sreg [ i ]   =   0 ;
    ireg [ i ]   =   0 ;
    freg [ i ]   =   0 ;
   }
   SetStatusBit   ( DLX_STATUS_PAGE_TABLE );
   SetStatusBit   ( DLX_STATUS_SYSMODE );
   EnableInterrupts   ();
  timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
  memSize  =  msize ;
  memory  =   new  uint32 [ msize / sizeof ( uint32 )];
  basicBlockStart  =   1 ;    // basic block can never start at address 1!
   // Initialize the keyboard I/O stuff.
  kbdbufferedchars  =   0 ;
  kbdrpos  =  kbdwpos  =   0 ;
  kbdcounter  =   0 ;
   SetupRawIo   ();
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   ( double ) t . tv_sec  +   (( double ) t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
Cpu :: TraceFile   ( char   * name )
{
   if   (( name  ==  NULL )   ||   ( ! strcmp  ( name ,   "-" )))   {
    tracefp  =  stdout ;
     return   ( 1 );
   }   else   if   (( tracefp  =  fopen  ( name ,   "w" ))   ==  NULL )   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Instruction parsing functions
//
//  These functions take an instruction and return the relevant fields.
//
//----------------------------------------------------------------------
inline
void
Cpu :: GetRFields   ( uint32 inst ,  uint32 &  src1 ,  uint32 &  src2 ,  uint32 &  dst )
{
  src1  =   ( inst  >>  DLX_RFMT_SRC1_SHIFT )   &  DLX_REG_MASK ;
  src2  =   ( inst  >>  DLX_RFMT_SRC2_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_RFMT_DST_SHIFT )   &  DLX_REG_MASK ;
}

inline
void
Cpu :: GetIFields   ( uint32 inst ,  uint32 &  src ,  uint32 &  imm ,  uint32 &  dst )
{
  src  =   ( inst  >>  DLX_IFMT_SRC_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_IFMT_DST_SHIFT )   &  DLX_REG_MASK ;
  imm  =   ( inst  >>  DLX_IFMT_IMM_SHIFT )   &   0xffff ;
}

inline
void
Cpu :: GetJFields   ( uint32 inst ,  uint32 &  jaddr )
{
  jaddr  =  inst  &   0x1ffffff ;
   if   ( jaddr  &   0x1000000 )   {
    jaddr  |=   0xfe000000 ;
   }
}

inline
void
Cpu :: SignExtend16   ( uint32 &  v )
{
   if   ( &   0x8000 )   {
    v  |=   0xffff0000 ;
   }
}

inline
void
Cpu :: SignExtend8   ( uint32 &  v )
{
   if   ( &   0x80 )   {
    v  |=   0xffffff00 ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Jump
//
//  Jump to a particular location after dealing with the delay
//  slot.  Checks to ensure that the jump address could be valid
//  (ie, is on a word boundary).  It doesn't check to ensure that
//  the jump destination is valid; that's done on the first instruction
//  fetch to follow.
//
//----------------------------------------------------------------------
inline
int
Cpu :: Jump   ( uint32 jmpDst )
{
   if   (( jmpDst  &   0x3 )   ==   0 )   {
    DBPRINTF  ( 'j' ,   "Jump from 0x%x to 0x%x.\n" ,  PC (),  jmpDst );
     OutputBasicBlock   ( jmpDst );
     SetPC   ( jmpDst );
   }   else   {
     CauseException   ( DLX_EXC_ADDRESS );
   }
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Instruction functions
//
//  These functions implement individual instructions.  They return
//  the number of instructions executed, which will either be 1 if the
//  instruction completed successfully or 0 if the instruction caused
//  an exception.
//
//  Since the instructions are pretty simple (and similar), they won't
//  be documented extensively except for the more complex ones.
//----------------------------------------------------------------------

//----------------------------------------------------------------------
//
//  Generic ALU R-R instructions
//
//----------------------------------------------------------------------
static
int
InstAdd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSub   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate arithmetic functions
//
//----------------------------------------------------------------------
static
int
InstAddi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSubi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for addui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for subui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R logical functions
//
//----------------------------------------------------------------------

static
int
InstAnd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstOr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstXor   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstSll   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  v2 );
   return   ( 1 );
}

static
int
InstSra   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  result  =  v1  >>  v2 ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  v2 )   -   1 )   <<   ( 32   -  v2 );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrl   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  v2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate logical functions
//
//----------------------------------------------------------------------
static
int
InstAndi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  imm );
   return   ( 1 );
}

static
int
InstOri   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  imm );
   return   ( 1 );
}

static
int
InstXori   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  imm );
   return   ( 1 );
}

static
int
InstSlli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  imm );
   return   ( 1 );
}

static
int
InstSrai   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  result  =  v1  >>  imm ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  imm )   -   1 )   <<   ( 32   -  imm );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  imm );
   return   ( 1 );
}

static
int
InstLhi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  dst ,  imm ;

  cpu -> GetIFields   ( inst ,  src ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  imm  <<   16 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R set instructions
//
//----------------------------------------------------------------------
static
int
InstSeq   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSne   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSgt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSle   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSge   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate set instructions
//
//----------------------------------------------------------------------
static
int
InstSeqi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSnei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Load instructions
//
//----------------------------------------------------------------------
static
int
InstLw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  DBPRINTF  ( 'l' ,   "Loading word 0x%08x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lw" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  DBPRINTF  ( 'l' , "Loading signed half 0x%04x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lh" ,  dst ,  addr ,  val );
  cpu -> SignExtend16   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLhu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xffff ;
  DBPRINTF  ( 'l' , "Loading unsigned half 0x%04x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lhu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading signed byte 0x%02x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lb" ,  dst ,  addr ,  val );
  cpu -> SignExtend8   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLbu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading unsigned byte 0x%02x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lbu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Store instructions
//
//----------------------------------------------------------------------
static
int
InstSh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   // ReadWord checks for misaligned accesses.
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffe ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xffff );
  val  &=   ~ ( 0xffff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing half 0x%04x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sh" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xff );
  val  &=   ~ ( 0xff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing byte 0x%02x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sb" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetIreg   ( dst );
  DBPRINTF  ( 's' , "Storing word 0x%08x to location 0x%x.\n" ,  val ,  addr );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sw" ,  dst ,  addr ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  FP load/store instructions
//
//----------------------------------------------------------------------
static
int
InstLf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> PutFreg   ( dst ,  val );
  cpu -> TraceAccess ( "lf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstLd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
   if   (( dst  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   if   ( !  cpu -> ReadWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  cpu -> PutFreg   ( dst ,  val1 );
  cpu -> PutFreg   ( dst + 1 , val2 );
#else
  cpu -> PutFreg   ( dst , val2 );
  cpu -> PutFreg   ( dst + 1 ,  val1 );
#endif
  DBPRINTF  ( 'f' , "Read double %lf from address %08x\n" ,  cpu -> GetFregD   ( dst ),
        addr );
  cpu -> TraceAccess ( "ld0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "ld1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

static
int
InstSf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetFreg   ( dst );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstSd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> TestWriteWord   ( addr + 4 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  val1  =  cpu -> GetFreg   ( dst );
  val2  =  cpu -> GetFreg   ( dst + 1 );
#else
  val1  =  cpu -> GetFreg   ( dst + 1 );
  val2  =  cpu -> GetFreg   ( dst );
#endif
   if   ( !  cpu -> WriteWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   // Should never fail, since write was tested earlier
   if   ( !  cpu -> WriteWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sd0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "sd1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous FP move instructions
//
//----------------------------------------------------------------------
static
int
InstMovf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   (( dst  &   0x1 )   ||   ( src1  &   0x1 ))   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
  cpu -> PutFreg   ( dst + 1 ,  cpu -> GetFreg   ( src1 + 1 ));
   return   ( 1 );
}

static
int
InstMovfp2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovi2fp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Unconditional jumps & subroutine calls
//
//----------------------------------------------------------------------
static
int
InstJmp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

static
int
InstJal   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
  DBPRINTF  ( 'j' ,   "jal from 0x%x to 0x%x.\n" ,  cpu -> PC (),
        cpu -> PC ()   +   ( int ) joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJalr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

//----------------------------------------------------------------------
//
//  Conditional branches
//
//----------------------------------------------------------------------
static
int
InstBeqz   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   ==   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBnez   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   !=   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( !  cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Integer multiply and divide (done by FP unit).  Note that
//  multiplication overflows are NOT caught, and results are
//  unpredictable (may depend on machine on which simulator is
//  run).
//
//----------------------------------------------------------------------
static
int
InstMult   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   *   ( int ) cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstMultu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   *  cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstDiv   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   /   ( int ) denom );
   }
   return   ( 1 );
}

static
int
InstDivu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  trap
//
//  NOTE: different from the description in the DLX handbook.
//
//  The trap in DLX is unvectored; it's up to the interrupt handler
//  to do the vectoring.  However, the cause register is loaded with
//  the trap argument with the top 5 bits set to 00001.  This makes
//  it easy to identify traps and to vector them properly.
//
//  The trap instruction is also a way to access services from the
//  underlying machine.  In particular, we can do such things as
//  file access and printing.  Note that character access is handled
//  separately.
//----------------------------------------------------------------------
static
int
InstTrap   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    trapVector ;

  cpu -> GetJFields   ( inst ,  trapVector );
  trapVector  &=   0x0fffffff ;
  DBPRINTF  ( 't' , "Got a trap, inst=%08x, vector=%x\n" ,  inst ,  trapVector );
   if   (( trapVector  ==  DLX_TRAP_EXIT )   &&   !  cpu -> IgnoreExit ())   {
    cpu -> Exit   ();
   }
   if   ( trapVector  <   0x2000 )   {
     // Increment the PC so the address in the IAR is that of the
     // following instruction.
    cpu -> SetPC   ( cpu -> PC () + 4 );
    cpu -> CauseException   ( trapVector  |   0x08000000 );
   }   else   {
    cpu -> OutputBasicBlock   ( cpu -> PC () + 4 );
     if   ( cpu -> Flags ()   &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
      fprintf  ( cpu -> TraceFp (),   "T %x %x\n" ,  trapVector ,  cpu -> PC ());
     }
     // Handle simulator services here.  This isn't so performance
     // critical, so we can use a switch statement.
     // Parameters are passed on the stack.
     // Return values go into r1
     switch   ( trapVector )   {
     case  DLX_TRAP_EXITSIM :
      cpu -> Exit   ();
       break ;
     case  DLX_TRAP_PRINTF :
      cpu -> Printf   ();
       break ;
     case  DLX_TRAP_OPEN :
      cpu -> Open   ();
       break ;
     case  DLX_TRAP_READ :
      cpu -> Read   ();
       break ;
     case  DLX_TRAP_WRITE :
      cpu -> Write   ();
       break ;
     case  DLX_TRAP_LSEEK :
      cpu -> Seek   ();
       break ;
     case  DLX_TRAP_CLOSE :
      cpu -> Close   ();
       break ;
     case  DLX_TRAP_RANDOM :
      cpu -> Random   ();
       break ;
     case  DLX_TRAP_SRANDOM :
      cpu -> Srandom   ();
       break ;
     case  DLX_TRAP_TIMERGET :
      cpu -> Timerget ();
       break ;
     }
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  rfe
//
//  When returning from an exception, jump to the IAR.  To avoid
//  illegal addresses, mask off the low two bits.  Also, turn
//  interrupts on.
//----------------------------------------------------------------------
static
int
InstRfe   ( uint32 inst ,   Cpu   * cpu )
{
   return   ( cpu -> DoRfe   ( inst ));
}

int
Cpu :: DoRfe   ( uint32 inst )
{
  uint32    iar ;
  uint32    isr ;

   if   ( UserMode   ())   {
     CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  iar  =   GetSreg   ( DLX_SREG_IAR )   &   ~ 0x3 ;
   OutputBasicBlock   ( iar );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "R %x %x\n" ,  PC () - 4 ,  iar );
   }
  isr  =   GetSreg   ( DLX_SREG_ISR );
   PutSreg   ( DLX_SREG_STATUS ,  isr );
   SetPC   ( iar );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous instructions
//
//----------------------------------------------------------------------
static
int
InstMovi2s   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving integer reg %d (0x%x) to special reg %d.\n" ,
        src1 ,  cpu -> GetIreg ( src1 ),  dst );
  cpu -> PutSreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovs2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving special reg %d (0x%x) to integer reg %d.\n" ,
        src1 ,  cpu -> GetSreg ( src1 ),  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetSreg   ( src1 ));
   return   ( 1 );
}

static
int
InstIllegal   ( uint32 inst ,   Cpu   * cpu )
{
  cpu -> CauseException   ( DLX_EXC_ILLEGALINST );
   return   ( 1 );
}

static
int
InstNop   ( uint32 ,   Cpu   * cpu )
{
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Single precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   +  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstSubf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   -  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstMultf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   *  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstDivf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   float  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregF   ( src2 );
   if   ( denom  ==   ( float ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Single precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   ==  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   !=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}
static
int
InstLtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   +  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstSubd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   -  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstMultd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   *  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstDivd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   double     denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregD   ( src2 );
   if   ( denom  ==   ( double ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregD   ( dst ,  cpu -> GetFregD ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   ==  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   !=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Conversion instructions
//
//----------------------------------------------------------------------
static
int
InstCvtf2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtf2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'f' , "Converting f%d (%08x) to DFP (%lf) in f%d\n" ,
        src1 ,  cpu -> GetFreg ( src1 ),   ( double ) cpu -> GetFreg ( src1 ),  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  RR Instruction Table
//
//----------------------------------------------------------------------
Instruction   Cpu :: rrrInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x02 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x03 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x04 ,  DLX_FMT_RFMT ,   InstSll },
   { 0x05 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x06 ,  DLX_FMT_RFMT ,   InstSrl },
   { 0x07 ,  DLX_FMT_RFMT ,   InstSra },
   { 0x08 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x09 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0c ,  DLX_FMT_RFMT ,   InstIllegal },          // ALU TRAP instruction
   { 0x0d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x10 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x11 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x12 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x13 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x14 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x15 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x16 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x17 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x18 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x19 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_RFMT ,   InstAdd },
   { 0x21 ,  DLX_FMT_RFMT ,   InstAddu },
   { 0x22 ,  DLX_FMT_RFMT ,   InstSub },
   { 0x23 ,  DLX_FMT_RFMT ,   InstSubu },
   { 0x24 ,  DLX_FMT_RFMT ,   InstAnd },
   { 0x25 ,  DLX_FMT_RFMT ,   InstOr },
   { 0x26 ,  DLX_FMT_RFMT ,   InstXor },
   { 0x27 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x28 ,  DLX_FMT_RFMT ,   InstSeq },
   { 0x29 ,  DLX_FMT_RFMT ,   InstSne },
   { 0x2a ,  DLX_FMT_RFMT ,   InstSlt },
   { 0x2b ,  DLX_FMT_RFMT ,   InstSgt },
   { 0x2c ,  DLX_FMT_RFMT ,   InstSle },
   { 0x2d ,  DLX_FMT_RFMT ,   InstSge },
   { 0x2e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x2f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x30 ,  DLX_FMT_RFMT ,   InstMovi2s },
   { 0x31 ,  DLX_FMT_RFMT ,   InstMovs2i },
   { 0x32 ,  DLX_FMT_RFMT ,   InstMovf },
   { 0x33 ,  DLX_FMT_RFMT ,   InstMovd },
   { 0x34 ,  DLX_FMT_RFMT ,   InstMovfp2i },
   { 0x35 ,  DLX_FMT_RFMT ,   InstMovi2fp },
   { 0x36 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of "regular" instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: regInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },          // R-format instructions
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },          // FP instructions
   { 0x02 ,  DLX_FMT_JFMT ,   InstJmp },
   { 0x03 ,  DLX_FMT_JFMT ,   InstJal },
   { 0x04 ,  DLX_FMT_IFMT ,   InstBeqz },
   { 0x05 ,  DLX_FMT_IFMT ,   InstBnez },
   { 0x06 ,  DLX_FMT_IFMT ,   InstBfpt },
   { 0x07 ,  DLX_FMT_IFMT ,   InstBfpf },
   { 0x08 ,  DLX_FMT_IFMT ,   InstAddi },
   { 0x09 ,  DLX_FMT_IFMT ,   InstAddui },
   { 0x0a ,  DLX_FMT_IFMT ,   InstSubi },
   { 0x0b ,  DLX_FMT_IFMT ,   InstSubui },
   { 0x0c ,  DLX_FMT_IFMT ,   InstAndi },
   { 0x0d ,  DLX_FMT_IFMT ,   InstOri },
   { 0x0e ,  DLX_FMT_IFMT ,   InstXori },
   { 0x0f ,  DLX_FMT_IFMT ,   InstLhi },
   { 0x10 ,  DLX_FMT_JFMT ,   InstRfe },
   { 0x11 ,  DLX_FMT_JFMT ,   InstTrap },
   { 0x12 ,  DLX_FMT_JFMT ,   InstJr },
   { 0x13 ,  DLX_FMT_JFMT ,   InstJalr },
   { 0x14 ,  DLX_FMT_IFMT ,   InstSlli },
   { 0x15 ,  DLX_FMT_IFMT ,   InstNop },
   { 0x16 ,  DLX_FMT_IFMT ,   InstSrli },
   { 0x17 ,  DLX_FMT_IFMT ,   InstSrai },
   { 0x18 ,  DLX_FMT_IFMT ,   InstSeqi },
   { 0x19 ,  DLX_FMT_IFMT ,   InstSnei },
   { 0x1a ,  DLX_FMT_IFMT ,   InstSlti },
   { 0x1b ,  DLX_FMT_IFMT ,   InstSgti },
   { 0x1c ,  DLX_FMT_IFMT ,   InstSlei },
   { 0x1d ,  DLX_FMT_IFMT ,   InstSgei },
   { 0x1e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_IFMT ,   InstLb },
   { 0x21 ,  DLX_FMT_IFMT ,   InstLh },
   { 0x22 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x23 ,  DLX_FMT_IFMT ,   InstLw },
   { 0x24 ,  DLX_FMT_IFMT ,   InstLbu },
   { 0x25 ,  DLX_FMT_IFMT ,   InstLhu },
   { 0x26 ,  DLX_FMT_IFMT ,   InstLf },
   { 0x27 ,  DLX_FMT_IFMT ,   InstLd },
   { 0x28 ,  DLX_FMT_IFMT ,   InstSb },
   { 0x29 ,  DLX_FMT_IFMT ,   InstSh },
   { 0x2a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2b ,  DLX_FMT_IFMT ,   InstSw },
   { 0x2c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2e ,  DLX_FMT_IFMT ,   InstSf },
   { 0x2f ,  DLX_FMT_IFMT ,   InstSd },
   { 0x30 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x31 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x32 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x33 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x34 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x35 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x36 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_IFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of FP instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: fpInstrs [ 32 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstAddf },
   { 0x01 ,  DLX_FMT_RFMT ,   InstSubf },
   { 0x02 ,  DLX_FMT_RFMT ,   InstMultf },
   { 0x03 ,  DLX_FMT_RFMT ,   InstDivf },
   { 0x04 ,  DLX_FMT_RFMT ,   InstAddd },
   { 0x05 ,  DLX_FMT_RFMT ,   InstSubd },
   { 0x06 ,  DLX_FMT_RFMT ,   InstMultd },
   { 0x07 ,  DLX_FMT_RFMT ,   InstDivd },
   { 0x08 ,  DLX_FMT_RFMT ,   InstCvtf2d },
   { 0x09 ,  DLX_FMT_RFMT ,   InstCvtf2i },
   { 0x0a ,  DLX_FMT_RFMT ,   InstCvtd2f },
   { 0x0b ,  DLX_FMT_RFMT ,   InstCvtd2i },
   { 0x0c ,  DLX_FMT_RFMT ,   InstCvti2f },
   { 0x0d ,  DLX_FMT_RFMT ,   InstCvti2d },
   { 0x0e ,  DLX_FMT_RFMT ,   InstMult },
   { 0x0f ,  DLX_FMT_RFMT ,   InstDiv },
   { 0x10 ,  DLX_FMT_RFMT ,   InstEqf },
   { 0x11 ,  DLX_FMT_RFMT ,   InstNef },
   { 0x12 ,  DLX_FMT_RFMT ,   InstLtf },
   { 0x13 ,  DLX_FMT_RFMT ,   InstGtf },
   { 0x14 ,  DLX_FMT_RFMT ,   InstLef },
   { 0x15 ,  DLX_FMT_RFMT ,   InstGef },
   { 0x16 ,  DLX_FMT_RFMT ,   InstMultu },
   { 0x17 ,  DLX_FMT_RFMT ,   InstDivu },
   { 0x18 ,  DLX_FMT_RFMT ,   InstEqd },
   { 0x19 ,  DLX_FMT_RFMT ,   InstNed },
   { 0x1a ,  DLX_FMT_RFMT ,   InstLtd },
   { 0x1b ,  DLX_FMT_RFMT ,   InstGtd },
   { 0x1c ,  DLX_FMT_RFMT ,   InstLed },
   { 0x1d ,  DLX_FMT_RFMT ,   InstGed },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int
Cpu :: CauseException   ( int  excType )
{
  uint32    ivec ;

  DBPRINTF  ( 't' , "Exception being done (cause=0x%x @ pc=0x%x).\n" , excType ,
        PC () - 4 );
  ivec  =   GetSreg   ( DLX_SREG_INTRVEC );
   OutputBasicBlock   ( ivec );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "X %x %x\n" , excType ,  PC () - 4 );
   }
   PutSreg ( DLX_SREG_CAUSE ,  excType );
   // PC has already been incremented, so decrement it first.  If this
   // is a trap or interrupt, the PC will have already been incremented
   // (if necessary) so the IAR points to the next instruction to
   // execute.
   PutSreg ( DLX_SREG_IAR ,  PC () - 4 );
   // Save the current status register
   PutSreg ( DLX_SREG_ISR ,   GetSreg   ( DLX_SREG_STATUS ));
   // Save the current value of register 31.  This is necessary to give
   // the interrupt handler a temporary register that can be used to
   // switch to a system stack (rather than user stack)
   PutSreg ( DLX_SREG_IR31 ,   GetIreg   ( 31 ));
   // Set the next instruction to be run to be the interrupt vector.
   SetPC   ( ivec );
   // Set the status register to be system mode
   PutSreg ( DLX_SREG_STATUS ,   GetSreg   ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
   // Turn off interrupts
   DisableInterrupts   ();
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
int
Cpu :: VaddrToPaddr   ( uint32 vaddr ,  uint32 &  paddr ,  uint32 op ,  uint32 pteflags )
{
  uint32    pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
  uint32    pteaddr ;
  uint32    offsetinpage ,  entrynum ;
  uint32    pagemask ;

   if   (( vaddr  &   0x3 )   !=   0 )   {
     CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   if   ( StatusBit   ( DLX_STATUS_PAGE_TABLE ))   {
     // Translate if in user mode or if in system mode and the appropriate
     // translation bit is set in the status register.
     if   ( UserMode   ()   ||
     (( op  ==  DLX_MEM_READ )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_RD ))   ||
     (( op  ==  DLX_MEM_WRITE )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_WR )))   {
      DBPRINTF  ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
      pt1base  =   GetSreg   ( DLX_SREG_PGTBL_BASE );
      pt1pagebits  =   GetSreg   ( DLX_SREG_PGTBL_BITS );
      pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
      pt1pagebits  &=   0xffff ;
      pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
      offsetinpage  =  vaddr  &  pagemask ;
       // Mask off the low bits
      vaddr  &=   ~ pagemask ;
       if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
       GetSreg   ( DLX_SREG_PGTBL_SIZE ))   {
    DBPRINTF  ( 'm' ,   "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
          pt1pagebits ,  pt2pagebits ,   GetSreg ( DLX_SREG_PGTBL_SIZE ),
          entrynum );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
      pteaddr  =  pt1base  +   4   *  entrynum ;
      paddr  =   Memory   ( pteaddr );
       // If the L2 page size is the same as the L1 page size, there's
       // no L2 page table!
       if   ( pt1pagebits  !=  pt2pagebits )   {
    pt2base  =  paddr ;
     if   ( pt2base  ==   0 )   {
      DBPRINTF  ( 'm' ,   "No L2 table at entry %d! (base = 0x%x)\n" ,
            entrynum ,  pt1base );
       CauseException   ( DLX_EXC_PAGEFAULT );
       return   ( 0 );
     }
    pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                  (( 1   <<   ( pt1pagebits - pt2pagebits )) - 1 ));
    paddr  =   Memory   ( pteaddr );
       }
      DBPRINTF  ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
       if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
    DBPRINTF  ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
     PutSreg   ( DLX_SREG_FAULT_ADDR ,  vaddr );
     CauseException   ( DLX_EXC_PAGEFAULT );
     return   ( 0 );
       }
       if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     SetMemory   ( pteaddr ,
           paddr  |   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
       }
      paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
      paddr  |=  offsetinpage ;
      DBPRINTF  ( 'm' ,
         "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
        vaddr  |  offsetinpage ,  paddr ,
         Memory   ( paddr ),
        pt1base ,  pt1pagebits ,  entrynum );
       return   ( 1 );
     }   else   {
       // For system references, physical address is the same
       // as virtual address.
      paddr  =  vaddr ;
       if   (( vaddr  <=  memSize )   ||   (( vaddr  >=  DLX_IO_BASE )   &&
                  ( vaddr  <=   ( DLX_IO_BASE + DLX_IO_SIZE ))))   {
     return   ( 1 );
       }   else   {
    DBPRINTF  ( 't' , "Illegal system address: 0x%x.\n" ,  vaddr );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
     }
   }   else   if   ( StatusBit   ( DLX_STATUS_TLB ))   {
     // DLX_STATUS_TLB
     return   ( 1 );
   }   else   {
    paddr  =  vaddr ;
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
Cpu :: ReadWord   ( uint32 vaddr ,  uint32  & val ,  uint32 op )
{
  uint32    paddr ;

  DBPRINTF  ( 'l' , "Trying to read virtual address: 0x%x.\n" ,  vaddr );
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
    val  =   Memory ( paddr );
   }   else   {
    DBPRINTF  ( 'l' , "Trying to load special address: 0x%x.\n" ,  paddr );
     switch   ( paddr )   {
     case  DLX_KBD_NCHARSIN :
      val  =   KbdNumInChars   ();
       break ;
     case  DLX_KBD_NCHARSOUT :
      val  =   KbdNumOutChars   ();
       break ;
     case  DLX_KBD_GETCHAR :
      val  =   KbdGetChar   ();
       break ;
     case  DLX_DISK_STATUS :
       break ;
     case  DLX_GETMEMSIZE :
      val  =  memSize ;
       break ;
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: WriteWord   ( uint32 vaddr ,  uint32 val )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
             DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
     SetMemory ( paddr ,  val );
   }   else   {
     switch   ( paddr )   {
     case  DLX_KBD_PUTCHAR :
       KbdPutChar   ( val );
       break ;
     case  DLX_KBD_INTR :
       if   ( val  ==   0 )   {
    flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
       }   else   {
    flags  |=  DLX_FLAG_KBD_INTERRUPT ;
       }
       break ;
     case  DLX_TIMER_SETTIMER :
      DBPRINTF  ( 'o' , "Setting timer to %d us.\n" ,  val );
       SetTimer   ( val );
       break ;
#if   0
     case  DLX_DISK_REQUEST :
      diskReq  =  val ;
       StartDiskIo   ();
       break ;
     case  DLX_DISK_BLOCK :
      diskBlock  =  val ;
       break ;
     case  DLX_DISK_ADDR :
      diskAddr  =  val ;
       break ;
#endif
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: TestWriteWord   ( uint32 vaddr )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void
Cpu :: Open   ()
{
  uint32    name ;
   char   nameBuf [ 100 ];
   char    * tp ;
   int        accessType ;
   int        i ;

  name  =   GetParam ( 0 );
  accessType  =   GetParam ( 1 );
  DBPRINTF  ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * ) memory  +  name ,
        accessType );
   switch   ( accessType )   {
   case   1 :
    tp  =   "r" ;
     break ;
   case   2 :
    tp  =   "w" ;
     break ;
   case   3 :
    tp  =   "r+" ;
     break ;
   default :
     SetResult   ( 0xffffffff );
     return ;
     break ;
   }
   for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
     if   ( fp [ i ]   ==  NULL )   {
       if   ( ! CheckAddr   ( name ))   {
     SetResult   ( 0xffffffff );
     return ;
       }
      strncpy  ( nameBuf ,   ( char   * ) memory  +  name ,   98 );
       // If fopen fails, it returns NULL, so it looks like no open
       // was done.
      fp [ i ]   =  fopen  ( nameBuf ,  tp );
       break ;
     }
   }
   if   ( >=  DLX_MAX_FILES )   {
    i  =   - 1 ;
   }   else   if   ( fp [ i ]   ==  NULL )   {
    i  =   - errno ;
   }
  DBPRINTF  ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
   SetResult   ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void
Cpu :: Read   ()
{
   FileIo   ( DLX_FILE_READ );
}

void
Cpu :: Write   ()
{
   FileIo   ( DLX_FILE_WRITE );
}

void
Cpu :: FileIo   ( int  kind )
{
   int        fd ;
  uint32    buf ;
   int        size ;
   int        n ;

  fd  =   GetParam   ( 0 );
  buf  =   GetParam   ( 1 );
  size  =   GetParam   ( 2 );
  DBPRINTF  ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
         ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,
        fd ,  size ,  buf );
   if   ( !   CheckAddr   ( buf )   ||   ( !   CheckFd   ( fd )))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   ( kind  ==  DLX_FILE_WRITE )   {
    n  =  fwrite  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }   else   {
    n  =  fread  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }
   if   ( >   0 )   {
     SetResult   ( n );
   }   else   if   ( feof  ( fp [ fd ]))   {
     SetResult   ( 0 );
   }   else   {
     SetResult   ( - errno );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void
Cpu :: Seek   ()
{
   int        fd ;
   int        offset ;
   int        whence ;
   int        rv ;

  fd  =   GetParam ( 0 );
  offset  =   GetParam ( 1 );
  whence  =   GetParam ( 2 );
   if   ( !   CheckFd   ( fd ))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   (( rv  =  fseek  ( fp [ fd ],  offset ,  whence ))   <   0 )   {
     SetResult   ( rv );
   }   else   {
     SetResult   ( ftell  ( fp [ fd ]));
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void
Cpu :: Close   ()
{
   int        fd ;
  uint32    retval ;

  fd  =   GetParam ( 0 );
   if   ( ! CheckFd   ( fd ))   {
    retval  =   0xffffffff ;
   }   else   {
    retval  =  fclose  ( fp [ fd ]);
   }
  DBPRINTF  ( 'F' ,   "Closing file %d.\n" ,  fd );
  fp [ fd ]   =  NULL ;
   SetResult   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void
Cpu :: Random   ()
{
   int        n ;

  n  =  random  ();
   SetResult   ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void
Cpu :: Srandom   ()
{
  uint32    seed ;

  seed  =   GetParam   ( 0 );
  srandom  ( seed );
   SetResult   ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32
Cpu :: GetParam   ( int  p )
{
  uint32    stackPtr ;

  stackPtr  =   GetIreg   ( 29 );
   return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void
Cpu :: SetResult   ( uint32 r )
{
   PutIreg   ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void
Cpu :: Printf   ()
{
  uint32    fmtaddr ;
   char    * c ;
  uint32    args [ 10 ];
   int        nargs  =   0 ;

  fmtaddr  =   GetParam ( 0 );
   // 
   for   ( =  fmtaddr  +   ( char   * ) memory ;   * !=   '\0' ;  c ++ )   {
     if   ( * ==   '%' )   {
       // if this is a %%, skip past second %
       if   ( * ( c + 1 )   ==   '%' )   {
    c ++ ;
     continue ;
       }
       // Get the current argument off the stack
      args [ nargs ]   =   GetParam ( nargs + 1 );
      DBPRINTF  ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
        args [ nargs ],  args [ nargs ]);
       while   ( 1 )   {
    c ++ ;
     if   ( * ==   's' )   {
       // If it's a string, the address is relative to the
       // start of emulated memory.
      args [ nargs ]   +=   ( uint32 ) memory ;
       break ;
     }   else   if   ( * ==   'l' )   {
       continue ;
     }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
       // If it's a floating point number, it'll be passed as
       // a double, so grab the second word also.
      nargs  +=   1 ;
      args [ nargs ]   =   GetParam ( nargs + 1 );
       break ;
     }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
       // If it's another formatting character, it's not
       // a string, but we can leave the loop anyway.
       break ;
     }
       }
      nargs  +=   1 ;
     }
   }
  printf  ( fmtaddr  +   ( char   * ) memory ,
      args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
      args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
  fflush  ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void
Cpu :: Exit   ()
{
   struct  timeval    t ;

  printf  ( "Exiting at program request.\n" );
  printf  ( "Instructions executed: %.0lf\n" ,  instrsExecuted );
  printf  ( "Time simulated: %.03lf secs\n" ,  usElapsed  /   1e6 );
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   (( double ) t . tv_sec  +   (( double ) t . tv_usec ) * 1e-6 )   -  realElapsed ;
  printf  ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
  printf  ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
      instrsExecuted  *   1e-6   /  realElapsed );
  exit  ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int
Cpu :: ExecOne   ()
{
  uint32    curInst ;
  uint32    tmpPc ;
  uint32    curOp ;
  uint32    retval ;
  uint32    funcCode ;         // subcode for RRR & FP ops

  usElapsed  +=  usPerInst ;
  instrsExecuted  +=   1.0 ;
   // Increment PC before checking for interrupts because CauseException
   // will subtract 4 off the PC before placing the value into the IAR.
   // By incrementing here, we ensure that the current instruction is
   // the one whose address goes into the IAR.
   SetPC   ( PC ()   +   4 );
   // Check for an input character.  If we got one and interrupts are
   // enabled, do an interrupt.
   if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
    kbdcounter  =   0 ;
     if   ( GetCharIfAvail   ()   &&   ( IntrLevel   ()   <   8 ))   {
      DBPRINTF  ( 't' , "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
        PC () - 4 ,  usElapsed );
       CauseException   ( DLX_EXC_KBD );
       return   ( 0 );
     }
   }
   if   ( IntrLevel ()   <   8 )   {
     if   ( timerInterrupt  <  usElapsed )   {
      DBPRINTF  ( 't' ,   "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
        PC () - 4 ,  usElapsed ,  timerInterrupt );
      timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
       CauseException   ( DLX_EXC_TIMER );
       return   ( 0 );
     }
   }
   if   ( !   ReadWord   ( PC () - 4 ,  curInst ,  DLX_MEM_INSTR ))   {
    DBPRINTF  ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC () - 4 );
     return   ( 0 );
   }
  curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
  DBPRINTF  ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
         ( int ) instrsExecuted  %   1000000 ,
        curInst ,  PC ()   -   4 ,  curOp ,
         ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &  DLX_ALU_FUNC_CODE_MASK );
   switch   ( curOp )   {
   case   0x00 :          // ALU and other R-R operations
    funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
        DLX_ALU_FUNC_CODE_MASK );
    retval  =   ( rrrInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   case   0x01 :          // FP operations
    funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
        DLX_FPU_FUNC_CODE_MASK );
    retval  =   ( fpInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   default :
    retval  =   ( regInstrs [ curOp ]. handler )( curInst ,   this );
     break ;
   }
   return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format consists of a
//  leading address, followed by a colon, followed by the data
//  to go at that address.  If the address is omitted, the data
//  follows that from the previous line of the file.
//
//----------------------------------------------------------------------
static
inline
int
getxvalue  ( int  x )
{
   if   (( >=   '0' )   &&   ( <=   '9' ))   {
     return   ( -   '0' );
   }   else   if   (( >=   'a' )   &&   ( <=   'f' ))   {
     return   ( +   10   -   'a' );
   }   else   if   (( >=   'A' )   &&   ( <=   'F' ))   {
     return   ( +   10   -   'A' );
   }   else   {
     return   ( 0 );
   }
}

int
Cpu :: LoadMemory   ( const   char   * file ,  uint32 &  startAt )
{
  FILE   * fp ;
   char   buffer [ 200 ];
   char    * pos ;
   int        nread  =   0 ;
  uint32    addr  =   0 ;
  uint32    val ;
   int        count ;

   if   (( fp  =  fopen  ( file ,   "r" ))   ==  NULL )   {
     return   ( 0 );
   }
   if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
     return   ( 0 );
   }
   // Read in the "start" line
   if   ( strstr  ( buffer ,   "start:" )   ==  NULL )   {
     return   ( 0 );
   }
  pos  =  index  ( buffer ,   ':' )   +   1 ;
  startAt  =  strtol  ( pos ,  NULL ,   16 );
   while   ( 1 )   {
    pos  =  buffer ;
     if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
       return   ( nread );
     }
     if   ( index  ( buffer ,   ':' )   ==  NULL )   {
       continue ;
     }
     if   ( * pos  !=   ':' )   {
      addr  =  strtol  ( pos ,   & pos ,   16 );
     }
     if   ( * pos  !=   ':' )   {
      fprintf  ( stderr ,   "Error reading data file near:\n%s\n" ,  buffer );
       return   ( nread );
     }
    pos ++ ;    // skip past colon
     while   ( 1 )   {
       while   ( isspace  ( * pos ))   {
    pos ++ ;
       }
       // Exit loop if at least one digit isn't a hex digit.
       if   ( ! ( isxdigit  ( * pos )   &&  isxdigit  ( * ( pos + 1 ))))   {
     break ;
       }
      val  =   ( getxvalue ( * pos )   *   16 )   +  getxvalue ( * ( pos + 1 ));
       * ((( unsigned   char   * ) memory )   +  addr )   =  val ;
      pos  +=   2 ;
      addr ++ ;
      nread ++ ;
     }
   }
}

//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void
Cpu :: SetTimer   ( uint32 usecs )
{
  timerInterrupt  =  usElapsed  +   ( double ) usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::Timerget
//
//  return Simulated time(in milliseconds) 
//
//----------------------------------------------------------------------
uint32 
Cpu :: Timerget ()
{
    unsigned   int  result ;
   result  =   ( unsigned   int )( usElapsed / 1e3 );
    SetResult   ( result );
}
//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32
Cpu :: KbdGetChar   ()
{
  uint32    v ;

   if   ( kbdbufferedchars  ==   0 )   {
     return   ( 0 );
   }
  v  =  kbdbuffer [ kbdrpos ++ ];
  kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
  kbdbufferedchars -- ;
   return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void
Cpu :: IgnoreExit   ( int  ignore )
{
  flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
   if   ( ignore )   {
    flags  |=  DLX_FLAG_IGNORE_EXIT ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void
Cpu :: OutputBasicBlockActual   ()
{
   int        i ,  ninstrs ;

  ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
   // Print out the basic block information here
   if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
    fprintf  ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
   }
   if   ( flags  &  DLX_TRACE_MEMORY )   {
     for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
      fprintf  ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,  accesses [ i ]. reg ,
           accesses [ i ]. addr , accesses [ i ]. value );
     }
   }
  naccesses  =   0 ;
}

home/bshapir/cs314/project4/option1/lab4_2/src/filesys.h

// // filesys.h // // Includes for the file system. Includes the definition of the file // system interface structure. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: filesys.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _filesys_h_ #define _filesys_h_ #define FS_FS_BUILTIN 1 #define FS_FS_DLXOS 2 #define FS_MODE_READ 0x1 #define FS_MODE_WRITE 0x2 #define FS_MODE_RW (FS_MODE_READ | FS_MODE_WRITE) // If this flag is set, a new file is created if no file already exists. // This flag only works with the DLX file system. #define FS_MODE_CREATE 0x4 // IMPORTANT: These must match the underlying UNIX seek parameters. // These values are correct for Linux and should work elsewhere, but // be careful.... #define FS_SEEK_SET 0 #define FS_SEEK_CUR 1 #define FS_SEEK_END 2 #define FS_BUFFER_SIZE 256 #define FS_MAX_OPEN_FILES 32 typedef struct Fs { int (*Open)(int, const char *, int); int (*Read)(int, char *, int); int (*Write)(int, char *, int); int (*Seek)(int, int, int); int (*Close)(int); int (*Delete)(const char *); } Fs; typedef struct FsUnixInfo { int fd; // Unix file descriptor } FsUnixInfo; typedef struct FsDlxInfo { int curpos; // What's our current position in the file? } FsDlxInfo; typedef struct FsOpenFile { int fs; // which file system is this file in? int flags; char buffer[FS_BUFFER_SIZE]; union { FsUnixInfo Unix; FsDlxInfo Dlx; } u; } FsOpenFile; extern int FsOpen (const char *, int); extern int FsRead (int, char *, int); extern int FsWrite (int, char *, int); extern int FsSeek (int, int, int); extern int FsClose (int); extern int FsDelete (const char *); #endif // _filesys_h_

home/bshapir/cs314/project4/option1/lab4_2/src/userprog2.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 26 4 ; Text size: 2880 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a496e20 .ascii "\nIn Userprog2, Sum : %d\n\n\000" 12 00002004 55736572 12 00002008 70726f67 12 0000200c 322c2053 12 00002010 756d203a 12 00002014 2025640a 12 00002018 0a00 13 0000201a .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 40000 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd9c48 subui r29,r29,#40008; alloc local storage 23 00001010 0c000b24 jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20040000 addi r4,r0,#0 26 0000101c 20020001 addi r2,r0,#1 27 00001020 3c05ffff lhi r5,#-1 28 00001024 24a563c0 addui r5,r5,#25536 29 00001028 23dffff8 addi r31,r30,#-8 30 0000102c 27e39c3c addui r3,r31,#39996 31 00001030 L16_LF0: 32 00001030 03e50820 add r1,r31,r5 33 00001034 ac220000 sw (r1),r2 34 00001038 20420001 addi r2,r2,#1 35 0000103c 23ff07d0 addi r31,r31,#2000 36 00001040 03e3082c sle r1,r31,r3 37 00001044 1420ffe8 bnez r1,L16_LF0 38 00001048 54000000 nop; not filled. 39 0000104c 3c03ffff lhi r3,#-1 40 00001050 246363c0 addui r3,r3,#25536 41 00001054 23dffff8 addi r31,r30,#-8 42 00001058 27e29c3c addui r2,r31,#39996 43 0000105c L21_LF0: 44 0000105c 03e30820 add r1,r31,r3 45 00001060 8c210000 lw r1,(r1) 46 00001064 00812020 add r4,r4,r1 47 00001068 23ff07d0 addi r31,r31,#2000 48 0000106c 03e2082c sle r1,r31,r2 49 00001070 1420ffe8 bnez r1,L21_LF0 50 00001074 54000000 nop; not filled. 51 00001078 23bdfff8 addi r29,r29,#-8 52 0000107c 3c060000 lhi r6,((LC0_LF0)>>16)&0xffff 53 00001080 24c62000 addui r6,r6,(LC0_LF0)&0xffff 54 00001084 afa60000 sw (r29),r6 55 00001088 afa40004 sw 4(r29),r4 56 0000108c 0c000058 jal _Printf 57 00001090 54000000 nop; not filled. 58 00001094 23bd0008 addi r29,r29,#8 59 00001098 0c000a90 jal _exit 60 0000109c 54000000 nop 61 000010a0 .endproc _main 62 ;;; 63 ;;; Stub functions for DLX traps. 64 ;;; 65 ;;; Ethan L. Miller, 1999. Released to the public domain. 66 ;;; 67 ;;; The traps such as Open and Close 68 ;;; (note the capital letters) are for use by user programs. The traps 69 ;;; with names such as open and close (lower case) are for use by the OS. 70 ;;; 73 000010a0 .align 2 75 ;;; The following are the traps to be used by user-level programs 76 ;;; 78 000010a0 .align 2 79 000010a0 .proc _Open 80 000010a0 .global _Open 81 000010a0 _Open: 82 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 83 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 84 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 85 000010a0 44000213 trap #0x213 86 000010a4 4be00000 jr r31 87 000010a8 54000000 nop 88 000010ac .endproc _Open 90 000010ac .proc _Close 91 000010ac .global _Close 92 000010ac _Close: 93 000010ac 44000214 trap #0x214 94 000010b0 4be00000 jr r31 95 000010b4 54000000 nop 96 000010b8 .endproc _Close 98 000010b8 .proc _Read 99 000010b8 .global _Read 100 000010b8 _Read: 101 000010b8 44000210 trap #0x210 102 000010bc 4be00000 jr r31 103 000010c0 54000000 nop 104 000010c4 .endproc _Read 106 000010c4 .proc _Write 107 000010c4 .global _Write 108 000010c4 _Write: 109 000010c4 44000211 trap #0x211 110 000010c8 4be00000 jr r31 111 000010cc 54000000 nop 112 000010d0 .endproc _Write 114 000010d0 .proc _Lseek 115 000010d0 .global _Lseek 116 000010d0 _Lseek: 117 000010d0 44000212 trap #0x212 118 000010d4 4be00000 jr r31 119 000010d8 54000000 nop 120 000010dc .endproc _Lseek 122 000010dc .proc _Putchar 123 000010dc .global _Putchar 124 000010dc _Putchar: 125 000010dc 44000280 trap #0x280 126 000010e0 4be00000 jr r31 127 000010e4 54000000 nop 128 000010e8 .endproc _Putchar 130 000010e8 .proc _Printf 131 000010e8 .global _Printf 132 000010e8 _Printf: 133 000010e8 44000201 trap #0x201 134 000010ec 4be00000 jr r31 135 000010f0 54000000 nop 136 000010f4 .endproc _Printf 138 000010f4 .proc _getpid 139 000010f4 .global _getpid 140 000010f4 _getpid: 141 000010f4 44000431 trap #0x431 142 000010f8 4be00000 jr r31 143 000010fc 54000000 nop 144 00001100 .endproc _getpid 146 00001100 .proc _process_create 147 00001100 .global _process_create 148 00001100 _process_create: 149 00001100 44000432 trap #0x432 150 00001104 4be00000 jr r31 151 00001108 54000000 nop 152 0000110c .endproc _process_create 155 0000110c .proc _sem_create 156 0000110c .global _sem_create 157 0000110c _sem_create: 158 0000110c 44000450 trap #0x450 159 00001110 4be00000 jr r31 160 00001114 54000000 nop 161 00001118 .endproc _sem_create 163 00001118 .proc _sem_wait 164 00001118 .global _sem_wait 165 00001118 _sem_wait: 166 00001118 44000451 trap #0x451 167 0000111c 4be00000 jr r31 168 00001120 54000000 nop 169 00001124 .endproc _sem_wait 171 00001124 .proc _sem_signal 172 00001124 .global _sem_signal 173 00001124 _sem_signal: 174 00001124 44000452 trap #0x452 175 00001128 4be00000 jr r31 176 0000112c 54000000 nop 177 00001130 .endproc _sem_signal 180 ; Compiled by GCC 182 00001130 .align 2 183 00001130 .proc _isspace 184 00001130 .global _isspace 185 00001130 _isspace: 186 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 187 00001130 afbefffc sw -4(r29),r30; push fp 188 00001134 001df020 add r30,r0,r29; fp = sp 189 00001138 afbffff8 sw -8(r29),r31; push ret addr 190 0000113c 2fbd0010 subui r29,r29,#16; alloc local storage 191 00001140 afa20000 sw 0(r29),r2 192 00001144 83c20003 lb r2,3(r30) 193 00001148 201f0000 addi r31,r0,#0 194 0000114c 304100ff andi r1,r2,#0x00ff 195 00001150 60210020 seqi r1,r1,#32 196 00001154 14200018 bnez r1,L6_LF2 197 00001158 54000000 nop; not filled. 198 0000115c 2041fff7 addi r1,r2,#-9 199 00001160 302100ff andi r1,r1,#0x00ff 200 00001164 70210001 sleui r1,r1,#1 201 00001168 10200008 beqz r1,L5_LF2 202 0000116c 54000000 nop; not filled. 203 00001170 L6_LF2: 204 00001170 201f0001 addi r31,r0,#1 205 00001174 L5_LF2: 206 00001174 001f0820 add r1,r0,r31 207 00001178 8fa20000 lw r2,0(r29) 208 0000117c 8fdffff8 lw r31,-8(r30) 209 00001180 001ee820 add r29,r0,r30 210 00001184 8fdefffc lw r30,-4(r30) 211 00001188 4be00000 jr r31 212 0000118c 54000000 nop 213 00001190 .endproc _isspace 214 00001190 .align 2 215 00001190 .proc _isxdigit 216 00001190 .global _isxdigit 217 00001190 _isxdigit: 218 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 219 00001190 afbefffc sw -4(r29),r30; push fp 220 00001194 001df020 add r30,r0,r29; fp = sp 221 00001198 afbffff8 sw -8(r29),r31; push ret addr 222 0000119c 2fbd0010 subui r29,r29,#16; alloc local storage 223 000011a0 afa20000 sw 0(r29),r2 224 000011a4 83df0003 lb r31,3(r30) 225 000011a8 20020000 addi r2,r0,#0 226 000011ac 23e1ffd0 addi r1,r31,#-48 227 000011b0 302100ff andi r1,r1,#0x00ff 228 000011b4 70210009 sleui r1,r1,#9 229 000011b8 14200028 bnez r1,L12_LF2 230 000011bc 54000000 nop; not filled. 231 000011c0 23e1ff9f addi r1,r31,#-97 232 000011c4 302100ff andi r1,r1,#0x00ff 233 000011c8 70210005 sleui r1,r1,#5 234 000011cc 14200014 bnez r1,L12_LF2 235 000011d0 54000000 nop; not filled. 236 000011d4 33e100ff andi r1,r31,#0x00ff 237 000011d8 64210041 snei r1,r1,#65 238 000011dc 14200008 bnez r1,L11_LF2 239 000011e0 54000000 nop; not filled. 240 000011e4 L12_LF2: 241 000011e4 20020001 addi r2,r0,#1 242 000011e8 L11_LF2: 243 000011e8 00020820 add r1,r0,r2 244 000011ec 8fa20000 lw r2,0(r29) 245 000011f0 8fdffff8 lw r31,-8(r30) 246 000011f4 001ee820 add r29,r0,r30 247 000011f8 8fdefffc lw r30,-4(r30) 248 000011fc 4be00000 jr r31 249 00001200 54000000 nop 250 00001204 .endproc _isxdigit 251 00001204 .align 2 252 00001204 .proc _dstrcpy 253 00001204 .global _dstrcpy 254 00001204 _dstrcpy: 255 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 256 00001204 afbefffc sw -4(r29),r30; push fp 257 00001208 001df020 add r30,r0,r29; fp = sp 258 0000120c afbffff8 sw -8(r29),r31; push ret addr 259 00001210 2fbd0010 subui r29,r29,#16; alloc local storage 260 00001214 afa20000 sw 0(r29),r2 261 00001218 afa30004 sw 4(r29),r3 262 0000121c 8fdf0000 lw r31,(r30) 263 00001220 8fc20004 lw r2,4(r30) 264 00001224 001f1820 add r3,r0,r31 265 00001228 L19_LF2: 266 00001228 80410000 lb r1,(r2) 267 0000122c a3e10000 sb (r31),r1 268 00001230 20420001 addi r2,r2,#1 269 00001234 23ff0001 addi r31,r31,#1 270 00001238 302100ff andi r1,r1,#0x00ff 271 0000123c 64210000 snei r1,r1,#0 272 00001240 1420ffe4 bnez r1,L19_LF2 273 00001244 54000000 nop; not filled. 274 00001248 00030820 add r1,r0,r3 275 0000124c 8fa20000 lw r2,0(r29) 276 00001250 8fa30004 lw r3,4(r29) 277 00001254 8fdffff8 lw r31,-8(r30) 278 00001258 001ee820 add r29,r0,r30 279 0000125c 8fdefffc lw r30,-4(r30) 280 00001260 4be00000 jr r31 281 00001264 54000000 nop 282 00001268 .endproc _dstrcpy 283 00001268 .align 2 284 00001268 .proc _dstrncpy 285 00001268 .global _dstrncpy 286 00001268 _dstrncpy: 287 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 288 00001268 afbefffc sw -4(r29),r30; push fp 289 0000126c 001df020 add r30,r0,r29; fp = sp 290 00001270 afbffff8 sw -8(r29),r31; push ret addr 291 00001274 2fbd0018 subui r29,r29,#24; alloc local storage 292 00001278 afa20000 sw 0(r29),r2 293 0000127c afa30004 sw 4(r29),r3 294 00001280 afa40008 sw 8(r29),r4 295 00001284 8fc20000 lw r2,(r30) 296 00001288 8fc30004 lw r3,4(r30) 297 0000128c 8fdf0008 lw r31,8(r30) 298 00001290 00022020 add r4,r0,r2 299 00001294 08000024 j L37_LF2 300 00001298 54000000 nop; not filled. 301 0000129c L34_LF2: 302 0000129c 80610000 lb r1,(r3) 303 000012a0 a0410000 sb (r2),r1 304 000012a4 20630001 addi r3,r3,#1 305 000012a8 20420001 addi r2,r2,#1 306 000012ac 302100ff andi r1,r1,#0x00ff 307 000012b0 64210000 snei r1,r1,#0 308 000012b4 10200018 beqz r1,L32_LF2 309 000012b8 54000000 nop; not filled. 310 000012bc L37_LF2: 311 000012bc 001f0820 add r1,r0,r31 312 000012c0 23ffffff addi r31,r31,#-1 313 000012c4 70210000 slei r1,r1,#0 314 000012c8 1020ffd0 beqz r1,L34_LF2 315 000012cc 54000000 nop; not filled. 316 000012d0 L32_LF2: 317 000012d0 00040820 add r1,r0,r4 318 000012d4 8fa20000 lw r2,0(r29) 319 000012d8 8fa30004 lw r3,4(r29) 320 000012dc 8fa40008 lw r4,8(r29) 321 000012e0 8fdffff8 lw r31,-8(r30) 322 000012e4 001ee820 add r29,r0,r30 323 000012e8 8fdefffc lw r30,-4(r30) 324 000012ec 4be00000 jr r31 325 000012f0 54000000 nop 326 000012f4 .endproc _dstrncpy 327 000012f4 .align 2 328 000012f4 .proc _dstrcat 329 000012f4 .global _dstrcat 330 000012f4 _dstrcat: 331 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 332 000012f4 afbefffc sw -4(r29),r30; push fp 333 000012f8 001df020 add r30,r0,r29; fp = sp 334 000012fc afbffff8 sw -8(r29),r31; push ret addr 335 00001300 2fbd0010 subui r29,r29,#16; alloc local storage 336 00001304 afa20000 sw 0(r29),r2 337 00001308 afa30004 sw 4(r29),r3 338 0000130c 8fdf0000 lw r31,(r30) 339 00001310 001f1820 add r3,r0,r31 340 00001314 90610000 lbu r1,(r3) 341 00001318 64210000 snei r1,r1,#0 342 0000131c 10200018 beqz r1,L50_LF2 343 00001320 54000000 nop; not filled. 344 00001324 L51_LF2: 345 00001324 23ff0001 addi r31,r31,#1 346 00001328 93e10000 lbu r1,(r31) 347 0000132c 64210000 snei r1,r1,#0 348 00001330 1420fff0 bnez r1,L51_LF2 349 00001334 54000000 nop; not filled. 350 00001338 L50_LF2: 351 00001338 001f1020 add r2,r0,r31 352 0000133c 8fdf0004 lw r31,4(r30) 353 00001340 L54_LF2: 354 00001340 83e10000 lb r1,(r31) 355 00001344 a0410000 sb (r2),r1 356 00001348 23ff0001 addi r31,r31,#1 357 0000134c 20420001 addi r2,r2,#1 358 00001350 302100ff andi r1,r1,#0x00ff 359 00001354 64210000 snei r1,r1,#0 360 00001358 1420ffe4 bnez r1,L54_LF2 361 0000135c 54000000 nop; not filled. 362 00001360 00030820 add r1,r0,r3 363 00001364 8fa20000 lw r2,0(r29) 364 00001368 8fa30004 lw r3,4(r29) 365 0000136c 8fdffff8 lw r31,-8(r30) 366 00001370 001ee820 add r29,r0,r30 367 00001374 8fdefffc lw r30,-4(r30) 368 00001378 4be00000 jr r31 369 0000137c 54000000 nop 370 00001380 .endproc _dstrcat 371 00001380 .align 2 372 00001380 .proc _dstrncmp 373 00001380 .global _dstrncmp 374 00001380 _dstrncmp: 375 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 376 00001380 afbefffc sw -4(r29),r30; push fp 377 00001384 001df020 add r30,r0,r29; fp = sp 378 00001388 afbffff8 sw -8(r29),r31; push ret addr 379 0000138c 2fbd0018 subui r29,r29,#24; alloc local storage 380 00001390 afa20000 sw 0(r29),r2 381 00001394 afa30004 sw 4(r29),r3 382 00001398 afa40008 sw 8(r29),r4 383 0000139c afa5000c sw 12(r29),r5 384 000013a0 8fc30000 lw r3,(r30) 385 000013a4 8fc40004 lw r4,4(r30) 386 000013a8 8fc50008 lw r5,8(r30) 387 000013ac 20020000 addi r2,r0,#0 388 000013b0 0045082a slt r1,r2,r5 389 000013b4 1020003c beqz r1,L73_LF2 390 000013b8 54000000 nop; not filled. 391 000013bc L75_LF2: 392 000013bc 909f0000 lbu r31,(r4) 393 000013c0 67e10000 snei r1,r31,#0 394 000013c4 10200038 beqz r1,L86_LF2 395 000013c8 54000000 nop; not filled. 396 000013cc 90610000 lbu r1,(r3) 397 000013d0 003f0829 sne r1,r1,r31 398 000013d4 1420001c bnez r1,L73_LF2 399 000013d8 54000000 nop; not filled. 400 000013dc 20630001 addi r3,r3,#1 401 000013e0 20840001 addi r4,r4,#1 402 000013e4 20420001 addi r2,r2,#1 403 000013e8 0045082a slt r1,r2,r5 404 000013ec 1420ffcc bnez r1,L75_LF2 405 000013f0 54000000 nop; not filled. 406 000013f4 L73_LF2: 407 000013f4 00450828 seq r1,r2,r5 408 000013f8 10200010 beqz r1,L80_LF2 409 000013fc 54000000 nop; not filled. 410 00001400 L86_LF2: 411 00001400 20010000 addi r1,r0,#0 412 00001404 08000028 j L84_LF2 413 00001408 54000000 nop; not filled. 414 0000140c L80_LF2: 415 0000140c 907f0000 lbu r31,(r3) 416 00001410 90830000 lbu r3,(r4) 417 00001414 03e30822 sub r1,r31,r3 418 00001418 74210000 sgei r1,r1,#0 419 0000141c 2002ffff addi r2,r0,#-1 420 00001420 10200008 beqz r1,L82_LF2 421 00001424 54000000 nop; not filled. 422 00001428 03e31029 sne r2,r31,r3 423 0000142c L82_LF2: 424 0000142c 00020820 add r1,r0,r2 425 00001430 L84_LF2: 426 00001430 8fa20000 lw r2,0(r29) 427 00001434 8fa30004 lw r3,4(r29) 428 00001438 8fa40008 lw r4,8(r29) 429 0000143c 8fa5000c lw r5,12(r29) 430 00001440 8fdffff8 lw r31,-8(r30) 431 00001444 001ee820 add r29,r0,r30 432 00001448 8fdefffc lw r30,-4(r30) 433 0000144c 4be00000 jr r31 434 00001450 54000000 nop 435 00001454 .endproc _dstrncmp 436 00001454 .align 2 437 00001454 .proc _dstrlen 438 00001454 .global _dstrlen 439 00001454 _dstrlen: 440 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 441 00001454 afbefffc sw -4(r29),r30; push fp 442 00001458 001df020 add r30,r0,r29; fp = sp 443 0000145c afbffff8 sw -8(r29),r31; push ret addr 444 00001460 2fbd0010 subui r29,r29,#16; alloc local storage 445 00001464 afa20000 sw 0(r29),r2 446 00001468 8fdf0000 lw r31,(r30) 447 0000146c 20020000 addi r2,r0,#0 448 00001470 08000008 j L97_LF2 449 00001474 54000000 nop; not filled. 450 00001478 L95_LF2: 451 00001478 20420001 addi r2,r2,#1 452 0000147c L97_LF2: 453 0000147c 93e10000 lbu r1,(r31) 454 00001480 23ff0001 addi r31,r31,#1 455 00001484 64210000 snei r1,r1,#0 456 00001488 1420ffec bnez r1,L95_LF2 457 0000148c 54000000 nop; not filled. 458 00001490 00020820 add r1,r0,r2 459 00001494 8fa20000 lw r2,0(r29) 460 00001498 8fdffff8 lw r31,-8(r30) 461 0000149c 001ee820 add r29,r0,r30 462 000014a0 8fdefffc lw r30,-4(r30) 463 000014a4 4be00000 jr r31 464 000014a8 54000000 nop 465 000014ac .endproc _dstrlen 466 000014ac .align 2 467 000014ac .proc _dstrstr 468 000014ac .global _dstrstr 469 000014ac _dstrstr: 470 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 471 000014ac afbefffc sw -4(r29),r30; push fp 472 000014b0 001df020 add r30,r0,r29; fp = sp 473 000014b4 afbffff8 sw -8(r29),r31; push ret addr 474 000014b8 2fbd0020 subui r29,r29,#32; alloc local storage 475 000014bc afa20000 sw 0(r29),r2 476 000014c0 afa30004 sw 4(r29),r3 477 000014c4 afa40008 sw 8(r29),r4 478 000014c8 afa5000c sw 12(r29),r5 479 000014cc afa60010 sw 16(r29),r6 480 000014d0 afa70014 sw 20(r29),r7 481 000014d4 8fc50000 lw r5,(r30) 482 000014d8 8fc70004 lw r7,4(r30) 483 000014dc 20030000 addi r3,r0,#0 484 000014e0 90e10000 lbu r1,(r7) 485 000014e4 20e20001 addi r2,r7,#1 486 000014e8 64210000 snei r1,r1,#0 487 000014ec 1020001c beqz r1,L125_LF2 488 000014f0 54000000 nop; not filled. 489 000014f4 L126_LF2: 490 000014f4 20630001 addi r3,r3,#1 491 000014f8 90410000 lbu r1,(r2) 492 000014fc 20420001 addi r2,r2,#1 493 00001500 64210000 snei r1,r1,#0 494 00001504 1420ffec bnez r1,L126_LF2 495 00001508 54000000 nop; not filled. 496 0000150c L125_LF2: 497 0000150c 00033020 add r6,r0,r3 498 00001510 080000ac j L149_LF2 499 00001514 54000000 nop; not filled. 500 00001518 L130_LF2: 501 00001518 00051820 add r3,r0,r5 502 0000151c 00072020 add r4,r0,r7 503 00001520 20020000 addi r2,r0,#0 504 00001524 0046082a slt r1,r2,r6 505 00001528 1020003c beqz r1,L134_LF2 506 0000152c 54000000 nop; not filled. 507 00001530 L136_LF2: 508 00001530 909f0000 lbu r31,(r4) 509 00001534 67e10000 snei r1,r31,#0 510 00001538 10200038 beqz r1,L150_LF2 511 0000153c 54000000 nop; not filled. 512 00001540 90610000 lbu r1,(r3) 513 00001544 003f0829 sne r1,r1,r31 514 00001548 1420001c bnez r1,L134_LF2 515 0000154c 54000000 nop; not filled. 516 00001550 20630001 addi r3,r3,#1 517 00001554 20840001 addi r4,r4,#1 518 00001558 20420001 addi r2,r2,#1 519 0000155c 0046082a slt r1,r2,r6 520 00001560 1420ffcc bnez r1,L136_LF2 521 00001564 54000000 nop; not filled. 522 00001568 L134_LF2: 523 00001568 00460828 seq r1,r2,r6 524 0000156c 10200010 beqz r1,L141_LF2 525 00001570 54000000 nop; not filled. 526 00001574 L150_LF2: 527 00001574 20010000 addi r1,r0,#0 528 00001578 08000028 j L132_LF2 529 0000157c 54000000 nop; not filled. 530 00001580 L141_LF2: 531 00001580 90630000 lbu r3,(r3) 532 00001584 90820000 lbu r2,(r4) 533 00001588 00620822 sub r1,r3,r2 534 0000158c 74210000 sgei r1,r1,#0 535 00001590 201fffff addi r31,r0,#-1 536 00001594 10200008 beqz r1,L143_LF2 537 00001598 54000000 nop; not filled. 538 0000159c 0062f829 sne r31,r3,r2 539 000015a0 L143_LF2: 540 000015a0 001f0820 add r1,r0,r31 541 000015a4 L132_LF2: 542 000015a4 64210000 snei r1,r1,#0 543 000015a8 14200010 bnez r1,L131_LF2 544 000015ac 54000000 nop; not filled. 545 000015b0 00050820 add r1,r0,r5 546 000015b4 0800001c j L146_LF2 547 000015b8 54000000 nop; not filled. 548 000015bc L131_LF2: 549 000015bc 20a50001 addi r5,r5,#1 550 000015c0 L149_LF2: 551 000015c0 90a10000 lbu r1,(r5) 552 000015c4 64210000 snei r1,r1,#0 553 000015c8 1420ff4c bnez r1,L130_LF2 554 000015cc 54000000 nop; not filled. 555 000015d0 20010000 addi r1,r0,#0 556 000015d4 L146_LF2: 557 000015d4 8fa20000 lw r2,0(r29) 558 000015d8 8fa30004 lw r3,4(r29) 559 000015dc 8fa40008 lw r4,8(r29) 560 000015e0 8fa5000c lw r5,12(r29) 561 000015e4 8fa60010 lw r6,16(r29) 562 000015e8 8fa70014 lw r7,20(r29) 563 000015ec 8fdffff8 lw r31,-8(r30) 564 000015f0 001ee820 add r29,r0,r30 565 000015f4 8fdefffc lw r30,-4(r30) 566 000015f8 4be00000 jr r31 567 000015fc 54000000 nop 568 00001600 .endproc _dstrstr 569 00001600 .align 2 570 00001600 .proc _dmindex 571 00001600 .global _dmindex 572 00001600 _dmindex: 573 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 574 00001600 afbefffc sw -4(r29),r30; push fp 575 00001604 001df020 add r30,r0,r29; fp = sp 576 00001608 afbffff8 sw -8(r29),r31; push ret addr 577 0000160c 2fbd0020 subui r29,r29,#32; alloc local storage 578 00001610 afa20000 sw 0(r29),r2 579 00001614 afa30004 sw 4(r29),r3 580 00001618 afa40008 sw 8(r29),r4 581 0000161c afa5000c sw 12(r29),r5 582 00001620 afa60010 sw 16(r29),r6 583 00001624 8fc40000 lw r4,(r30) 584 00001628 8fc60004 lw r6,4(r30) 585 0000162c 90810000 lbu r1,(r4) 586 00001630 64210000 snei r1,r1,#0 587 00001634 10200060 beqz r1,L164_LF2 588 00001638 54000000 nop; not filled. 589 0000163c 00012820 add r5,r0,r1 590 00001640 L165_LF2: 591 00001640 00061020 add r2,r0,r6 592 00001644 80df0000 lb r31,(r6) 593 00001648 33e100ff andi r1,r31,#0x00ff 594 0000164c 64210000 snei r1,r1,#0 595 00001650 1020003c beqz r1,L163_LF2 596 00001654 54000000 nop; not filled. 597 00001658 90830000 lbu r3,(r4) 598 0000165c L169_LF2: 599 0000165c 33e100ff andi r1,r31,#0x00ff 600 00001660 00610828 seq r1,r3,r1 601 00001664 10200010 beqz r1,L168_LF2 602 00001668 54000000 nop; not filled. 603 0000166c 00040820 add r1,r0,r4 604 00001670 08000028 j L173_LF2 605 00001674 54000000 nop; not filled. 606 00001678 L168_LF2: 607 00001678 20420001 addi r2,r2,#1 608 0000167c 805f0000 lb r31,(r2) 609 00001680 33e100ff andi r1,r31,#0x00ff 610 00001684 64210000 snei r1,r1,#0 611 00001688 1420ffd0 bnez r1,L169_LF2 612 0000168c 54000000 nop; not filled. 613 00001690 L163_LF2: 614 00001690 14a0ffac bnez r5,L165_LF2 615 00001694 54000000 nop; not filled. 616 00001698 L164_LF2: 617 00001698 20010000 addi r1,r0,#0 618 0000169c L173_LF2: 619 0000169c 8fa20000 lw r2,0(r29) 620 000016a0 8fa30004 lw r3,4(r29) 621 000016a4 8fa40008 lw r4,8(r29) 622 000016a8 8fa5000c lw r5,12(r29) 623 000016ac 8fa60010 lw r6,16(r29) 624 000016b0 8fdffff8 lw r31,-8(r30) 625 000016b4 001ee820 add r29,r0,r30 626 000016b8 8fdefffc lw r30,-4(r30) 627 000016bc 4be00000 jr r31 628 000016c0 54000000 nop 629 000016c4 .endproc _dmindex 630 000016c4 .align 2 631 000016c4 .proc _dindex 632 000016c4 .global _dindex 633 000016c4 _dindex: 634 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 635 000016c4 afbefffc sw -4(r29),r30; push fp 636 000016c8 001df020 add r30,r0,r29; fp = sp 637 000016cc afbffff8 sw -8(r29),r31; push ret addr 638 000016d0 2fbd0010 subui r29,r29,#16; alloc local storage 639 000016d4 afa20000 sw 0(r29),r2 640 000016d8 afa30004 sw 4(r29),r3 641 000016dc 8fc20000 lw r2,(r30) 642 000016e0 8fc30004 lw r3,4(r30) 643 000016e4 08000024 j L187_LF2 644 000016e8 54000000 nop; not filled. 645 000016ec L183_LF2: 646 000016ec 33e100ff andi r1,r31,#0x00ff 647 000016f0 00230828 seq r1,r1,r3 648 000016f4 10200010 beqz r1,L184_LF2 649 000016f8 54000000 nop; not filled. 650 000016fc 00020820 add r1,r0,r2 651 00001700 08000020 j L186_LF2 652 00001704 54000000 nop; not filled. 653 00001708 L184_LF2: 654 00001708 20420001 addi r2,r2,#1 655 0000170c L187_LF2: 656 0000170c 805f0000 lb r31,(r2) 657 00001710 33e100ff andi r1,r31,#0x00ff 658 00001714 64210000 snei r1,r1,#0 659 00001718 1420ffd0 bnez r1,L183_LF2 660 0000171c 54000000 nop; not filled. 661 00001720 20010000 addi r1,r0,#0 662 00001724 L186_LF2: 663 00001724 8fa20000 lw r2,0(r29) 664 00001728 8fa30004 lw r3,4(r29) 665 0000172c 8fdffff8 lw r31,-8(r30) 666 00001730 001ee820 add r29,r0,r30 667 00001734 8fdefffc lw r30,-4(r30) 668 00001738 4be00000 jr r31 669 0000173c 54000000 nop 670 00001740 .endproc _dindex 671 00001740 .align 2 672 00001740 .proc _ditoa 673 00001740 .global _ditoa 674 00001740 _ditoa: 675 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 676 00001740 afbefffc sw -4(r29),r30; push fp 677 00001744 001df020 add r30,r0,r29; fp = sp 678 00001748 afbffff8 sw -8(r29),r31; push ret addr 679 0000174c 2fbd0020 subui r29,r29,#32; alloc local storage 680 00001750 afa20000 sw 0(r29),r2 681 00001754 afa30004 sw 4(r29),r3 682 00001758 afa40008 sw 8(r29),r4 683 0000175c afa5000c sw 12(r29),r5 684 00001760 afa60010 sw 16(r29),r6 685 00001764 8fc30000 lw r3,(r30) 686 00001768 8fc40004 lw r4,4(r30) 687 0000176c 68610000 slti r1,r3,#0 688 00001770 10200010 beqz r1,L203_LF2 689 00001774 54000000 nop; not filled. 690 00001778 2006002d addi r6,r0,(#0x2d)&0xff 691 0000177c 08000014 j L216_LF2 692 00001780 54000000 nop; not filled. 693 00001784 L203_LF2: 694 00001784 64610000 snei r1,r3,#0 695 00001788 14200018 bnez r1,L205_LF2 696 0000178c 54000000 nop; not filled. 697 00001790 20060030 addi r6,r0,(#0x30)&0xff 698 00001794 L216_LF2: 699 00001794 a0860000 sb (r4),r6 700 00001798 20840001 addi r4,r4,#1 701 0000179c 0800007c j L204_LF2 702 000017a0 54000000 nop; not filled. 703 000017a4 L205_LF2: 704 000017a4 201f0001 addi r31,r0,#1 705 000017a8 03e3082c sle r1,r31,r3 706 000017ac 1020001c beqz r1,L208_LF2 707 000017b0 54000000 nop; not filled. 708 000017b4 L209_LF2: 709 000017b4 53e10002 slli r1,r31,#0x2 710 000017b8 003f0820 add r1,r1,r31 711 000017bc 503f0001 slli r31,r1,#0x1 712 000017c0 03e3082c sle r1,r31,r3 713 000017c4 1420ffec bnez r1,L209_LF2 714 000017c8 54000000 nop; not filled. 715 000017cc L208_LF2: 716 000017cc 2005000a addi r5,r0,#10 717 000017d0 L212_LF2: 718 000017d0 03e00035 movi2fp f0,r31 719 000017d4 00a00835 movi2fp f1,r5 720 000017d8 0401000f div f0,f0,f1 721 000017dc 0000f834 movfp2i r31,f0 722 000017e0 00600035 movi2fp f0,r3 723 000017e4 03e00835 movi2fp f1,r31 724 000017e8 0401000f div f0,f0,f1 725 000017ec 00001034 movfp2i r2,f0 726 000017f0 20410030 addi r1,r2,#48 727 000017f4 a0810000 sb (r4),r1 728 000017f8 20840001 addi r4,r4,#1 729 000017fc 00400035 movi2fp f0,r2 730 00001800 03e00835 movi2fp f1,r31 731 00001804 0401000e mult f0,f0,f1 732 00001808 00000834 movfp2i r1,f0 733 0000180c 00611822 sub r3,r3,r1 734 00001810 6fe10001 sgti r1,r31,#1 735 00001814 1420ffb8 bnez r1,L212_LF2 736 00001818 54000000 nop; not filled. 737 0000181c L204_LF2: 738 0000181c 20060000 addi r6,r0,(#0x0)&0xff 739 00001820 a0860000 sb (r4),r6 740 00001824 8fa20000 lw r2,0(r29) 741 00001828 8fa30004 lw r3,4(r29) 742 0000182c 8fa40008 lw r4,8(r29) 743 00001830 8fa5000c lw r5,12(r29) 744 00001834 8fa60010 lw r6,16(r29) 745 00001838 8fdffff8 lw r31,-8(r30) 746 0000183c 001ee820 add r29,r0,r30 747 00001840 8fdefffc lw r30,-4(r30) 748 00001844 4be00000 jr r31 749 00001848 54000000 nop 750 0000184c .endproc _ditoa 751 0000184c .align 2 752 0000184c .proc _dstrtol 753 0000184c .global _dstrtol 754 0000184c _dstrtol: 755 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 756 0000184c afbefffc sw -4(r29),r30; push fp 757 00001850 001df020 add r30,r0,r29; fp = sp 758 00001854 afbffff8 sw -8(r29),r31; push ret addr 759 00001858 2fbd0020 subui r29,r29,#32; alloc local storage 760 0000185c afa20000 sw 0(r29),r2 761 00001860 afa30004 sw 4(r29),r3 762 00001864 afa40008 sw 8(r29),r4 763 00001868 afa5000c sw 12(r29),r5 764 0000186c afa60010 sw 16(r29),r6 765 00001870 8fc20000 lw r2,(r30) 766 00001874 8fc50004 lw r5,4(r30) 767 00001878 8fc40008 lw r4,8(r30) 768 0000187c 20030000 addi r3,r0,#0 769 00001880 08000008 j L247_LF2 770 00001884 54000000 nop; not filled. 771 00001888 L220_LF2: 772 00001888 20420001 addi r2,r2,#1 773 0000188c L247_LF2: 774 0000188c 805f0000 lb r31,(r2) 775 00001890 33e100ff andi r1,r31,#0x00ff 776 00001894 60210020 seqi r1,r1,#32 777 00001898 1420ffec bnez r1,L220_LF2 778 0000189c 54000000 nop; not filled. 779 000018a0 23e1fff7 addi r1,r31,#-9 780 000018a4 302100ff andi r1,r1,#0x00ff 781 000018a8 70210001 sleui r1,r1,#1 782 000018ac 1420ffd8 bnez r1,L220_LF2 783 000018b0 54000000 nop; not filled. 784 000018b4 64a10000 snei r1,r5,#0 785 000018b8 10200008 beqz r1,L222_LF2 786 000018bc 54000000 nop; not filled. 787 000018c0 aca20000 sw (r5),r2 788 000018c4 L222_LF2: 789 000018c4 905f0000 lbu r31,(r2) 790 000018c8 67e10000 snei r1,r31,#0 791 000018cc 10200090 beqz r1,L248_LF2 792 000018d0 54000000 nop; not filled. 793 000018d4 63e1002d seqi r1,r31,#45 794 000018d8 10200014 beqz r1,L224_LF2 795 000018dc 54000000 nop; not filled. 796 000018e0 2006ffff addi r6,r0,#-1 797 000018e4 20420001 addi r2,r2,#1 798 000018e8 08000008 j L225_LF2 799 000018ec 54000000 nop; not filled. 800 000018f0 L224_LF2: 801 000018f0 20060001 addi r6,r0,#1 802 000018f4 L225_LF2: 803 000018f4 64810000 snei r1,r4,#0 804 000018f8 14200054 bnez r1,L226_LF2 805 000018fc 54000000 nop; not filled. 806 00001900 90410000 lbu r1,(r2) 807 00001904 60210030 seqi r1,r1,#48 808 00001908 10200040 beqz r1,L227_LF2 809 0000190c 54000000 nop; not filled. 810 00001910 20420001 addi r2,r2,#1 811 00001914 905f0000 lbu r31,(r2) 812 00001918 63e10078 seqi r1,r31,#120 813 0000191c 14200010 bnez r1,L229_LF2 814 00001920 54000000 nop; not filled. 815 00001924 63e10058 seqi r1,r31,#88 816 00001928 10200014 beqz r1,L228_LF2 817 0000192c 54000000 nop; not filled. 818 00001930 L229_LF2: 819 00001930 20040010 addi r4,r0,#16 820 00001934 20420001 addi r2,r2,#1 821 00001938 08000014 j L226_LF2 822 0000193c 54000000 nop; not filled. 823 00001940 L228_LF2: 824 00001940 20040008 addi r4,r0,#8 825 00001944 08000008 j L226_LF2 826 00001948 54000000 nop; not filled. 827 0000194c L227_LF2: 828 0000194c 2004000a addi r4,r0,#10 829 00001950 L226_LF2: 830 00001950 2081ffff addi r1,r4,#-1 831 00001954 6c21000f sgtui r1,r1,#15 832 00001958 10200010 beqz r1,L233_LF2 833 0000195c 54000000 nop; not filled. 834 00001960 L248_LF2: 835 00001960 00030820 add r1,r0,r3 836 00001964 080000c4 j L245_LF2 837 00001968 54000000 nop; not filled. 838 0000196c L233_LF2: 839 0000196c 805f0000 lb r31,(r2) 840 00001970 23e1ffd0 addi r1,r31,#-48 841 00001974 302100ff andi r1,r1,#0x00ff 842 00001978 70210009 sleui r1,r1,#9 843 0000197c 10200014 beqz r1,L236_LF2 844 00001980 54000000 nop; not filled. 845 00001984 33e100ff andi r1,r31,#0x00ff 846 00001988 2021ffd0 addi r1,r1,#-48 847 0000198c 08000050 j L237_LF2 848 00001990 54000000 nop; not filled. 849 00001994 L236_LF2: 850 00001994 23e1ff9f addi r1,r31,#-97 851 00001998 302100ff andi r1,r1,#0x00ff 852 0000199c 70210019 sleui r1,r1,#25 853 000019a0 10200014 beqz r1,L238_LF2 854 000019a4 54000000 nop; not filled. 855 000019a8 33e100ff andi r1,r31,#0x00ff 856 000019ac 2021ffa9 addi r1,r1,#-87 857 000019b0 0800002c j L237_LF2 858 000019b4 54000000 nop; not filled. 859 000019b8 L238_LF2: 860 000019b8 23e1ffbf addi r1,r31,#-65 861 000019bc 302100ff andi r1,r1,#0x00ff 862 000019c0 70210019 sleui r1,r1,#25 863 000019c4 10200014 beqz r1,L240_LF2 864 000019c8 54000000 nop; not filled. 865 000019cc 33e100ff andi r1,r31,#0x00ff 866 000019d0 2021ffc9 addi r1,r1,#-55 867 000019d4 08000008 j L237_LF2 868 000019d8 54000000 nop; not filled. 869 000019dc L240_LF2: 870 000019dc 200103e8 addi r1,r0,#1000 871 000019e0 L237_LF2: 872 000019e0 0024f82a slt r31,r1,r4 873 000019e4 13e00024 beqz r31,L246_LF2 874 000019e8 54000000 nop; not filled. 875 000019ec 00600035 movi2fp f0,r3 876 000019f0 00800835 movi2fp f1,r4 877 000019f4 0401000e mult f0,f0,f1 878 000019f8 00001834 movfp2i r3,f0 879 000019fc 00611820 add r3,r3,r1 880 00001a00 20420001 addi r2,r2,#1 881 00001a04 17e0ff64 bnez r31,L233_LF2 882 00001a08 54000000 nop; not filled. 883 00001a0c L246_LF2: 884 00001a0c 64a10000 snei r1,r5,#0 885 00001a10 10200008 beqz r1,L244_LF2 886 00001a14 54000000 nop; not filled. 887 00001a18 aca20000 sw (r5),r2 888 00001a1c L244_LF2: 889 00001a1c 00600035 movi2fp f0,r3 890 00001a20 00c00835 movi2fp f1,r6 891 00001a24 0401000e mult f0,f0,f1 892 00001a28 00000834 movfp2i r1,f0 893 00001a2c L245_LF2: 894 00001a2c 8fa20000 lw r2,0(r29) 895 00001a30 8fa30004 lw r3,4(r29) 896 00001a34 8fa40008 lw r4,8(r29) 897 00001a38 8fa5000c lw r5,12(r29) 898 00001a3c 8fa60010 lw r6,16(r29) 899 00001a40 8fdffff8 lw r31,-8(r30) 900 00001a44 001ee820 add r29,r0,r30 901 00001a48 8fdefffc lw r30,-4(r30) 902 00001a4c 4be00000 jr r31 903 00001a50 54000000 nop 904 00001a54 .endproc _dstrtol 905 00001a54 .align 2 906 00001a54 .proc _bcopy 907 00001a54 .global _bcopy 908 00001a54 _bcopy: 909 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 910 00001a54 afbefffc sw -4(r29),r30; push fp 911 00001a58 001df020 add r30,r0,r29; fp = sp 912 00001a5c afbffff8 sw -8(r29),r31; push ret addr 913 00001a60 2fbd0018 subui r29,r29,#24; alloc local storage 914 00001a64 afa20000 sw 0(r29),r2 915 00001a68 afa30004 sw 4(r29),r3 916 00001a6c afa40008 sw 8(r29),r4 917 00001a70 8fc30000 lw r3,(r30) 918 00001a74 8fc20004 lw r2,4(r30) 919 00001a78 8fdf0008 lw r31,8(r30) 920 00001a7c 08000014 j L259_LF2 921 00001a80 54000000 nop; not filled. 922 00001a84 L257_LF2: 923 00001a84 80640000 lb r4,(r3) 924 00001a88 a0440000 sb (r2),r4 925 00001a8c 20630001 addi r3,r3,#1 926 00001a90 20420001 addi r2,r2,#1 927 00001a94 L259_LF2: 928 00001a94 001f0820 add r1,r0,r31 929 00001a98 23ffffff addi r31,r31,#-1 930 00001a9c 6c210000 sgti r1,r1,#0 931 00001aa0 1420ffe0 bnez r1,L257_LF2 932 00001aa4 54000000 nop; not filled. 933 00001aa8 8fa20000 lw r2,0(r29) 934 00001aac 8fa30004 lw r3,4(r29) 935 00001ab0 8fa40008 lw r4,8(r29) 936 00001ab4 8fdffff8 lw r31,-8(r30) 937 00001ab8 001ee820 add r29,r0,r30 938 00001abc 8fdefffc lw r30,-4(r30) 939 00001ac0 4be00000 jr r31 940 00001ac4 54000000 nop 941 00001ac8 .endproc _bcopy 942 00001ac8 .align 2 943 00001ac8 .proc _bzero 944 00001ac8 .global _bzero 945 00001ac8 _bzero: 946 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 947 00001ac8 afbefffc sw -4(r29),r30; push fp 948 00001acc 001df020 add r30,r0,r29; fp = sp 949 00001ad0 afbffff8 sw -8(r29),r31; push ret addr 950 00001ad4 2fbd0010 subui r29,r29,#16; alloc local storage 951 00001ad8 afa20000 sw 0(r29),r2 952 00001adc afa30004 sw 4(r29),r3 953 00001ae0 8fc20000 lw r2,(r30) 954 00001ae4 8fdf0004 lw r31,4(r30) 955 00001ae8 08000010 j L270_LF2 956 00001aec 54000000 nop; not filled. 957 00001af0 L268_LF2: 958 00001af0 20030000 addi r3,r0,(#0x0)&0xff 959 00001af4 a0430000 sb (r2),r3 960 00001af8 20420001 addi r2,r2,#1 961 00001afc L270_LF2: 962 00001afc 001f0820 add r1,r0,r31 963 00001b00 23ffffff addi r31,r31,#-1 964 00001b04 6c210000 sgti r1,r1,#0 965 00001b08 1420ffe4 bnez r1,L268_LF2 966 00001b0c 54000000 nop; not filled. 967 00001b10 8fa20000 lw r2,0(r29) 968 00001b14 8fa30004 lw r3,4(r29) 969 00001b18 8fdffff8 lw r31,-8(r30) 970 00001b1c 001ee820 add r29,r0,r30 971 00001b20 8fdefffc lw r30,-4(r30) 972 00001b24 4be00000 jr r31 973 00001b28 54000000 nop 974 00001b2c .endproc _bzero 975 ;;; Ethan L. Miller, 1999. Released to the public domain 976 ;;; 977 ;;; Most of the traps are called in files from libtraps. 980 00001b2c .align 2 981 00001b2c .proc _exit 982 00001b2c .global _exit 983 00001b2c _exit: 984 00001b2c 44000300 trap #0x300 985 00001b30 4be00000 jr r31 986 00001b34 54000000 nop 987 00001b38 .endproc _exit 989 ; for the benefit of gcc. 990 00001b38 .proc ___main 991 00001b38 .global ___main 992 00001b38 ___main: 993 00001b38 4be00000 jr r31 994 00001b3c 54000000 nop 995 00001b40 .endproc ___main 996 00001b40 .text 997 00001b40 .global _etext 998 00001b40 _etext: 999 00001b40 .align 3 1000 00001b40 .data 1001 0000201a .global _edata 1002 0000201a _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/synch.c

// // synch.c // // Routines for synchronization // // #include "dlxos.h" #include "process.h" #include "synch.h" static Sem sems[MAX_SEMS]; //All semaphores in the system extern struct PCB *currentPCB; //---------------------------------------------------------------------- // SynchModuleInit // // Initializes the synchronization primitives: the semaphores //---------------------------------------------------------------------- void SynchModuleInit() { int i; dbprintf ('p', "Entering SynchModuleInit\n"); for(i=0; i<MAX_SEMS; i++) sems[i].inuse = 0; dbprintf ('p', "Leaving SynchModuleInit\n"); } //--------------------------------------------------------------------- // // SemInit // // Initialize a semaphore to a particular value. This just means // initting the process queue and setting the counter. // //---------------------------------------------------------------------- void SemInit (Sem *sem, int count) { QueueInit (&sem->waiting); sem->count = count; } //---------------------------------------------------------------------- // SemCreate // // Grabs a Semaphore, initializes it and returns a handle to this // semaphore. All subsequent accesses to this semaphore should be made // through this handle //---------------------------------------------------------------------- sem_t SemCreate(int count) { sem_t sem; uint32 intrval; // grabbing a semaphore should be an atomic operation intrval = DisableIntrs(); for(sem=0; sem<MAX_SEMS; sem++) { if(sems[sem].inuse==0) { sems[sem].inuse = 1; break; } } RestoreIntrs(intrval); if(sem==MAX_SEMS) return INVALID_SEM; SemInit(&sems[sem], count); return sem; } � //---------------------------------------------------------------------- // // SemWait // // Wait on a semaphore. As described in Section 6.4 of _OSC_, // we decrement the counter and suspend the process if the // semaphore's value is less than 0. To ensure atomicity, // interrupts are disabled for the entire operation. Note that, // if the process is put to sleep, interrupts will be OFF when // it returns from sleep. Thus, we enable interrupts at the end of // the routine. // //---------------------------------------------------------------------- void SemWait (Sem *sem) { Link *l; int intrval; intrval = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrval); dbprintf ('s', "Proc 0x%x waiting on sem 0x%x, count=%d.\n", currentPCB, sem, sem->count); sem->count -= 1; if (sem->count < 0) { l = QueueAllocLink (); QueueLinkInit (l, (void *)currentPCB); dbprintf ('s', "Suspending current proc (0x%x).\n", currentPCB); QueueInsertLast (&sem->waiting, l); ProcessSleep (); } RestoreIntrs (intrval); } int SemHandleWait(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemWait(&sems[sem]); return 0; } return 1; } else { return 1; } } //---------------------------------------------------------------------- // // SemSignal // // Signal on a semaphore. Again, details are in Section 6.4 of // _OSC_. // //---------------------------------------------------------------------- void SemSignal (Sem *sem) { Link *l; int intrs; intrs = DisableIntrs (); dbprintf ('s', "Signalling on sem 0x%x, count=%d.\n", sem, sem->count); sem->count += 1; if (sem->count <= 0) { l = QueueFirst (&sem->waiting); QueueRemove (l); dbprintf ('s', "Waking up PCB 0x%x.\n", l->object); ProcessWakeup ((PCB *)(l->object)); QueueFreeLink (l); } RestoreIntrs (intrs); } int SemHandleSignal(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemSignal(&sems[sem]); return 0; } return 1; } else { return 1; } }

home/bshapir/cs314/project4/option1/lab4_2/src/userprog.o

; Compiled by GCC .data .align 2 LC0: .ascii "Testing case %d\n\000" .align 2 LC1: .ascii "\nUsage: \000" .align 2 LC2: .ascii " [case id]\n\000" .align 2 LC3: .ascii "userprog1.dlx.obj\000" .align 2 LC4: .ascii "userprog2.dlx.obj\000" .align 2 LC5: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop ; not filled. seqi r1,r2,#2 beqz r1,L14 nop ; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop ; not filled. add r2,r0,r1 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. addi r29,r29,#16 j L12 nop ; not filled. L14: addi r29,r29,#-8 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 jal _Printf nop ; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop ; not filled. lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 jal _Printf nop ; not filled. jal _exit nop ; not filled. L12: seqi r1,r2,#1 bnez r1,L17 nop ; not filled. seqi r1,r2,#2 beqz r1,L19 nop ; not filled. j L18 nop ; not filled. L17: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L18: addi r29,r29,#-8 lhi r4,((LC4)>>16)&0xffff addui r4,r4,(LC4)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L19: addi r29,r29,#-8 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. L21: addi r29,r29,#8 jal _exit nop .endproc _main

home/bshapir/cs314/project4/option1/lab4_2/src/userprog1.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 24 ; Text size: 2872 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "In Userprog1, Sum : %d\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal ___main nop; not filled. addi r3,r0,(#0x0)&0xff lhi r4,#16 addui r4,r4,#0 addi r31,r0,#0 add r2,r0,r4 L16_LF0: sb (r2),r31 addi r2,r2,#8196 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16_LF0 nop; not filled. add r31,r0,r4 lhi r5,#1 addui r5,r5,#24620 or r2,r31,r5 L21_LF0: lb r5,(r31) add r3,r5,r3 addi r31,r31,#8196 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r5,((LC0_LF0)>>16)&0xffff addui r5,r5,(LC0_LF0)&0xffff sw (r29),r5 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/dlxos.ps

home/bshapir/cs314/project4/option1/lab4_2/src/synch.working.s

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L38 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L38: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .data .align 2 LC0: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC1: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L49 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L48 nop ; not filled. L49: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r3 lw r6,12(r3) sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L48: lw r1,12(r3) addi r1,r1,#-1 sw 12(r3),r1 slti r1,r1,#0 beqz r1,L50 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r6,r0,#0 sw (r2),r6 sw 12(r2),r1 addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r6,((LC1)>>16)&0xffff addui r6,r6,(LC1)&0xffff sw (r29),r6 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L52: lw r1,4(r3) sw 8(r2),r3 sw 4(r2),r1 lw r6,(r1) sw (r2),r6 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 jal _ProcessSleep nop ; not filled. L50: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .data .align 2 LC2: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC3: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 sw 4(r29),r2 lw r4,12(r2) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L58: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L60 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L63 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L63: addi r4,r0,#0 sw (r3),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r29,r29,#-8 lw r4,12(r3) sw (r29),r4 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L60: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _LockInit .global _LockInit _LockInit: ; Function 'LockInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. addi r3,r0,#1 sw 12(r2),r3 addi r29,r29,#8 addi r1,r2,#16 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 28(r2),r3 addi r29,r29,#8 sw 32(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockInit .align 2 .proc _LockAcquire .global _LockAcquire _LockAcquire: ; Function 'LockAcquire'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lw r1,(r30) sw (r29),r1 jal _SemWait nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockAcquire .align 2 .proc _LockRelease .global _LockRelease _LockRelease: ; Function 'LockRelease'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,(r30) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L78 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L80 nop ; not filled. L78: addi r29,r29,#-8 sw (r29),r31 L80: jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockRelease .align 2 .proc _CondInit .global _CondInit _CondInit: ; Function 'CondInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) sw (r2),r3 addi r1,r2,#4 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 16(r2),r3 addi r29,r29,#8 sw 20(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondInit .align 2 .proc _CondWait .global _CondWait _CondWait: ; Function 'CondWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r2,(r30) lw r1,20(r2) addi r1,r1,#1 sw 20(r2),r1 lw r31,(r2) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L89 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L91 nop ; not filled. L89: addi r29,r29,#-8 sw (r29),r31 L91: jal _SemSignal nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 addi r1,r2,#4 sw (r29),r1 jal _SemWait nop ; not filled. lw r1,(r2) addi r1,r1,#16 sw (r29),r1 jal _SemWait nop ; not filled. lw r2,(r2) lw r1,32(r2) addi r1,r1,#-1 sw 32(r2),r1 addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondWait .align 2 .proc _CondSignal .global _CondSignal _CondSignal: ; Function 'CondSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) lw r2,20(r31) sgti r1,r2,#0 beqz r1,L95 nop ; not filled. addi r1,r2,#-1 sw 20(r31),r1 lw r2,(r31) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 addi r1,r31,#4 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 L95: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondSignal .align 2 .proc _CondBroadcast .global _CondBroadcast _CondBroadcast: ; Function 'CondBroadcast'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r5,20(r4) addi r3,r0,#0 slt r1,r3,r5 beqz r1,L106 nop ; not filled. addi r6,r4,#4 L108: lw r2,20(r4) sgti r1,r2,#0 beqz r1,L107 nop ; not filled. addi r1,r2,#-1 sw 20(r4),r1 lw r2,(r4) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 sw (r29),r6 jal _SemSignal nop ; not filled. addi r29,r29,#8 L107: addi r3,r3,#1 slt r1,r3,r5 bnez r1,L108 nop ; not filled. L106: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondBroadcast

home/bshapir/cs314/project4/option1/lab4_2/src/userprog1.o

; Compiled by GCC .data .align 2 LC0: .ascii "In Userprog1, Sum : %d\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal ___main nop ; not filled. addi r3,r0,(#0x0)&0xff lhi r4,#16 addui r4,r4,#0 addi r31,r0,#0 add r2,r0,r4 L16: sb (r2),r31 addi r2,r2,#8196 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16 nop ; not filled. add r31,r0,r4 lhi r5,#1 addui r5,r5,#24620 or r2,r31,r5 L21: lb r5,(r31) add r3,r5,r3 addi r31,r31,#8196 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

home/bshapir/cs314/project4/option1/lab4_2/src/traps.h

// // dlxtraps.h // // Traps used by the DLX simulator. These traps have to be handled by the // operating system. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: traps.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _dlxtraps_h_ #define _dlxtraps_h_ #define TRAP_ILLEGALINST 0x1 // Illegal instruction #define TRAP_ADDRESS 0x2 // Bad address #define TRAP_ACCESS 0x3 // Attempted to access illegal memory #define TRAP_OVERFLOW 0x4 // Math overflow #define TRAP_DIV0 0x5 // Divide by 0 #define TRAP_PRIVILEGE 0x6 // Instruction must be executed as sys #define TRAP_FORMAT 0x7 // Instruction is malformed #define TRAP_PAGEFAULT 0x20 #define TRAP_TLBFAULT 0x30 #define TRAP_TIMER 0x40 // timer interrupt #define TRAP_KBD 0x48 // keyboard interrupt // This bit is set in CAUSE if the interrupt was a trap instruction #define TRAP_TRAP_INSTR 0x08000000 // The following traps are all defined in the basic traps library. To // call TRAP_READ, use a Read() call from a user-level program. This applies // to every trap except EXIT, which is called via exit() [no uppercase]. #define TRAP_PRINTF 0x201 #define TRAP_READ 0x210 #define TRAP_WRITE 0x211 #define TRAP_LSEEK 0x212 #define TRAP_SEEK TRAP_LSEEK // SEEK and LSEEK are synonyms #define TRAP_OPEN 0x213 #define TRAP_CLOSE 0x214 #define TRAP_DELETE 0x580 #define TRAP_EXIT 0x300 // Following are user-defined traps. Traps should be in the range // 0x400 - 0xfff #define TRAP_CONTEXT_SWITCH 0x400 //#define TRAP_SEM_WAIT 0x401 //#define TRAP_SEM_SIGNAL 0x402 #define TRAP_PROCESS_SLEEP 0x410 #define TRAP_PROCESS_WAKEUP 0x420 #define TRAP_PROCESS_FORK 0x430 #define TRAP_PROCESS_GETPID 0x431 #define TRAP_PROCESS_CREATE 0x432 #define TRAP_SEM_CREATE 0x450 #define TRAP_SEM_WAIT 0x451 #define TRAP_SEM_SIGNAL 0x452 // The following are special I/O addresses for DLX. #define DLX_TIMER_ADDRESS 0xfff00010 #define DLX_KBD_PUTCHAR 0xfff00100 #define DLX_KBD_NCHARSOUT 0xfff00120 #define DLX_KBD_GETCHAR 0xfff00180 #define DLX_KBD_NCHARSIN 0xfff001a0 #define DLX_KBD_INTR 0xfff001c0 #define TRAP_STACK_SIZE 0x800 // interrupt stack is 2K words #endif /* _dlxtraps_h_ */

home/bshapir/cs314/project4/option1/lab4_2/src/lab4.h

#ifndef _LAB4_H_ #define _LAB4_H_ #define NULL (void *)0x0 #define INVALID_SEM -1 typedef unsigned int uint32; typedef int sem_t; //Related to processes uint32 getpid(); //trap 0x431 void process_create(char *arg1, ...); //trap 0x432 //Related to semaphores sem_t sem_create(int count); //trap 0x450 int sem_wait(sem_t sem); //trap 0x451 int sem_signal(sem_t sem); //trap 0x452 #endif _LAB4_H_

home/bshapir/cs314/project4/option1/lab4_2/src/traps.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler _TrapProcessCreateHandler: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1696 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65 nop ; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73 nop ; not filled. j L68 nop ; not filled. L67: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop ; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L73: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74 nop ; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80 nop ; not filled. L77: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86 nop ; not filled. j L85 nop ; not filled. L74: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop ; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC0)>>16)&0xffff addui r12,r12,(LC0)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L92: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop ; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93 nop ; not filled. L86: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler .align 2 .proc _TrapPrintfHandler _TrapPrintfHandler: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#208 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101 nop ; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101 nop ; not filled. j L96 nop ; not filled. L95: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop ; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L101: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104 nop ; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107 nop ; not filled. addi r3,r3,#1 j L104 nop ; not filled. L107: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109 nop ; not filled. seqi r1,r2,#108 bnez r1,L110 nop ; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116 nop ; not filled. seqi r1,r2,#101 beqz r1,L115 nop ; not filled. L116: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109 nop ; not filled. L115: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110 nop ; not filled. L109: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105 nop ; not filled. L103: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop ; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler .data .align 2 LC1: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2: .ascii "Got a context switch trap!\n\000" .align 2 LC3: .ascii "Got an exit trap!\n\000" .align 2 LC4: .ascii "Got a fork trap!\n\000" .align 2 LC5: .ascii "Got a process sleep trap!\n\000" .align 2 LC6: .ascii "Got a printf trap!\n\000" .align 2 LC7: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9: .ascii "Got a timer interrupt!\n\000" .align 2 LC10: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11: .ascii "Trap access\n\000" .align 2 LC12: .ascii "Current PROC %s\n\000" .align 2 LC13: .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" .align 2 LC14: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC15: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC16: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#88 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122 nop ; not filled. L123: addi r29,r29,#-24 lhi r7,((LC1)>>16)&0xffff addui r7,r7,(LC1)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L122: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124 nop ; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126 nop ; not filled. sgtui r1,r2,#1024 bnez r1,L179 nop ; not filled. seqi r1,r2,#530 bnez r1,L160 nop ; not filled. sgtui r1,r2,#530 bnez r1,L180 nop ; not filled. seqi r1,r2,#528 bnez r1,L151 nop ; not filled. sgtui r1,r2,#528 bnez r1,L154 nop ; not filled. seqi r1,r2,#513 beqz r1,L177 nop ; not filled. j L140 nop ; not filled. L180: seqi r1,r2,#532 bnez r1,L148 nop ; not filled. sltui r1,r2,#532 bnez r1,L143 nop ; not filled. seqi r1,r2,#768 beqz r1,L177 nop ; not filled. j L129 nop ; not filled. L179: seqi r1,r2,#1074 bnez r1,L164 nop ; not filled. sgtui r1,r2,#1074 bnez r1,L181 nop ; not filled. seqi r1,r2,#1072 bnez r1,L134 nop ; not filled. sgtui r1,r2,#1072 bnez r1,L163 nop ; not filled. seqi r1,r2,#1040 beqz r1,L177 nop ; not filled. j L137 nop ; not filled. L181: seqi r1,r2,#1105 bnez r1,L169 nop ; not filled. sgtui r1,r2,#1105 bnez r1,L182 nop ; not filled. seqi r1,r2,#1104 beqz r1,L177 nop ; not filled. j L165 nop ; not filled. L182: seqi r1,r2,#1106 bnez r1,L173 nop ; not filled. seqi r1,r2,#1408 beqz r1,L177 nop ; not filled. j L157 nop ; not filled. L126: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L128: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff j L209 nop ; not filled. L129: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-8 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L130: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L132 nop ; not filled. L133: addi r29,r29,#-8 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L132: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L203 nop ; not filled. L134: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L136 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L183 nop ; not filled. L136: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. j L203 nop ; not filled. L137: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L139 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L138 nop ; not filled. L139: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L138: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop ; not filled. jal _ProcessSchedule nop ; not filled. j L203 nop ; not filled. L140: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141 nop ; not filled. L142: addi r29,r29,#-8 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L141: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler nop ; not filled. j L203 nop ; not filled. L143: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L144 nop ; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L145 nop ; not filled. L144: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L145: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop ; not filled. addi r29,r29,#-8 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L148: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L151: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L154: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L157: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L160: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L163: jal _GetCurrentPid nop ; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L164: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler nop ; not filled. j L203 nop ; not filled. L165: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L167 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L204 nop ; not filled. L167: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L204: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L169: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L171 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L205 nop ; not filled. L171: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L205: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L173: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L175 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L206 nop ; not filled. L175: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L206: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L177: addi r29,r29,#-8 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff j L207 nop ; not filled. L124: seqi r1,r2,#3 bnez r1,L193 nop ; not filled. sgtui r1,r2,#3 bnez r1,L199 nop ; not filled. seqi r1,r2,#1 bnez r1,L195 nop ; not filled. seqi r1,r2,#2 beqz r1,L197 nop ; not filled. j L194 nop ; not filled. L199: seqi r1,r2,#64 bnez r1,L185 nop ; not filled. sgtui r1,r2,#64 bnez r1,L200 nop ; not filled. seqi r1,r2,#32 beqz r1,L197 nop ; not filled. j L196 nop ; not filled. L200: seqi r1,r2,#72 beqz r1,L197 nop ; not filled. j L188 nop ; not filled. L185: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L187: addi r29,r29,#-8 lhi r7,((LC9)>>16)&0xffff addui r7,r7,(LC9)&0xffff L209: sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L186: jal _ProcessSchedule nop ; not filled. j L183 nop ; not filled. L188: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L189: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10)>>16)&0xffff addui r7,r7,(LC10)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L183 nop ; not filled. j L189 nop ; not filled. L193: addi r29,r29,#-8 lhi r7,((LC11)>>16)&0xffff addui r7,r7,(LC11)&0xffff sw (r29),r7 jal _printf nop ; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L203 nop ; not filled. L194: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12)>>16)&0xffff addui r7,r7,(LC12)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#-8 lhi r7,((LC13)>>16)&0xffff addui r7,r7,(LC13)&0xffff j L208 nop ; not filled. L195: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12)>>16)&0xffff addui r7,r7,(LC12)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#-8 lhi r7,((LC14)>>16)&0xffff addui r7,r7,(LC14)&0xffff L208: sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#16 j L183 nop ; not filled. L196: jal _PageFaultHandler nop ; not filled. j L183 nop ; not filled. L197: addi r29,r29,#-8 lhi r7,((LC15)>>16)&0xffff addui r7,r7,(LC15)&0xffff L207: sw (r29),r7 sw 4(r29),r2 jal _printf nop ; not filled. jal _exitsim nop ; not filled. L203: addi r29,r29,#8 L183: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L202 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L201 nop ; not filled. L202: addi r29,r29,#-8 lhi r7,((LC16)>>16)&0xffff addui r7,r7,(LC16)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L201: jal _intrreturn nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt

home/bshapir/cs314/project4/option1/lab4_2/src/syscall.h

// // syscall.h // // This file declares all of the system calls available as builtins // in the simulator. // #ifndef _syscall_h_ #define _syscall_h_ extern int open(const char *, int); extern int read(int, char *, int); extern int write(int, char *, int); extern int lseek(int, int, int); extern int close(int); #endif // _syscall_h_

home/bshapir/cs314/project4/option1/lab4_2/src/userprog.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 112 ; Text size: 3060 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "Testing case %d\n\000" .align 2 LC1_LF0: .ascii "\nUsage: \000" .align 2 LC2_LF0: .ascii " [case id]\n\000" .align 2 LC3_LF0: .ascii "userprog1.dlx.obj\000" .align 2 LC4_LF0: .ascii "userprog2.dlx.obj\000" .align 2 LC5_LF0: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop; not filled. seqi r1,r2,#2 beqz r1,L14_LF0 nop; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop; not filled. add r2,r0,r1 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. addi r29,r29,#16 j L12_LF0 nop; not filled. L14_LF0: addi r29,r29,#-8 lhi r4,((LC1_LF0)>>16)&0xffff addui r4,r4,(LC1_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop; not filled. lhi r4,((LC2_LF0)>>16)&0xffff addui r4,r4,(LC2_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. jal _exit nop; not filled. L12_LF0: seqi r1,r2,#1 bnez r1,L17_LF0 nop; not filled. seqi r1,r2,#2 beqz r1,L19_LF0 nop; not filled. j L18_LF0 nop; not filled. L17_LF0: addi r29,r29,#-8 lhi r4,((LC3_LF0)>>16)&0xffff addui r4,r4,(LC3_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L18_LF0: addi r29,r29,#-8 lhi r4,((LC4_LF0)>>16)&0xffff addui r4,r4,(LC4_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L19_LF0: addi r29,r29,#-8 lhi r4,((LC5_LF0)>>16)&0xffff addui r4,r4,(LC5_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. L21_LF0: addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/dlxos.o

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

home/bshapir/cs314/project4/option1/lab4_2/src/Makefile

# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c \ OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog1 userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o $(CC) -mtraps -O3 dlxos.o trap_random.o $(OBJS) osend.o -o os.dlx osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog: userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -L userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog1: userprog1.o usertraps.o misc.o $(CC) -mtraps -O3 userprog1.o usertraps.o misc.o -o userprog1.dlx $(AS) -L userprog1.lst userprog1.dlx mv userprog1.dlx.obj ../execs userprog2: userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -L userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend

home/bshapir/cs314/project4/option1/lab4_2/src/filesys.c

// // filesys.c // // This file has handlers for the file systems supported by the DLX // operating system. These include both the basic, simulator-provided // file system and the more complex file system from the file system // assignment. static char rcsid[] = "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "process.h" #include "filesys.h" // One entry for each type of file system. Currently, the file systems // are native Unix (0) and DLX (1). static Fs fs[2]; // One entry for each open file in the operating system. static FsOpenFile openfiles[FS_MAX_OPEN_FILES]; //---------------------------------------------------------------------- // // FdValid // // Return 1 if the file descriptor is valid, 0 otherwise. // //---------------------------------------------------------------------- static inline int FdValid (int fd) { return ((fd > 0) && (fd < FS_MAX_OPEN_FILES) && (openfiles[fd].flags != 0)); } //---------------------------------------------------------------------- // // FsFreeEntry // // Free an entry in the open files table. // //---------------------------------------------------------------------- static inline void FsFreeEntry (int x) { openfiles[x].flags = 0; } � //---------------------------------------------------------------------- // // FsOpen // // Open a file. The name of the file is passed, along with the file // mode (read or write). // // This function figures out which file system is desired using a // simple heuristic. Basically, if the file starts with "dlx:", it's // a DLX file system file. Otherwise, it's a UNIX file. // // Once the file system is figured out, this routine allocates a // file descriptor and calls the file-system specific open routine. // //---------------------------------------------------------------------- int FsOpen (const char *name, int mode) { int i, retval; dbprintf ('f', "Attepmting to open %s mode=%d.\n", name, mode); // Mask off all but the mode bits mode &= FS_MODE_RW; // ERROR if the caller hasn't specified a file mode. if (mode == 0) { return (-1); } for (i = 0; i < FS_MAX_OPEN_FILES; i++) { if (openfiles[i].flags == 0) { break; } } if (i >= FS_MAX_OPEN_FILES) { return (-1); } openfiles[i].flags = mode; // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxOpen. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" openfiles[i].fs = 1; } else { openfiles[i].fs = 0; } dbprintf ('f', "File %s opening in file system %d.\n",name,openfiles[i].fs); retval = fs[openfiles[i].fs].Open (i, name, mode); if (retval < 0) { // Open failed, so return error code FsFreeEntry (i); return (retval); } dbprintf ('f', "Opened %s in FS %d, mode=%d slot=%d.\n", name, openfiles[i].fs, mode, i); return (i); } //---------------------------------------------------------------------- // // FsClose // // Close an open file. Call the FS-specific routine, and then mark // the file table entry unused. // //---------------------------------------------------------------------- int FsClose (int fd) { int retval; if (!FdValid (fd)) { return (-1); } retval = fs[openfiles[fd].fs].Close (fd); FsFreeEntry (fd); return (retval); } � //---------------------------------------------------------------------- // // FsRead // // Read data from a file. // //---------------------------------------------------------------------- int FsRead (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Read (fd, buf, n)); } //---------------------------------------------------------------------- // // FsWrite // // Write data to a file. // //---------------------------------------------------------------------- int FsWrite (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Write (fd, buf, n)); } //---------------------------------------------------------------------- // // FsSeek // // Seek in a file. // //---------------------------------------------------------------------- int FsSeek (int fd, int offset, int whence) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Seek (fd, offset, whence)); } //---------------------------------------------------------------------- // // FsDelete // // Delete a file. // //---------------------------------------------------------------------- int FsDelete (const char *name) { // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxDelete. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" return (fs[1].Delete (name)); } else { return (fs[0].Delete (name)); } } � //---------------------------------------------------------------------- // // FsUnixOpen // FsUnixRead // FsUnixWrite // FsUnixSeek // FsUnixClose // // Unix file I/O routines. These are pretty simple, and just call // the simulator traps directly using the file descriptor stored in // the open file table. // //---------------------------------------------------------------------- int FsUnixOpen (int x, const char *name, int mode) { dbprintf ('f', "Attempting to open file %s into desc %d, mode %d.\n", name, x, mode); if ((openfiles[x].u.Unix.fd = open (name, mode)) < 0) { return (openfiles[x].u.Unix.fd); } return (1); } int FsUnixRead (int x, char *buf, int n) { return (read (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixWrite (int x, char *buf, int n) { return (write (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixSeek (int x, int offset, int where) { return (lseek (openfiles[x].u.Unix.fd, offset, where)); } int FsUnixClose (int x) { int retval; retval = close (openfiles[x].u.Unix.fd); return (retval); } int FsUnixDelete (const char *name) { // Refuse to delete Unix files via the simulator. This is for safety // reasons. return (-1); } � //---------------------------------------------------------------------- // // FsDlxIo // // Perform a read or a write on a DLX file. // //---------------------------------------------------------------------- int FsDlxIo (int fd, char *buf, int n, int which) { // Your code to read or write a DLX file goes here. return (1); } //---------------------------------------------------------------------- // // FsDlxRead // FsDlxWrite // // This is just a stub that calls FsDlxIo to do either a read or a // write in the DLX file system. // //---------------------------------------------------------------------- int FsDlxRead (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 0)); } int FsDlxWrite (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 1)); } � //---------------------------------------------------------------------- // // FsDlxOpen // // Open a file in the DLX file system. Currently, this just means // to set current position to 0. However, it should also check to // make sure that the file exists. // //---------------------------------------------------------------------- int FsDlxOpen (int f, const char *name, int mode) { openfiles[f].u.Dlx.curpos = 0; // You may want to put additional code here (checking to see if the // file exists, etc.) return (1); } //---------------------------------------------------------------------- // // FsDlxSeek // // Seek in a DLX file. This just requires adjusting the current // position as recorded in the open files table. // //---------------------------------------------------------------------- int FsDlxSeek (int f, int offset, int whence) { switch (whence) { case FS_SEEK_SET: break; case FS_SEEK_CUR: break; case FS_SEEK_END: break; }; return (openfiles[f].u.Dlx.curpos); } //---------------------------------------------------------------------- // // FsDlxClose // // Close a DLX file system file. //---------------------------------------------------------------------- int FsDlxClose (int f) { // You may want to add code to this routine. return (1); } � //---------------------------------------------------------------------- // // FsDlxDelete // // Delete a file in the DLX file system. // //---------------------------------------------------------------------- int FsDlxDelete (const char *file) { // Your code goes here. return (1); } � //---------------------------------------------------------------------- // // FsModuleInit // // Initialize the file system module. This consists simply of marking // all the file slots as available. // //---------------------------------------------------------------------- void FsModuleInit () { int i; for (i = 0; i < FS_MAX_OPEN_FILES; i++) { openfiles[i].flags = 0; } fs[0].Open = FsUnixOpen; fs[0].Close = FsUnixClose; fs[0].Read = FsUnixRead; fs[0].Write = FsUnixWrite; fs[0].Seek = FsUnixSeek; fs[0].Delete = FsUnixDelete; fs[1].Open = FsDlxOpen; fs[1].Close = FsDlxClose; fs[1].Read = FsDlxRead; fs[1].Write = FsDlxWrite; fs[1].Seek = FsDlxSeek; fs[1].Delete = FsDlxDelete; }

home/bshapir/cs314/project4/option1/lab4_2/src/osend.o

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

home/bshapir/cs314/project4/option1/lab4_2/src/sysproc.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Process #\000" .align 2 LC1: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething _doSomething: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#120 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52 nop ; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop ; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw 4(r29),r8 jal _dstrcpy nop ; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop ; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop ; not filled. addi r29,r29,#-8 lhi r8,((_doSomething)>>16)&0xffff addui r8,r8,(_doSomething)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop ; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56 nop ; not filled. L52: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59 nop ; not filled. addi r5,r0,#1000 add r4,r0,r2 L61: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62 nop ; not filled. addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 L62: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61 nop ; not filled. L59: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething .data .align 2 LC2: .ascii "chasetail\000" .align 2 LC3: .ascii "Chasing tail %d.\n\000" .align 2 LC4: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail _chaseTail: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2)>>16)&0xffff addui r3,r3,(LC2)&0xffff addi r29,r29,#-8 lhi r5,((LC3)>>16)&0xffff addui r5,r5,(LC3)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop ; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop ; not filled. addi r29,r29,#-8 lhi r5,((LC4)>>16)&0xffff addui r5,r5,(LC4)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail)>>16)&0xffff addui r5,r5,(_chaseTail)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop ; not filled. addi r29,r29,#16 L67: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail .data .align 2 LC6: .ascii "%d \000" .align 2 LC7: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems)>>16)&0xffff addui r2,r2,(_mysems)&0xffff addi r3,r2,#180 L90: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop ; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems: .space 200

home/bshapir/cs314/project4/option1/lab4_2/src/os.dlx

; Linked by DLX-LD. ; MemSize 90112 ; Data size: 32376 ; Text size: 41180 ; Stack size: 8192 .text 0x1000 .data 0xc000 ;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem_LF0 lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg_LF0; skip over the system part.... intrSystem_LF0: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg_LF0: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6; push CAUSE sw 4(r29),r4; push IAR sw 8(r29),r5; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1),r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1),r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1); 156-340 = -184 lw r1,-296(r1); 44-340 = -296 rfe .endproc _intrreturn ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2; save r2 lw r2,16(r29); Get the new interrupt level andi r2,r2,#0x0f; Mask off interrupt levels movs2i r1,status sw 8(r29),r1; Store the old interrupt values andi r1,r1,#0xfff0; Mask off old interrupt level or r1,r2,r1; OR in new interrupt level movi2s status,r1 lw r1,8(r29); Get back the original interrupt level andi r1,r1,#0x0f; Mask off all but interrupt levels lw r2,12(r29); restore r2 addui r29,r29,#16; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom ; Compiled by GCC .data .align 2 _rcsid_LF2: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF2 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF2: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF2: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1_LF2: .ascii "dlx:\000" .align 2 LC2_LF2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3_LF2: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55_LF2 nop; not filled. L56_LF2: addi r29,r29,#-16 lhi r8,((LC0_LF2)>>16)&0xffff addui r8,r8,(LC0_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L55_LF2: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74_LF2 nop; not filled. addi r3,r0,#0 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r2,r0,r6 L61_LF2: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59_LF2 nop; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61_LF2 nop; not filled. L59_LF2: sgti r1,r3,#31 beqz r1,L64_LF2 nop; not filled. L74_LF2: addi r1,r0,#-1 j L73_LF2 nop; not filled. L64_LF2: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65_LF2 nop; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75_LF2 nop; not filled. L65_LF2: addi r8,r0,#0 L75_LF2: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67_LF2 nop; not filled. L68_LF2: addi r29,r29,#-16 lhi r8,((LC2_LF2)>>16)&0xffff addui r8,r8,(LC2_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L67_LF2: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs_LF2)>>16)&0xffff addui r8,r8,(_fs_LF2)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69_LF2 nop; not filled. lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73_LF2 nop; not filled. L69_LF2: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF2 nop; not filled. L72_LF2: addi r29,r29,#-24 lhi r8,((LC3_LF2)>>16)&0xffff addui r8,r8,(LC3_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L71_LF2: add r1,r0,r3 L73_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84_LF2 nop; not filled. addi r2,r0,#1 L84_LF2: snei r1,r2,#0 beqz r1,L82_LF2 nop; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs_LF2)>>16)&0xffff addui r4,r4,(_fs_LF2)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop; not filled. addi r29,r29,#8 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86_LF2 nop; not filled. L82_LF2: addi r1,r0,#-1 L86_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94_LF2 nop; not filled. addi r2,r0,#1 L94_LF2: snei r1,r2,#0 beqz r1,L92_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L91_LF2 nop; not filled. L92_LF2: addi r1,r0,#-1 L91_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103_LF2 nop; not filled. addi r2,r0,#1 L103_LF2: snei r1,r2,#0 beqz r1,L101_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L100_LF2 nop; not filled. L101_LF2: addi r1,r0,#-1 L100_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112_LF2 nop; not filled. addi r2,r0,#1 L112_LF2: snei r1,r2,#0 beqz r1,L110_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L109_LF2 nop; not filled. L110_LF2: addi r1,r0,#-1 L109_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118_LF2 nop; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs_LF2+44)>>16)&0xffff addui r1,r1,(_fs_LF2+44)&0xffff j L120_LF2 nop; not filled. L118_LF2: addi r29,r29,#-8 lhi r1,((_fs_LF2+20)>>16)&0xffff addui r1,r1,(_fs_LF2+20)&0xffff L120_LF2: sw (r29),r2 lw r1,(r1) jalr r1 nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4_LF2: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126_LF2 nop; not filled. L127_LF2: addi r29,r29,#-16 lhi r6,((LC4_LF2)>>16)&0xffff addui r6,r6,(LC4_LF2)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L126_LF2: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128_LF2 nop; not filled. addi r1,r0,#1 L128_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff addi r2,r31,#8308 L182_LF2: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182_LF2 nop; not filled. lhi r1,((_fs_LF2)>>16)&0xffff addui r1,r1,(_fs_LF2)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs_LF2: .space 48 .align 2 _openfiles_LF2: .space 8576 ; Compiled by GCC .align 2 _rcsid_LF3: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF3 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF3 nop; not filled. L6_LF3: addi r31,r0,#1 L5_LF3: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF3 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF3 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF3 nop; not filled. L12_LF3: addi r2,r0,#1 L11_LF3: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF3 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF3: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone_LF3: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0_LF3: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61_LF3 nop; not filled. addi r2,r3,#31 L61_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF3 nop; not filled. L65_LF3: addi r29,r29,#-16 lhi r6,((LC0_LF3)>>16)&0xffff addui r6,r6,(LC0_LF3)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L64_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1_LF3: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2_LF3: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3_LF3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68_LF3 nop; not filled. addui r2,r2,#65535 L68_LF3: srai r8,r2,#0x10 lhi r3,((_pagestart_LF3)>>16)&0xffff addui r3,r3,(_pagestart_LF3)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69_LF3 nop; not filled. addui r2,r2,#65535 L69_LF3: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax_LF3)>>16)&0xffff addui r3,r3,(_freemapmax_LF3)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70_LF3 nop; not filled. addi r2,r8,#62 L70_LF3: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF3 nop; not filled. L72_LF3: addi r29,r29,#-16 lhi r11,((LC1_LF3)>>16)&0xffff addui r11,r11,(LC1_LF3)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop; not filled. addi r29,r29,#16 L71_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73_LF3 nop; not filled. L74_LF3: addi r29,r29,#-8 lhi r11,((LC2_LF3)>>16)&0xffff addui r11,r11,(LC2_LF3)&0xffff sw (r29),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L73_LF3: addi r2,r0,#0 lhi r4,((_freemapmax_LF3)>>16)&0xffff addui r4,r4,(_freemapmax_LF3)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76_LF3 nop; not filled. lhi r3,((_freepages_LF3)>>16)&0xffff addui r3,r3,(_freepages_LF3)&0xffff L78_LF3: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78_LF3 nop; not filled. L76_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81_LF3 nop; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone_LF3)>>16)&0xffff addui r9,r9,(_negativeone_LF3)&0xffff L83_LF3: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85_LF3 nop; not filled. addi r2,r4,#31 L85_LF3: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages_LF3)>>16)&0xffff addui r11,r11,(_freepages_LF3)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89_LF3 nop; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82_LF3 nop; not filled. L89_LF3: addi r29,r29,#-16 lhi r11,((LC0_LF3)>>16)&0xffff addui r11,r11,(LC0_LF3)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L82_LF3: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83_LF3 nop; not filled. L81_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF3 nop; not filled. L92_LF3: addi r29,r29,#-8 lhi r11,((LC3_LF3)>>16)&0xffff addui r11,r11,(LC3_LF3)&0xffff sw (r29),r11 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L91_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42_LF3: .word 0 .align 2 LC4_LF3: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5_LF3: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6_LF3: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((LC4_LF3)>>16)&0xffff addui r7,r7,(LC4_LF3)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110_LF3 nop; not filled. L111_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF3 nop; not filled. L113_LF3: addi r29,r29,#-8 lhi r7,((LC5_LF3)>>16)&0xffff addui r7,r7,(LC5_LF3)&0xffff sw (r29),r7 lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L112_LF3: lhi r2,((_mapnum42_LF3)>>16)&0xffff addui r2,r2,(_mapnum42_LF3)&0xffff lw r1,(r2) lhi r4,((_freepages_LF3)>>16)&0xffff addui r4,r4,(_freepages_LF3)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115_LF3 nop; not filled. lhi r1,((_freemapmax_LF3)>>16)&0xffff addui r1,r1,(_freemapmax_LF3)&0xffff lw r3,(r1) L116_LF3: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114_LF3 nop; not filled. addi r7,r0,#0 sw (r2),r7 L114_LF3: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116_LF3 nop; not filled. L115_LF3: lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120_LF3 nop; not filled. addi r2,r0,#1 L121_LF3: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121_LF3 nop; not filled. L120_LF3: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42_LF3)>>16)&0xffff addui r5,r5,(_mapnum42_LF3)&0xffff lw r3,(r5) lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125_LF3 nop; not filled. L126_LF3: addi r29,r29,#-16 lhi r7,((LC6_LF3)>>16)&0xffff addui r7,r7,(LC6_LF3)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L125_LF3: lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7_LF3: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129_LF3 nop; not filled. addi r2,r6,#31 L129_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128_LF3 nop; not filled. L133_LF3: addi r29,r29,#-16 lhi r7,((LC0_LF3)>>16)&0xffff addui r7,r7,(LC0_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L128_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134_LF3 nop; not filled. L135_LF3: addi r29,r29,#-16 lhi r7,((LC7_LF3)>>16)&0xffff addui r7,r7,(LC7_LF3)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L134_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139_LF3 nop; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140_LF3 nop; not filled. L139_LF3: addi r1,r0,#0 L140_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L168_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170_LF3 nop; not filled. addi r31,r0,#0 j L169_LF3 nop; not filled. L170_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169_LF3: snei r1,r31,#0 beqz r1,L167_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172_LF3 nop; not filled. add r2,r0,r3 L172_LF3: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168_LF3 nop; not filled. L167_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L192_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194_LF3 nop; not filled. addi r31,r0,#0 j L193_LF3 nop; not filled. L194_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193_LF3: snei r1,r31,#0 beqz r1,L191_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197_LF3 nop; not filled. add r2,r0,r3 L197_LF3: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192_LF3 nop; not filled. L191_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61_LF3: .word 13316 .align 2 LC8_LF3: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214_LF3 nop; not filled. lhi r1,((_invalidOps61_LF3)>>16)&0xffff addui r1,r1,(_invalidOps61_LF3)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213_LF3 nop; not filled. L214_LF3: addi r1,r0,#-1 j L218_LF3 nop; not filled. L213_LF3: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215_LF3 nop; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215_LF3: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216_LF3 nop; not filled. L217_LF3: addi r29,r29,#-24 lhi r7,((LC8_LF3)>>16)&0xffff addui r7,r7,(LC8_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L216_LF3: add r1,r0,r4 L218_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart_LF3: .space 4 .align 2 _freemapmax_LF3: .space 4 .align 2 _nfreepages_LF3: .space 4 .align 2 _freepages_LF3: .space 8192 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF4 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF4 nop; not filled. L6_LF4: addi r31,r0,#1 L5_LF4: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF4 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF4 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF4 nop; not filled. L12_LF4: addi r2,r0,#1 L11_LF4: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF4: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF4 nop; not filled. L34_LF4: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF4 nop; not filled. L37_LF4: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF4 nop; not filled. L32_LF4: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF4 nop; not filled. L51_LF4: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF4 nop; not filled. L50_LF4: add r2,r0,r31 lw r31,4(r30) L54_LF4: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF4 nop; not filled. L75_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF4 nop; not filled. L73_LF4: seq r1,r2,r5 beqz r1,L80_LF4 nop; not filled. L86_LF4: addi r1,r0,#0 j L84_LF4 nop; not filled. L80_LF4: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF4 nop; not filled. sne r2,r31,r3 L82_LF4: add r1,r0,r2 L84_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF4 nop; not filled. L95_LF4: addi r2,r2,#1 L97_LF4: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF4 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF4 nop; not filled. L126_LF4: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF4 nop; not filled. L125_LF4: add r6,r0,r3 j L149_LF4 nop; not filled. L130_LF4: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF4 nop; not filled. L136_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF4 nop; not filled. L134_LF4: seq r1,r2,r6 beqz r1,L141_LF4 nop; not filled. L150_LF4: addi r1,r0,#0 j L132_LF4 nop; not filled. L141_LF4: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF4 nop; not filled. sne r31,r3,r2 L143_LF4: add r1,r0,r31 L132_LF4: snei r1,r1,#0 bnez r1,L131_LF4 nop; not filled. add r1,r0,r5 j L146_LF4 nop; not filled. L131_LF4: addi r5,r5,#1 L149_LF4: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF4 nop; not filled. addi r1,r0,#0 L146_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF4 nop; not filled. add r5,r0,r1 L165_LF4: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF4 nop; not filled. lbu r3,(r4) L169_LF4: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF4 nop; not filled. add r1,r0,r4 j L173_LF4 nop; not filled. L168_LF4: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF4 nop; not filled. L163_LF4: bnez r5,L165_LF4 nop; not filled. L164_LF4: addi r1,r0,#0 L173_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF4 nop; not filled. L183_LF4: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF4 nop; not filled. add r1,r0,r2 j L186_LF4 nop; not filled. L184_LF4: addi r2,r2,#1 L187_LF4: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF4 nop; not filled. addi r1,r0,#0 L186_LF4: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF4 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF4 nop; not filled. L203_LF4: snei r1,r3,#0 bnez r1,L205_LF4 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF4: sb (r4),r6 addi r4,r4,#1 j L204_LF4 nop; not filled. L205_LF4: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF4 nop; not filled. L209_LF4: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF4 nop; not filled. L208_LF4: addi r5,r0,#10 L212_LF4: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF4 nop; not filled. L204_LF4: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF4 nop; not filled. L220_LF4: addi r2,r2,#1 L247_LF4: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF4 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF4 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF4 nop; not filled. sw (r5),r2 L222_LF4: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF4 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF4 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF4 nop; not filled. L224_LF4: addi r6,r0,#1 L225_LF4: snei r1,r4,#0 bnez r1,L226_LF4 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF4 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF4 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF4 nop; not filled. L229_LF4: addi r4,r0,#16 addi r2,r2,#1 j L226_LF4 nop; not filled. L228_LF4: addi r4,r0,#8 j L226_LF4 nop; not filled. L227_LF4: addi r4,r0,#10 L226_LF4: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF4 nop; not filled. L248_LF4: add r1,r0,r3 j L245_LF4 nop; not filled. L233_LF4: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF4 nop; not filled. L236_LF4: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF4 nop; not filled. L238_LF4: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF4 nop; not filled. L240_LF4: addi r1,r0,#1000 L237_LF4: slt r31,r1,r4 beqz r31,L246_LF4 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF4 nop; not filled. L246_LF4: snei r1,r5,#0 beqz r1,L244_LF4 nop; not filled. sw (r5),r2 L244_LF4: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF4 nop; not filled. L257_LF4: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF4 nop; not filled. L268_LF4: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF5 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF5 nop; not filled. L6_LF5: addi r31,r0,#1 L5_LF5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF5 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF5 nop; not filled. L12_LF5: addi r2,r0,#1 L11_LF5: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF5 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF5: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum_LF5: .word 10000 .align 2 LC0_LF5: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1_LF5: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2_LF5: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF5 nop; not filled. L53_LF5: addi r29,r29,#-8 lhi r8,((LC0_LF5)>>16)&0xffff addui r8,r8,(LC0_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L52_LF5: addi r29,r29,#-8 lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff sw (r29),r2 jal _QueueInit nop; not filled. lhi r8,((_runQueue_LF5)>>16)&0xffff addui r8,r8,(_runQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_waitQueue_LF5)>>16)&0xffff addui r8,r8,(_waitQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_zombieQueue_LF5)>>16)&0xffff addui r8,r8,(_zombieQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs_LF5)>>16)&0xffff addui r1,r1,(_pcbs_LF5)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57_LF5: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58_LF5 nop; not filled. L59_LF5: addi r29,r29,#-16 lhi r8,((LC1_LF5)>>16)&0xffff addui r8,r8,(LC1_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L58_LF5: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57_LF5 nop; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF5 nop; not filled. L65_LF5: addi r29,r29,#-8 lhi r8,((LC2_LF5)>>16)&0xffff addui r8,r8,(LC2_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L64_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83_LF5 nop; not filled. add r3,r0,r4 L85_LF5: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85_LF5 nop; not filled. L83_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3_LF5: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4_LF5: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5_LF5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6_LF5: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7_LF5: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF5 nop; not filled. L92_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3_LF5)>>16)&0xffff addui r8,r8,(LC3_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L91_LF5: lhi r5,((_runQueue_LF5)>>16)&0xffff addui r5,r5,(_runQueue_LF5)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94_LF5 nop; not filled. addi r29,r29,#-8 lhi r8,((LC4_LF5)>>16)&0xffff addui r8,r8,(LC4_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L94_LF5: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98_LF5 nop; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100_LF5 nop; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100_LF5: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105_LF5 nop; not filled. L106_LF5: addi r29,r29,#-16 lhi r8,((LC5_LF5)>>16)&0xffff addui r8,r8,(LC5_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L105_LF5: lhi r7,((_zombieQueue_LF5)>>16)&0xffff addui r7,r7,(_zombieQueue_LF5)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs_LF5)>>16)&0xffff addui r5,r5,(_freepcbs_LF5)&0xffff L107_LF5: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108_LF5 nop; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113_LF5 nop; not filled. L114_LF5: addi r29,r29,#-8 lhi r8,((LC6_LF5)>>16)&0xffff addui r8,r8,(LC6_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop; not filled. addi r29,r29,#8 L113_LF5: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116_LF5 nop; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116_LF5: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122_LF5 nop; not filled. add r2,r0,r4 L124_LF5: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124_LF5 nop; not filled. L122_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107_LF5 nop; not filled. L108_LF5: addi r29,r29,#-8 lhi r1,((_processQuantum_LF5)>>16)&0xffff addui r1,r1,(_processQuantum_LF5)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127_LF5 nop; not filled. L128_LF5: addi r29,r29,#-8 lhi r8,((LC7_LF5)>>16)&0xffff addui r8,r8,(LC7_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L127_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8_LF5: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9_LF5: .ascii "%s: %s\n\000" .align 2 LC10_LF5: .ascii "ProcessSuspend\000" .align 2 LC11_LF5: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF5 nop; not filled. L131_LF5: addi r29,r29,#-16 lhi r4,((LC8_LF5)>>16)&0xffff addui r4,r4,(LC8_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L130_LF5: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC10_LF5)>>16)&0xffff addui r1,r1,(LC10_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC11_LF5)>>16)&0xffff addui r4,r4,(LC11_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L133_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue_LF5)>>16)&0xffff addui r2,r2,(_waitQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12_LF5: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13_LF5: .ascii "ProcessWakeup\000" .align 2 LC14_LF5: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141_LF5 nop; not filled. L142_LF5: addi r29,r29,#-8 lhi r4,((LC12_LF5)>>16)&0xffff addui r4,r4,(LC12_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L141_LF5: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC13_LF5)>>16)&0xffff addui r1,r1,(LC13_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC14_LF5)>>16)&0xffff addui r4,r4,(LC14_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L144_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue_LF5)>>16)&0xffff addui r2,r2,(_runQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15_LF5: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16_LF5: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152_LF5 nop; not filled. L153_LF5: addi r29,r29,#-8 lhi r4,((LC15_LF5)>>16)&0xffff addui r4,r4,(LC15_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L152_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue_LF5)>>16)&0xffff addui r2,r2,(_zombieQueue_LF5)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159_LF5 nop; not filled. L160_LF5: addi r29,r29,#-8 lhi r4,((LC16_LF5)>>16)&0xffff addui r4,r4,(LC16_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L159_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52_LF5: .space 4 .align 2 _location53_LF5: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r2 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r5,r0,#0 sw (r1),r5 L173_LF5: lhi r31,((_location53_LF5)>>16)&0xffff addui r31,r31,(_location53_LF5)&0xffff lw r3,(r31) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175_LF5 nop; not filled. sgti r1,r3,#98 beqz r1,L174_LF5 nop; not filled. L175_LF5: addi r1,r0,#0 j L182_LF5 nop; not filled. L183_LF5: addi r1,r31,#1 sw (r2),r1 j L177_LF5 nop; not filled. L174_LF5: slei r1,r3,#99 beqz r1,L177_LF5 nop; not filled. add r4,r0,r2 add r2,r0,r31 L179_LF5: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183_LF5 nop; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179_LF5 nop; not filled. L177_LF5: add r1,r0,r3 L182_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17_LF5: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18_LF5: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19_LF5: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20_LF5: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21_LF5: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22_LF5: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23_LF5: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24_LF5: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25_LF5: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26_LF5: .ascii "About to load %s\n\000" .align 2 LC27_LF5: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28_LF5: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29_LF5: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30_LF5: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31_LF5: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32_LF5: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#728; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF5 nop; not filled. L187_LF5: addi r29,r29,#-8 lhi r13,((LC17_LF5)>>16)&0xffff addui r13,r13,(LC17_LF5)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L186_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188_LF5 nop; not filled. L189_LF5: addi r29,r29,#-24 lhi r13,((LC18_LF5)>>16)&0xffff addui r13,r13,(LC18_LF5)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop; not filled. addi r29,r29,#24 L188_LF5: lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC19_LF5)>>16)&0xffff addui r13,r13,(LC19_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L190_LF5: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194_LF5 nop; not filled. L195_LF5: addi r29,r29,#-8 lhi r13,((LC20_LF5)>>16)&0xffff addui r13,r13,(LC20_LF5)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L194_LF5: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197_LF5 nop; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197_LF5: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199_LF5 nop; not filled. L200_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC21_LF5)>>16)&0xffff addui r13,r13,(LC21_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L199_LF5: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202_LF5 nop; not filled. L203_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC22_LF5)>>16)&0xffff addui r13,r13,(LC22_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L202_LF5: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC23_LF5)>>16)&0xffff addui r13,r13,(LC23_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L204_LF5: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC24_LF5)>>16)&0xffff addui r13,r13,(LC24_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L205_LF5: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206_LF5 nop; not filled. L207_LF5: addi r29,r29,#-24 lhi r13,((LC25_LF5)>>16)&0xffff addui r13,r13,(LC25_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 L206_LF5: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209_LF5 nop; not filled. L210_LF5: addi r29,r29,#-8 lhi r13,((LC26_LF5)>>16)&0xffff addui r13,r13,(LC26_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L209_LF5: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211_LF5 nop; not filled. lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217_LF5 nop; not filled. add r3,r0,r6 L219_LF5: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219_LF5 nop; not filled. L217_LF5: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268_LF5 nop; not filled. L211_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222_LF5 nop; not filled. L223_LF5: addi r29,r29,#-16 lhi r13,((LC27_LF5)>>16)&0xffff addui r13,r13,(LC27_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L222_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224_LF5 nop; not filled. L225_LF5: addi r29,r29,#-16 lhi r13,((LC28_LF5)>>16)&0xffff addui r13,r13,(LC28_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L224_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226_LF5 nop; not filled. L227_LF5: addi r29,r29,#-16 lhi r13,((LC29_LF5)>>16)&0xffff addui r13,r13,(LC29_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L226_LF5: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228_LF5: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231_LF5 nop; not filled. L232_LF5: addi r29,r29,#-16 lhi r13,((LC30_LF5)>>16)&0xffff addui r13,r13,(LC30_LF5)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L231_LF5: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 j L228_LF5 nop; not filled. L229_LF5: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r10 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r13,r0,#0 sw (r1),r13 L234_LF5: lhi r3,((_location53_LF5)>>16)&0xffff addui r3,r3,(_location53_LF5)&0xffff lw r4,(r3) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236_LF5 nop; not filled. sgti r1,r4,#98 beqz r1,L235_LF5 nop; not filled. L236_LF5: addi r3,r0,#0 j L233_LF5 nop; not filled. L269_LF5: addi r1,r2,#1 sw (r3),r1 j L238_LF5 nop; not filled. L235_LF5: slei r1,r4,#99 beqz r1,L238_LF5 nop; not filled. add r5,r0,r2 L240_LF5: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269_LF5 nop; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240_LF5 nop; not filled. L238_LF5: add r3,r0,r4 L233_LF5: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53_LF5)>>16)&0xffff addui r4,r4,(_location53_LF5)&0xffff lhi r11,((_str52_LF5)>>16)&0xffff addui r11,r11,(_str52_LF5)&0xffff add r10,r0,r2 addi r5,r30,#4 L243_LF5: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249_LF5 nop; not filled. sgti r1,r31,#98 beqz r1,L248_LF5 nop; not filled. L249_LF5: addi r3,r0,#0 j L246_LF5 nop; not filled. L270_LF5: addi r1,r3,#1 sw (r4),r1 j L251_LF5 nop; not filled. L248_LF5: slei r1,r31,#99 beqz r1,L251_LF5 nop; not filled. add r2,r0,r3 L253_LF5: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270_LF5 nop; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253_LF5 nop; not filled. L251_LF5: add r3,r0,r31 L246_LF5: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244_LF5 nop; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243_LF5 nop; not filled. L244_LF5: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257_LF5 nop; not filled. L208_LF5: lhi r13,((_ProcessExit_LF5)>>16)&0xffff addui r13,r13,(_ProcessExit_LF5)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257_LF5: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r3,((_runQueue_LF5)>>16)&0xffff addui r3,r3,(_runQueue_LF5)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264_LF5 nop; not filled. L265_LF5: addi r29,r29,#-16 lhi r13,((LC31_LF5)>>16)&0xffff addui r13,r13,(LC31_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L264_LF5: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266_LF5 nop; not filled. L267_LF5: addi r29,r29,#-8 lhi r13,((LC32_LF5)>>16)&0xffff addui r13,r13,(LC32_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L266_LF5: lhi r13,((_pcbs_LF5)>>16)&0xffff addui r13,r13,(_pcbs_LF5)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33_LF5: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34_LF5: .ascii "File descriptor is now %d.\n\000" .align 2 LC35_LF5: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36_LF5: .ascii "start:\000" .align 2 LC37_LF5: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#168; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L281_LF5: addi r29,r29,#-16 lhi r12,((LC33_LF5)>>16)&0xffff addui r12,r12,(LC33_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 j L288_LF5 nop; not filled. L279_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282_LF5 nop; not filled. L283_LF5: addi r29,r29,#-8 lhi r12,((LC34_LF5)>>16)&0xffff addui r12,r12,(LC34_LF5)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L282_LF5: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285_LF5 nop; not filled. L286_LF5: addi r29,r29,#-16 lhi r12,((LC35_LF5)>>16)&0xffff addui r12,r12,(LC35_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L285_LF5: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278_LF5 nop; not filled. L284_LF5: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36_LF5)>>16)&0xffff addui r1,r1,(LC36_LF5)&0xffff sw 4(r29),r1 jal _dstrstr nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L289_LF5: addi r29,r29,#-8 lhi r12,((LC37_LF5)>>16)&0xffff addui r12,r12,(LC37_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L288_LF5: addi r1,r0,#-1 j L278_LF5 nop; not filled. L287_LF5: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. add r1,r0,r3 addi r29,r29,#16 L278_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38_LF5: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39_LF5: .ascii " terminated at %d.\n\000" .align 2 LC40_LF5: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41_LF5: .ascii "New address is 0x%x.\n\000" .align 2 LC42_LF5: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#272; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292_LF5 nop; not filled. addi r2,r0,#200 L292_LF5: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293_LF5 nop; not filled. addi r1,r0,#0 j L347_LF5 nop; not filled. L293_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294_LF5 nop; not filled. L295_LF5: addi r29,r29,#-16 lhi r12,((LC38_LF5)>>16)&0xffff addui r12,r12,(LC38_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop; not filled. addi r29,r29,#16 L294_LF5: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350_LF5 nop; not filled. L296_LF5: addi r2,r2,#-1 addi r5,r5,#-1 L350_LF5: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296_LF5 nop; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300_LF5 nop; not filled. L301_LF5: addi r29,r29,#-8 lhi r12,((LC39_LF5)>>16)&0xffff addui r12,r12,(LC39_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop; not filled. addi r29,r29,#8 L300_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302_LF5 nop; not filled. L303_LF5: addi r29,r29,#-8 lhi r12,((LC40_LF5)>>16)&0xffff addui r12,r12,(LC40_LF5)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L302_LF5: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304_LF5: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349_LF5 nop; not filled. sgti r1,r5,#0 bnez r1,L305_LF5 nop; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308_LF5 nop; not filled. L311_LF5: addi r29,r29,#-8 lhi r12,((LC41_LF5)>>16)&0xffff addui r12,r12,(LC41_LF5)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L308_LF5: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305_LF5 nop; not filled. L349_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315_LF5: lw r1,-220(r30) j L351_LF5 nop; not filled. L318_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351_LF5: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318_LF5 nop; not filled. seqi r1,r31,#9 bnez r1,L318_LF5 nop; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320_LF5 nop; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304_LF5 nop; not filled. L320_LF5: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326_LF5 nop; not filled. snei r1,r3,#65 bnez r1,L325_LF5 nop; not filled. L326_LF5: addi r2,r0,#1 L325_LF5: snei r1,r2,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329_LF5 nop; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329_LF5 nop; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328_LF5 nop; not filled. L329_LF5: addi r3,r0,#1 L328_LF5: snei r1,r3,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331_LF5 nop; not filled. add r4,r0,r31 j L330_LF5 nop; not filled. L331_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333_LF5 nop; not filled. addi r4,r2,#-87 j L330_LF5 nop; not filled. L333_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330_LF5 nop; not filled. addi r4,r3,#-55 L330_LF5: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338_LF5 nop; not filled. add r2,r0,r31 j L337_LF5 nop; not filled. L338_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340_LF5 nop; not filled. addi r2,r2,#-87 j L337_LF5 nop; not filled. L340_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337_LF5 nop; not filled. addi r2,r3,#-55 L337_LF5: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315_LF5 nop; not filled. L305_LF5: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345_LF5 nop; not filled. L346_LF5: addi r29,r29,#-16 lhi r12,((LC42_LF5)>>16)&0xffff addui r12,r12,(LC42_LF5)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L345_LF5: add r1,r0,r5 L347_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64_LF5: .space 120 .align 2 LC43_LF5: .ascii "Hi Uday, How are you?\n\000" .align 2 LC44_LF5: .ascii "Got %d arguments.\n\000" .align 2 LC45_LF5: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC46_LF5: .ascii "Argument count is %d.\n\000" .align 2 LC47_LF5: .ascii "Argument %d is %s.\n\000" .align 2 LC48_LF5: .ascii "Converted %s to %d=%s\n\000" _buf65_LF5: .space 200 .align 2 LC49_LF5: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC50_LF5: .ascii "Option %s not recognized.\n\000" .align 2 LC51_LF5: .ascii "About to initialize queues.\n\000" .align 2 LC52_LF5: .ascii "After initializing queues.\n\000" .align 2 LC53_LF5: .ascii "After initializing memory.\n\000" .align 2 LC54_LF5: .ascii "After initializing processes.\n\000" .align 2 LC55_LF5: .ascii "After initializing synchronization tools.\n\000" .align 2 LC56_LF5: .ascii "After initializing keyboard.\n\000" .align 2 LC57_LF5: .ascii "vm\000" .align 2 LC58_LF5: .ascii "VM Descriptor is %d\n\000" .align 2 LC59_LF5: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC60_LF5: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#200; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb (r1),r21 addi r29,r29,#-8 lhi r21,((LC43_LF5)>>16)&0xffff addui r21,r21,(LC43_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. jal _MyFuncRetZero nop; not filled. lhi r21,((LC44_LF5)>>16)&0xffff addui r21,r21,(LC44_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. jal _MemoryGetSize nop; not filled. addi r29,r29,#-8 lhi r21,((LC45_LF5)>>16)&0xffff addui r21,r21,(LC45_LF5)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop; not filled. lhi r21,((LC46_LF5)>>16)&0xffff addui r21,r21,(LC46_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354_LF5 nop; not filled. add r2,r0,r20 L356_LF5: addi r29,r29,#-16 lhi r21,((LC47_LF5)>>16)&0xffff addui r21,r21,(LC47_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356_LF5 nop; not filled. L354_LF5: jal _FsModuleInit nop; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359_LF5 nop; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65_LF5)>>16)&0xffff addui r15,r15,(_buf65_LF5)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361_LF5: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360_LF5 nop; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366_LF5 nop; not filled. sgti r1,r2,#102 bnez r1,L378_LF5 nop; not filled. seqi r1,r2,#68 beqz r1,L376_LF5 nop; not filled. j L364_LF5 nop; not filled. L378_LF5: seqi r1,r2,#105 bnez r1,L365_LF5 nop; not filled. seqi r1,r2,#117 beqz r1,L376_LF5 nop; not filled. j L375_LF5 nop; not filled. L364_LF5: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop; not filled. j L411_LF5 nop; not filled. L365_LF5: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop; not filled. lhi r21,((LC48_LF5)>>16)&0xffff addui r21,r21,(LC48_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 j L363_LF5 nop; not filled. L366_LF5: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r10,r0,r1 lhi r21,((LC27_LF5)>>16)&0xffff addui r21,r21,(LC27_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop; not filled. lhi r21,((LC28_LF5)>>16)&0xffff addui r21,r21,(LC28_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop; not filled. lhi r21,((LC29_LF5)>>16)&0xffff addui r21,r21,(LC29_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop; not filled. addi r29,r29,#24 lhi r11,((_buf65_LF5+3)>>16)&0xffff addui r11,r11,(_buf65_LF5+3)&0xffff L367_LF5: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65_LF5)>>16)&0xffff addui r21,r21,(_buf65_LF5)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368_LF5 nop; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367_LF5 nop; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373_LF5: addi r29,r29,#-24 lhi r21,((LC49_LF5)>>16)&0xffff addui r21,r21,(LC49_LF5)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373_LF5 nop; not filled. j L367_LF5 nop; not filled. L368_LF5: addi r29,r29,#-8 sw (r29),r10 jal _close nop; not filled. j L411_LF5 nop; not filled. L375_LF5: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363_LF5 nop; not filled. L376_LF5: addi r29,r29,#-8 lhi r21,((LC50_LF5)>>16)&0xffff addui r21,r21,(LC50_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop; not filled. L411_LF5: addi r29,r29,#8 L363_LF5: snei r1,r16,#0 bnez r1,L359_LF5 nop; not filled. L360_LF5: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361_LF5 nop; not filled. L359_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381_LF5 nop; not filled. L382_LF5: addi r29,r29,#-8 lhi r21,((LC51_LF5)>>16)&0xffff addui r21,r21,(LC51_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L381_LF5: jal _QueueModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383_LF5 nop; not filled. L384_LF5: addi r29,r29,#-8 lhi r21,((LC52_LF5)>>16)&0xffff addui r21,r21,(LC52_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L383_LF5: jal _MemoryModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385_LF5 nop; not filled. L386_LF5: addi r29,r29,#-8 lhi r21,((LC53_LF5)>>16)&0xffff addui r21,r21,(LC53_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L385_LF5: jal _ProcessModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387_LF5 nop; not filled. L388_LF5: addi r29,r29,#-8 lhi r21,((LC54_LF5)>>16)&0xffff addui r21,r21,(LC54_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L387_LF5: jal _SynchModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389_LF5 nop; not filled. L390_LF5: addi r29,r29,#-8 lhi r21,((LC55_LF5)>>16)&0xffff addui r21,r21,(LC55_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L389_LF5: jal _KbdModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391_LF5 nop; not filled. L392_LF5: addi r29,r29,#-8 lhi r21,((LC56_LF5)>>16)&0xffff addui r21,r21,(LC56_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L391_LF5: addi r2,r30,#-128 addi r3,r30,#-29 L396_LF5: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396_LF5 nop; not filled. addi r29,r29,#-8 lhi r21,((LC57_LF5)>>16)&0xffff addui r21,r21,(LC57_LF5)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398_LF5 nop; not filled. L399_LF5: addi r29,r29,#-8 lhi r21,((LC58_LF5)>>16)&0xffff addui r21,r21,(LC58_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L398_LF5: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop; not filled. sw (r29),r9 jal _FsClose nop; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400_LF5 nop; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402_LF5 nop; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406_LF5: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402_LF5 nop; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406_LF5 nop; not filled. L402_LF5: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop; not filled. addi r29,r29,#48 L400_LF5: jal _SysprocCreateProcesses nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407_LF5 nop; not filled. L408_LF5: addi r29,r29,#-8 lhi r21,((LC59_LF5)>>16)&0xffff addui r21,r21,(LC59_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L407_LF5: addi r29,r29,#-8 lhi r3,((_processQuantum_LF5)>>16)&0xffff addui r3,r3,(_processQuantum_LF5)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409_LF5 nop; not filled. L410_LF5: addi r29,r29,#-8 lhi r21,((LC60_LF5)>>16)&0xffff addui r21,r21,(LC60_LF5)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L409_LF5: jal _intrreturn nop; not filled. jal _exitsim nop; not filled. jal _exit nop .endproc _main .data .align 2 LC62_LF5: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,((LC62_LF5)>>16)&0xffff addui r1,r1,(LC62_LF5)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1032; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420_LF5 nop; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422_LF5: addi r2,r0,#0 add r3,r4,r5 L423_LF5: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423_LF5 nop; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422_LF5 nop; not filled. L420_LF5: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _ProcessSchedule nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs_LF5: .space 12 .align 2 _runQueue_LF5: .space 12 .align 2 _waitQueue_LF5: .space 12 .align 2 _zombieQueue_LF5: .space 12 .align 2 _pcbs_LF5: .space 3840 .text .align 2 .proc _ProcessExit_LF5 _ProcessExit_LF5: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _exit nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit_LF5 ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF6 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF6 nop; not filled. L6_LF6: addi r31,r0,#1 L5_LF6: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF6 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF6 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF6 nop; not filled. L12_LF6: addi r2,r0,#1 L11_LF6: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF6 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF6: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF6: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool_LF6)>>16)&0xffff addui r2,r2,(_linkpool_LF6)&0xffff L63_LF6: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF6 nop; not filled. L65_LF6: addi r29,r29,#-8 lhi r5,((LC0_LF6)>>16)&0xffff addui r5,r5,(LC0_LF6)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L64_LF6: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63_LF6 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1_LF6: .ascii "%s: %s\n\000" .align 2 LC2_LF6: .ascii "QueueFreeLink\000" .align 2 LC3_LF6: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC2_LF6)>>16)&0xffff addui r1,r1,(LC2_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC3_LF6)>>16)&0xffff addui r4,r4,(LC3_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L77_LF6: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4_LF6: .ascii "QueueAllocLink\000" .align 2 LC5_LF6: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92_LF6 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97_LF6 nop; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97_LF6: addi r4,r0,#0 sw (r3),r4 j L98_LF6 nop; not filled. L92_LF6: addi r3,r0,#0 L98_LF6: snei r1,r3,#0 bnez r1,L100_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC4_LF6)>>16)&0xffff addui r1,r1,(LC4_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC5_LF6)>>16)&0xffff addui r4,r4,(LC5_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L100_LF6: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool_LF6: .space 6400 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF7 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF7 nop; not filled. L6_LF7: addi r31,r0,#1 L5_LF7: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF7 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF7 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF7 nop; not filled. L12_LF7: addi r2,r0,#1 L11_LF7: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF7 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF7: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF7: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1_LF7: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF7 nop; not filled. L53_LF7: addi r29,r29,#-8 lhi r3,((LC0_LF7)>>16)&0xffff addui r3,r3,(LC0_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L52_LF7: lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff addi r2,r31,#620 L57_LF7: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57_LF7 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59_LF7 nop; not filled. L60_LF7: addi r29,r29,#-8 lhi r3,((LC1_LF7)>>16)&0xffff addui r3,r3,(LC1_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L59_LF7: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff L79_LF7: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86_LF7 nop; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79_LF7 nop; not filled. L77_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83_LF7 nop; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems_LF7)>>16)&0xffff addui r5,r5,(_sems_LF7)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85_LF7 nop; not filled. L86_LF7: addi r5,r0,#1 sw 16(r31),r5 j L77_LF7 nop; not filled. L83_LF7: addi r1,r0,#-1 L85_LF7: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2_LF7: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3_LF7: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4_LF7: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89_LF7 nop; not filled. L90_LF7: addi r29,r29,#-8 lhi r7,((LC2_LF7)>>16)&0xffff addui r7,r7,(LC2_LF7)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L89_LF7: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF7 nop; not filled. L92_LF7: addi r29,r29,#-16 lhi r7,((LC3_LF7)>>16)&0xffff addui r7,r7,(LC3_LF7)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 L91_LF7: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93_LF7 nop; not filled. jal _QueueAllocLink nop; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95_LF7 nop; not filled. L96_LF7: addi r29,r29,#-8 lhi r7,((LC4_LF7)>>16)&0xffff addui r7,r7,(LC4_LF7)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L95_LF7: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop; not filled. L93_LF7: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105_LF7 nop; not filled. L107_LF7: addi r1,r0,#1 j L105_LF7 nop; not filled. L106_LF7: addi r1,r0,#1 L105_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5_LF7: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6_LF7: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF7 nop; not filled. L113_LF7: addi r29,r29,#-16 lhi r5,((LC5_LF7)>>16)&0xffff addui r5,r5,(LC5_LF7)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L112_LF7: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114_LF7 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117_LF7 nop; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117_LF7: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118_LF7 nop; not filled. L119_LF7: addi r29,r29,#-8 lhi r5,((LC6_LF7)>>16)&0xffff addui r5,r5,(LC6_LF7)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L118_LF7: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop; not filled. sw (r29),r3 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 L114_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125_LF7 nop; not filled. L127_LF7: addi r1,r0,#1 j L125_LF7 nop; not filled. L126_LF7: addi r1,r0,#1 L125_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems_LF7: .space 640 ; Compiled by GCC .align 2 _rcsid_LF8: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF8 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF8 nop; not filled. L6_LF8: addi r31,r0,#1 L5_LF8: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF8 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF8 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF8 nop; not filled. L12_LF8: addi r2,r0,#1 L11_LF8: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF8 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF8: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0_LF8: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler_LF8 _TrapProcessCreateHandler_LF8: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1696; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65_LF8: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65_LF8 nop; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68_LF8: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73_LF8 nop; not filled. j L68_LF8 nop; not filled. L67_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop; not filled. addi r29,r29,#16 L73_LF8: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74_LF8 nop; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85_LF8: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86_LF8 nop; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80_LF8: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80_LF8 nop; not filled. L77_LF8: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86_LF8 nop; not filled. j L85_LF8 nop; not filled. L74_LF8: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93_LF8: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92_LF8 nop; not filled. addi r29,r29,#-8 lhi r12,((LC0_LF8)>>16)&0xffff addui r12,r12,(LC0_LF8)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L92_LF8: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93_LF8 nop; not filled. L86_LF8: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler_LF8 .align 2 .proc _TrapPrintfHandler_LF8 _TrapPrintfHandler_LF8: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#208; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96_LF8: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101_LF8 nop; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101_LF8 nop; not filled. j L96_LF8 nop; not filled. L95_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop; not filled. addi r29,r29,#16 L101_LF8: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103_LF8 nop; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105_LF8: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104_LF8 nop; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107_LF8 nop; not filled. addi r3,r3,#1 j L104_LF8 nop; not filled. L107_LF8: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110_LF8: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109_LF8 nop; not filled. seqi r1,r2,#108 bnez r1,L110_LF8 nop; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116_LF8 nop; not filled. seqi r1,r2,#101 beqz r1,L115_LF8 nop; not filled. L116_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109_LF8 nop; not filled. L115_LF8: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110_LF8 nop; not filled. L109_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104_LF8: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105_LF8 nop; not filled. L103_LF8: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler_LF8 .data .align 2 LC1_LF8: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2_LF8: .ascii "Got a context switch trap!\n\000" .align 2 LC3_LF8: .ascii "Got an exit trap!\n\000" .align 2 LC4_LF8: .ascii "Got a fork trap!\n\000" .align 2 LC5_LF8: .ascii "Got a process sleep trap!\n\000" .align 2 LC6_LF8: .ascii "Got a printf trap!\n\000" .align 2 LC7_LF8: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8_LF8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9_LF8: .ascii "Got a timer interrupt!\n\000" .align 2 LC10_LF8: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11_LF8: .ascii "Trap access\n\000" .align 2 LC12_LF8: .ascii "Current PROC %s\n\000" .align 2 LC13_LF8: .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" .align 2 LC14_LF8: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC15_LF8: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC16_LF8: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#88; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122_LF8 nop; not filled. L123_LF8: addi r29,r29,#-24 lhi r7,((LC1_LF8)>>16)&0xffff addui r7,r7,(LC1_LF8)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L122_LF8: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124_LF8 nop; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126_LF8 nop; not filled. sgtui r1,r2,#1024 bnez r1,L179_LF8 nop; not filled. seqi r1,r2,#530 bnez r1,L160_LF8 nop; not filled. sgtui r1,r2,#530 bnez r1,L180_LF8 nop; not filled. seqi r1,r2,#528 bnez r1,L151_LF8 nop; not filled. sgtui r1,r2,#528 bnez r1,L154_LF8 nop; not filled. seqi r1,r2,#513 beqz r1,L177_LF8 nop; not filled. j L140_LF8 nop; not filled. L180_LF8: seqi r1,r2,#532 bnez r1,L148_LF8 nop; not filled. sltui r1,r2,#532 bnez r1,L143_LF8 nop; not filled. seqi r1,r2,#768 beqz r1,L177_LF8 nop; not filled. j L129_LF8 nop; not filled. L179_LF8: seqi r1,r2,#1074 bnez r1,L164_LF8 nop; not filled. sgtui r1,r2,#1074 bnez r1,L181_LF8 nop; not filled. seqi r1,r2,#1072 bnez r1,L134_LF8 nop; not filled. sgtui r1,r2,#1072 bnez r1,L163_LF8 nop; not filled. seqi r1,r2,#1040 beqz r1,L177_LF8 nop; not filled. j L137_LF8 nop; not filled. L181_LF8: seqi r1,r2,#1105 bnez r1,L169_LF8 nop; not filled. sgtui r1,r2,#1105 bnez r1,L182_LF8 nop; not filled. seqi r1,r2,#1104 beqz r1,L177_LF8 nop; not filled. j L165_LF8 nop; not filled. L182_LF8: seqi r1,r2,#1106 bnez r1,L173_LF8 nop; not filled. seqi r1,r2,#1408 beqz r1,L177_LF8 nop; not filled. j L157_LF8 nop; not filled. L126_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF8 nop; not filled. L128_LF8: addi r29,r29,#-8 lhi r7,((LC2_LF8)>>16)&0xffff addui r7,r7,(LC2_LF8)&0xffff j L209_LF8 nop; not filled. L129_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF8 nop; not filled. L131_LF8: addi r29,r29,#-8 lhi r7,((LC3_LF8)>>16)&0xffff addui r7,r7,(LC3_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L130_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L132_LF8 nop; not filled. L133_LF8: addi r29,r29,#-8 lhi r7,((LC3_LF8)>>16)&0xffff addui r7,r7,(LC3_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L132_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L203_LF8 nop; not filled. L134_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L136_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L183_LF8 nop; not filled. L136_LF8: addi r29,r29,#-8 lhi r7,((LC4_LF8)>>16)&0xffff addui r7,r7,(LC4_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. j L203_LF8 nop; not filled. L137_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L139_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L138_LF8 nop; not filled. L139_LF8: addi r29,r29,#-8 lhi r7,((LC5_LF8)>>16)&0xffff addui r7,r7,(LC5_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L138_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop; not filled. jal _ProcessSchedule nop; not filled. j L203_LF8 nop; not filled. L140_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141_LF8 nop; not filled. L142_LF8: addi r29,r29,#-8 lhi r7,((LC6_LF8)>>16)&0xffff addui r7,r7,(LC6_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L141_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler_LF8 nop; not filled. j L203_LF8 nop; not filled. L143_LF8: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L144_LF8 nop; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L145_LF8 nop; not filled. L144_LF8: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L145_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop; not filled. addi r29,r29,#-8 lhi r7,((LC7_LF8)>>16)&0xffff addui r7,r7,(LC7_LF8)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L148_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L151_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L154_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L157_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L160_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L163_LF8: jal _GetCurrentPid nop; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L164_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler_LF8 nop; not filled. j L203_LF8 nop; not filled. L165_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L167_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L204_LF8 nop; not filled. L167_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L204_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L169_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L171_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L205_LF8 nop; not filled. L171_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L205_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L173_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L175_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L206_LF8 nop; not filled. L175_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L206_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L177_LF8: addi r29,r29,#-8 lhi r7,((LC8_LF8)>>16)&0xffff addui r7,r7,(LC8_LF8)&0xffff j L207_LF8 nop; not filled. L124_LF8: seqi r1,r2,#3 bnez r1,L193_LF8 nop; not filled. sgtui r1,r2,#3 bnez r1,L199_LF8 nop; not filled. seqi r1,r2,#1 bnez r1,L195_LF8 nop; not filled. seqi r1,r2,#2 beqz r1,L197_LF8 nop; not filled. j L194_LF8 nop; not filled. L199_LF8: seqi r1,r2,#64 bnez r1,L185_LF8 nop; not filled. sgtui r1,r2,#64 bnez r1,L200_LF8 nop; not filled. seqi r1,r2,#32 beqz r1,L197_LF8 nop; not filled. j L196_LF8 nop; not filled. L200_LF8: seqi r1,r2,#72 beqz r1,L197_LF8 nop; not filled. j L188_LF8 nop; not filled. L185_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF8 nop; not filled. L187_LF8: addi r29,r29,#-8 lhi r7,((LC9_LF8)>>16)&0xffff addui r7,r7,(LC9_LF8)&0xffff L209_LF8: sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L186_LF8: jal _ProcessSchedule nop; not filled. j L183_LF8 nop; not filled. L188_LF8: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L189_LF8: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10_LF8)>>16)&0xffff addui r7,r7,(LC10_LF8)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L183_LF8 nop; not filled. j L189_LF8 nop; not filled. L193_LF8: addi r29,r29,#-8 lhi r7,((LC11_LF8)>>16)&0xffff addui r7,r7,(LC11_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L203_LF8 nop; not filled. L194_LF8: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12_LF8)>>16)&0xffff addui r7,r7,(LC12_LF8)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#-8 lhi r7,((LC13_LF8)>>16)&0xffff addui r7,r7,(LC13_LF8)&0xffff j L208_LF8 nop; not filled. L195_LF8: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12_LF8)>>16)&0xffff addui r7,r7,(LC12_LF8)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#-8 lhi r7,((LC14_LF8)>>16)&0xffff addui r7,r7,(LC14_LF8)&0xffff L208_LF8: sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#16 j L183_LF8 nop; not filled. L196_LF8: jal _PageFaultHandler nop; not filled. j L183_LF8 nop; not filled. L197_LF8: addi r29,r29,#-8 lhi r7,((LC15_LF8)>>16)&0xffff addui r7,r7,(LC15_LF8)&0xffff L207_LF8: sw (r29),r7 sw 4(r29),r2 jal _printf nop; not filled. jal _exitsim nop; not filled. L203_LF8: addi r29,r29,#8 L183_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L202_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L201_LF8 nop; not filled. L202_LF8: addi r29,r29,#-8 lhi r7,((LC16_LF8)>>16)&0xffff addui r7,r7,(LC16_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L201_LF8: jal _intrreturn nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF9 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF9 nop; not filled. L6_LF9: addi r31,r0,#1 L5_LF9: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF9 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF9 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF9 nop; not filled. L12_LF9: addi r2,r0,#1 L11_LF9: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF9 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF9: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF9: .ascii "Process #\000" .align 2 LC1_LF9: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething_LF9 _doSomething_LF9: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#120; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52_LF9 nop; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56_LF9: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0_LF9)>>16)&0xffff addui r8,r8,(LC0_LF9)&0xffff sw 4(r29),r8 jal _dstrcpy nop; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop; not filled. addi r29,r29,#-8 lhi r8,((_doSomething_LF9)>>16)&0xffff addui r8,r8,(_doSomething_LF9)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56_LF9 nop; not filled. L52_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59_LF9 nop; not filled. addi r5,r0,#1000 add r4,r0,r2 L61_LF9: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62_LF9 nop; not filled. addi r29,r29,#-16 lhi r8,((LC1_LF9)>>16)&0xffff addui r8,r8,(LC1_LF9)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 L62_LF9: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61_LF9 nop; not filled. L59_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething_LF9 .data .align 2 LC2_LF9: .ascii "chasetail\000" .align 2 LC3_LF9: .ascii "Chasing tail %d.\n\000" .align 2 LC4_LF9: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5_LF9: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail_LF9 _chaseTail_LF9: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2_LF9)>>16)&0xffff addui r3,r3,(LC2_LF9)&0xffff addi r29,r29,#-8 lhi r5,((LC3_LF9)>>16)&0xffff addui r5,r5,(LC3_LF9)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop; not filled. addi r29,r29,#-8 lhi r5,((LC4_LF9)>>16)&0xffff addui r5,r5,(LC4_LF9)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67_LF9 nop; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail_LF9)>>16)&0xffff addui r5,r5,(_chaseTail_LF9)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5_LF9)>>16)&0xffff addui r5,r5,(LC5_LF9)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop; not filled. addi r29,r29,#16 L67_LF9: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail_LF9 .data .align 2 LC6_LF9: .ascii "%d \000" .align 2 LC7_LF9: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems_LF9)>>16)&0xffff addui r2,r2,(_mysems_LF9)&0xffff addi r3,r2,#180 L90_LF9: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90_LF9 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems_LF9: .space 200 ;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8 ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .text .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two sets of traps here. The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 .proc _open .global _open _open: trap #0x2013 jr r31 nop .endproc _open .proc _close .global _close _close: trap #0x2014 jr r31 nop .endproc _close .proc _read .global _read _read: trap #0x2010 jr r31 nop .endproc _read .proc _write .global _write _write: trap #0x2011 jr r31 nop .endproc _write .proc _lseek .global _lseek _lseek: trap #0x2012 jr r31 nop .endproc _lseek ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two exit traps. The first, _exitsim, actually exits the ;;; simulator. The second, _exit, simply calls a regular trap in the ;;; DLX simulator, and would be suitable for a user program that wants ;;; to signal the OS that it's exiting. ;;; ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and ;;; programs run without an OS - should call exitsim() rather than just ;;; falling through to exit. ;;; .align 2 .proc _exitsim .global _exitsim _exitsim: trap #0x2f00 jr r31 nop .endproc _exitsim .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .proc _printf .global _printf _printf: trap #0x2001 jr r31 nop .endproc _printf .text .global _etext _etext: .align 3 .data .global _edata _edata:

home/bshapir/cs314/project4/option1/lab4_2/src/userprog2.o

; Compiled by GCC .data .align 2 LC0: .ascii "\nIn Userprog2, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 40000 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40008 ; alloc local storage jal ___main nop ; not filled. addi r4,r0,#0 addi r2,r0,#1 lhi r5,#-1 addui r5,r5,#25536 addi r31,r30,#-8 addui r3,r31,#39996 L16: add r1,r31,r5 sw (r1),r2 addi r2,r2,#1 addi r31,r31,#2000 sle r1,r31,r3 bnez r1,L16 nop ; not filled. lhi r3,#-1 addui r3,r3,#25536 addi r31,r30,#-8 addui r2,r31,#39996 L21: add r1,r31,r3 lw r1,(r1) add r4,r4,r1 addi r31,r31,#2000 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 sw 4(r29),r4 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

home/bshapir/cs314/project4/option1/lab4_2/src/errors

home/bshapir/cs314/project4/option1/lab4_2/src/process.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum: .word 10000 .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L52: addi r29,r29,#-8 lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff sw (r29),r2 jal _QueueInit nop ; not filled. lhi r8,((_runQueue)>>16)&0xffff addui r8,r8,(_runQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_waitQueue)>>16)&0xffff addui r8,r8,(_waitQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_zombieQueue)>>16)&0xffff addui r8,r8,(_zombieQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs)>>16)&0xffff addui r1,r1,(_pcbs)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L58: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57 nop ; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83 nop ; not filled. add r3,r0,r4 L85: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85 nop ; not filled. L83: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L91: lhi r5,((_runQueue)>>16)&0xffff addui r5,r5,(_runQueue)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94 nop ; not filled. addi r29,r29,#-8 lhi r8,((LC4)>>16)&0xffff addui r8,r8,(LC4)&0xffff sw (r29),r8 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L94: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98 nop ; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100 nop ; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105 nop ; not filled. L106: addi r29,r29,#-16 lhi r8,((LC5)>>16)&0xffff addui r8,r8,(LC5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L105: lhi r7,((_zombieQueue)>>16)&0xffff addui r7,r7,(_zombieQueue)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs)>>16)&0xffff addui r5,r5,(_freepcbs)&0xffff L107: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108 nop ; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114 nop ; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113 nop ; not filled. L114: addi r29,r29,#-8 lhi r8,((LC6)>>16)&0xffff addui r8,r8,(LC6)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop ; not filled. addi r29,r29,#8 L113: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116 nop ; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122 nop ; not filled. add r2,r0,r4 L124: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124 nop ; not filled. L122: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107 nop ; not filled. L108: addi r29,r29,#-8 lhi r1,((_processQuantum)>>16)&0xffff addui r1,r1,(_processQuantum)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127 nop ; not filled. L128: addi r29,r29,#-8 lhi r8,((LC7)>>16)&0xffff addui r8,r8,(LC7)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L127: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9: .ascii "%s: %s\n\000" .align 2 LC10: .ascii "ProcessSuspend\000" .align 2 LC11: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-16 lhi r4,((LC8)>>16)&0xffff addui r4,r4,(LC8)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L130: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC10)>>16)&0xffff addui r1,r1,(LC10)&0xffff sw 4(r29),r1 lhi r4,((LC11)>>16)&0xffff addui r4,r4,(LC11)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L133: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue)>>16)&0xffff addui r2,r2,(_waitQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13: .ascii "ProcessWakeup\000" .align 2 LC14: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141 nop ; not filled. L142: addi r29,r29,#-8 lhi r4,((LC12)>>16)&0xffff addui r4,r4,(LC12)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L141: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC13)>>16)&0xffff addui r1,r1,(LC13)&0xffff sw 4(r29),r1 lhi r4,((LC14)>>16)&0xffff addui r4,r4,(LC14)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L144: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue)>>16)&0xffff addui r2,r2,(_runQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152 nop ; not filled. L153: addi r29,r29,#-8 lhi r4,((LC15)>>16)&0xffff addui r4,r4,(LC15)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L152: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue)>>16)&0xffff addui r2,r2,(_zombieQueue)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159 nop ; not filled. L160: addi r29,r29,#-8 lhi r4,((LC16)>>16)&0xffff addui r4,r4,(LC16)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L159: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52: .space 4 .align 2 _location53: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r2 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r5,r0,#0 sw (r1),r5 L173: lhi r31,((_location53)>>16)&0xffff addui r31,r31,(_location53)&0xffff lw r3,(r31) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175 nop ; not filled. sgti r1,r3,#98 beqz r1,L174 nop ; not filled. L175: addi r1,r0,#0 j L182 nop ; not filled. L183: addi r1,r31,#1 sw (r2),r1 j L177 nop ; not filled. L174: slei r1,r3,#99 beqz r1,L177 nop ; not filled. add r4,r0,r2 add r2,r0,r31 L179: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183 nop ; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179 nop ; not filled. L177: add r1,r0,r3 L182: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26: .ascii "About to load %s\n\000" .align 2 LC27: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#728 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L187: addi r29,r29,#-8 lhi r13,((LC17)>>16)&0xffff addui r13,r13,(LC17)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L186: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188 nop ; not filled. L189: addi r29,r29,#-24 lhi r13,((LC18)>>16)&0xffff addui r13,r13,(LC18)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop ; not filled. addi r29,r29,#24 L188: lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC19)>>16)&0xffff addui r13,r13,(LC19)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L190: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194 nop ; not filled. L195: addi r29,r29,#-8 lhi r13,((LC20)>>16)&0xffff addui r13,r13,(LC20)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L194: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197 nop ; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199 nop ; not filled. L200: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC21)>>16)&0xffff addui r13,r13,(LC21)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L199: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202 nop ; not filled. L203: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC22)>>16)&0xffff addui r13,r13,(LC22)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L202: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop ; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC23)>>16)&0xffff addui r13,r13,(LC23)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L204: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop ; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC24)>>16)&0xffff addui r13,r13,(LC24)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L205: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206 nop ; not filled. L207: addi r29,r29,#-24 lhi r13,((LC25)>>16)&0xffff addui r13,r13,(LC25)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 L206: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209 nop ; not filled. L210: addi r29,r29,#-8 lhi r13,((LC26)>>16)&0xffff addui r13,r13,(LC26)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L209: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211 nop ; not filled. lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217 nop ; not filled. add r3,r0,r6 L219: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219 nop ; not filled. L217: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268 nop ; not filled. L211: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222 nop ; not filled. L223: addi r29,r29,#-16 lhi r13,((LC27)>>16)&0xffff addui r13,r13,(LC27)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L222: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224 nop ; not filled. L225: addi r29,r29,#-16 lhi r13,((LC28)>>16)&0xffff addui r13,r13,(LC28)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L224: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226 nop ; not filled. L227: addi r29,r29,#-16 lhi r13,((LC29)>>16)&0xffff addui r13,r13,(LC29)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L226: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop ; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231 nop ; not filled. L232: addi r29,r29,#-16 lhi r13,((LC30)>>16)&0xffff addui r13,r13,(LC30)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L231: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 j L228 nop ; not filled. L229: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop ; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r10 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r13,r0,#0 sw (r1),r13 L234: lhi r3,((_location53)>>16)&0xffff addui r3,r3,(_location53)&0xffff lw r4,(r3) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236 nop ; not filled. sgti r1,r4,#98 beqz r1,L235 nop ; not filled. L236: addi r3,r0,#0 j L233 nop ; not filled. L269: addi r1,r2,#1 sw (r3),r1 j L238 nop ; not filled. L235: slei r1,r4,#99 beqz r1,L238 nop ; not filled. add r5,r0,r2 L240: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269 nop ; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240 nop ; not filled. L238: add r3,r0,r4 L233: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53)>>16)&0xffff addui r4,r4,(_location53)&0xffff lhi r11,((_str52)>>16)&0xffff addui r11,r11,(_str52)&0xffff add r10,r0,r2 addi r5,r30,#4 L243: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249 nop ; not filled. sgti r1,r31,#98 beqz r1,L248 nop ; not filled. L249: addi r3,r0,#0 j L246 nop ; not filled. L270: addi r1,r3,#1 sw (r4),r1 j L251 nop ; not filled. L248: slei r1,r31,#99 beqz r1,L251 nop ; not filled. add r2,r0,r3 L253: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270 nop ; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253 nop ; not filled. L251: add r3,r0,r31 L246: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244 nop ; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243 nop ; not filled. L244: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257 nop ; not filled. L208: lhi r13,((_ProcessExit)>>16)&0xffff addui r13,r13,(_ProcessExit)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r3,((_runQueue)>>16)&0xffff addui r3,r3,(_runQueue)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264 nop ; not filled. L265: addi r29,r29,#-16 lhi r13,((LC31)>>16)&0xffff addui r13,r13,(LC31)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L264: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266 nop ; not filled. L267: addi r29,r29,#-8 lhi r13,((LC32)>>16)&0xffff addui r13,r13,(LC32)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L266: lhi r13,((_pcbs)>>16)&0xffff addui r13,r13,(_pcbs)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34: .ascii "File descriptor is now %d.\n\000" .align 2 LC35: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36: .ascii "start:\000" .align 2 LC37: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#168 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop ; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L281: addi r29,r29,#-16 lhi r12,((LC33)>>16)&0xffff addui r12,r12,(LC33)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 j L288 nop ; not filled. L279: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282 nop ; not filled. L283: addi r29,r29,#-8 lhi r12,((LC34)>>16)&0xffff addui r12,r12,(LC34)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L282: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285 nop ; not filled. L286: addi r29,r29,#-16 lhi r12,((LC35)>>16)&0xffff addui r12,r12,(LC35)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L285: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop ; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278 nop ; not filled. L284: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36)>>16)&0xffff addui r1,r1,(LC36)&0xffff sw 4(r29),r1 jal _dstrstr nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L289: addi r29,r29,#-8 lhi r12,((LC37)>>16)&0xffff addui r12,r12,(LC37)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L288: addi r1,r0,#-1 j L278 nop ; not filled. L287: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop ; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r1,r0,r3 addi r29,r29,#16 L278: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39: .ascii " terminated at %d.\n\000" .align 2 LC40: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41: .ascii "New address is 0x%x.\n\000" .align 2 LC42: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#272 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292 nop ; not filled. addi r2,r0,#200 L292: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293 nop ; not filled. addi r1,r0,#0 j L347 nop ; not filled. L293: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294 nop ; not filled. L295: addi r29,r29,#-16 lhi r12,((LC38)>>16)&0xffff addui r12,r12,(LC38)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop ; not filled. addi r29,r29,#16 L294: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350 nop ; not filled. L296: addi r2,r2,#-1 addi r5,r5,#-1 L350: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296 nop ; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300 nop ; not filled. L301: addi r29,r29,#-8 lhi r12,((LC39)>>16)&0xffff addui r12,r12,(LC39)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L300: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302 nop ; not filled. L303: addi r29,r29,#-8 lhi r12,((LC40)>>16)&0xffff addui r12,r12,(LC40)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L302: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349 nop ; not filled. sgti r1,r5,#0 bnez r1,L305 nop ; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311 nop ; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308 nop ; not filled. L311: addi r29,r29,#-8 lhi r12,((LC41)>>16)&0xffff addui r12,r12,(LC41)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L308: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305 nop ; not filled. L349: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315: lw r1,-220(r30) j L351 nop ; not filled. L318: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318 nop ; not filled. seqi r1,r31,#9 bnez r1,L318 nop ; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320 nop ; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304 nop ; not filled. L320: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326 nop ; not filled. snei r1,r3,#65 bnez r1,L325 nop ; not filled. L326: addi r2,r0,#1 L325: snei r1,r2,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329 nop ; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329 nop ; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328 nop ; not filled. L329: addi r3,r0,#1 L328: snei r1,r3,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331 nop ; not filled. add r4,r0,r31 j L330 nop ; not filled. L331: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333 nop ; not filled. addi r4,r2,#-87 j L330 nop ; not filled. L333: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330 nop ; not filled. addi r4,r3,#-55 L330: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338 nop ; not filled. add r2,r0,r31 j L337 nop ; not filled. L338: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340 nop ; not filled. addi r2,r2,#-87 j L337 nop ; not filled. L340: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337 nop ; not filled. addi r2,r3,#-55 L337: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315 nop ; not filled. L305: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345 nop ; not filled. L346: addi r29,r29,#-16 lhi r12,((LC42)>>16)&0xffff addui r12,r12,(LC42)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L345: add r1,r0,r5 L347: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64: .space 120 .align 2 LC43: .ascii "Hi Uday, How are you?\n\000" .align 2 LC44: .ascii "Got %d arguments.\n\000" .align 2 LC45: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC46: .ascii "Argument count is %d.\n\000" .align 2 LC47: .ascii "Argument %d is %s.\n\000" .align 2 LC48: .ascii "Converted %s to %d=%s\n\000" _buf65: .space 200 .align 2 LC49: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC50: .ascii "Option %s not recognized.\n\000" .align 2 LC51: .ascii "About to initialize queues.\n\000" .align 2 LC52: .ascii "After initializing queues.\n\000" .align 2 LC53: .ascii "After initializing memory.\n\000" .align 2 LC54: .ascii "After initializing processes.\n\000" .align 2 LC55: .ascii "After initializing synchronization tools.\n\000" .align 2 LC56: .ascii "After initializing keyboard.\n\000" .align 2 LC57: .ascii "vm\000" .align 2 LC58: .ascii "VM Descriptor is %d\n\000" .align 2 LC59: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC60: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#200 ; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop ; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb (r1),r21 addi r29,r29,#-8 lhi r21,((LC43)>>16)&0xffff addui r21,r21,(LC43)&0xffff sw (r29),r21 jal _printf nop ; not filled. jal _MyFuncRetZero nop ; not filled. lhi r21,((LC44)>>16)&0xffff addui r21,r21,(LC44)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. jal _MemoryGetSize nop ; not filled. addi r29,r29,#-8 lhi r21,((LC45)>>16)&0xffff addui r21,r21,(LC45)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop ; not filled. lhi r21,((LC46)>>16)&0xffff addui r21,r21,(LC46)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354 nop ; not filled. add r2,r0,r20 L356: addi r29,r29,#-16 lhi r21,((LC47)>>16)&0xffff addui r21,r21,(LC47)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop ; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356 nop ; not filled. L354: jal _FsModuleInit nop ; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359 nop ; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65)>>16)&0xffff addui r15,r15,(_buf65)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360 nop ; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366 nop ; not filled. sgti r1,r2,#102 bnez r1,L378 nop ; not filled. seqi r1,r2,#68 beqz r1,L376 nop ; not filled. j L364 nop ; not filled. L378: seqi r1,r2,#105 bnez r1,L365 nop ; not filled. seqi r1,r2,#117 beqz r1,L376 nop ; not filled. j L375 nop ; not filled. L364: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop ; not filled. j L411 nop ; not filled. L365: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop ; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop ; not filled. lhi r21,((LC48)>>16)&0xffff addui r21,r21,(LC48)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 j L363 nop ; not filled. L366: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r10,r0,r1 lhi r21,((LC27)>>16)&0xffff addui r21,r21,(LC27)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop ; not filled. lhi r21,((LC28)>>16)&0xffff addui r21,r21,(LC28)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop ; not filled. lhi r21,((LC29)>>16)&0xffff addui r21,r21,(LC29)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop ; not filled. addi r29,r29,#24 lhi r11,((_buf65+3)>>16)&0xffff addui r11,r11,(_buf65+3)&0xffff L367: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65)>>16)&0xffff addui r21,r21,(_buf65)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop ; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368 nop ; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367 nop ; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373: addi r29,r29,#-24 lhi r21,((LC49)>>16)&0xffff addui r21,r21,(LC49)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373 nop ; not filled. j L367 nop ; not filled. L368: addi r29,r29,#-8 sw (r29),r10 jal _close nop ; not filled. j L411 nop ; not filled. L375: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363 nop ; not filled. L376: addi r29,r29,#-8 lhi r21,((LC50)>>16)&0xffff addui r21,r21,(LC50)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop ; not filled. L411: addi r29,r29,#8 L363: snei r1,r16,#0 bnez r1,L359 nop ; not filled. L360: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361 nop ; not filled. L359: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381 nop ; not filled. L382: addi r29,r29,#-8 lhi r21,((LC51)>>16)&0xffff addui r21,r21,(LC51)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L381: jal _QueueModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383 nop ; not filled. L384: addi r29,r29,#-8 lhi r21,((LC52)>>16)&0xffff addui r21,r21,(LC52)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L383: jal _MemoryModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385 nop ; not filled. L386: addi r29,r29,#-8 lhi r21,((LC53)>>16)&0xffff addui r21,r21,(LC53)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L385: jal _ProcessModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387 nop ; not filled. L388: addi r29,r29,#-8 lhi r21,((LC54)>>16)&0xffff addui r21,r21,(LC54)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L387: jal _SynchModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389 nop ; not filled. L390: addi r29,r29,#-8 lhi r21,((LC55)>>16)&0xffff addui r21,r21,(LC55)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L389: jal _KbdModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391 nop ; not filled. L392: addi r29,r29,#-8 lhi r21,((LC56)>>16)&0xffff addui r21,r21,(LC56)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L391: addi r2,r30,#-128 addi r3,r30,#-29 L396: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396 nop ; not filled. addi r29,r29,#-8 lhi r21,((LC57)>>16)&0xffff addui r21,r21,(LC57)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop ; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398 nop ; not filled. L399: addi r29,r29,#-8 lhi r21,((LC58)>>16)&0xffff addui r21,r21,(LC58)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L398: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop ; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop ; not filled. sw (r29),r9 jal _FsClose nop ; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400 nop ; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402 nop ; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402 nop ; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406 nop ; not filled. L402: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop ; not filled. addi r29,r29,#48 L400: jal _SysprocCreateProcesses nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407 nop ; not filled. L408: addi r29,r29,#-8 lhi r21,((LC59)>>16)&0xffff addui r21,r21,(LC59)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L407: addi r29,r29,#-8 lhi r3,((_processQuantum)>>16)&0xffff addui r3,r3,(_processQuantum)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409 nop ; not filled. L410: addi r29,r29,#-8 lhi r21,((LC60)>>16)&0xffff addui r21,r21,(LC60)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L409: jal _intrreturn nop ; not filled. jal _exitsim nop ; not filled. jal _exit nop .endproc _main .data .align 2 LC62: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,((LC62)>>16)&0xffff addui r1,r1,(LC62)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1032 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420 nop ; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422: addi r2,r0,#0 add r3,r4,r5 L423: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423 nop ; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422 nop ; not filled. L420: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _ProcessSchedule nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs: .space 12 .align 2 _runQueue: .space 12 .align 2 _waitQueue: .space 12 .align 2 _zombieQueue: .space 12 .align 2 _pcbs: .space 3840 .text .align 2 .proc _ProcessExit _ProcessExit: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _exit nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit

home/bshapir/cs314/project4/option1/lab4_2/src/misc.h

// // Routines used by the entire operating system. // #ifndef _misc_h_ #define _misc_h_ extern char* dstrcpy(char*, const char*); extern char* dstrncpy(char*, const char*, int n); extern const char *dstrstr (const char *, const char *); extern int dstrlen (const char *); extern int dstrncmp (const char *, const char *, int); extern int dstrtol(char*, char**, int); extern const char* dindex(const char*, int); extern const char* dmindex(const char*, const char *); inline int isspace (char c) { return ((c == ' ') || (c == '\t') || (c == '\n')); } inline int isxdigit (char c) { return (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) || ((c >= 'A') && (c <= 'A'))); } #endif // !_misc_h_

home/bshapir/cs314/project4/option1/lab4_2/src/process.h

// // process.h // // Definitions for process creation and manipulation. These include // the process control block (PCB) structure as well as information // about the stack format for a saved process. // #ifndef _process_h__ #define _process_h_ #include "dlxos.h" #include "queue.h" #include "memory.h" //#include "share_memory.h" #define PROCESS_MAX_PROCS 32 // Maximum number of active processes #define PROCESS_INIT_ISR_SYS 0x140 // Initial status reg value for system processes #define PROCESS_INIT_ISR_USER 0x100 // Initial status reg value for user processes #define PROCESS_STATUS_FREE 0x1 #define PROCESS_STATUS_RUNNABLE 0x2 #define PROCESS_STATUS_WAITING 0x4 #define PROCESS_STATUS_STARTING 0x8 #define PROCESS_STATUS_ZOMBIE 0x10 #define PROCESS_STATUS_MASK 0x3f #define PROCESS_TYPE_SYSTEM 0x100 #define PROCESS_TYPE_USER 0x200 typedef void (*VoidFunc)(); // Process control block typedef struct PCB { uint32 *currentSavedFrame; // -> current saved frame. MUST BE 1ST! uint32 *sysStackPtr; // Current system stack pointer. MUST BE 2ND! uint32 sysStackArea; // System stack area for this process unsigned int flags; char name[80]; // Process name uint32 pagetable[L1_MAX_ENTRIES]; // Statically allocated page table int npages; // Number of pages allocated to this process Link l; // Used for keeping PCB in queues } PCB; // Offsets of various registers from the stack pointer in the register // save frame. Offsets are in WORDS (4 byte chunks) #define PROCESS_STACK_IREG 10 // Offset of r0 (grows upwards) // NOTE: r0 isn't actually stored! This is for convenience - r1 is the // first stored register, and is at location PROCESS_STACK_IREG+1 #define PROCESS_STACK_FREG (PROCESS_STACK_IREG+32) // Offset of f0 #define PROCESS_STACK_IAR (PROCESS_STACK_FREG+32) // Offset of IAR #define PROCESS_STACK_ISR (PROCESS_STACK_IAR+1) #define PROCESS_STACK_CAUSE (PROCESS_STACK_IAR+2) #define PROCESS_STACK_FAULT (PROCESS_STACK_IAR+3) #define PROCESS_STACK_PTBASE (PROCESS_STACK_IAR+4) #define PROCESS_STACK_PTSIZE (PROCESS_STACK_IAR+5) #define PROCESS_STACK_PTBITS (PROCESS_STACK_IAR+6) #define PROCESS_STACK_PREV_FRAME 10 // points to previous interrupt frame #define PROCESS_STACK_FRAME_SIZE 85 // interrupt frame is 85 words #define SIZE_ARG_BUFF 1024 // Max number of characters in the // command-line arguments #define MAX_ARGS 128 // Max number of command-line // arguments extern PCB *currentPCB; extern int ProcessFork (VoidFunc, unsigned int, char *, int); extern void ProcessSchedule (); extern void ContextSwitch(void *, void *, int); extern void ProcessSuspend (PCB *); extern void ProcessWakeup (PCB *); extern void ProcessSetResult (PCB *, uint32); extern void ProcessSleep (); extern unsigned GetCurrentPid(); extern unsigned getpid(); void process_create(char *name, ...); void ProcessKill (PCB *pcb); void PageFaultHandler(); #endif /* _process_h_ */

home/bshapir/cs314/project4/option1/lab4_2/src/res

Stack=0x1ffff0, pc starting at 0x1000 Hi Uday, How are you? Got 0 arguments. Available memory: 0x13310 -> 0x200000. Argument count is 0. Chasing tail 10. Got an open with parameters ('chasetail',0x200a) Open of (chasetail,0x200a) returns 0x1200a. Chasing tail 11. Got an open with parameters ('chasetail',0x200b) Open of (chasetail,0x200b) returns 0x1200b. Chasing tail 12. Got an open with parameters ('chasetail',0x200c) Open of (chasetail,0x200c) returns 0x1200c. Chasing tail 13. Got an open with parameters ('chasetail',0x200d) Open of (chasetail,0x200d) returns 0x1200d. Chasing tail 14. Got an open with parameters ('chasetail',0x200e) Open of (chasetail,0x200e) returns 0x1200e. Chasing tail 15. Got an open with parameters ('chasetail',0x200f) Open of (chasetail,0x200f) returns 0x1200f. Chasing tail 16. Got an open with parameters ('chasetail',0x2010) Open of (chasetail,0x2010) returns 0x12010. Chasing tail 17. Got an open with parameters ('chasetail',0x2011) Open of (chasetail,0x2011) returns 0x12011. Chasing tail 18. Got an open with parameters ('chasetail',0x2012) Open of (chasetail,0x2012) returns 0x12012. Chasing tail 19. Got an open with parameters ('chasetail',0x2013) Open of (chasetail,0x2013) returns 0x12013. Chasing tail 20. Got an open with parameters ('chasetail',0x2014) Open of (chasetail,0x2014) returns 0x12014. Chasing tail 21. Got an open with parameters ('chasetail',0x2015) Open of (chasetail,0x2015) returns 0x12015. Chasing tail 22. Got an open with parameters ('chasetail',0x2016) Open of (chasetail,0x2016) returns 0x12016. Chasing tail 23. Got an open with parameters ('chasetail',0x2017) Open of (chasetail,0x2017) returns 0x12017. Chasing tail 24. Got an open with parameters ('chasetail',0x2018) Open of (chasetail,0x2018) returns 0x12018. Chasing tail 25. Got an open with parameters ('chasetail',0x2019) Open of (chasetail,0x2019) returns 0x12019. Chasing tail 26. Got an open with parameters ('chasetail',0x201a) Open of (chasetail,0x201a) returns 0x1201a. Chasing tail 27. Got an open with parameters ('chasetail',0x201b) Open of (chasetail,0x201b) returns 0x1201b. Chasing tail 28. Got an open with parameters ('chasetail',0x201c) Open of (chasetail,0x201c) returns 0x1201c. Chasing tail 29. Got an open with parameters ('chasetail',0x201d) Open of (chasetail,0x201d) returns 0x1201d. Chasing tail 30. Got an open with parameters ('chasetail',0x201e) Open of (chasetail,0x201e) returns 0x1201e. Chasing tail 31. Got an open with parameters ('chasetail',0x201f) Open of (chasetail,0x201f) returns 0x1201f. Chasing tail 32. Got an open with parameters ('chasetail',0x2020) Open of (chasetail,0x2020) returns 0x12020. Chasing tail 33. Got an open with parameters ('chasetail',0x2021) Open of (chasetail,0x2021) returns 0x12021. Chasing tail 34. Got an open with parameters ('chasetail',0x2022) Open of (chasetail,0x2022) returns 0x12022. Chasing tail 35. Got an open with parameters ('chasetail',0x2023) Open of (chasetail,0x2023) returns 0x12023. Chasing tail 36. Got an open with parameters ('chasetail',0x2024) Open of (chasetail,0x2024) returns 0x12024. Chasing tail 37. Got an open with parameters ('chasetail',0x2025) Open of (chasetail,0x2025) returns 0x12025. Chasing tail 38. Got an open with parameters ('chasetail',0x2026) Open of (chasetail,0x2026) returns 0x12026. Chasing tail 39. Got an open with parameters ('chasetail',0x2027) Open of (chasetail,0x2027) returns 0x12027. 2 Chasing tail 40. Got an open with parameters ('chasetail',0x2028) Open of (chasetail,0x2028) returns 0x12028. 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 Got a control-C: exiting!

home/bshapir/cs314/project4/option1/lab4_2/src/misc.o

; Compiled by GCC
.text
.align 2
.proc _isspace
.global _isspace
_isspace:
; Function 'isspace'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r2,3(r30)
addi r31,r0,#0
andi r1,r2,#0x00ff
seqi r1,r1,#32
bnez r1,L6
nop ; not filled.
addi r1,r2,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
beqz r1,L5
nop ; not filled.
L6:
addi r31,r0,#1
L5:
add r1,r0,r31
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isspace
.align 2
.proc _isxdigit
.global _isxdigit
_isxdigit:
; Function 'isxdigit'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r31,3(r30)
addi r2,r0,#0
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
bnez r1,L12
nop ; not filled.
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#5
bnez r1,L12
nop ; not filled.
andi r1,r31,#0x00ff
snei r1,r1,#65
bnez r1,L11
nop ; not filled.
L12:
addi r2,r0,#1
L11:
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isxdigit
.align 2
.proc _dstrcpy
.global _dstrcpy
_dstrcpy:
; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
lw r2,4(r30)
add r3,r0,r31
L19:
lb r1,(r2)
sb (r31),r1
addi r2,r2,#1
addi r31,r31,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L19
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcpy
.align 2
.proc _dstrncpy
.global _dstrncpy
_dstrncpy:
; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r2,(r30)
lw r3,4(r30)
lw r31,8(r30)
add r4,r0,r2
j L37
nop ; not filled.
L34:
lb r1,(r3)
sb (r2),r1
addi r3,r3,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
beqz r1,L32
nop ; not filled.
L37:
add r1,r0,r31
addi r31,r31,#-1
slei r1,r1,#0
beqz r1,L34
nop ; not filled.
L32:
add r1,r0,r4
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncpy
.align 2
.proc _dstrcat
.global _dstrcat
_dstrcat:
; Function 'dstrcat'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
add r3,r0,r31
lbu r1,(r3)
snei r1,r1,#0
beqz r1,L50
nop ; not filled.
L51:
addi r31,r31,#1
lbu r1,(r31)
snei r1,r1,#0
bnez r1,L51
nop ; not filled.
L50:
add r2,r0,r31
lw r31,4(r30)
L54:
lb r1,(r31)
sb (r2),r1
addi r31,r31,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L54
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcat
.align 2
.proc _dstrncmp
.global _dstrncmp
_dstrncmp:
; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
lw r3,(r30)
lw r4,4(r30)
lw r5,8(r30)
addi r2,r0,#0
slt r1,r2,r5
beqz r1,L73
nop ; not filled.
L75:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L86
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L73
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r5
bnez r1,L75
nop ; not filled.
L73:
seq r1,r2,r5
beqz r1,L80
nop ; not filled.
L86:
addi r1,r0,#0
j L84
nop ; not filled.
L80:
lbu r31,(r3)
lbu r3,(r4)
sub r1,r31,r3
sgei r1,r1,#0
addi r2,r0,#-1
beqz r1,L82
nop ; not filled.
sne r2,r31,r3
L82:
add r1,r0,r2
L84:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncmp
.align 2
.proc _dstrlen
.global _dstrlen
_dstrlen:
; Function 'dstrlen'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lw r31,(r30)
addi r2,r0,#0
j L97
nop ; not filled.
L95:
addi r2,r2,#1
L97:
lbu r1,(r31)
addi r31,r31,#1
snei r1,r1,#0
bnez r1,L95
nop ; not filled.
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrlen
.align 2
.proc _dstrstr
.global _dstrstr
_dstrstr:
; Function 'dstrstr'; 0 bytes of locals, 6 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
sw 20(r29),r7
lw r5,(r30)
lw r7,4(r30)
addi r3,r0,#0
lbu r1,(r7)
addi r2,r7,#1
snei r1,r1,#0
beqz r1,L125
nop ; not filled.
L126:
addi r3,r3,#1
lbu r1,(r2)
addi r2,r2,#1
snei r1,r1,#0
bnez r1,L126
nop ; not filled.
L125:
add r6,r0,r3
j L149
nop ; not filled.
L130:
add r3,r0,r5
add r4,r0,r7
addi r2,r0,#0
slt r1,r2,r6
beqz r1,L134
nop ; not filled.
L136:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L150
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L134
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r6
bnez r1,L136
nop ; not filled.
L134:
seq r1,r2,r6
beqz r1,L141
nop ; not filled.
L150:
addi r1,r0,#0
j L132
nop ; not filled.
L141:
lbu r3,(r3)
lbu r2,(r4)
sub r1,r3,r2
sgei r1,r1,#0
addi r31,r0,#-1
beqz r1,L143
nop ; not filled.
sne r31,r3,r2
L143:
add r1,r0,r31
L132:
snei r1,r1,#0
bnez r1,L131
nop ; not filled.
add r1,r0,r5
j L146
nop ; not filled.
L131:
addi r5,r5,#1
L149:
lbu r1,(r5)
snei r1,r1,#0
bnez r1,L130
nop ; not filled.
addi r1,r0,#0
L146:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r7,20(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrstr
.align 2
.proc _dmindex
.global _dmindex
_dmindex:
; Function 'dmindex'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r4,(r30)
lw r6,4(r30)
lbu r1,(r4)
snei r1,r1,#0
beqz r1,L164
nop ; not filled.
add r5,r0,r1
L165:
add r2,r0,r6
lb r31,(r6)
andi r1,r31,#0x00ff
snei r1,r1,#0
beqz r1,L163
nop ; not filled.
lbu r3,(r4)
L169:
andi r1,r31,#0x00ff
seq r1,r3,r1
beqz r1,L168
nop ; not filled.
add r1,r0,r4
j L173
nop ; not filled.
L168:
addi r2,r2,#1
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L169
nop ; not filled.
L163:
bnez r5,L165
nop ; not filled.
L164:
addi r1,r0,#0
L173:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dmindex
.align 2
.proc _dindex
.global _dindex
_dindex:
; Function 'dindex'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r3,4(r30)
j L187
nop ; not filled.
L183:
andi r1,r31,#0x00ff
seq r1,r1,r3
beqz r1,L184
nop ; not filled.
add r1,r0,r2
j L186
nop ; not filled.
L184:
addi r2,r2,#1
L187:
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L183
nop ; not filled.
addi r1,r0,#0
L186:
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dindex
.align 2
.proc _ditoa
.global _ditoa
_ditoa:
; Function 'ditoa'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r3,(r30)
lw r4,4(r30)
slti r1,r3,#0
beqz r1,L203
nop ; not filled.
addi r6,r0,(#0x2d)&0xff
j L216
nop ; not filled.
L203:
snei r1,r3,#0
bnez r1,L205
nop ; not filled.
addi r6,r0,(#0x30)&0xff
L216:
sb (r4),r6
addi r4,r4,#1
j L204
nop ; not filled.
L205:
addi r31,r0,#1
sle r1,r31,r3
beqz r1,L208
nop ; not filled.
L209:
slli r1,r31,#0x2
add r1,r1,r31
slli r31,r1,#0x1
sle r1,r31,r3
bnez r1,L209
nop ; not filled.
L208:
addi r5,r0,#10
L212:
movi2fp f0,r31
movi2fp f1,r5
div f0,f0,f1
movfp2i r31,f0
movi2fp f0,r3
movi2fp f1,r31
div f0,f0,f1
movfp2i r2,f0
addi r1,r2,#48
sb (r4),r1
addi r4,r4,#1
movi2fp f0,r2
movi2fp f1,r31
mult f0,f0,f1
movfp2i r1,f0
sub r3,r3,r1
sgti r1,r31,#1
bnez r1,L212
nop ; not filled.
L204:
addi r6,r0,(#0x0)&0xff
sb (r4),r6
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _ditoa
.align 2
.proc _dstrtol
.global _dstrtol
_dstrtol:
; Function 'dstrtol'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r2,(r30)
lw r5,4(r30)
lw r4,8(r30)
addi r3,r0,#0
j L247
nop ; not filled.
L220:
addi r2,r2,#1
L247:
lb r31,(r2)
andi r1,r31,#0x00ff
seqi r1,r1,#32
bnez r1,L220
nop ; not filled.
addi r1,r31,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
bnez r1,L220
nop ; not filled.
snei r1,r5,#0
beqz r1,L222
nop ; not filled.
sw (r5),r2
L222:
lbu r31,(r2)
snei r1,r31,#0
beqz r1,L248
nop ; not filled.
seqi r1,r31,#45
beqz r1,L224
nop ; not filled.
addi r6,r0,#-1
addi r2,r2,#1
j L225
nop ; not filled.
L224:
addi r6,r0,#1
L225:
snei r1,r4,#0
bnez r1,L226
nop ; not filled.
lbu r1,(r2)
seqi r1,r1,#48
beqz r1,L227
nop ; not filled.
addi r2,r2,#1
lbu r31,(r2)
seqi r1,r31,#120
bnez r1,L229
nop ; not filled.
seqi r1,r31,#88
beqz r1,L228
nop ; not filled.
L229:
addi r4,r0,#16
addi r2,r2,#1
j L226
nop ; not filled.
L228:
addi r4,r0,#8
j L226
nop ; not filled.
L227:
addi r4,r0,#10
L226:
addi r1,r4,#-1
sgtui r1,r1,#15
beqz r1,L233
nop ; not filled.
L248:
add r1,r0,r3
j L245
nop ; not filled.
L233:
lb r31,(r2)
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
beqz r1,L236
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-48
j L237
nop ; not filled.
L236:
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L238
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-87
j L237
nop ; not filled.
L238:
addi r1,r31,#-65
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L240
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-55
j L237
nop ; not filled.
L240:
addi r1,r0,#1000
L237:
slt r31,r1,r4
beqz r31,L246
nop ; not filled.
movi2fp f0,r3
movi2fp f1,r4
mult f0,f0,f1
movfp2i r3,f0
add r3,r3,r1
addi r2,r2,#1
bnez r31,L233
nop ; not filled.
L246:
snei r1,r5,#0
beqz r1,L244
nop ; not filled.
sw (r5),r2
L244:
movi2fp f0,r3
movi2fp f1,r6
mult f0,f0,f1
movfp2i r1,f0
L245:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrtol
.align 2
.proc _bcopy
.global _bcopy
_bcopy:
; Function 'bcopy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r3,(r30)
lw r2,4(r30)
lw r31,8(r30)
j L259
nop ; not filled.
L257:
lb r4,(r3)
sb (r2),r4
addi r3,r3,#1
addi r2,r2,#1
L259:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L257
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bcopy
.align 2
.proc _bzero
.global _bzero
_bzero:
; Function 'bzero'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r31,4(r30)
j L270
nop ; not filled.
L268:
addi r3,r0,(#0x0)&0xff
sb (r2),r3
addi r2,r2,#1
L270:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L268
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bzero

home/bshapir/cs314/project4/option1/lab4_2/src/trap_random.s

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

home/bshapir/cs314/project4/option1/lab4_2/src/queue.c

// // queue.c // // Variables for queues, and a routine to initialize the pool of links. // // #include "dlxos.h" #include "queue.h" Queue freeLinks; static Link linkpool[QUEUE_MAX_LINKS]; void QueueModuleInit () { int i; QueueInit (&freeLinks); for (i = 0; i < QUEUE_MAX_LINKS; i++) { dbprintf ('i', "Initializing queue link %d.\n", i); linkpool[i].next = NULL; QueueFreeLink (&(linkpool[i])); } } void QueueInit (Queue *q) { q->first = (Link *)q; q->last = (Link *)q; q->nitems = 0; } void QueueFreeLink (Link *l) { extern Queue freeLinks; // Make sure the link has already been freed! ASSERT ((l->next == NULL), "Link not empty"); QueueInsertLast (&freeLinks, l); } Link * QueueAllocLink () { extern Queue freeLinks; Link *l; if (! QueueEmpty (&freeLinks)) { l = QueueFirst (&freeLinks); QueueRemove (l); } else { l = NULL; } ASSERT ((l != NULL), "Link not allocated!"); return (l); }

home/bshapir/cs314/project4/option1/lab4_2/src/dlxos.h

// // Routines used by the entire operating system. // #ifndef _dlxos_h_ #define _dlxos_h_ #include "misc.h" typedef unsigned int uint32; #define DLX_PROCESS_QUANTUM 10000 // in microseconds extern void SetTimer (int); extern char debugstr[]; #define ASSERT(cond,s) (cond ? 0 : printf ("%s: %s\n", __FUNCTION__,s)) // dbprintf() is a VERY useful macro. It gets used as follows: // dbprintf ('x', "This prints %d and %x\n", val1, val2); // This will print the expected string only if the debugging options contain // the letter 'x'. This allows users to turn on different debugging // statements at different times by using different letters. For example, // process debugging statements could use 'p', and memory 'm'. Specifying // a '+' in the debugging string will turn on all debugging printfs. #define dbprintf(flag, format, args...) \ if ((dindex(debugstr,flag)!=(char *)0) || \ (dindex(debugstr,'+')!=(char *)0)) { \ printf (format, ## args); \ } extern int CurrentIntrs (); extern int SetIntrs (int); extern void KbdModuleInit (); extern void intrreturn (); inline int DisableIntrs () { return (SetIntrs (0xf)); } inline int EnableIntrs () { return (SetIntrs (0x0)); } inline int RestoreIntrs (int intrs) { return (SetIntrs (intrs)); } #endif // _dlxos_h_

home/bshapir/cs314/project4/option1/lab4_2/src/memory.c

// // memory.c // // Routines for dealing with memory management. static char rcsid[] = "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "memory.h" #include "process.h" #include "queue.h" static uint32 pagestart; static int freemapmax; static int nfreepages; static uint32 freepages[MEMORY_MAX_PAGES/32]; static uint32 negativeone = 0xffffffff; //---------------------------------------------------------------------- // // This silliness is required because the compiler believes that // it can invert a number by subtracting it from zero and subtracting // an additional 1. This works unless you try to negate 0x80000000, // which causes an overflow when subtracted from 0. Simply // trying to do an XOR with 0xffffffff results in the same code // being emitted. // //---------------------------------------------------------------------- static inline uint32 invert (uint32 n) { return (n ^ negativeone); } //---------------------------------------------------------------------- // // MemoryGetSize // // Return the total size of memory in the simulator. This is // available by reading a special location. // //---------------------------------------------------------------------- int MemoryGetSize () { return (*((int *)DLX_MEMSIZE_ADDRESS)); } //---------------------------------------------------------------------- // // MemorySetFreemap // //---------------------------------------------------------------------- inline void MemorySetFreemap (int p, int b) { uint32 wd = p / 32; uint32 bitnum = p % 32; freepages[wd] = (freepages[wd] & invert(1 << bitnum)) | (b << bitnum); dbprintf ('m', "Set freemap entry %d to 0x%x.\n", wd, freepages[wd]); } � //---------------------------------------------------------------------- // // MemoryInitModule // // Initialize the memory module of the operating system. // //---------------------------------------------------------------------- void MemoryModuleInit () { int i; int maxpage = MemoryGetSize () / MEMORY_PAGE_SIZE; int curpage; pagestart = (lastosaddress + MEMORY_PAGE_SIZE - 4) / MEMORY_PAGE_SIZE; freemapmax = (maxpage+31) / 32; dbprintf ('m', "Map has %d entries, memory size is 0x%x.\n", freemapmax, maxpage); dbprintf ('m', "Free pages start with page # 0x%x.\n", pagestart); for (i = 0; i < freemapmax; i++) { // Initially, all pages are considered in use. This is done to make // sure we don't have any partially initialized freemap entries. freepages[i] = 0; } nfreepages = 0; for (curpage = pagestart; curpage < maxpage; curpage++) { nfreepages += 1; MemorySetFreemap (curpage, 1); } dbprintf ('m', "Initialized %d free pages.\n", nfreepages); } � //---------------------------------------------------------------------- // // MemoryAllocPage // // Allocate a page of memory. // //---------------------------------------------------------------------- inline int MemoryAllocPage () { static int mapnum = 0; int bitnum; uint32 v; if (nfreepages == 0) { printf("ERROR AT THIS POINT\n"); return (0); } dbprintf ('m', "Allocating memory, starting with page %d\n", mapnum); while (freepages[mapnum] == 0) { mapnum += 1; if (mapnum >= freemapmax) { mapnum = 0; } } v = freepages[mapnum]; for (bitnum = 0; (v & (1 << bitnum)) == 0; bitnum++) { } freepages[mapnum] &= invert(1 << bitnum); v = (mapnum * 32) + bitnum; dbprintf ('m', "Allocated memory, from map %d, page %d, map=0x%x.\n", mapnum, v, freepages[mapnum]); nfreepages -= 1; return (v); } //---------------------------------------------------------------------- // // MemoryFreePage // // Free a page of memory. // //---------------------------------------------------------------------- void MemoryFreePage(uint32 page) { MemorySetFreemap (page, 1); nfreepages += 1; dbprintf ('m',"Freed page 0x%x, %d remaining.\n", page, nfreepages); } � //---------------------------------------------------------------------- // // MemoryTranslateUserToSystem // // Translate a user address (in the process referenced by pcb) // into an OS (physical) address. This works for simple one-level // page tables, but will have to be modified for two-level page // tables. // //---------------------------------------------------------------------- uint32 MemoryTranslateUserToSystem (PCB *pcb, uint32 addr) { //------------------------------------------- // You need to change the code below //------------------------------------------- int page = addr / MEMORY_PAGE_SIZE; int offset = addr % MEMORY_PAGE_SIZE; if (page > pcb->npages) { return (0); } return ((pcb->pagetable[page] & MEMORY_PTE_MASK) + offset); } � //---------------------------------------------------------------------- // // moveBetweenSpaces // // Copy data between user and system spaces. This is done page by // page by: // * Translating the user address into system space. // * Copying all of the data in that page // * Repeating until all of the data is copied. // A positive direction means the copy goes from system to user // space; negative direction means the copy goes from user to system // space. // // This routine returns the number of bytes copied. Note that this // may be less than the number requested if there were unmapped pages // in the user range. If this happens, the copy stops at the // first unmapped address. // //---------------------------------------------------------------------- static int moveBetweenSpaces (PCB *pcb, unsigned char *s, unsigned char *u, int n, int dir) { unsigned char *curUser; int bytesCopied = 0; int bytesToCopy; while (n > 0) { // Translate current user page to system address. If this fails, return // the number of bytes copied so far. curUser = (unsigned char *)MemoryTranslateUserToSystem (pcb, (uint32)u); if (curUser == (unsigned char *)0) { // Leave the loop if translation fails. break; } // Calculate the number of bytes to copy this time. This is the minimum // of the bytes left on this page and the bytes left to copy. bytesToCopy = MEMORY_PAGE_SIZE - ((uint32)curUser % MEMORY_PAGE_SIZE); if (bytesToCopy > n) { bytesToCopy = n; } // Perform the copy. if (dir >= 0) { bcopy (s, curUser, bytesToCopy); } else { bcopy (curUser, s, bytesToCopy); } // Keep track of bytes copied and adjust addresses appropriately. n -= bytesToCopy; bytesCopied += bytesToCopy; s += bytesToCopy; u += bytesToCopy; } return (bytesCopied); } //---------------------------------------------------------------------- // // These two routines copy data between user and system spaces. // They call a common routine to do the copying; the only difference // between the calls is the actual call to do the copying. Everything // else is identical. // //---------------------------------------------------------------------- int MemoryCopySystemToUser (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, from, to, n, 1)); } int MemoryCopyUserToSystem (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, to, from, n, -1)); } � //---------------------------------------------------------------------- // // MemorySetupPte // // Set up a PTE given a page number. // //---------------------------------------------------------------------- uint32 MemorySetupPte (uint32 page) { return ((page * MEMORY_PAGE_SIZE) | MEMORY_PTE_VALID); } //---------------------------------------------------------------------- // // MemoryFreePte // // Free a page given its PTE. // //---------------------------------------------------------------------- void MemoryFreePte (uint32 pte) { MemoryFreePage ((pte & MEMORY_PTE_MASK) / MEMORY_PAGE_SIZE); } //---------------------------------------------------------------------- // // MemoryPteToPage // // Given a PTE, return the base address for the (virtual) page the // PTE references. // //---------------------------------------------------------------------- uint32 MemoryPteToPage (uint32 pte) { return (pte & MEMORY_PTE_MASK); } � //---------------------------------------------------------------------- // // MemoryGetOperandAddress // // This routine takes an instruction and a pointer to a PCB, and // returns the address that the instruction is trying to use // for its memory operand. If the instruction doesn't access memory, // it returns 0xffffffff. Note that this means it's impossible to // distinguish between a valid access to 0xffffffff and an instruction // without an operand.... // //---------------------------------------------------------------------- uint32 MemoryGetOperandAddress (PCB *pcb, uint32 instr) { static uint32 invalidOps = 0x3404; uint32 opcode = (instr >> 26) & 0x3f; uint32 reg; uint32 addr; uint32 offset; uint32 regValue; if ((opcode<0x20) || (opcode>0x2f) || ((invalidOps >> (opcode-0x20) & 1))) { return (0xffffffff); } reg = (instr >> 21) & 0x1f; offset = instr & 0xffff; if (offset & 0x8000) { offset |= 0xffff0000; } regValue = pcb->currentSavedFrame[PROCESS_STACK_IREG+reg]; addr = regValue + offset; dbprintf ('m', "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n", instr, addr, reg, regValue); return (addr); }

home/bshapir/cs314/project4/option1/lab4_2/src/usertraps.s

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

home/bshapir/cs314/project4/option1/lab4_2/dlxsim.cc

home/bshapir/cs314/project4/option1/lab4_2/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  This file contains the routines that manage higher-level
//  functionality.  Instruction execution is in a separate file.
//

/* Copyright (c) 1999-2004 by Ethan L. Miller

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.
*/

static   char  rcsid []   =
     "$Id: dlxsim.cc,v 1.16 2004/10/01 18:43:40 elm Exp $" ;
char  rcsDlxsimDate []   =   "$Date: 2004/10/01 18:43:40 $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   < time . h >
#include   < signal . h >
#include   < fcntl . h >
#include   "dlx.h"
#include   "dlx-inlines.h"

extern   int  errno ;
char  debug [ 100 ];
//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu ( int  msize ) : debugger ( NULL )
{
     int  i ;
     struct  timeval t ;

    flags  =   0 ;
    usElapsed  =   0 ;
    tickCounter  =   0 ;
    instrsExecuted  =   0 ;
    instPerUs  =   1 ;
     for   ( =   0 ;  i  <   32 ;  i ++ )   {
        sreg [ i ]   =   0 ;
        ireg [ i ]   =   0 ;
        freg [ i ]   =   0 ;
     }
     SetStatusBit ( DLX_STATUS_PAGE_TABLE );
     SetStatusBit ( DLX_STATUS_SYSMODE );
     EnableInterrupts ();
    timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
    memSize  =  msize ;
    memory  =   new  uint32 [ msize  /   sizeof ( uint32 )];
    basicBlockStart  =   1 ;          // basic block can never start at address 1!
     // Initialize the keyboard I/O stuff.
    kbdbufferedchars  =   0 ;
    kbdrpos  =  kbdwpos  =   0 ;
    kbdcounter  =   0 ;
    diskIntrTime  =   1e60 ;
     SetupRawIo ();
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =   ( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
  Cpu :: TraceFile ( char   * name )
{
     if   (( name  ==  NULL )   ||   ( ! strcmp ( name ,   "-" )))   {
        tracefp  =  stdout ;
         return   ( 1 );
     }   else   if   (( tracefp  =  fopen ( name ,   "w" ))   ==  NULL )   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int   Cpu :: CauseException ( int  excType )
{
    uint32 ivec ;

    DBPRINTF ( 't' ,   "Exception being done (cause=0x%x @ pc=0x%x).\n" ,
             excType ,  PC ()   -   4 );
    ivec  =   GetSreg ( DLX_SREG_INTRVEC );
     OutputBasicBlock ( ivec );
     if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
        fprintf ( tracefp ,   "X %x %x\n" ,  excType ,  PC ()   -   4 );
     }
     PutSreg ( DLX_SREG_CAUSE ,  excType );
     // PC has already been incremented, so decrement it first.  If this
     // is a trap or interrupt, the PC will have already been incremented
     // (if necessary) so the IAR points to the next instruction to
     // execute.
     PutSreg ( DLX_SREG_IAR ,  PC ()   -   4 );
     // Save the current status register
     PutSreg ( DLX_SREG_ISR ,   GetSreg ( DLX_SREG_STATUS ));
     // Save the current value of register 31.  This is necessary to give
     // the interrupt handler a temporary register that can be used to
     // switch to a system stack (rather than user stack)
     PutSreg ( DLX_SREG_IR31 ,   GetIreg ( 31 ));
     // Set the next instruction to be run to be the interrupt vector.
     SetPC ( ivec );
     // Set the status register to be system mode
     PutSreg ( DLX_SREG_STATUS ,
             GetSreg ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
     // Turn off interrupts
     DisableInterrupts ();
     return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
     int
     Cpu :: VaddrToPaddr ( uint32 vaddr ,  uint32  &  paddr ,  uint32 op ,
                      uint32 pteflags )
{

     if   (( vaddr  &   0x3 )   !=   0 )   {
         CauseException ( DLX_EXC_ADDRESS );
         return   ( 0 );
     }
     // For system references, physical address is the same
     // as virtual address.  Also, if no translation bits are set, physical
     // address is set to virtual address.
    paddr  =  vaddr ;
     if   ( UserMode ())   {
         // For user mode addresses, translate using 
         if   ( StatusBit ( DLX_STATUS_PAGE_TABLE ))   {
            uint32 pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
            uint32 pteaddr ;
            uint32 offsetinpage ,  entrynum ;
            uint32 pagemask ;

            DBPRINTF ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
            pt1base  =   GetSreg ( DLX_SREG_PGTBL_BASE );
            pt1pagebits  =   GetSreg ( DLX_SREG_PGTBL_BITS );
            pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
            pt1pagebits  &=   0xffff ;
            pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
            offsetinpage  =  vaddr  &  pagemask ;
             // Mask off the low bits
            vaddr  &=   ~ pagemask ;
             if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
                 GetSreg ( DLX_SREG_PGTBL_SIZE ))   {
                DBPRINTF ( 'm' ,
                          "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
                         pt1pagebits ,  pt2pagebits ,
                          GetSreg ( DLX_SREG_PGTBL_SIZE ),  entrynum );
                 CauseException ( DLX_EXC_ACCESS );
                 return   ( 0 );
             }
            pteaddr  =  pt1base  +   4   *  entrynum ;
            paddr  =   Memory ( pteaddr );
             // If the L2 page size is the same as the L1 page size, there's
             // no L2 page table!
             if   ( pt1pagebits  !=  pt2pagebits )   {
                pt2base  =  paddr ;
                 if   ( pt2base  ==   0 )   {
                    DBPRINTF ( 'm' ,
                              "No L2 table at entry %d! (base = 0x%x)\n" ,
                             entrynum ,  pt1base );
                     CauseException ( DLX_EXC_PAGEFAULT );
                     return   ( 0 );
                 }
                pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                                          (( 1   <<
                                            ( pt1pagebits  -  pt2pagebits ))   -
                                           1 ));
                paddr  =   Memory ( pteaddr );
             }
            DBPRINTF ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
             if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
                DBPRINTF ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_PAGEFAULT );
                 return   ( 0 );
             }
             if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
                 SetMemory ( pteaddr ,
                          paddr  |   ( pteflags  &
                                    ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
             }
            paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
            paddr  |=  offsetinpage ;
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
                     vaddr  |  offsetinpage ,  paddr ,
                      Memory ( paddr ),  pt1base ,  pt1pagebits ,  entrynum );
             // Fall through for address range check
         }   else   if   ( StatusBit ( DLX_STATUS_TLB ))   {
             // TLB is fully associative
             int  tlbLine ,  gotAddr  =   0 ;
            uint32 tlbVpage ,  tlbPpage ,  pageSize ,  pageMask ,  entryBits ;

            DBPRINTF ( 'm' ,   "Translating addr 0x%x with TLB.\n" ,  vaddr );
             for   ( tlbLine  =   0 ;  tlbLine  <  DLX_TLB_NENTRIES ;  tlbLine ++ )   {
                 GetTlb ( tlbLine ,  tlbVpage ,  tlbPpage );
                pageSize  =   1   <<   ( tlbPpage  &  DLX_TLB_ENTRY_PAGESIZE_MASK );
                pageMask  =   ~ ( pageSize  -   1 );
                entryBits  =  tlbVpage  &  DLX_PTE_MASK ;
                tlbVpage  &=  pageMask ;
                 if   (( vaddr  >=   ( tlbVpage  &  pageMask ))   &&
                     ( vaddr  <   ( tlbVpage  +  pageSize ))   &&
                     ( entryBits  &  DLX_PTE_VALID ))   {
                     // Got a match!
                    gotAddr  =   1 ;
                     break ;
                 }
             }
             if   ( ! gotAddr )   {
                DBPRINTF ( 'm' ,   "No TLB entry for vaddr 0x%x.\n" ,  vaddr );
                 // Cause a TLB exception if we didn't find the page
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_TLBFAULT );
                 return   ( 0 );
             }
             AccessTlb ( tlbLine ,  DLX_PTE_REFERENCED  |
                       (( op  ==  DLX_MEM_WRITE )   ?  DLX_PTE_DIRTY  :   0 ));
            paddr  =   ( tlbPpage  &  pageMask )   |   ( vaddr  &   ~ pageMask );
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using tlb entry %d (v=%08x,p=%08x)\n" ,
                     vaddr ,  paddr ,   Memory ( paddr ),  tlbLine ,  tlbVpage ,
                     tlbPpage );
             // Fall through for address range check
         }
     }
     if   (( paddr  <=  memSize )   ||   (( paddr  >=  DLX_IO_BASE )   &&
                                ( paddr  <=   ( DLX_IO_BASE  +  DLX_IO_SIZE ))))   {
         return   ( 1 );
     }   else   {
        DBPRINTF ( 't' ,   "Illegal system address: 0x%x.\n" ,  vaddr );
         CauseException ( DLX_EXC_ACCESS );
         return   ( 0 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
  Cpu :: ReadWord ( uint32 vaddr ,  uint32  &  val ,  uint32 op )
{
    uint32 paddr ;
     int  i ;
     int  done  =   0 ;

    DBPRINTF ( 'l' ,   "Trying to read virtual address: 0x%x.\n" ,  vaddr );
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
        val  =   Memory ( paddr );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_STATUS  +   ( *   0x10 ))   {
                 if   ( disk [ i ]   !=  NULL )   {
                    val  =  disk [ i ] -> GetStatus ();
                 }   else   {
                    val  =   0 ;
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
        DBPRINTF ( 'l' ,   "Trying to load special address: 0x%x.\n" ,  paddr );
         switch   ( paddr )   {
         case  DLX_KBD_NCHARSIN :
            val  =   KbdNumInChars ();
             break ;
         case  DLX_KBD_NCHARSOUT :
            val  =   KbdNumOutChars ();
             break ;
         case  DLX_KBD_GETCHAR :
            val  =   KbdGetChar ();
             break ;
         case  DLX_GETMEMSIZE :
            val  =  memSize ;
             break ;
         case  DLX_TIMER_GETTIMER :
            val  =   GetTimer ();
             break ;
         case  DLX_TIME_MICROSECONDS :
            val  =   ( int )   ( usElapsed  %   1000000L );
             break ;
         case  DLX_TIME_SECONDS :
            val  =   ( int )   ( usElapsed  /   1000000L );
             break ;
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: WriteWord ( uint32 vaddr ,  uint32 val )
{
    uint32 paddr ;
     int  done  =   0 ;
     int  i ;

     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
                      DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
         SetMemory ( paddr ,  val );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_REQ  +   ( *   0x10 ))   {
                 if   (( disk [ i ]   !=  NULL ))   {
                    val  =  disk [ i ] -> StartIo ( val ,   this );
                     if   ( disk [ i ] -> FinishTime ()   <  diskIntrTime )   {
                        diskIntrTime  =  disk [ i ] -> FinishTime ();
                     }
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
         switch   ( paddr )   {
         case  DLX_KBD_PUTCHAR :
             KbdPutChar ( val );
             break ;
         case  DLX_KBD_INTR :
             if   ( val  ==   0 )   {
                flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
             }   else   {
                flags  |=  DLX_FLAG_KBD_INTERRUPT ;
             }
             break ;
         case  DLX_TIMER_SETTIMER :
            DBPRINTF ( 'o' ,   "Setting timer to %d us.\n" ,  val );
             SetTimer ( val );
             break ;
#if   0
         case  DLX_DISK_REQUEST :
            diskReq  =  val ;
             StartDiskIo ();
             break ;
         case  DLX_DISK_BLOCK :
            diskBlock  =  val ;
             break ;
         case  DLX_DISK_ADDR :
            diskAddr  =  val ;
             break ;
#endif
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: TestWriteWord ( uint32 vaddr )
{
    uint32 paddr ;
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void   Cpu :: Open ()
{
    uint32 name ;
     char  nameBuf [ 100 ];
     char   * tp ;
     int  accessType ;
     int  i ;

    name  =   GetParam ( 0 );
    accessType  =   GetParam ( 1 );
    DBPRINTF ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * )  memory  +  name ,
             accessType );
     switch   ( accessType )   {
     case   1 :
        tp  =   "r" ;
         break ;
     case   2 :
        tp  =   "w" ;
         break ;
     case   3 :
        tp  =   "r+" ;
         break ;
     default :
         SetResult ( 0xffffffff );
         return ;
         break ;
     }
     for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
         if   ( fp [ i ]   ==  NULL )   {
             if   ( ! CheckAddr ( name ))   {
                 SetResult ( 0xffffffff );
                 return ;
             }
            strncpy ( nameBuf ,   ( char   * )  memory  +  name ,   98 );
             // If fopen fails, it returns NULL, so it looks like no open
             // was done.
            fp [ i ]   =  fopen ( nameBuf ,  tp );
             break ;
         }
     }
     if   ( >=  DLX_MAX_FILES )   {
        i  =   - 1 ;
     }   else   if   ( fp [ i ]   ==  NULL )   {
        i  =   - errno ;
     }
    DBPRINTF ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
     SetResult ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void   Cpu :: Read ()
{
     FileIo ( DLX_FILE_READ );
}

void   Cpu :: Write ()
{
     FileIo ( DLX_FILE_WRITE );
}

void   Cpu :: FileIo ( int  kind )
{
     int  fd ;
    uint32 buf ;
     int  size ;
     int  n ;

    fd  =   GetParam ( 0 );
    buf  =   GetParam ( 1 );
    size  =   GetParam ( 2 );
    DBPRINTF ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
              ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,  fd ,  size ,  buf );
     if   ( ! CheckAddr ( buf )   ||   ( ! CheckFd ( fd )))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   ( kind  ==  DLX_FILE_WRITE )   {
        n  =  fwrite (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }   else   {
        n  =  fread (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }
     if   ( >   0 )   {
         SetResult ( n );
     }   else   if   ( feof ( fp [ fd ]))   {
         SetResult ( 0 );
     }   else   {
         SetResult ( - errno );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void   Cpu :: Seek ()
{
     int  fd ;
     int  offset ;
     int  whence ;
     int  rv ;

    fd  =   GetParam ( 0 );
    offset  =   GetParam ( 1 );
    whence  =   GetParam ( 2 );
     if   ( ! CheckFd ( fd ))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   (( rv  =  fseek ( fp [ fd ],  offset ,  whence ))   <   0 )   {
         SetResult ( rv );
     }   else   {
         SetResult ( ftell ( fp [ fd ]));
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void   Cpu :: Close ()
{
     int  fd ;
    uint32 retval ;

    fd  =   GetParam ( 0 );
     if   ( ! CheckFd ( fd ))   {
        retval  =   0xffffffff ;
     }   else   {
        retval  =  fclose ( fp [ fd ]);
     }
    DBPRINTF ( 'F' ,   "Closing file %d.\n" ,  fd );
    fp [ fd ]   =  NULL ;
     SetResult ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void   Cpu :: Random ()
{
     int  n ;

    n  =  random ();
     SetResult ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void   Cpu :: Srandom ()
{
    uint32 seed ;

    seed  =   GetParam ( 0 );
    srandom ( seed );
     SetResult ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetTime
//
//  Get the current (real world) time.
//
//----------------------------------------------------------------------
void   Cpu :: GetTime ()
{
     SetResult ( time (( time_t  * )   0 ));
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32  Cpu :: GetParam ( int  p )
{
    uint32 stackPtr ;

    stackPtr  =   GetIreg ( 29 );
     return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void   Cpu :: SetResult ( uint32 r )
{
     PutIreg ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void   Cpu :: Printf ()
{
    uint32 fmtaddr ;
     char   * c ;
    uint32 args [ 10 ];
     int  nargs  =   0 ;

    fmtaddr  =   GetParam ( 0 );
     // 
     for   ( =  fmtaddr  +   ( char   * )  memory ;   * !=   '\0' ;  c ++ )   {
         if   ( * ==   '%' )   {
             // if this is a %%, skip past second %
             if   ( * ( +   1 )   ==   '%' )   {
                c ++ ;
                 continue ;
             }
             // Get the current argument off the stack
            args [ nargs ]   =   GetParam ( nargs  +   1 );
            DBPRINTF ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
                     args [ nargs ],  args [ nargs ]);
             while   ( 1 )   {
                c ++ ;
                 if   ( * ==   's' )   {
                     // If it's a string, the address is relative to the
                     // start of emulated memory.
                    args [ nargs ]   +=   ( uint32 )  memory ;
                     break ;
                 }   else   if   ( * ==   'l' )   {
                     continue ;
                 }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
                     // If it's a floating point number, it'll be passed as
                     // a double, so grab the second word also.
                    nargs  +=   1 ;
                    args [ nargs ]   =   GetParam ( nargs  +   1 );
                     break ;
                 }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
                     // If it's another formatting character, it's not
                     // a string, but we can leave the loop anyway.
                     break ;
                 }
             }
            nargs  +=   1 ;
         }
     }
    printf ( fmtaddr  +   ( char   * )  memory ,
           args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
           args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
    fflush ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void   Cpu :: Exit ()
{
     struct  timeval t ;

    printf ( "Exiting at program request.\n" );
    printf ( "Instructions executed: %.0lf\n" ,   ( double )  instrsExecuted );
    printf ( "Time simulated: %.03lf secs\n" ,   ( double )  usElapsed  /   1e6 );
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =
         (( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 )   -  realElapsed ;
    printf ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
    printf
         ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
          ( double )  instrsExecuted  *   1e-6   /  realElapsed );
     ClearRawIo ();
    exit ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int   Cpu :: ExecOne ()
{
     int  i ;
    uint32 curInst ;
    uint32 tmpPc ;
    uint32 curOp ;
    uint32 retval ;
    uint32 funcCode ;              // subcode for RRR & FP ops
     static   int  kbdIntrPending  =   0 ;

     if   ( ++ tickCounter  >=  instPerUs )   {
        tickCounter  =   0 ;
        usElapsed  +=   1 ;
        instrsExecuted  +=  instPerUs ;
     }
     // Increment PC before checking for interrupts because CauseException
     // will subtract 4 off the PC before placing the value into the IAR.
     // By incrementing here, we ensure that the current instruction is
     // the one whose address goes into the IAR.
     SetPC ( PC ()   +   4 );
     // Check for an input character.  If we got one, remember it so that
     // we can interrupt next time interrupts are enabled.
     if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
        kbdcounter  =   0 ;
        kbdIntrPending  |=   GetCharIfAvail ();
        stopnext  =   ( debugger  &&  debugger -> HasData ());
     }

     if   ( IntrLevel ()   <   8 )   {
         // Check for previous keyboard interrupt
         if   ( kbdIntrPending )   {
            DBPRINTF ( 't' ,   "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
            kbdIntrPending  =   0 ;   // Reset to no pending interrupt
             CauseException ( DLX_EXC_KBD );
             return   ( 0 );
         }   else   if   ( diskIntrTime  <  usElapsed )   {
             int  nextDisk  =   - 1 ;
            DBPRINTF ( 't' ,   "Disk interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
             CauseException ( DLX_EXC_DISK );
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  usElapsed ))   {
                    disk [ i ] -> FinishIo ( this );
                 }
             }
            diskIntrTime  =   1e60 ;
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  diskIntrTime ))   {
                    diskIntrTime  =  disk [ i ] -> FinishTime ();
                    nextDisk  =  i ;
                 }
             }
            DBPRINTF ( 'K' ,   "Disk interrupt time (disk %d) is %g.\n" ,
                     nextDisk ,  diskIntrTime );
             return   ( 0 );
         }   else   if   ( timerInterrupt  <  usElapsed )   {
            DBPRINTF ( 't' ,
                      "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
                     PC ()   -   4 ,   ( double )  usElapsed ,
                      ( double )  timerInterrupt );
            timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
             CauseException ( DLX_EXC_TIMER );
             return   ( 0 );
         }
     }

     if   ( ! ReadWord ( PC ()   -   4 ,  curInst ,  DLX_MEM_INSTR ))   {
        DBPRINTF ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC ()   -   4 );
         return   ( 0 );
     }
    curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
    DBPRINTF ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
              ( int )  instrsExecuted  %   1000000 ,
             curInst ,  PC ()   -   4 ,  curOp ,
              ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
             DLX_ALU_FUNC_CODE_MASK );
     switch   ( curOp )   {
     case   0x00 :                    // ALU and other R-R operations
        funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
                    DLX_ALU_FUNC_CODE_MASK );
        retval  =   ( rrrInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     case   0x01 :                    // FP operations
        funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
                    DLX_FPU_FUNC_CODE_MASK );
        retval  =   ( fpInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     default :
        retval  =   ( regInstrs [ curOp ]. handler )   ( curInst ,   this );
         break ;
     }
     if   ( stopnext )   {
        stopnext  =   false ;
         DebugControl ();
     }
     return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format is elf.
//  basically hands just hands control to the elf stuff
//
//----------------------------------------------------------------------


extern   "C"   {
#include   "elf.h"
     int   Cpu :: LoadMemory ( const   char   * file ,  uint32  &  startAt )   {
         Elf32_EHdr  hdr ;
        FILE  * fp ;

         if   (( fp  =  fopen ( file ,   "r" ))   ==  NULL )   {
            fprintf ( stderr ,   "Couldn't open file\n" );
             return   ( 0 );
         }

         if   ( - 1   ==  read_elfheader ( fp ,   & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to readelf header\n\n\n" );
             return   ( 0 );
         }
        startAt  =  ntohl ( hdr . e_entry );

         if   ( - 1   ==
            load_program ( fp ,   (( unsigned   char   * )   (( void   * )  memory )),
                          & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to load program\n\n\n" );
             return   ( 0 );
         }

        fclose ( fp );
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void   Cpu :: SetTimer ( uint32 usecs )
{
    timerInterrupt  =  usElapsed  +  usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::GetTimer
//
//----------------------------------------------------------------------
uint32  Cpu :: GetTimer ()
{
     return   (( uint32 )   ( timerInterrupt  -  usElapsed ));
}


//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32  Cpu :: KbdGetChar ()
{
    uint32 v ;

     if   ( kbdbufferedchars  ==   0 )   {
         return   ( 0 );
     }
    v  =  kbdbuffer [ kbdrpos ++ ];
    kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
    kbdbufferedchars -- ;
     return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void   Cpu :: IgnoreExit ( int  ignore )
{
    flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
     if   ( ignore )   {
        flags  |=  DLX_FLAG_IGNORE_EXIT ;
     }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void   Cpu :: OutputBasicBlockActual ()
{
     int  i ,  ninstrs ;

    ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
     // Print out the basic block information here
     if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
        fprintf ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
     }
     if   ( flags  &  DLX_TRACE_MEMORY )   {
         for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
            fprintf ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,
                    accesses [ i ]. reg ,  accesses [ i ]. addr ,  accesses [ i ]. value );
         }
     }
    naccesses  =   0 ;
}

//----------------------------------------------------------------------
//
//  Cpu::DebugControl
//
//  Hands control to the debugger
//
//----------------------------------------------------------------------
void   Cpu :: DebugControl ()
{
     if   ( debugger )
        stopnext  =  debugger -> TakeControl ();
}

home/bshapir/cs314/project4/project4.tgz

home/bshapir/cs314/project4/project4.tar

option1/lab4_2/lab4.ppt

Lab 4: Memory Management

Lab 4

  • Part 1: Dynamic one-level paging
  • Part 2: Dynamic two-level paging
  • Part 3: Shared memory

lab4-1: Dynamic one-level page

  • DLXOS so far
  • Static one-level page table
  • Single 64KB page
  • memory.h:
  • #define MEMORY_L1_PAGE_SIZE_BITS 16
  • #define L1_MAX_ENTRIES 0x01
  • process.c: ProcessFork()
  • pcb->npages = 1;

lab4-1: Dynamic one-level page

  • Page size: 8kb
  • 256 total pages, 2mb total space
  • Max 512kb virtual space per process
  • Max 16 physical pages per process
  • Track using PCB->npages
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Lab4-1: The Translation

Page 0

Page 1

Page 2

Page N-2

Page N-1

Frame

Number

Valid

Flag

page table

Virtual Address

offset

Physical Address

offset

(512KB  19bit)

Frame Number

(2MB  21bit)

Page Number

Lab4-1: To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, …
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address using page table
  • process.c: ProcessFork()
  • Allocate initial pages (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exits.

Lab4-1: More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

Utility functions

  • MemoryAllocPage()
  • Allocate a page of memory and return page number.
  • MemorySetupPte()
  • Given a page number, return the page table entry.
  • MemoryFreePage()
  • Given a page table entry, free the page.

Lab4-2: Dynamic two-level paging

  • Virtual address space per process: 16MB
  • How many bits is virtual address?
  • Page size: 8kb
  • How many pages one process has?
  • One L1 page table entry corresponds to 512kb
  • How many entries in L1, L2 page tables?
  • Max 1MB physical space per process
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Two Level Paging

L1

Virtual Memory

16MB

0

L2

To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, L2_MAX_ENTRIES …
  • process.c: ProcessFork()
  • Allocate initial L2 page table and initial page (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exit.
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address

More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix L1, L2 page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

option1/lab4_2/dlxsim.cc

option1/lab4_2/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  This file contains the routines that manage higher-level
//  functionality.  Instruction execution is in a separate file.
//

/* Copyright (c) 1999-2004 by Ethan L. Miller

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.
*/

static   char  rcsid []   =
     "$Id: dlxsim.cc,v 1.16 2004/10/01 18:43:40 elm Exp $" ;
char  rcsDlxsimDate []   =   "$Date: 2004/10/01 18:43:40 $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   < time . h >
#include   < signal . h >
#include   < fcntl . h >
#include   "dlx.h"
#include   "dlx-inlines.h"

extern   int  errno ;
char  debug [ 100 ];
//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu ( int  msize ) : debugger ( NULL )
{
     int  i ;
     struct  timeval t ;

    flags  =   0 ;
    usElapsed  =   0 ;
    tickCounter  =   0 ;
    instrsExecuted  =   0 ;
    instPerUs  =   1 ;
     for   ( =   0 ;  i  <   32 ;  i ++ )   {
        sreg [ i ]   =   0 ;
        ireg [ i ]   =   0 ;
        freg [ i ]   =   0 ;
     }
     SetStatusBit ( DLX_STATUS_PAGE_TABLE );
     SetStatusBit ( DLX_STATUS_SYSMODE );
     EnableInterrupts ();
    timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
    memSize  =  msize ;
    memory  =   new  uint32 [ msize  /   sizeof ( uint32 )];
    basicBlockStart  =   1 ;          // basic block can never start at address 1!
     // Initialize the keyboard I/O stuff.
    kbdbufferedchars  =   0 ;
    kbdrpos  =  kbdwpos  =   0 ;
    kbdcounter  =   0 ;
    diskIntrTime  =   1e60 ;
     SetupRawIo ();
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =   ( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
  Cpu :: TraceFile ( char   * name )
{
     if   (( name  ==  NULL )   ||   ( ! strcmp ( name ,   "-" )))   {
        tracefp  =  stdout ;
         return   ( 1 );
     }   else   if   (( tracefp  =  fopen ( name ,   "w" ))   ==  NULL )   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int   Cpu :: CauseException ( int  excType )
{
    uint32 ivec ;

    DBPRINTF ( 't' ,   "Exception being done (cause=0x%x @ pc=0x%x).\n" ,
             excType ,  PC ()   -   4 );
    ivec  =   GetSreg ( DLX_SREG_INTRVEC );
     OutputBasicBlock ( ivec );
     if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
        fprintf ( tracefp ,   "X %x %x\n" ,  excType ,  PC ()   -   4 );
     }
     PutSreg ( DLX_SREG_CAUSE ,  excType );
     // PC has already been incremented, so decrement it first.  If this
     // is a trap or interrupt, the PC will have already been incremented
     // (if necessary) so the IAR points to the next instruction to
     // execute.
     PutSreg ( DLX_SREG_IAR ,  PC ()   -   4 );
     // Save the current status register
     PutSreg ( DLX_SREG_ISR ,   GetSreg ( DLX_SREG_STATUS ));
     // Save the current value of register 31.  This is necessary to give
     // the interrupt handler a temporary register that can be used to
     // switch to a system stack (rather than user stack)
     PutSreg ( DLX_SREG_IR31 ,   GetIreg ( 31 ));
     // Set the next instruction to be run to be the interrupt vector.
     SetPC ( ivec );
     // Set the status register to be system mode
     PutSreg ( DLX_SREG_STATUS ,
             GetSreg ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
     // Turn off interrupts
     DisableInterrupts ();
     return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
     int
     Cpu :: VaddrToPaddr ( uint32 vaddr ,  uint32  &  paddr ,  uint32 op ,
                      uint32 pteflags )
{

     if   (( vaddr  &   0x3 )   !=   0 )   {
         CauseException ( DLX_EXC_ADDRESS );
         return   ( 0 );
     }
     // For system references, physical address is the same
     // as virtual address.  Also, if no translation bits are set, physical
     // address is set to virtual address.
    paddr  =  vaddr ;
     if   ( UserMode ())   {
         // For user mode addresses, translate using 
         if   ( StatusBit ( DLX_STATUS_PAGE_TABLE ))   {
            uint32 pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
            uint32 pteaddr ;
            uint32 offsetinpage ,  entrynum ;
            uint32 pagemask ;

            DBPRINTF ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
            pt1base  =   GetSreg ( DLX_SREG_PGTBL_BASE );
            pt1pagebits  =   GetSreg ( DLX_SREG_PGTBL_BITS );
            pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
            pt1pagebits  &=   0xffff ;
            pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
            offsetinpage  =  vaddr  &  pagemask ;
             // Mask off the low bits
            vaddr  &=   ~ pagemask ;
             if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
                 GetSreg ( DLX_SREG_PGTBL_SIZE ))   {
                DBPRINTF ( 'm' ,
                          "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
                         pt1pagebits ,  pt2pagebits ,
                          GetSreg ( DLX_SREG_PGTBL_SIZE ),  entrynum );
                 CauseException ( DLX_EXC_ACCESS );
                 return   ( 0 );
             }
            pteaddr  =  pt1base  +   4   *  entrynum ;
            paddr  =   Memory ( pteaddr );
             // If the L2 page size is the same as the L1 page size, there's
             // no L2 page table!
             if   ( pt1pagebits  !=  pt2pagebits )   {
                pt2base  =  paddr ;
                 if   ( pt2base  ==   0 )   {
                    DBPRINTF ( 'm' ,
                              "No L2 table at entry %d! (base = 0x%x)\n" ,
                             entrynum ,  pt1base );
                     CauseException ( DLX_EXC_PAGEFAULT );
                     return   ( 0 );
                 }
                pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                                          (( 1   <<
                                            ( pt1pagebits  -  pt2pagebits ))   -
                                           1 ));
                paddr  =   Memory ( pteaddr );
             }
            DBPRINTF ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
             if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
                DBPRINTF ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_PAGEFAULT );
                 return   ( 0 );
             }
             if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
                 SetMemory ( pteaddr ,
                          paddr  |   ( pteflags  &
                                    ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
             }
            paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
            paddr  |=  offsetinpage ;
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
                     vaddr  |  offsetinpage ,  paddr ,
                      Memory ( paddr ),  pt1base ,  pt1pagebits ,  entrynum );
             // Fall through for address range check
         }   else   if   ( StatusBit ( DLX_STATUS_TLB ))   {
             // TLB is fully associative
             int  tlbLine ,  gotAddr  =   0 ;
            uint32 tlbVpage ,  tlbPpage ,  pageSize ,  pageMask ,  entryBits ;

            DBPRINTF ( 'm' ,   "Translating addr 0x%x with TLB.\n" ,  vaddr );
             for   ( tlbLine  =   0 ;  tlbLine  <  DLX_TLB_NENTRIES ;  tlbLine ++ )   {
                 GetTlb ( tlbLine ,  tlbVpage ,  tlbPpage );
                pageSize  =   1   <<   ( tlbPpage  &  DLX_TLB_ENTRY_PAGESIZE_MASK );
                pageMask  =   ~ ( pageSize  -   1 );
                entryBits  =  tlbVpage  &  DLX_PTE_MASK ;
                tlbVpage  &=  pageMask ;
                 if   (( vaddr  >=   ( tlbVpage  &  pageMask ))   &&
                     ( vaddr  <   ( tlbVpage  +  pageSize ))   &&
                     ( entryBits  &  DLX_PTE_VALID ))   {
                     // Got a match!
                    gotAddr  =   1 ;
                     break ;
                 }
             }
             if   ( ! gotAddr )   {
                DBPRINTF ( 'm' ,   "No TLB entry for vaddr 0x%x.\n" ,  vaddr );
                 // Cause a TLB exception if we didn't find the page
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_TLBFAULT );
                 return   ( 0 );
             }
             AccessTlb ( tlbLine ,  DLX_PTE_REFERENCED  |
                       (( op  ==  DLX_MEM_WRITE )   ?  DLX_PTE_DIRTY  :   0 ));
            paddr  =   ( tlbPpage  &  pageMask )   |   ( vaddr  &   ~ pageMask );
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using tlb entry %d (v=%08x,p=%08x)\n" ,
                     vaddr ,  paddr ,   Memory ( paddr ),  tlbLine ,  tlbVpage ,
                     tlbPpage );
             // Fall through for address range check
         }
     }
     if   (( paddr  <=  memSize )   ||   (( paddr  >=  DLX_IO_BASE )   &&
                                ( paddr  <=   ( DLX_IO_BASE  +  DLX_IO_SIZE ))))   {
         return   ( 1 );
     }   else   {
        DBPRINTF ( 't' ,   "Illegal system address: 0x%x.\n" ,  vaddr );
         CauseException ( DLX_EXC_ACCESS );
         return   ( 0 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
  Cpu :: ReadWord ( uint32 vaddr ,  uint32  &  val ,  uint32 op )
{
    uint32 paddr ;
     int  i ;
     int  done  =   0 ;

    DBPRINTF ( 'l' ,   "Trying to read virtual address: 0x%x.\n" ,  vaddr );
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
        val  =   Memory ( paddr );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_STATUS  +   ( *   0x10 ))   {
                 if   ( disk [ i ]   !=  NULL )   {
                    val  =  disk [ i ] -> GetStatus ();
                 }   else   {
                    val  =   0 ;
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
        DBPRINTF ( 'l' ,   "Trying to load special address: 0x%x.\n" ,  paddr );
         switch   ( paddr )   {
         case  DLX_KBD_NCHARSIN :
            val  =   KbdNumInChars ();
             break ;
         case  DLX_KBD_NCHARSOUT :
            val  =   KbdNumOutChars ();
             break ;
         case  DLX_KBD_GETCHAR :
            val  =   KbdGetChar ();
             break ;
         case  DLX_GETMEMSIZE :
            val  =  memSize ;
             break ;
         case  DLX_TIMER_GETTIMER :
            val  =   GetTimer ();
             break ;
         case  DLX_TIME_MICROSECONDS :
            val  =   ( int )   ( usElapsed  %   1000000L );
             break ;
         case  DLX_TIME_SECONDS :
            val  =   ( int )   ( usElapsed  /   1000000L );
             break ;
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: WriteWord ( uint32 vaddr ,  uint32 val )
{
    uint32 paddr ;
     int  done  =   0 ;
     int  i ;

     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
                      DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
         SetMemory ( paddr ,  val );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_REQ  +   ( *   0x10 ))   {
                 if   (( disk [ i ]   !=  NULL ))   {
                    val  =  disk [ i ] -> StartIo ( val ,   this );
                     if   ( disk [ i ] -> FinishTime ()   <  diskIntrTime )   {
                        diskIntrTime  =  disk [ i ] -> FinishTime ();
                     }
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
         switch   ( paddr )   {
         case  DLX_KBD_PUTCHAR :
             KbdPutChar ( val );
             break ;
         case  DLX_KBD_INTR :
             if   ( val  ==   0 )   {
                flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
             }   else   {
                flags  |=  DLX_FLAG_KBD_INTERRUPT ;
             }
             break ;
         case  DLX_TIMER_SETTIMER :
            DBPRINTF ( 'o' ,   "Setting timer to %d us.\n" ,  val );
             SetTimer ( val );
             break ;
#if   0
         case  DLX_DISK_REQUEST :
            diskReq  =  val ;
             StartDiskIo ();
             break ;
         case  DLX_DISK_BLOCK :
            diskBlock  =  val ;
             break ;
         case  DLX_DISK_ADDR :
            diskAddr  =  val ;
             break ;
#endif
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: TestWriteWord ( uint32 vaddr )
{
    uint32 paddr ;
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void   Cpu :: Open ()
{
    uint32 name ;
     char  nameBuf [ 100 ];
     char   * tp ;
     int  accessType ;
     int  i ;

    name  =   GetParam ( 0 );
    accessType  =   GetParam ( 1 );
    DBPRINTF ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * )  memory  +  name ,
             accessType );
     switch   ( accessType )   {
     case   1 :
        tp  =   "r" ;
         break ;
     case   2 :
        tp  =   "w" ;
         break ;
     case   3 :
        tp  =   "r+" ;
         break ;
     default :
         SetResult ( 0xffffffff );
         return ;
         break ;
     }
     for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
         if   ( fp [ i ]   ==  NULL )   {
             if   ( ! CheckAddr ( name ))   {
                 SetResult ( 0xffffffff );
                 return ;
             }
            strncpy ( nameBuf ,   ( char   * )  memory  +  name ,   98 );
             // If fopen fails, it returns NULL, so it looks like no open
             // was done.
            fp [ i ]   =  fopen ( nameBuf ,  tp );
             break ;
         }
     }
     if   ( >=  DLX_MAX_FILES )   {
        i  =   - 1 ;
     }   else   if   ( fp [ i ]   ==  NULL )   {
        i  =   - errno ;
     }
    DBPRINTF ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
     SetResult ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void   Cpu :: Read ()
{
     FileIo ( DLX_FILE_READ );
}

void   Cpu :: Write ()
{
     FileIo ( DLX_FILE_WRITE );
}

void   Cpu :: FileIo ( int  kind )
{
     int  fd ;
    uint32 buf ;
     int  size ;
     int  n ;

    fd  =   GetParam ( 0 );
    buf  =   GetParam ( 1 );
    size  =   GetParam ( 2 );
    DBPRINTF ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
              ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,  fd ,  size ,  buf );
     if   ( ! CheckAddr ( buf )   ||   ( ! CheckFd ( fd )))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   ( kind  ==  DLX_FILE_WRITE )   {
        n  =  fwrite (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }   else   {
        n  =  fread (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }
     if   ( >   0 )   {
         SetResult ( n );
     }   else   if   ( feof ( fp [ fd ]))   {
         SetResult ( 0 );
     }   else   {
         SetResult ( - errno );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void   Cpu :: Seek ()
{
     int  fd ;
     int  offset ;
     int  whence ;
     int  rv ;

    fd  =   GetParam ( 0 );
    offset  =   GetParam ( 1 );
    whence  =   GetParam ( 2 );
     if   ( ! CheckFd ( fd ))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   (( rv  =  fseek ( fp [ fd ],  offset ,  whence ))   <   0 )   {
         SetResult ( rv );
     }   else   {
         SetResult ( ftell ( fp [ fd ]));
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void   Cpu :: Close ()
{
     int  fd ;
    uint32 retval ;

    fd  =   GetParam ( 0 );
     if   ( ! CheckFd ( fd ))   {
        retval  =   0xffffffff ;
     }   else   {
        retval  =  fclose ( fp [ fd ]);
     }
    DBPRINTF ( 'F' ,   "Closing file %d.\n" ,  fd );
    fp [ fd ]   =  NULL ;
     SetResult ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void   Cpu :: Random ()
{
     int  n ;

    n  =  random ();
     SetResult ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void   Cpu :: Srandom ()
{
    uint32 seed ;

    seed  =   GetParam ( 0 );
    srandom ( seed );
     SetResult ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetTime
//
//  Get the current (real world) time.
//
//----------------------------------------------------------------------
void   Cpu :: GetTime ()
{
     SetResult ( time (( time_t  * )   0 ));
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32  Cpu :: GetParam ( int  p )
{
    uint32 stackPtr ;

    stackPtr  =   GetIreg ( 29 );
     return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void   Cpu :: SetResult ( uint32 r )
{
     PutIreg ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void   Cpu :: Printf ()
{
    uint32 fmtaddr ;
     char   * c ;
    uint32 args [ 10 ];
     int  nargs  =   0 ;

    fmtaddr  =   GetParam ( 0 );
     // 
     for   ( =  fmtaddr  +   ( char   * )  memory ;   * !=   '\0' ;  c ++ )   {
         if   ( * ==   '%' )   {
             // if this is a %%, skip past second %
             if   ( * ( +   1 )   ==   '%' )   {
                c ++ ;
                 continue ;
             }
             // Get the current argument off the stack
            args [ nargs ]   =   GetParam ( nargs  +   1 );
            DBPRINTF ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
                     args [ nargs ],  args [ nargs ]);
             while   ( 1 )   {
                c ++ ;
                 if   ( * ==   's' )   {
                     // If it's a string, the address is relative to the
                     // start of emulated memory.
                    args [ nargs ]   +=   ( uint32 )  memory ;
                     break ;
                 }   else   if   ( * ==   'l' )   {
                     continue ;
                 }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
                     // If it's a floating point number, it'll be passed as
                     // a double, so grab the second word also.
                    nargs  +=   1 ;
                    args [ nargs ]   =   GetParam ( nargs  +   1 );
                     break ;
                 }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
                     // If it's another formatting character, it's not
                     // a string, but we can leave the loop anyway.
                     break ;
                 }
             }
            nargs  +=   1 ;
         }
     }
    printf ( fmtaddr  +   ( char   * )  memory ,
           args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
           args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
    fflush ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void   Cpu :: Exit ()
{
     struct  timeval t ;

    printf ( "Exiting at program request.\n" );
    printf ( "Instructions executed: %.0lf\n" ,   ( double )  instrsExecuted );
    printf ( "Time simulated: %.03lf secs\n" ,   ( double )  usElapsed  /   1e6 );
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =
         (( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 )   -  realElapsed ;
    printf ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
    printf
         ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
          ( double )  instrsExecuted  *   1e-6   /  realElapsed );
     ClearRawIo ();
    exit ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int   Cpu :: ExecOne ()
{
     int  i ;
    uint32 curInst ;
    uint32 tmpPc ;
    uint32 curOp ;
    uint32 retval ;
    uint32 funcCode ;              // subcode for RRR & FP ops
     static   int  kbdIntrPending  =   0 ;

     if   ( ++ tickCounter  >=  instPerUs )   {
        tickCounter  =   0 ;
        usElapsed  +=   1 ;
        instrsExecuted  +=  instPerUs ;
     }
     // Increment PC before checking for interrupts because CauseException
     // will subtract 4 off the PC before placing the value into the IAR.
     // By incrementing here, we ensure that the current instruction is
     // the one whose address goes into the IAR.
     SetPC ( PC ()   +   4 );
     // Check for an input character.  If we got one, remember it so that
     // we can interrupt next time interrupts are enabled.
     if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
        kbdcounter  =   0 ;
        kbdIntrPending  |=   GetCharIfAvail ();
        stopnext  =   ( debugger  &&  debugger -> HasData ());
     }

     if   ( IntrLevel ()   <   8 )   {
         // Check for previous keyboard interrupt
         if   ( kbdIntrPending )   {
            DBPRINTF ( 't' ,   "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
            kbdIntrPending  =   0 ;   // Reset to no pending interrupt
             CauseException ( DLX_EXC_KBD );
             return   ( 0 );
         }   else   if   ( diskIntrTime  <  usElapsed )   {
             int  nextDisk  =   - 1 ;
            DBPRINTF ( 't' ,   "Disk interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
             CauseException ( DLX_EXC_DISK );
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  usElapsed ))   {
                    disk [ i ] -> FinishIo ( this );
                 }
             }
            diskIntrTime  =   1e60 ;
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  diskIntrTime ))   {
                    diskIntrTime  =  disk [ i ] -> FinishTime ();
                    nextDisk  =  i ;
                 }
             }
            DBPRINTF ( 'K' ,   "Disk interrupt time (disk %d) is %g.\n" ,
                     nextDisk ,  diskIntrTime );
             return   ( 0 );
         }   else   if   ( timerInterrupt  <  usElapsed )   {
            DBPRINTF ( 't' ,
                      "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
                     PC ()   -   4 ,   ( double )  usElapsed ,
                      ( double )  timerInterrupt );
            timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
             CauseException ( DLX_EXC_TIMER );
             return   ( 0 );
         }
     }

     if   ( ! ReadWord ( PC ()   -   4 ,  curInst ,  DLX_MEM_INSTR ))   {
        DBPRINTF ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC ()   -   4 );
         return   ( 0 );
     }
    curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
    DBPRINTF ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
              ( int )  instrsExecuted  %   1000000 ,
             curInst ,  PC ()   -   4 ,  curOp ,
              ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
             DLX_ALU_FUNC_CODE_MASK );
     switch   ( curOp )   {
     case   0x00 :                    // ALU and other R-R operations
        funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
                    DLX_ALU_FUNC_CODE_MASK );
        retval  =   ( rrrInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     case   0x01 :                    // FP operations
        funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
                    DLX_FPU_FUNC_CODE_MASK );
        retval  =   ( fpInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     default :
        retval  =   ( regInstrs [ curOp ]. handler )   ( curInst ,   this );
         break ;
     }
     if   ( stopnext )   {
        stopnext  =   false ;
         DebugControl ();
     }
     return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format is elf.
//  basically hands just hands control to the elf stuff
//
//----------------------------------------------------------------------


extern   "C"   {
#include   "elf.h"
     int   Cpu :: LoadMemory ( const   char   * file ,  uint32  &  startAt )   {
         Elf32_EHdr  hdr ;
        FILE  * fp ;

         if   (( fp  =  fopen ( file ,   "r" ))   ==  NULL )   {
            fprintf ( stderr ,   "Couldn't open file\n" );
             return   ( 0 );
         }

         if   ( - 1   ==  read_elfheader ( fp ,   & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to readelf header\n\n\n" );
             return   ( 0 );
         }
        startAt  =  ntohl ( hdr . e_entry );

         if   ( - 1   ==
            load_program ( fp ,   (( unsigned   char   * )   (( void   * )  memory )),
                          & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to load program\n\n\n" );
             return   ( 0 );
         }

        fclose ( fp );
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void   Cpu :: SetTimer ( uint32 usecs )
{
    timerInterrupt  =  usElapsed  +  usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::GetTimer
//
//----------------------------------------------------------------------
uint32  Cpu :: GetTimer ()
{
     return   (( uint32 )   ( timerInterrupt  -  usElapsed ));
}


//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32  Cpu :: KbdGetChar ()
{
    uint32 v ;

     if   ( kbdbufferedchars  ==   0 )   {
         return   ( 0 );
     }
    v  =  kbdbuffer [ kbdrpos ++ ];
    kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
    kbdbufferedchars -- ;
     return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void   Cpu :: IgnoreExit ( int  ignore )
{
    flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
     if   ( ignore )   {
        flags  |=  DLX_FLAG_IGNORE_EXIT ;
     }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void   Cpu :: OutputBasicBlockActual ()
{
     int  i ,  ninstrs ;

    ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
     // Print out the basic block information here
     if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
        fprintf ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
     }
     if   ( flags  &  DLX_TRACE_MEMORY )   {
         for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
            fprintf ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,
                    accesses [ i ]. reg ,  accesses [ i ]. addr ,  accesses [ i ]. value );
         }
     }
    naccesses  =   0 ;
}

//----------------------------------------------------------------------
//
//  Cpu::DebugControl
//
//  Hands control to the debugger
//
//----------------------------------------------------------------------
void   Cpu :: DebugControl ()
{
     if   ( debugger )
        stopnext  =  debugger -> TakeControl ();
}

option1/lab4_2/src/queue.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool)>>16)&0xffff addui r2,r2,(_linkpool)&0xffff L63: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1: .ascii "%s: %s\n\000" .align 2 LC2: .ascii "QueueFreeLink\000" .align 2 LC3: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC2)>>16)&0xffff addui r1,r1,(LC2)&0xffff sw 4(r29),r1 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L77: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4: .ascii "QueueAllocLink\000" .align 2 LC5: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97: addi r4,r0,#0 sw (r3),r4 j L98 nop ; not filled. L92: addi r3,r0,#0 L98: snei r1,r3,#0 bnez r1,L100 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC4)>>16)&0xffff addui r1,r1,(LC4)&0xffff sw 4(r29),r1 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L100: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool: .space 6400

option1/lab4_2/src/memory.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61 nop ; not filled. addi r2,r3,#31 L61: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68 nop ; not filled. addui r2,r2,#65535 L68: srai r8,r2,#0x10 lhi r3,((_pagestart)>>16)&0xffff addui r3,r3,(_pagestart)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69 nop ; not filled. addui r2,r2,#65535 L69: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax)>>16)&0xffff addui r3,r3,(_freemapmax)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70 nop ; not filled. addi r2,r8,#62 L70: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-16 lhi r11,((LC1)>>16)&0xffff addui r11,r11,(LC1)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop ; not filled. addi r29,r29,#16 L71: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73 nop ; not filled. L74: addi r29,r29,#-8 lhi r11,((LC2)>>16)&0xffff addui r11,r11,(LC2)&0xffff sw (r29),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L73: addi r2,r0,#0 lhi r4,((_freemapmax)>>16)&0xffff addui r4,r4,(_freemapmax)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76 nop ; not filled. lhi r3,((_freepages)>>16)&0xffff addui r3,r3,(_freepages)&0xffff L78: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78 nop ; not filled. L76: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81 nop ; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone)>>16)&0xffff addui r9,r9,(_negativeone)&0xffff L83: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85 nop ; not filled. addi r2,r4,#31 L85: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages)>>16)&0xffff addui r11,r11,(_freepages)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82 nop ; not filled. L89: addi r29,r29,#-16 lhi r11,((LC0)>>16)&0xffff addui r11,r11,(LC0)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L82: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83 nop ; not filled. L81: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-8 lhi r11,((LC3)>>16)&0xffff addui r11,r11,(LC3)&0xffff sw (r29),r11 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42: .word 0 .align 2 LC4: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111 nop ; not filled. addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110 nop ; not filled. L111: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L112: lhi r2,((_mapnum42)>>16)&0xffff addui r2,r2,(_mapnum42)&0xffff lw r1,(r2) lhi r4,((_freepages)>>16)&0xffff addui r4,r4,(_freepages)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115 nop ; not filled. lhi r1,((_freemapmax)>>16)&0xffff addui r1,r1,(_freemapmax)&0xffff lw r3,(r1) L116: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114 nop ; not filled. addi r7,r0,#0 sw (r2),r7 L114: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116 nop ; not filled. L115: lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120 nop ; not filled. addi r2,r0,#1 L121: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121 nop ; not filled. L120: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42)>>16)&0xffff addui r5,r5,(_mapnum42)&0xffff lw r3,(r5) lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125 nop ; not filled. L126: addi r29,r29,#-16 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L125: lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129 nop ; not filled. addi r2,r6,#31 L129: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133 nop ; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128 nop ; not filled. L133: addi r29,r29,#-16 lhi r7,((LC0)>>16)&0xffff addui r7,r7,(LC0)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L128: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134 nop ; not filled. L135: addi r29,r29,#-16 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L134: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140 nop ; not filled. L139: addi r1,r0,#0 L140: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L168: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170 nop ; not filled. addi r31,r0,#0 j L169 nop ; not filled. L170: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169: snei r1,r31,#0 beqz r1,L167 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172 nop ; not filled. add r2,r0,r3 L172: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168 nop ; not filled. L167: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L192: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194 nop ; not filled. addi r31,r0,#0 j L193 nop ; not filled. L194: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193: snei r1,r31,#0 beqz r1,L191 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197 nop ; not filled. add r2,r0,r3 L197: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192 nop ; not filled. L191: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61: .word 13316 .align 2 LC8: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214 nop ; not filled. lhi r1,((_invalidOps61)>>16)&0xffff addui r1,r1,(_invalidOps61)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213 nop ; not filled. L214: addi r1,r0,#-1 j L218 nop ; not filled. L213: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215 nop ; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216 nop ; not filled. L217: addi r29,r29,#-24 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L216: add r1,r0,r4 L218: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart: .space 4 .align 2 _freemapmax: .space 4 .align 2 _nfreepages: .space 4 .align 2 _freepages: .space 8192

option1/lab4_2/src/userprog.c

#include "lab4.h" #define MAIN_TEST main(int argc, char *argv[]) { int TestcaseId=0; switch(argc) { case 2: TestcaseId=dstrtol(argv[1],NULL,10); Printf("Testing case %d\n",TestcaseId); break; default: Printf("\nUsage: "); Printf(argv[0]); Printf(" [case id]\n"); exit(); } switch(TestcaseId) { case 1: process_create("userprog1.dlx.obj",NULL); break; case 2: process_create("userprog2.dlx.obj",NULL); break; default: Printf("Test case %d not supported\n",TestcaseId); break; } }

option1/lab4_2/src/misc.o

; Compiled by GCC
.text
.align 2
.proc _isspace
.global _isspace
_isspace:
; Function 'isspace'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r2,3(r30)
addi r31,r0,#0
andi r1,r2,#0x00ff
seqi r1,r1,#32
bnez r1,L6
nop ; not filled.
addi r1,r2,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
beqz r1,L5
nop ; not filled.
L6:
addi r31,r0,#1
L5:
add r1,r0,r31
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isspace
.align 2
.proc _isxdigit
.global _isxdigit
_isxdigit:
; Function 'isxdigit'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r31,3(r30)
addi r2,r0,#0
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
bnez r1,L12
nop ; not filled.
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#5
bnez r1,L12
nop ; not filled.
andi r1,r31,#0x00ff
snei r1,r1,#65
bnez r1,L11
nop ; not filled.
L12:
addi r2,r0,#1
L11:
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isxdigit
.align 2
.proc _dstrcpy
.global _dstrcpy
_dstrcpy:
; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
lw r2,4(r30)
add r3,r0,r31
L19:
lb r1,(r2)
sb (r31),r1
addi r2,r2,#1
addi r31,r31,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L19
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcpy
.align 2
.proc _dstrncpy
.global _dstrncpy
_dstrncpy:
; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r2,(r30)
lw r3,4(r30)
lw r31,8(r30)
add r4,r0,r2
j L37
nop ; not filled.
L34:
lb r1,(r3)
sb (r2),r1
addi r3,r3,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
beqz r1,L32
nop ; not filled.
L37:
add r1,r0,r31
addi r31,r31,#-1
slei r1,r1,#0
beqz r1,L34
nop ; not filled.
L32:
add r1,r0,r4
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncpy
.align 2
.proc _dstrcat
.global _dstrcat
_dstrcat:
; Function 'dstrcat'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
add r3,r0,r31
lbu r1,(r3)
snei r1,r1,#0
beqz r1,L50
nop ; not filled.
L51:
addi r31,r31,#1
lbu r1,(r31)
snei r1,r1,#0
bnez r1,L51
nop ; not filled.
L50:
add r2,r0,r31
lw r31,4(r30)
L54:
lb r1,(r31)
sb (r2),r1
addi r31,r31,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L54
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcat
.align 2
.proc _dstrncmp
.global _dstrncmp
_dstrncmp:
; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
lw r3,(r30)
lw r4,4(r30)
lw r5,8(r30)
addi r2,r0,#0
slt r1,r2,r5
beqz r1,L73
nop ; not filled.
L75:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L86
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L73
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r5
bnez r1,L75
nop ; not filled.
L73:
seq r1,r2,r5
beqz r1,L80
nop ; not filled.
L86:
addi r1,r0,#0
j L84
nop ; not filled.
L80:
lbu r31,(r3)
lbu r3,(r4)
sub r1,r31,r3
sgei r1,r1,#0
addi r2,r0,#-1
beqz r1,L82
nop ; not filled.
sne r2,r31,r3
L82:
add r1,r0,r2
L84:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncmp
.align 2
.proc _dstrlen
.global _dstrlen
_dstrlen:
; Function 'dstrlen'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lw r31,(r30)
addi r2,r0,#0
j L97
nop ; not filled.
L95:
addi r2,r2,#1
L97:
lbu r1,(r31)
addi r31,r31,#1
snei r1,r1,#0
bnez r1,L95
nop ; not filled.
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrlen
.align 2
.proc _dstrstr
.global _dstrstr
_dstrstr:
; Function 'dstrstr'; 0 bytes of locals, 6 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
sw 20(r29),r7
lw r5,(r30)
lw r7,4(r30)
addi r3,r0,#0
lbu r1,(r7)
addi r2,r7,#1
snei r1,r1,#0
beqz r1,L125
nop ; not filled.
L126:
addi r3,r3,#1
lbu r1,(r2)
addi r2,r2,#1
snei r1,r1,#0
bnez r1,L126
nop ; not filled.
L125:
add r6,r0,r3
j L149
nop ; not filled.
L130:
add r3,r0,r5
add r4,r0,r7
addi r2,r0,#0
slt r1,r2,r6
beqz r1,L134
nop ; not filled.
L136:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L150
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L134
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r6
bnez r1,L136
nop ; not filled.
L134:
seq r1,r2,r6
beqz r1,L141
nop ; not filled.
L150:
addi r1,r0,#0
j L132
nop ; not filled.
L141:
lbu r3,(r3)
lbu r2,(r4)
sub r1,r3,r2
sgei r1,r1,#0
addi r31,r0,#-1
beqz r1,L143
nop ; not filled.
sne r31,r3,r2
L143:
add r1,r0,r31
L132:
snei r1,r1,#0
bnez r1,L131
nop ; not filled.
add r1,r0,r5
j L146
nop ; not filled.
L131:
addi r5,r5,#1
L149:
lbu r1,(r5)
snei r1,r1,#0
bnez r1,L130
nop ; not filled.
addi r1,r0,#0
L146:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r7,20(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrstr
.align 2
.proc _dmindex
.global _dmindex
_dmindex:
; Function 'dmindex'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r4,(r30)
lw r6,4(r30)
lbu r1,(r4)
snei r1,r1,#0
beqz r1,L164
nop ; not filled.
add r5,r0,r1
L165:
add r2,r0,r6
lb r31,(r6)
andi r1,r31,#0x00ff
snei r1,r1,#0
beqz r1,L163
nop ; not filled.
lbu r3,(r4)
L169:
andi r1,r31,#0x00ff
seq r1,r3,r1
beqz r1,L168
nop ; not filled.
add r1,r0,r4
j L173
nop ; not filled.
L168:
addi r2,r2,#1
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L169
nop ; not filled.
L163:
bnez r5,L165
nop ; not filled.
L164:
addi r1,r0,#0
L173:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dmindex
.align 2
.proc _dindex
.global _dindex
_dindex:
; Function 'dindex'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r3,4(r30)
j L187
nop ; not filled.
L183:
andi r1,r31,#0x00ff
seq r1,r1,r3
beqz r1,L184
nop ; not filled.
add r1,r0,r2
j L186
nop ; not filled.
L184:
addi r2,r2,#1
L187:
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L183
nop ; not filled.
addi r1,r0,#0
L186:
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dindex
.align 2
.proc _ditoa
.global _ditoa
_ditoa:
; Function 'ditoa'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r3,(r30)
lw r4,4(r30)
slti r1,r3,#0
beqz r1,L203
nop ; not filled.
addi r6,r0,(#0x2d)&0xff
j L216
nop ; not filled.
L203:
snei r1,r3,#0
bnez r1,L205
nop ; not filled.
addi r6,r0,(#0x30)&0xff
L216:
sb (r4),r6
addi r4,r4,#1
j L204
nop ; not filled.
L205:
addi r31,r0,#1
sle r1,r31,r3
beqz r1,L208
nop ; not filled.
L209:
slli r1,r31,#0x2
add r1,r1,r31
slli r31,r1,#0x1
sle r1,r31,r3
bnez r1,L209
nop ; not filled.
L208:
addi r5,r0,#10
L212:
movi2fp f0,r31
movi2fp f1,r5
div f0,f0,f1
movfp2i r31,f0
movi2fp f0,r3
movi2fp f1,r31
div f0,f0,f1
movfp2i r2,f0
addi r1,r2,#48
sb (r4),r1
addi r4,r4,#1
movi2fp f0,r2
movi2fp f1,r31
mult f0,f0,f1
movfp2i r1,f0
sub r3,r3,r1
sgti r1,r31,#1
bnez r1,L212
nop ; not filled.
L204:
addi r6,r0,(#0x0)&0xff
sb (r4),r6
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _ditoa
.align 2
.proc _dstrtol
.global _dstrtol
_dstrtol:
; Function 'dstrtol'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r2,(r30)
lw r5,4(r30)
lw r4,8(r30)
addi r3,r0,#0
j L247
nop ; not filled.
L220:
addi r2,r2,#1
L247:
lb r31,(r2)
andi r1,r31,#0x00ff
seqi r1,r1,#32
bnez r1,L220
nop ; not filled.
addi r1,r31,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
bnez r1,L220
nop ; not filled.
snei r1,r5,#0
beqz r1,L222
nop ; not filled.
sw (r5),r2
L222:
lbu r31,(r2)
snei r1,r31,#0
beqz r1,L248
nop ; not filled.
seqi r1,r31,#45
beqz r1,L224
nop ; not filled.
addi r6,r0,#-1
addi r2,r2,#1
j L225
nop ; not filled.
L224:
addi r6,r0,#1
L225:
snei r1,r4,#0
bnez r1,L226
nop ; not filled.
lbu r1,(r2)
seqi r1,r1,#48
beqz r1,L227
nop ; not filled.
addi r2,r2,#1
lbu r31,(r2)
seqi r1,r31,#120
bnez r1,L229
nop ; not filled.
seqi r1,r31,#88
beqz r1,L228
nop ; not filled.
L229:
addi r4,r0,#16
addi r2,r2,#1
j L226
nop ; not filled.
L228:
addi r4,r0,#8
j L226
nop ; not filled.
L227:
addi r4,r0,#10
L226:
addi r1,r4,#-1
sgtui r1,r1,#15
beqz r1,L233
nop ; not filled.
L248:
add r1,r0,r3
j L245
nop ; not filled.
L233:
lb r31,(r2)
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
beqz r1,L236
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-48
j L237
nop ; not filled.
L236:
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L238
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-87
j L237
nop ; not filled.
L238:
addi r1,r31,#-65
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L240
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-55
j L237
nop ; not filled.
L240:
addi r1,r0,#1000
L237:
slt r31,r1,r4
beqz r31,L246
nop ; not filled.
movi2fp f0,r3
movi2fp f1,r4
mult f0,f0,f1
movfp2i r3,f0
add r3,r3,r1
addi r2,r2,#1
bnez r31,L233
nop ; not filled.
L246:
snei r1,r5,#0
beqz r1,L244
nop ; not filled.
sw (r5),r2
L244:
movi2fp f0,r3
movi2fp f1,r6
mult f0,f0,f1
movfp2i r1,f0
L245:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrtol
.align 2
.proc _bcopy
.global _bcopy
_bcopy:
; Function 'bcopy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r3,(r30)
lw r2,4(r30)
lw r31,8(r30)
j L259
nop ; not filled.
L257:
lb r4,(r3)
sb (r2),r4
addi r3,r3,#1
addi r2,r2,#1
L259:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L257
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bcopy
.align 2
.proc _bzero
.global _bzero
_bzero:
; Function 'bzero'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r31,4(r30)
j L270
nop ; not filled.
L268:
addi r3,r0,(#0x0)&0xff
sb (r2),r3
addi r2,r2,#1
L270:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L268
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bzero

option1/lab4_2/src/userprog2.o

; Compiled by GCC .data .align 2 LC0: .ascii "\nIn Userprog2, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 40000 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40008 ; alloc local storage jal ___main nop ; not filled. addi r4,r0,#0 addi r2,r0,#1 lhi r5,#-1 addui r5,r5,#25536 addi r31,r30,#-8 addui r3,r31,#39996 L16: add r1,r31,r5 sw (r1),r2 addi r2,r2,#1 addi r31,r31,#2000 sle r1,r31,r3 bnez r1,L16 nop ; not filled. lhi r3,#-1 addui r3,r3,#25536 addi r31,r30,#-8 addui r2,r31,#39996 L21: add r1,r31,r3 lw r1,(r1) add r4,r4,r1 addi r31,r31,#2000 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 sw 4(r29),r4 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

option1/lab4_2/src/process.h

// // process.h // // Definitions for process creation and manipulation. These include // the process control block (PCB) structure as well as information // about the stack format for a saved process. // #ifndef _process_h__ #define _process_h_ #include "dlxos.h" #include "queue.h" #include "memory.h" //#include "share_memory.h" #define PROCESS_MAX_PROCS 32 // Maximum number of active processes #define PROCESS_INIT_ISR_SYS 0x140 // Initial status reg value for system processes #define PROCESS_INIT_ISR_USER 0x100 // Initial status reg value for user processes #define PROCESS_STATUS_FREE 0x1 #define PROCESS_STATUS_RUNNABLE 0x2 #define PROCESS_STATUS_WAITING 0x4 #define PROCESS_STATUS_STARTING 0x8 #define PROCESS_STATUS_ZOMBIE 0x10 #define PROCESS_STATUS_MASK 0x3f #define PROCESS_TYPE_SYSTEM 0x100 #define PROCESS_TYPE_USER 0x200 typedef void (*VoidFunc)(); // Process control block typedef struct PCB { uint32 *currentSavedFrame; // -> current saved frame. MUST BE 1ST! uint32 *sysStackPtr; // Current system stack pointer. MUST BE 2ND! uint32 sysStackArea; // System stack area for this process unsigned int flags; char name[80]; // Process name uint32 pagetable[L1_MAX_ENTRIES]; // Statically allocated page table int npages; // Number of pages allocated to this process Link l; // Used for keeping PCB in queues } PCB; // Offsets of various registers from the stack pointer in the register // save frame. Offsets are in WORDS (4 byte chunks) #define PROCESS_STACK_IREG 10 // Offset of r0 (grows upwards) // NOTE: r0 isn't actually stored! This is for convenience - r1 is the // first stored register, and is at location PROCESS_STACK_IREG+1 #define PROCESS_STACK_FREG (PROCESS_STACK_IREG+32) // Offset of f0 #define PROCESS_STACK_IAR (PROCESS_STACK_FREG+32) // Offset of IAR #define PROCESS_STACK_ISR (PROCESS_STACK_IAR+1) #define PROCESS_STACK_CAUSE (PROCESS_STACK_IAR+2) #define PROCESS_STACK_FAULT (PROCESS_STACK_IAR+3) #define PROCESS_STACK_PTBASE (PROCESS_STACK_IAR+4) #define PROCESS_STACK_PTSIZE (PROCESS_STACK_IAR+5) #define PROCESS_STACK_PTBITS (PROCESS_STACK_IAR+6) #define PROCESS_STACK_PREV_FRAME 10 // points to previous interrupt frame #define PROCESS_STACK_FRAME_SIZE 85 // interrupt frame is 85 words #define SIZE_ARG_BUFF 1024 // Max number of characters in the // command-line arguments #define MAX_ARGS 128 // Max number of command-line // arguments extern PCB *currentPCB; extern int ProcessFork (VoidFunc, unsigned int, char *, int); extern void ProcessSchedule (); extern void ContextSwitch(void *, void *, int); extern void ProcessSuspend (PCB *); extern void ProcessWakeup (PCB *); extern void ProcessSetResult (PCB *, uint32); extern void ProcessSleep (); extern unsigned GetCurrentPid(); extern unsigned getpid(); void process_create(char *name, ...); void ProcessKill (PCB *pcb); void PageFaultHandler(); #endif /* _process_h_ */

option1/lab4_2/src/Makefile.depend

filesys.o: filesys.c dlxos.h misc.h process.h queue.h memory.h \ filesys.h memory.o: memory.c dlxos.h misc.h memory.h process.h queue.h misc.o: misc.c misc.h process.o: process.c dlxos.h misc.h memory.h process.h queue.h synch.h \ filesys.h queue.o: queue.c dlxos.h misc.h queue.h synch.o: synch.c dlxos.h misc.h process.h queue.h memory.h synch.h traps.o: traps.c dlx.h dlxos.h misc.h traps.h process.h queue.h \ memory.h sysproc.o: sysproc.c process.h dlxos.h misc.h queue.h memory.h synch.h

option1/lab4_2/src/userprog2.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 26 4 ; Text size: 2880 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a496e20 .ascii "\nIn Userprog2, Sum : %d\n\n\000" 12 00002004 55736572 12 00002008 70726f67 12 0000200c 322c2053 12 00002010 756d203a 12 00002014 2025640a 12 00002018 0a00 13 0000201a .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 40000 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd9c48 subui r29,r29,#40008; alloc local storage 23 00001010 0c000b24 jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20040000 addi r4,r0,#0 26 0000101c 20020001 addi r2,r0,#1 27 00001020 3c05ffff lhi r5,#-1 28 00001024 24a563c0 addui r5,r5,#25536 29 00001028 23dffff8 addi r31,r30,#-8 30 0000102c 27e39c3c addui r3,r31,#39996 31 00001030 L16_LF0: 32 00001030 03e50820 add r1,r31,r5 33 00001034 ac220000 sw (r1),r2 34 00001038 20420001 addi r2,r2,#1 35 0000103c 23ff07d0 addi r31,r31,#2000 36 00001040 03e3082c sle r1,r31,r3 37 00001044 1420ffe8 bnez r1,L16_LF0 38 00001048 54000000 nop; not filled. 39 0000104c 3c03ffff lhi r3,#-1 40 00001050 246363c0 addui r3,r3,#25536 41 00001054 23dffff8 addi r31,r30,#-8 42 00001058 27e29c3c addui r2,r31,#39996 43 0000105c L21_LF0: 44 0000105c 03e30820 add r1,r31,r3 45 00001060 8c210000 lw r1,(r1) 46 00001064 00812020 add r4,r4,r1 47 00001068 23ff07d0 addi r31,r31,#2000 48 0000106c 03e2082c sle r1,r31,r2 49 00001070 1420ffe8 bnez r1,L21_LF0 50 00001074 54000000 nop; not filled. 51 00001078 23bdfff8 addi r29,r29,#-8 52 0000107c 3c060000 lhi r6,((LC0_LF0)>>16)&0xffff 53 00001080 24c62000 addui r6,r6,(LC0_LF0)&0xffff 54 00001084 afa60000 sw (r29),r6 55 00001088 afa40004 sw 4(r29),r4 56 0000108c 0c000058 jal _Printf 57 00001090 54000000 nop; not filled. 58 00001094 23bd0008 addi r29,r29,#8 59 00001098 0c000a90 jal _exit 60 0000109c 54000000 nop 61 000010a0 .endproc _main 62 ;;; 63 ;;; Stub functions for DLX traps. 64 ;;; 65 ;;; Ethan L. Miller, 1999. Released to the public domain. 66 ;;; 67 ;;; The traps such as Open and Close 68 ;;; (note the capital letters) are for use by user programs. The traps 69 ;;; with names such as open and close (lower case) are for use by the OS. 70 ;;; 73 000010a0 .align 2 75 ;;; The following are the traps to be used by user-level programs 76 ;;; 78 000010a0 .align 2 79 000010a0 .proc _Open 80 000010a0 .global _Open 81 000010a0 _Open: 82 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 83 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 84 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 85 000010a0 44000213 trap #0x213 86 000010a4 4be00000 jr r31 87 000010a8 54000000 nop 88 000010ac .endproc _Open 90 000010ac .proc _Close 91 000010ac .global _Close 92 000010ac _Close: 93 000010ac 44000214 trap #0x214 94 000010b0 4be00000 jr r31 95 000010b4 54000000 nop 96 000010b8 .endproc _Close 98 000010b8 .proc _Read 99 000010b8 .global _Read 100 000010b8 _Read: 101 000010b8 44000210 trap #0x210 102 000010bc 4be00000 jr r31 103 000010c0 54000000 nop 104 000010c4 .endproc _Read 106 000010c4 .proc _Write 107 000010c4 .global _Write 108 000010c4 _Write: 109 000010c4 44000211 trap #0x211 110 000010c8 4be00000 jr r31 111 000010cc 54000000 nop 112 000010d0 .endproc _Write 114 000010d0 .proc _Lseek 115 000010d0 .global _Lseek 116 000010d0 _Lseek: 117 000010d0 44000212 trap #0x212 118 000010d4 4be00000 jr r31 119 000010d8 54000000 nop 120 000010dc .endproc _Lseek 122 000010dc .proc _Putchar 123 000010dc .global _Putchar 124 000010dc _Putchar: 125 000010dc 44000280 trap #0x280 126 000010e0 4be00000 jr r31 127 000010e4 54000000 nop 128 000010e8 .endproc _Putchar 130 000010e8 .proc _Printf 131 000010e8 .global _Printf 132 000010e8 _Printf: 133 000010e8 44000201 trap #0x201 134 000010ec 4be00000 jr r31 135 000010f0 54000000 nop 136 000010f4 .endproc _Printf 138 000010f4 .proc _getpid 139 000010f4 .global _getpid 140 000010f4 _getpid: 141 000010f4 44000431 trap #0x431 142 000010f8 4be00000 jr r31 143 000010fc 54000000 nop 144 00001100 .endproc _getpid 146 00001100 .proc _process_create 147 00001100 .global _process_create 148 00001100 _process_create: 149 00001100 44000432 trap #0x432 150 00001104 4be00000 jr r31 151 00001108 54000000 nop 152 0000110c .endproc _process_create 155 0000110c .proc _sem_create 156 0000110c .global _sem_create 157 0000110c _sem_create: 158 0000110c 44000450 trap #0x450 159 00001110 4be00000 jr r31 160 00001114 54000000 nop 161 00001118 .endproc _sem_create 163 00001118 .proc _sem_wait 164 00001118 .global _sem_wait 165 00001118 _sem_wait: 166 00001118 44000451 trap #0x451 167 0000111c 4be00000 jr r31 168 00001120 54000000 nop 169 00001124 .endproc _sem_wait 171 00001124 .proc _sem_signal 172 00001124 .global _sem_signal 173 00001124 _sem_signal: 174 00001124 44000452 trap #0x452 175 00001128 4be00000 jr r31 176 0000112c 54000000 nop 177 00001130 .endproc _sem_signal 180 ; Compiled by GCC 182 00001130 .align 2 183 00001130 .proc _isspace 184 00001130 .global _isspace 185 00001130 _isspace: 186 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 187 00001130 afbefffc sw -4(r29),r30; push fp 188 00001134 001df020 add r30,r0,r29; fp = sp 189 00001138 afbffff8 sw -8(r29),r31; push ret addr 190 0000113c 2fbd0010 subui r29,r29,#16; alloc local storage 191 00001140 afa20000 sw 0(r29),r2 192 00001144 83c20003 lb r2,3(r30) 193 00001148 201f0000 addi r31,r0,#0 194 0000114c 304100ff andi r1,r2,#0x00ff 195 00001150 60210020 seqi r1,r1,#32 196 00001154 14200018 bnez r1,L6_LF2 197 00001158 54000000 nop; not filled. 198 0000115c 2041fff7 addi r1,r2,#-9 199 00001160 302100ff andi r1,r1,#0x00ff 200 00001164 70210001 sleui r1,r1,#1 201 00001168 10200008 beqz r1,L5_LF2 202 0000116c 54000000 nop; not filled. 203 00001170 L6_LF2: 204 00001170 201f0001 addi r31,r0,#1 205 00001174 L5_LF2: 206 00001174 001f0820 add r1,r0,r31 207 00001178 8fa20000 lw r2,0(r29) 208 0000117c 8fdffff8 lw r31,-8(r30) 209 00001180 001ee820 add r29,r0,r30 210 00001184 8fdefffc lw r30,-4(r30) 211 00001188 4be00000 jr r31 212 0000118c 54000000 nop 213 00001190 .endproc _isspace 214 00001190 .align 2 215 00001190 .proc _isxdigit 216 00001190 .global _isxdigit 217 00001190 _isxdigit: 218 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 219 00001190 afbefffc sw -4(r29),r30; push fp 220 00001194 001df020 add r30,r0,r29; fp = sp 221 00001198 afbffff8 sw -8(r29),r31; push ret addr 222 0000119c 2fbd0010 subui r29,r29,#16; alloc local storage 223 000011a0 afa20000 sw 0(r29),r2 224 000011a4 83df0003 lb r31,3(r30) 225 000011a8 20020000 addi r2,r0,#0 226 000011ac 23e1ffd0 addi r1,r31,#-48 227 000011b0 302100ff andi r1,r1,#0x00ff 228 000011b4 70210009 sleui r1,r1,#9 229 000011b8 14200028 bnez r1,L12_LF2 230 000011bc 54000000 nop; not filled. 231 000011c0 23e1ff9f addi r1,r31,#-97 232 000011c4 302100ff andi r1,r1,#0x00ff 233 000011c8 70210005 sleui r1,r1,#5 234 000011cc 14200014 bnez r1,L12_LF2 235 000011d0 54000000 nop; not filled. 236 000011d4 33e100ff andi r1,r31,#0x00ff 237 000011d8 64210041 snei r1,r1,#65 238 000011dc 14200008 bnez r1,L11_LF2 239 000011e0 54000000 nop; not filled. 240 000011e4 L12_LF2: 241 000011e4 20020001 addi r2,r0,#1 242 000011e8 L11_LF2: 243 000011e8 00020820 add r1,r0,r2 244 000011ec 8fa20000 lw r2,0(r29) 245 000011f0 8fdffff8 lw r31,-8(r30) 246 000011f4 001ee820 add r29,r0,r30 247 000011f8 8fdefffc lw r30,-4(r30) 248 000011fc 4be00000 jr r31 249 00001200 54000000 nop 250 00001204 .endproc _isxdigit 251 00001204 .align 2 252 00001204 .proc _dstrcpy 253 00001204 .global _dstrcpy 254 00001204 _dstrcpy: 255 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 256 00001204 afbefffc sw -4(r29),r30; push fp 257 00001208 001df020 add r30,r0,r29; fp = sp 258 0000120c afbffff8 sw -8(r29),r31; push ret addr 259 00001210 2fbd0010 subui r29,r29,#16; alloc local storage 260 00001214 afa20000 sw 0(r29),r2 261 00001218 afa30004 sw 4(r29),r3 262 0000121c 8fdf0000 lw r31,(r30) 263 00001220 8fc20004 lw r2,4(r30) 264 00001224 001f1820 add r3,r0,r31 265 00001228 L19_LF2: 266 00001228 80410000 lb r1,(r2) 267 0000122c a3e10000 sb (r31),r1 268 00001230 20420001 addi r2,r2,#1 269 00001234 23ff0001 addi r31,r31,#1 270 00001238 302100ff andi r1,r1,#0x00ff 271 0000123c 64210000 snei r1,r1,#0 272 00001240 1420ffe4 bnez r1,L19_LF2 273 00001244 54000000 nop; not filled. 274 00001248 00030820 add r1,r0,r3 275 0000124c 8fa20000 lw r2,0(r29) 276 00001250 8fa30004 lw r3,4(r29) 277 00001254 8fdffff8 lw r31,-8(r30) 278 00001258 001ee820 add r29,r0,r30 279 0000125c 8fdefffc lw r30,-4(r30) 280 00001260 4be00000 jr r31 281 00001264 54000000 nop 282 00001268 .endproc _dstrcpy 283 00001268 .align 2 284 00001268 .proc _dstrncpy 285 00001268 .global _dstrncpy 286 00001268 _dstrncpy: 287 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 288 00001268 afbefffc sw -4(r29),r30; push fp 289 0000126c 001df020 add r30,r0,r29; fp = sp 290 00001270 afbffff8 sw -8(r29),r31; push ret addr 291 00001274 2fbd0018 subui r29,r29,#24; alloc local storage 292 00001278 afa20000 sw 0(r29),r2 293 0000127c afa30004 sw 4(r29),r3 294 00001280 afa40008 sw 8(r29),r4 295 00001284 8fc20000 lw r2,(r30) 296 00001288 8fc30004 lw r3,4(r30) 297 0000128c 8fdf0008 lw r31,8(r30) 298 00001290 00022020 add r4,r0,r2 299 00001294 08000024 j L37_LF2 300 00001298 54000000 nop; not filled. 301 0000129c L34_LF2: 302 0000129c 80610000 lb r1,(r3) 303 000012a0 a0410000 sb (r2),r1 304 000012a4 20630001 addi r3,r3,#1 305 000012a8 20420001 addi r2,r2,#1 306 000012ac 302100ff andi r1,r1,#0x00ff 307 000012b0 64210000 snei r1,r1,#0 308 000012b4 10200018 beqz r1,L32_LF2 309 000012b8 54000000 nop; not filled. 310 000012bc L37_LF2: 311 000012bc 001f0820 add r1,r0,r31 312 000012c0 23ffffff addi r31,r31,#-1 313 000012c4 70210000 slei r1,r1,#0 314 000012c8 1020ffd0 beqz r1,L34_LF2 315 000012cc 54000000 nop; not filled. 316 000012d0 L32_LF2: 317 000012d0 00040820 add r1,r0,r4 318 000012d4 8fa20000 lw r2,0(r29) 319 000012d8 8fa30004 lw r3,4(r29) 320 000012dc 8fa40008 lw r4,8(r29) 321 000012e0 8fdffff8 lw r31,-8(r30) 322 000012e4 001ee820 add r29,r0,r30 323 000012e8 8fdefffc lw r30,-4(r30) 324 000012ec 4be00000 jr r31 325 000012f0 54000000 nop 326 000012f4 .endproc _dstrncpy 327 000012f4 .align 2 328 000012f4 .proc _dstrcat 329 000012f4 .global _dstrcat 330 000012f4 _dstrcat: 331 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 332 000012f4 afbefffc sw -4(r29),r30; push fp 333 000012f8 001df020 add r30,r0,r29; fp = sp 334 000012fc afbffff8 sw -8(r29),r31; push ret addr 335 00001300 2fbd0010 subui r29,r29,#16; alloc local storage 336 00001304 afa20000 sw 0(r29),r2 337 00001308 afa30004 sw 4(r29),r3 338 0000130c 8fdf0000 lw r31,(r30) 339 00001310 001f1820 add r3,r0,r31 340 00001314 90610000 lbu r1,(r3) 341 00001318 64210000 snei r1,r1,#0 342 0000131c 10200018 beqz r1,L50_LF2 343 00001320 54000000 nop; not filled. 344 00001324 L51_LF2: 345 00001324 23ff0001 addi r31,r31,#1 346 00001328 93e10000 lbu r1,(r31) 347 0000132c 64210000 snei r1,r1,#0 348 00001330 1420fff0 bnez r1,L51_LF2 349 00001334 54000000 nop; not filled. 350 00001338 L50_LF2: 351 00001338 001f1020 add r2,r0,r31 352 0000133c 8fdf0004 lw r31,4(r30) 353 00001340 L54_LF2: 354 00001340 83e10000 lb r1,(r31) 355 00001344 a0410000 sb (r2),r1 356 00001348 23ff0001 addi r31,r31,#1 357 0000134c 20420001 addi r2,r2,#1 358 00001350 302100ff andi r1,r1,#0x00ff 359 00001354 64210000 snei r1,r1,#0 360 00001358 1420ffe4 bnez r1,L54_LF2 361 0000135c 54000000 nop; not filled. 362 00001360 00030820 add r1,r0,r3 363 00001364 8fa20000 lw r2,0(r29) 364 00001368 8fa30004 lw r3,4(r29) 365 0000136c 8fdffff8 lw r31,-8(r30) 366 00001370 001ee820 add r29,r0,r30 367 00001374 8fdefffc lw r30,-4(r30) 368 00001378 4be00000 jr r31 369 0000137c 54000000 nop 370 00001380 .endproc _dstrcat 371 00001380 .align 2 372 00001380 .proc _dstrncmp 373 00001380 .global _dstrncmp 374 00001380 _dstrncmp: 375 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 376 00001380 afbefffc sw -4(r29),r30; push fp 377 00001384 001df020 add r30,r0,r29; fp = sp 378 00001388 afbffff8 sw -8(r29),r31; push ret addr 379 0000138c 2fbd0018 subui r29,r29,#24; alloc local storage 380 00001390 afa20000 sw 0(r29),r2 381 00001394 afa30004 sw 4(r29),r3 382 00001398 afa40008 sw 8(r29),r4 383 0000139c afa5000c sw 12(r29),r5 384 000013a0 8fc30000 lw r3,(r30) 385 000013a4 8fc40004 lw r4,4(r30) 386 000013a8 8fc50008 lw r5,8(r30) 387 000013ac 20020000 addi r2,r0,#0 388 000013b0 0045082a slt r1,r2,r5 389 000013b4 1020003c beqz r1,L73_LF2 390 000013b8 54000000 nop; not filled. 391 000013bc L75_LF2: 392 000013bc 909f0000 lbu r31,(r4) 393 000013c0 67e10000 snei r1,r31,#0 394 000013c4 10200038 beqz r1,L86_LF2 395 000013c8 54000000 nop; not filled. 396 000013cc 90610000 lbu r1,(r3) 397 000013d0 003f0829 sne r1,r1,r31 398 000013d4 1420001c bnez r1,L73_LF2 399 000013d8 54000000 nop; not filled. 400 000013dc 20630001 addi r3,r3,#1 401 000013e0 20840001 addi r4,r4,#1 402 000013e4 20420001 addi r2,r2,#1 403 000013e8 0045082a slt r1,r2,r5 404 000013ec 1420ffcc bnez r1,L75_LF2 405 000013f0 54000000 nop; not filled. 406 000013f4 L73_LF2: 407 000013f4 00450828 seq r1,r2,r5 408 000013f8 10200010 beqz r1,L80_LF2 409 000013fc 54000000 nop; not filled. 410 00001400 L86_LF2: 411 00001400 20010000 addi r1,r0,#0 412 00001404 08000028 j L84_LF2 413 00001408 54000000 nop; not filled. 414 0000140c L80_LF2: 415 0000140c 907f0000 lbu r31,(r3) 416 00001410 90830000 lbu r3,(r4) 417 00001414 03e30822 sub r1,r31,r3 418 00001418 74210000 sgei r1,r1,#0 419 0000141c 2002ffff addi r2,r0,#-1 420 00001420 10200008 beqz r1,L82_LF2 421 00001424 54000000 nop; not filled. 422 00001428 03e31029 sne r2,r31,r3 423 0000142c L82_LF2: 424 0000142c 00020820 add r1,r0,r2 425 00001430 L84_LF2: 426 00001430 8fa20000 lw r2,0(r29) 427 00001434 8fa30004 lw r3,4(r29) 428 00001438 8fa40008 lw r4,8(r29) 429 0000143c 8fa5000c lw r5,12(r29) 430 00001440 8fdffff8 lw r31,-8(r30) 431 00001444 001ee820 add r29,r0,r30 432 00001448 8fdefffc lw r30,-4(r30) 433 0000144c 4be00000 jr r31 434 00001450 54000000 nop 435 00001454 .endproc _dstrncmp 436 00001454 .align 2 437 00001454 .proc _dstrlen 438 00001454 .global _dstrlen 439 00001454 _dstrlen: 440 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 441 00001454 afbefffc sw -4(r29),r30; push fp 442 00001458 001df020 add r30,r0,r29; fp = sp 443 0000145c afbffff8 sw -8(r29),r31; push ret addr 444 00001460 2fbd0010 subui r29,r29,#16; alloc local storage 445 00001464 afa20000 sw 0(r29),r2 446 00001468 8fdf0000 lw r31,(r30) 447 0000146c 20020000 addi r2,r0,#0 448 00001470 08000008 j L97_LF2 449 00001474 54000000 nop; not filled. 450 00001478 L95_LF2: 451 00001478 20420001 addi r2,r2,#1 452 0000147c L97_LF2: 453 0000147c 93e10000 lbu r1,(r31) 454 00001480 23ff0001 addi r31,r31,#1 455 00001484 64210000 snei r1,r1,#0 456 00001488 1420ffec bnez r1,L95_LF2 457 0000148c 54000000 nop; not filled. 458 00001490 00020820 add r1,r0,r2 459 00001494 8fa20000 lw r2,0(r29) 460 00001498 8fdffff8 lw r31,-8(r30) 461 0000149c 001ee820 add r29,r0,r30 462 000014a0 8fdefffc lw r30,-4(r30) 463 000014a4 4be00000 jr r31 464 000014a8 54000000 nop 465 000014ac .endproc _dstrlen 466 000014ac .align 2 467 000014ac .proc _dstrstr 468 000014ac .global _dstrstr 469 000014ac _dstrstr: 470 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 471 000014ac afbefffc sw -4(r29),r30; push fp 472 000014b0 001df020 add r30,r0,r29; fp = sp 473 000014b4 afbffff8 sw -8(r29),r31; push ret addr 474 000014b8 2fbd0020 subui r29,r29,#32; alloc local storage 475 000014bc afa20000 sw 0(r29),r2 476 000014c0 afa30004 sw 4(r29),r3 477 000014c4 afa40008 sw 8(r29),r4 478 000014c8 afa5000c sw 12(r29),r5 479 000014cc afa60010 sw 16(r29),r6 480 000014d0 afa70014 sw 20(r29),r7 481 000014d4 8fc50000 lw r5,(r30) 482 000014d8 8fc70004 lw r7,4(r30) 483 000014dc 20030000 addi r3,r0,#0 484 000014e0 90e10000 lbu r1,(r7) 485 000014e4 20e20001 addi r2,r7,#1 486 000014e8 64210000 snei r1,r1,#0 487 000014ec 1020001c beqz r1,L125_LF2 488 000014f0 54000000 nop; not filled. 489 000014f4 L126_LF2: 490 000014f4 20630001 addi r3,r3,#1 491 000014f8 90410000 lbu r1,(r2) 492 000014fc 20420001 addi r2,r2,#1 493 00001500 64210000 snei r1,r1,#0 494 00001504 1420ffec bnez r1,L126_LF2 495 00001508 54000000 nop; not filled. 496 0000150c L125_LF2: 497 0000150c 00033020 add r6,r0,r3 498 00001510 080000ac j L149_LF2 499 00001514 54000000 nop; not filled. 500 00001518 L130_LF2: 501 00001518 00051820 add r3,r0,r5 502 0000151c 00072020 add r4,r0,r7 503 00001520 20020000 addi r2,r0,#0 504 00001524 0046082a slt r1,r2,r6 505 00001528 1020003c beqz r1,L134_LF2 506 0000152c 54000000 nop; not filled. 507 00001530 L136_LF2: 508 00001530 909f0000 lbu r31,(r4) 509 00001534 67e10000 snei r1,r31,#0 510 00001538 10200038 beqz r1,L150_LF2 511 0000153c 54000000 nop; not filled. 512 00001540 90610000 lbu r1,(r3) 513 00001544 003f0829 sne r1,r1,r31 514 00001548 1420001c bnez r1,L134_LF2 515 0000154c 54000000 nop; not filled. 516 00001550 20630001 addi r3,r3,#1 517 00001554 20840001 addi r4,r4,#1 518 00001558 20420001 addi r2,r2,#1 519 0000155c 0046082a slt r1,r2,r6 520 00001560 1420ffcc bnez r1,L136_LF2 521 00001564 54000000 nop; not filled. 522 00001568 L134_LF2: 523 00001568 00460828 seq r1,r2,r6 524 0000156c 10200010 beqz r1,L141_LF2 525 00001570 54000000 nop; not filled. 526 00001574 L150_LF2: 527 00001574 20010000 addi r1,r0,#0 528 00001578 08000028 j L132_LF2 529 0000157c 54000000 nop; not filled. 530 00001580 L141_LF2: 531 00001580 90630000 lbu r3,(r3) 532 00001584 90820000 lbu r2,(r4) 533 00001588 00620822 sub r1,r3,r2 534 0000158c 74210000 sgei r1,r1,#0 535 00001590 201fffff addi r31,r0,#-1 536 00001594 10200008 beqz r1,L143_LF2 537 00001598 54000000 nop; not filled. 538 0000159c 0062f829 sne r31,r3,r2 539 000015a0 L143_LF2: 540 000015a0 001f0820 add r1,r0,r31 541 000015a4 L132_LF2: 542 000015a4 64210000 snei r1,r1,#0 543 000015a8 14200010 bnez r1,L131_LF2 544 000015ac 54000000 nop; not filled. 545 000015b0 00050820 add r1,r0,r5 546 000015b4 0800001c j L146_LF2 547 000015b8 54000000 nop; not filled. 548 000015bc L131_LF2: 549 000015bc 20a50001 addi r5,r5,#1 550 000015c0 L149_LF2: 551 000015c0 90a10000 lbu r1,(r5) 552 000015c4 64210000 snei r1,r1,#0 553 000015c8 1420ff4c bnez r1,L130_LF2 554 000015cc 54000000 nop; not filled. 555 000015d0 20010000 addi r1,r0,#0 556 000015d4 L146_LF2: 557 000015d4 8fa20000 lw r2,0(r29) 558 000015d8 8fa30004 lw r3,4(r29) 559 000015dc 8fa40008 lw r4,8(r29) 560 000015e0 8fa5000c lw r5,12(r29) 561 000015e4 8fa60010 lw r6,16(r29) 562 000015e8 8fa70014 lw r7,20(r29) 563 000015ec 8fdffff8 lw r31,-8(r30) 564 000015f0 001ee820 add r29,r0,r30 565 000015f4 8fdefffc lw r30,-4(r30) 566 000015f8 4be00000 jr r31 567 000015fc 54000000 nop 568 00001600 .endproc _dstrstr 569 00001600 .align 2 570 00001600 .proc _dmindex 571 00001600 .global _dmindex 572 00001600 _dmindex: 573 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 574 00001600 afbefffc sw -4(r29),r30; push fp 575 00001604 001df020 add r30,r0,r29; fp = sp 576 00001608 afbffff8 sw -8(r29),r31; push ret addr 577 0000160c 2fbd0020 subui r29,r29,#32; alloc local storage 578 00001610 afa20000 sw 0(r29),r2 579 00001614 afa30004 sw 4(r29),r3 580 00001618 afa40008 sw 8(r29),r4 581 0000161c afa5000c sw 12(r29),r5 582 00001620 afa60010 sw 16(r29),r6 583 00001624 8fc40000 lw r4,(r30) 584 00001628 8fc60004 lw r6,4(r30) 585 0000162c 90810000 lbu r1,(r4) 586 00001630 64210000 snei r1,r1,#0 587 00001634 10200060 beqz r1,L164_LF2 588 00001638 54000000 nop; not filled. 589 0000163c 00012820 add r5,r0,r1 590 00001640 L165_LF2: 591 00001640 00061020 add r2,r0,r6 592 00001644 80df0000 lb r31,(r6) 593 00001648 33e100ff andi r1,r31,#0x00ff 594 0000164c 64210000 snei r1,r1,#0 595 00001650 1020003c beqz r1,L163_LF2 596 00001654 54000000 nop; not filled. 597 00001658 90830000 lbu r3,(r4) 598 0000165c L169_LF2: 599 0000165c 33e100ff andi r1,r31,#0x00ff 600 00001660 00610828 seq r1,r3,r1 601 00001664 10200010 beqz r1,L168_LF2 602 00001668 54000000 nop; not filled. 603 0000166c 00040820 add r1,r0,r4 604 00001670 08000028 j L173_LF2 605 00001674 54000000 nop; not filled. 606 00001678 L168_LF2: 607 00001678 20420001 addi r2,r2,#1 608 0000167c 805f0000 lb r31,(r2) 609 00001680 33e100ff andi r1,r31,#0x00ff 610 00001684 64210000 snei r1,r1,#0 611 00001688 1420ffd0 bnez r1,L169_LF2 612 0000168c 54000000 nop; not filled. 613 00001690 L163_LF2: 614 00001690 14a0ffac bnez r5,L165_LF2 615 00001694 54000000 nop; not filled. 616 00001698 L164_LF2: 617 00001698 20010000 addi r1,r0,#0 618 0000169c L173_LF2: 619 0000169c 8fa20000 lw r2,0(r29) 620 000016a0 8fa30004 lw r3,4(r29) 621 000016a4 8fa40008 lw r4,8(r29) 622 000016a8 8fa5000c lw r5,12(r29) 623 000016ac 8fa60010 lw r6,16(r29) 624 000016b0 8fdffff8 lw r31,-8(r30) 625 000016b4 001ee820 add r29,r0,r30 626 000016b8 8fdefffc lw r30,-4(r30) 627 000016bc 4be00000 jr r31 628 000016c0 54000000 nop 629 000016c4 .endproc _dmindex 630 000016c4 .align 2 631 000016c4 .proc _dindex 632 000016c4 .global _dindex 633 000016c4 _dindex: 634 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 635 000016c4 afbefffc sw -4(r29),r30; push fp 636 000016c8 001df020 add r30,r0,r29; fp = sp 637 000016cc afbffff8 sw -8(r29),r31; push ret addr 638 000016d0 2fbd0010 subui r29,r29,#16; alloc local storage 639 000016d4 afa20000 sw 0(r29),r2 640 000016d8 afa30004 sw 4(r29),r3 641 000016dc 8fc20000 lw r2,(r30) 642 000016e0 8fc30004 lw r3,4(r30) 643 000016e4 08000024 j L187_LF2 644 000016e8 54000000 nop; not filled. 645 000016ec L183_LF2: 646 000016ec 33e100ff andi r1,r31,#0x00ff 647 000016f0 00230828 seq r1,r1,r3 648 000016f4 10200010 beqz r1,L184_LF2 649 000016f8 54000000 nop; not filled. 650 000016fc 00020820 add r1,r0,r2 651 00001700 08000020 j L186_LF2 652 00001704 54000000 nop; not filled. 653 00001708 L184_LF2: 654 00001708 20420001 addi r2,r2,#1 655 0000170c L187_LF2: 656 0000170c 805f0000 lb r31,(r2) 657 00001710 33e100ff andi r1,r31,#0x00ff 658 00001714 64210000 snei r1,r1,#0 659 00001718 1420ffd0 bnez r1,L183_LF2 660 0000171c 54000000 nop; not filled. 661 00001720 20010000 addi r1,r0,#0 662 00001724 L186_LF2: 663 00001724 8fa20000 lw r2,0(r29) 664 00001728 8fa30004 lw r3,4(r29) 665 0000172c 8fdffff8 lw r31,-8(r30) 666 00001730 001ee820 add r29,r0,r30 667 00001734 8fdefffc lw r30,-4(r30) 668 00001738 4be00000 jr r31 669 0000173c 54000000 nop 670 00001740 .endproc _dindex 671 00001740 .align 2 672 00001740 .proc _ditoa 673 00001740 .global _ditoa 674 00001740 _ditoa: 675 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 676 00001740 afbefffc sw -4(r29),r30; push fp 677 00001744 001df020 add r30,r0,r29; fp = sp 678 00001748 afbffff8 sw -8(r29),r31; push ret addr 679 0000174c 2fbd0020 subui r29,r29,#32; alloc local storage 680 00001750 afa20000 sw 0(r29),r2 681 00001754 afa30004 sw 4(r29),r3 682 00001758 afa40008 sw 8(r29),r4 683 0000175c afa5000c sw 12(r29),r5 684 00001760 afa60010 sw 16(r29),r6 685 00001764 8fc30000 lw r3,(r30) 686 00001768 8fc40004 lw r4,4(r30) 687 0000176c 68610000 slti r1,r3,#0 688 00001770 10200010 beqz r1,L203_LF2 689 00001774 54000000 nop; not filled. 690 00001778 2006002d addi r6,r0,(#0x2d)&0xff 691 0000177c 08000014 j L216_LF2 692 00001780 54000000 nop; not filled. 693 00001784 L203_LF2: 694 00001784 64610000 snei r1,r3,#0 695 00001788 14200018 bnez r1,L205_LF2 696 0000178c 54000000 nop; not filled. 697 00001790 20060030 addi r6,r0,(#0x30)&0xff 698 00001794 L216_LF2: 699 00001794 a0860000 sb (r4),r6 700 00001798 20840001 addi r4,r4,#1 701 0000179c 0800007c j L204_LF2 702 000017a0 54000000 nop; not filled. 703 000017a4 L205_LF2: 704 000017a4 201f0001 addi r31,r0,#1 705 000017a8 03e3082c sle r1,r31,r3 706 000017ac 1020001c beqz r1,L208_LF2 707 000017b0 54000000 nop; not filled. 708 000017b4 L209_LF2: 709 000017b4 53e10002 slli r1,r31,#0x2 710 000017b8 003f0820 add r1,r1,r31 711 000017bc 503f0001 slli r31,r1,#0x1 712 000017c0 03e3082c sle r1,r31,r3 713 000017c4 1420ffec bnez r1,L209_LF2 714 000017c8 54000000 nop; not filled. 715 000017cc L208_LF2: 716 000017cc 2005000a addi r5,r0,#10 717 000017d0 L212_LF2: 718 000017d0 03e00035 movi2fp f0,r31 719 000017d4 00a00835 movi2fp f1,r5 720 000017d8 0401000f div f0,f0,f1 721 000017dc 0000f834 movfp2i r31,f0 722 000017e0 00600035 movi2fp f0,r3 723 000017e4 03e00835 movi2fp f1,r31 724 000017e8 0401000f div f0,f0,f1 725 000017ec 00001034 movfp2i r2,f0 726 000017f0 20410030 addi r1,r2,#48 727 000017f4 a0810000 sb (r4),r1 728 000017f8 20840001 addi r4,r4,#1 729 000017fc 00400035 movi2fp f0,r2 730 00001800 03e00835 movi2fp f1,r31 731 00001804 0401000e mult f0,f0,f1 732 00001808 00000834 movfp2i r1,f0 733 0000180c 00611822 sub r3,r3,r1 734 00001810 6fe10001 sgti r1,r31,#1 735 00001814 1420ffb8 bnez r1,L212_LF2 736 00001818 54000000 nop; not filled. 737 0000181c L204_LF2: 738 0000181c 20060000 addi r6,r0,(#0x0)&0xff 739 00001820 a0860000 sb (r4),r6 740 00001824 8fa20000 lw r2,0(r29) 741 00001828 8fa30004 lw r3,4(r29) 742 0000182c 8fa40008 lw r4,8(r29) 743 00001830 8fa5000c lw r5,12(r29) 744 00001834 8fa60010 lw r6,16(r29) 745 00001838 8fdffff8 lw r31,-8(r30) 746 0000183c 001ee820 add r29,r0,r30 747 00001840 8fdefffc lw r30,-4(r30) 748 00001844 4be00000 jr r31 749 00001848 54000000 nop 750 0000184c .endproc _ditoa 751 0000184c .align 2 752 0000184c .proc _dstrtol 753 0000184c .global _dstrtol 754 0000184c _dstrtol: 755 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 756 0000184c afbefffc sw -4(r29),r30; push fp 757 00001850 001df020 add r30,r0,r29; fp = sp 758 00001854 afbffff8 sw -8(r29),r31; push ret addr 759 00001858 2fbd0020 subui r29,r29,#32; alloc local storage 760 0000185c afa20000 sw 0(r29),r2 761 00001860 afa30004 sw 4(r29),r3 762 00001864 afa40008 sw 8(r29),r4 763 00001868 afa5000c sw 12(r29),r5 764 0000186c afa60010 sw 16(r29),r6 765 00001870 8fc20000 lw r2,(r30) 766 00001874 8fc50004 lw r5,4(r30) 767 00001878 8fc40008 lw r4,8(r30) 768 0000187c 20030000 addi r3,r0,#0 769 00001880 08000008 j L247_LF2 770 00001884 54000000 nop; not filled. 771 00001888 L220_LF2: 772 00001888 20420001 addi r2,r2,#1 773 0000188c L247_LF2: 774 0000188c 805f0000 lb r31,(r2) 775 00001890 33e100ff andi r1,r31,#0x00ff 776 00001894 60210020 seqi r1,r1,#32 777 00001898 1420ffec bnez r1,L220_LF2 778 0000189c 54000000 nop; not filled. 779 000018a0 23e1fff7 addi r1,r31,#-9 780 000018a4 302100ff andi r1,r1,#0x00ff 781 000018a8 70210001 sleui r1,r1,#1 782 000018ac 1420ffd8 bnez r1,L220_LF2 783 000018b0 54000000 nop; not filled. 784 000018b4 64a10000 snei r1,r5,#0 785 000018b8 10200008 beqz r1,L222_LF2 786 000018bc 54000000 nop; not filled. 787 000018c0 aca20000 sw (r5),r2 788 000018c4 L222_LF2: 789 000018c4 905f0000 lbu r31,(r2) 790 000018c8 67e10000 snei r1,r31,#0 791 000018cc 10200090 beqz r1,L248_LF2 792 000018d0 54000000 nop; not filled. 793 000018d4 63e1002d seqi r1,r31,#45 794 000018d8 10200014 beqz r1,L224_LF2 795 000018dc 54000000 nop; not filled. 796 000018e0 2006ffff addi r6,r0,#-1 797 000018e4 20420001 addi r2,r2,#1 798 000018e8 08000008 j L225_LF2 799 000018ec 54000000 nop; not filled. 800 000018f0 L224_LF2: 801 000018f0 20060001 addi r6,r0,#1 802 000018f4 L225_LF2: 803 000018f4 64810000 snei r1,r4,#0 804 000018f8 14200054 bnez r1,L226_LF2 805 000018fc 54000000 nop; not filled. 806 00001900 90410000 lbu r1,(r2) 807 00001904 60210030 seqi r1,r1,#48 808 00001908 10200040 beqz r1,L227_LF2 809 0000190c 54000000 nop; not filled. 810 00001910 20420001 addi r2,r2,#1 811 00001914 905f0000 lbu r31,(r2) 812 00001918 63e10078 seqi r1,r31,#120 813 0000191c 14200010 bnez r1,L229_LF2 814 00001920 54000000 nop; not filled. 815 00001924 63e10058 seqi r1,r31,#88 816 00001928 10200014 beqz r1,L228_LF2 817 0000192c 54000000 nop; not filled. 818 00001930 L229_LF2: 819 00001930 20040010 addi r4,r0,#16 820 00001934 20420001 addi r2,r2,#1 821 00001938 08000014 j L226_LF2 822 0000193c 54000000 nop; not filled. 823 00001940 L228_LF2: 824 00001940 20040008 addi r4,r0,#8 825 00001944 08000008 j L226_LF2 826 00001948 54000000 nop; not filled. 827 0000194c L227_LF2: 828 0000194c 2004000a addi r4,r0,#10 829 00001950 L226_LF2: 830 00001950 2081ffff addi r1,r4,#-1 831 00001954 6c21000f sgtui r1,r1,#15 832 00001958 10200010 beqz r1,L233_LF2 833 0000195c 54000000 nop; not filled. 834 00001960 L248_LF2: 835 00001960 00030820 add r1,r0,r3 836 00001964 080000c4 j L245_LF2 837 00001968 54000000 nop; not filled. 838 0000196c L233_LF2: 839 0000196c 805f0000 lb r31,(r2) 840 00001970 23e1ffd0 addi r1,r31,#-48 841 00001974 302100ff andi r1,r1,#0x00ff 842 00001978 70210009 sleui r1,r1,#9 843 0000197c 10200014 beqz r1,L236_LF2 844 00001980 54000000 nop; not filled. 845 00001984 33e100ff andi r1,r31,#0x00ff 846 00001988 2021ffd0 addi r1,r1,#-48 847 0000198c 08000050 j L237_LF2 848 00001990 54000000 nop; not filled. 849 00001994 L236_LF2: 850 00001994 23e1ff9f addi r1,r31,#-97 851 00001998 302100ff andi r1,r1,#0x00ff 852 0000199c 70210019 sleui r1,r1,#25 853 000019a0 10200014 beqz r1,L238_LF2 854 000019a4 54000000 nop; not filled. 855 000019a8 33e100ff andi r1,r31,#0x00ff 856 000019ac 2021ffa9 addi r1,r1,#-87 857 000019b0 0800002c j L237_LF2 858 000019b4 54000000 nop; not filled. 859 000019b8 L238_LF2: 860 000019b8 23e1ffbf addi r1,r31,#-65 861 000019bc 302100ff andi r1,r1,#0x00ff 862 000019c0 70210019 sleui r1,r1,#25 863 000019c4 10200014 beqz r1,L240_LF2 864 000019c8 54000000 nop; not filled. 865 000019cc 33e100ff andi r1,r31,#0x00ff 866 000019d0 2021ffc9 addi r1,r1,#-55 867 000019d4 08000008 j L237_LF2 868 000019d8 54000000 nop; not filled. 869 000019dc L240_LF2: 870 000019dc 200103e8 addi r1,r0,#1000 871 000019e0 L237_LF2: 872 000019e0 0024f82a slt r31,r1,r4 873 000019e4 13e00024 beqz r31,L246_LF2 874 000019e8 54000000 nop; not filled. 875 000019ec 00600035 movi2fp f0,r3 876 000019f0 00800835 movi2fp f1,r4 877 000019f4 0401000e mult f0,f0,f1 878 000019f8 00001834 movfp2i r3,f0 879 000019fc 00611820 add r3,r3,r1 880 00001a00 20420001 addi r2,r2,#1 881 00001a04 17e0ff64 bnez r31,L233_LF2 882 00001a08 54000000 nop; not filled. 883 00001a0c L246_LF2: 884 00001a0c 64a10000 snei r1,r5,#0 885 00001a10 10200008 beqz r1,L244_LF2 886 00001a14 54000000 nop; not filled. 887 00001a18 aca20000 sw (r5),r2 888 00001a1c L244_LF2: 889 00001a1c 00600035 movi2fp f0,r3 890 00001a20 00c00835 movi2fp f1,r6 891 00001a24 0401000e mult f0,f0,f1 892 00001a28 00000834 movfp2i r1,f0 893 00001a2c L245_LF2: 894 00001a2c 8fa20000 lw r2,0(r29) 895 00001a30 8fa30004 lw r3,4(r29) 896 00001a34 8fa40008 lw r4,8(r29) 897 00001a38 8fa5000c lw r5,12(r29) 898 00001a3c 8fa60010 lw r6,16(r29) 899 00001a40 8fdffff8 lw r31,-8(r30) 900 00001a44 001ee820 add r29,r0,r30 901 00001a48 8fdefffc lw r30,-4(r30) 902 00001a4c 4be00000 jr r31 903 00001a50 54000000 nop 904 00001a54 .endproc _dstrtol 905 00001a54 .align 2 906 00001a54 .proc _bcopy 907 00001a54 .global _bcopy 908 00001a54 _bcopy: 909 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 910 00001a54 afbefffc sw -4(r29),r30; push fp 911 00001a58 001df020 add r30,r0,r29; fp = sp 912 00001a5c afbffff8 sw -8(r29),r31; push ret addr 913 00001a60 2fbd0018 subui r29,r29,#24; alloc local storage 914 00001a64 afa20000 sw 0(r29),r2 915 00001a68 afa30004 sw 4(r29),r3 916 00001a6c afa40008 sw 8(r29),r4 917 00001a70 8fc30000 lw r3,(r30) 918 00001a74 8fc20004 lw r2,4(r30) 919 00001a78 8fdf0008 lw r31,8(r30) 920 00001a7c 08000014 j L259_LF2 921 00001a80 54000000 nop; not filled. 922 00001a84 L257_LF2: 923 00001a84 80640000 lb r4,(r3) 924 00001a88 a0440000 sb (r2),r4 925 00001a8c 20630001 addi r3,r3,#1 926 00001a90 20420001 addi r2,r2,#1 927 00001a94 L259_LF2: 928 00001a94 001f0820 add r1,r0,r31 929 00001a98 23ffffff addi r31,r31,#-1 930 00001a9c 6c210000 sgti r1,r1,#0 931 00001aa0 1420ffe0 bnez r1,L257_LF2 932 00001aa4 54000000 nop; not filled. 933 00001aa8 8fa20000 lw r2,0(r29) 934 00001aac 8fa30004 lw r3,4(r29) 935 00001ab0 8fa40008 lw r4,8(r29) 936 00001ab4 8fdffff8 lw r31,-8(r30) 937 00001ab8 001ee820 add r29,r0,r30 938 00001abc 8fdefffc lw r30,-4(r30) 939 00001ac0 4be00000 jr r31 940 00001ac4 54000000 nop 941 00001ac8 .endproc _bcopy 942 00001ac8 .align 2 943 00001ac8 .proc _bzero 944 00001ac8 .global _bzero 945 00001ac8 _bzero: 946 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 947 00001ac8 afbefffc sw -4(r29),r30; push fp 948 00001acc 001df020 add r30,r0,r29; fp = sp 949 00001ad0 afbffff8 sw -8(r29),r31; push ret addr 950 00001ad4 2fbd0010 subui r29,r29,#16; alloc local storage 951 00001ad8 afa20000 sw 0(r29),r2 952 00001adc afa30004 sw 4(r29),r3 953 00001ae0 8fc20000 lw r2,(r30) 954 00001ae4 8fdf0004 lw r31,4(r30) 955 00001ae8 08000010 j L270_LF2 956 00001aec 54000000 nop; not filled. 957 00001af0 L268_LF2: 958 00001af0 20030000 addi r3,r0,(#0x0)&0xff 959 00001af4 a0430000 sb (r2),r3 960 00001af8 20420001 addi r2,r2,#1 961 00001afc L270_LF2: 962 00001afc 001f0820 add r1,r0,r31 963 00001b00 23ffffff addi r31,r31,#-1 964 00001b04 6c210000 sgti r1,r1,#0 965 00001b08 1420ffe4 bnez r1,L268_LF2 966 00001b0c 54000000 nop; not filled. 967 00001b10 8fa20000 lw r2,0(r29) 968 00001b14 8fa30004 lw r3,4(r29) 969 00001b18 8fdffff8 lw r31,-8(r30) 970 00001b1c 001ee820 add r29,r0,r30 971 00001b20 8fdefffc lw r30,-4(r30) 972 00001b24 4be00000 jr r31 973 00001b28 54000000 nop 974 00001b2c .endproc _bzero 975 ;;; Ethan L. Miller, 1999. Released to the public domain 976 ;;; 977 ;;; Most of the traps are called in files from libtraps. 980 00001b2c .align 2 981 00001b2c .proc _exit 982 00001b2c .global _exit 983 00001b2c _exit: 984 00001b2c 44000300 trap #0x300 985 00001b30 4be00000 jr r31 986 00001b34 54000000 nop 987 00001b38 .endproc _exit 989 ; for the benefit of gcc. 990 00001b38 .proc ___main 991 00001b38 .global ___main 992 00001b38 ___main: 993 00001b38 4be00000 jr r31 994 00001b3c 54000000 nop 995 00001b40 .endproc ___main 996 00001b40 .text 997 00001b40 .global _etext 998 00001b40 _etext: 999 00001b40 .align 3 1000 00001b40 .data 1001 0000201a .global _edata 1002 0000201a _edata:

option1/lab4_2/src/sysproc.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Process #\000" .align 2 LC1: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething _doSomething: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#120 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52 nop ; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop ; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw 4(r29),r8 jal _dstrcpy nop ; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop ; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop ; not filled. addi r29,r29,#-8 lhi r8,((_doSomething)>>16)&0xffff addui r8,r8,(_doSomething)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop ; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56 nop ; not filled. L52: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59 nop ; not filled. addi r5,r0,#1000 add r4,r0,r2 L61: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62 nop ; not filled. addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 L62: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61 nop ; not filled. L59: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething .data .align 2 LC2: .ascii "chasetail\000" .align 2 LC3: .ascii "Chasing tail %d.\n\000" .align 2 LC4: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail _chaseTail: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2)>>16)&0xffff addui r3,r3,(LC2)&0xffff addi r29,r29,#-8 lhi r5,((LC3)>>16)&0xffff addui r5,r5,(LC3)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop ; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop ; not filled. addi r29,r29,#-8 lhi r5,((LC4)>>16)&0xffff addui r5,r5,(LC4)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail)>>16)&0xffff addui r5,r5,(_chaseTail)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop ; not filled. addi r29,r29,#16 L67: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail .data .align 2 LC6: .ascii "%d \000" .align 2 LC7: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems)>>16)&0xffff addui r2,r2,(_mysems)&0xffff addi r3,r2,#180 L90: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop ; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems: .space 200

option1/lab4_2/src/userprog.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 112 ; Text size: 3060 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "Testing case %d\n\000" .align 2 LC1_LF0: .ascii "\nUsage: \000" .align 2 LC2_LF0: .ascii " [case id]\n\000" .align 2 LC3_LF0: .ascii "userprog1.dlx.obj\000" .align 2 LC4_LF0: .ascii "userprog2.dlx.obj\000" .align 2 LC5_LF0: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop; not filled. seqi r1,r2,#2 beqz r1,L14_LF0 nop; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop; not filled. add r2,r0,r1 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. addi r29,r29,#16 j L12_LF0 nop; not filled. L14_LF0: addi r29,r29,#-8 lhi r4,((LC1_LF0)>>16)&0xffff addui r4,r4,(LC1_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop; not filled. lhi r4,((LC2_LF0)>>16)&0xffff addui r4,r4,(LC2_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. jal _exit nop; not filled. L12_LF0: seqi r1,r2,#1 bnez r1,L17_LF0 nop; not filled. seqi r1,r2,#2 beqz r1,L19_LF0 nop; not filled. j L18_LF0 nop; not filled. L17_LF0: addi r29,r29,#-8 lhi r4,((LC3_LF0)>>16)&0xffff addui r4,r4,(LC3_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L18_LF0: addi r29,r29,#-8 lhi r4,((LC4_LF0)>>16)&0xffff addui r4,r4,(LC4_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L19_LF0: addi r29,r29,#-8 lhi r4,((LC5_LF0)>>16)&0xffff addui r4,r4,(LC5_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. L21_LF0: addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_2/src/synch.working.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // Lock // Condition // // Semaphores are the only "native" synchronization primitive. // Condition variables and locks are implemented using semaphores. // #ifndef _synch_h_ #define _synch_h_ #include "queue.h" typedef struct Sem { Queue waiting; int count; } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); typedef struct Lock { Sem mutex; // Overall mutex for the Lock. Sem pri; // Semaphore on which "high-priority" processes wait int npri; // Number of high-priority processes waiting } Lock; typedef struct Cond { Lock *condLock; Sem condSem; // Semaphore on which condition variables wait int nwaiters; // Number of processes waiting for this condition } Cond; extern void LockInit (Lock *); extern void LockAcquire (Lock *); extern void LockRelease (Lock *); extern void CondInit (Cond *, Lock *); extern void CondWait (Cond *); extern void CondSignal (Cond *); extern void CondBroadcast (Cond *); #endif //_synch_h_

option1/lab4_2/src/userprog1.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 24 ; Text size: 2872 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "In Userprog1, Sum : %d\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal ___main nop; not filled. addi r3,r0,(#0x0)&0xff lhi r4,#16 addui r4,r4,#0 addi r31,r0,#0 add r2,r0,r4 L16_LF0: sb (r2),r31 addi r2,r2,#8196 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16_LF0 nop; not filled. add r31,r0,r4 lhi r5,#1 addui r5,r5,#24620 or r2,r31,r5 L21_LF0: lb r5,(r31) add r3,r5,r3 addi r31,r31,#8196 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r5,((LC0_LF0)>>16)&0xffff addui r5,r5,(LC0_LF0)&0xffff sw (r29),r5 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_2/src/process.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum: .word 10000 .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L52: addi r29,r29,#-8 lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff sw (r29),r2 jal _QueueInit nop ; not filled. lhi r8,((_runQueue)>>16)&0xffff addui r8,r8,(_runQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_waitQueue)>>16)&0xffff addui r8,r8,(_waitQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_zombieQueue)>>16)&0xffff addui r8,r8,(_zombieQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs)>>16)&0xffff addui r1,r1,(_pcbs)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L58: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57 nop ; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83 nop ; not filled. add r3,r0,r4 L85: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85 nop ; not filled. L83: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L91: lhi r5,((_runQueue)>>16)&0xffff addui r5,r5,(_runQueue)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94 nop ; not filled. addi r29,r29,#-8 lhi r8,((LC4)>>16)&0xffff addui r8,r8,(LC4)&0xffff sw (r29),r8 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L94: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98 nop ; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100 nop ; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105 nop ; not filled. L106: addi r29,r29,#-16 lhi r8,((LC5)>>16)&0xffff addui r8,r8,(LC5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L105: lhi r7,((_zombieQueue)>>16)&0xffff addui r7,r7,(_zombieQueue)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs)>>16)&0xffff addui r5,r5,(_freepcbs)&0xffff L107: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108 nop ; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114 nop ; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113 nop ; not filled. L114: addi r29,r29,#-8 lhi r8,((LC6)>>16)&0xffff addui r8,r8,(LC6)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop ; not filled. addi r29,r29,#8 L113: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116 nop ; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122 nop ; not filled. add r2,r0,r4 L124: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124 nop ; not filled. L122: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107 nop ; not filled. L108: addi r29,r29,#-8 lhi r1,((_processQuantum)>>16)&0xffff addui r1,r1,(_processQuantum)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127 nop ; not filled. L128: addi r29,r29,#-8 lhi r8,((LC7)>>16)&0xffff addui r8,r8,(LC7)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L127: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9: .ascii "%s: %s\n\000" .align 2 LC10: .ascii "ProcessSuspend\000" .align 2 LC11: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-16 lhi r4,((LC8)>>16)&0xffff addui r4,r4,(LC8)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L130: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC10)>>16)&0xffff addui r1,r1,(LC10)&0xffff sw 4(r29),r1 lhi r4,((LC11)>>16)&0xffff addui r4,r4,(LC11)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L133: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue)>>16)&0xffff addui r2,r2,(_waitQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13: .ascii "ProcessWakeup\000" .align 2 LC14: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141 nop ; not filled. L142: addi r29,r29,#-8 lhi r4,((LC12)>>16)&0xffff addui r4,r4,(LC12)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L141: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC13)>>16)&0xffff addui r1,r1,(LC13)&0xffff sw 4(r29),r1 lhi r4,((LC14)>>16)&0xffff addui r4,r4,(LC14)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L144: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue)>>16)&0xffff addui r2,r2,(_runQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152 nop ; not filled. L153: addi r29,r29,#-8 lhi r4,((LC15)>>16)&0xffff addui r4,r4,(LC15)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L152: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue)>>16)&0xffff addui r2,r2,(_zombieQueue)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159 nop ; not filled. L160: addi r29,r29,#-8 lhi r4,((LC16)>>16)&0xffff addui r4,r4,(LC16)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L159: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52: .space 4 .align 2 _location53: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r2 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r5,r0,#0 sw (r1),r5 L173: lhi r31,((_location53)>>16)&0xffff addui r31,r31,(_location53)&0xffff lw r3,(r31) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175 nop ; not filled. sgti r1,r3,#98 beqz r1,L174 nop ; not filled. L175: addi r1,r0,#0 j L182 nop ; not filled. L183: addi r1,r31,#1 sw (r2),r1 j L177 nop ; not filled. L174: slei r1,r3,#99 beqz r1,L177 nop ; not filled. add r4,r0,r2 add r2,r0,r31 L179: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183 nop ; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179 nop ; not filled. L177: add r1,r0,r3 L182: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26: .ascii "About to load %s\n\000" .align 2 LC27: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#728 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L187: addi r29,r29,#-8 lhi r13,((LC17)>>16)&0xffff addui r13,r13,(LC17)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L186: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188 nop ; not filled. L189: addi r29,r29,#-24 lhi r13,((LC18)>>16)&0xffff addui r13,r13,(LC18)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop ; not filled. addi r29,r29,#24 L188: lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC19)>>16)&0xffff addui r13,r13,(LC19)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L190: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194 nop ; not filled. L195: addi r29,r29,#-8 lhi r13,((LC20)>>16)&0xffff addui r13,r13,(LC20)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L194: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197 nop ; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199 nop ; not filled. L200: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC21)>>16)&0xffff addui r13,r13,(LC21)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L199: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202 nop ; not filled. L203: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC22)>>16)&0xffff addui r13,r13,(LC22)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L202: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop ; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC23)>>16)&0xffff addui r13,r13,(LC23)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L204: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop ; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC24)>>16)&0xffff addui r13,r13,(LC24)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L205: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206 nop ; not filled. L207: addi r29,r29,#-24 lhi r13,((LC25)>>16)&0xffff addui r13,r13,(LC25)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 L206: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209 nop ; not filled. L210: addi r29,r29,#-8 lhi r13,((LC26)>>16)&0xffff addui r13,r13,(LC26)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L209: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211 nop ; not filled. lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217 nop ; not filled. add r3,r0,r6 L219: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219 nop ; not filled. L217: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268 nop ; not filled. L211: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222 nop ; not filled. L223: addi r29,r29,#-16 lhi r13,((LC27)>>16)&0xffff addui r13,r13,(LC27)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L222: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224 nop ; not filled. L225: addi r29,r29,#-16 lhi r13,((LC28)>>16)&0xffff addui r13,r13,(LC28)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L224: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226 nop ; not filled. L227: addi r29,r29,#-16 lhi r13,((LC29)>>16)&0xffff addui r13,r13,(LC29)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L226: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop ; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231 nop ; not filled. L232: addi r29,r29,#-16 lhi r13,((LC30)>>16)&0xffff addui r13,r13,(LC30)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L231: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 j L228 nop ; not filled. L229: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop ; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r10 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r13,r0,#0 sw (r1),r13 L234: lhi r3,((_location53)>>16)&0xffff addui r3,r3,(_location53)&0xffff lw r4,(r3) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236 nop ; not filled. sgti r1,r4,#98 beqz r1,L235 nop ; not filled. L236: addi r3,r0,#0 j L233 nop ; not filled. L269: addi r1,r2,#1 sw (r3),r1 j L238 nop ; not filled. L235: slei r1,r4,#99 beqz r1,L238 nop ; not filled. add r5,r0,r2 L240: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269 nop ; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240 nop ; not filled. L238: add r3,r0,r4 L233: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53)>>16)&0xffff addui r4,r4,(_location53)&0xffff lhi r11,((_str52)>>16)&0xffff addui r11,r11,(_str52)&0xffff add r10,r0,r2 addi r5,r30,#4 L243: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249 nop ; not filled. sgti r1,r31,#98 beqz r1,L248 nop ; not filled. L249: addi r3,r0,#0 j L246 nop ; not filled. L270: addi r1,r3,#1 sw (r4),r1 j L251 nop ; not filled. L248: slei r1,r31,#99 beqz r1,L251 nop ; not filled. add r2,r0,r3 L253: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270 nop ; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253 nop ; not filled. L251: add r3,r0,r31 L246: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244 nop ; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243 nop ; not filled. L244: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257 nop ; not filled. L208: lhi r13,((_ProcessExit)>>16)&0xffff addui r13,r13,(_ProcessExit)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r3,((_runQueue)>>16)&0xffff addui r3,r3,(_runQueue)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264 nop ; not filled. L265: addi r29,r29,#-16 lhi r13,((LC31)>>16)&0xffff addui r13,r13,(LC31)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L264: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266 nop ; not filled. L267: addi r29,r29,#-8 lhi r13,((LC32)>>16)&0xffff addui r13,r13,(LC32)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L266: lhi r13,((_pcbs)>>16)&0xffff addui r13,r13,(_pcbs)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34: .ascii "File descriptor is now %d.\n\000" .align 2 LC35: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36: .ascii "start:\000" .align 2 LC37: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#168 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop ; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L281: addi r29,r29,#-16 lhi r12,((LC33)>>16)&0xffff addui r12,r12,(LC33)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 j L288 nop ; not filled. L279: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282 nop ; not filled. L283: addi r29,r29,#-8 lhi r12,((LC34)>>16)&0xffff addui r12,r12,(LC34)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L282: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285 nop ; not filled. L286: addi r29,r29,#-16 lhi r12,((LC35)>>16)&0xffff addui r12,r12,(LC35)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L285: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop ; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278 nop ; not filled. L284: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36)>>16)&0xffff addui r1,r1,(LC36)&0xffff sw 4(r29),r1 jal _dstrstr nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L289: addi r29,r29,#-8 lhi r12,((LC37)>>16)&0xffff addui r12,r12,(LC37)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L288: addi r1,r0,#-1 j L278 nop ; not filled. L287: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop ; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r1,r0,r3 addi r29,r29,#16 L278: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39: .ascii " terminated at %d.\n\000" .align 2 LC40: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41: .ascii "New address is 0x%x.\n\000" .align 2 LC42: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#272 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292 nop ; not filled. addi r2,r0,#200 L292: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293 nop ; not filled. addi r1,r0,#0 j L347 nop ; not filled. L293: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294 nop ; not filled. L295: addi r29,r29,#-16 lhi r12,((LC38)>>16)&0xffff addui r12,r12,(LC38)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop ; not filled. addi r29,r29,#16 L294: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350 nop ; not filled. L296: addi r2,r2,#-1 addi r5,r5,#-1 L350: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296 nop ; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300 nop ; not filled. L301: addi r29,r29,#-8 lhi r12,((LC39)>>16)&0xffff addui r12,r12,(LC39)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L300: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302 nop ; not filled. L303: addi r29,r29,#-8 lhi r12,((LC40)>>16)&0xffff addui r12,r12,(LC40)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L302: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349 nop ; not filled. sgti r1,r5,#0 bnez r1,L305 nop ; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311 nop ; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308 nop ; not filled. L311: addi r29,r29,#-8 lhi r12,((LC41)>>16)&0xffff addui r12,r12,(LC41)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L308: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305 nop ; not filled. L349: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315: lw r1,-220(r30) j L351 nop ; not filled. L318: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318 nop ; not filled. seqi r1,r31,#9 bnez r1,L318 nop ; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320 nop ; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304 nop ; not filled. L320: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326 nop ; not filled. snei r1,r3,#65 bnez r1,L325 nop ; not filled. L326: addi r2,r0,#1 L325: snei r1,r2,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329 nop ; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329 nop ; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328 nop ; not filled. L329: addi r3,r0,#1 L328: snei r1,r3,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331 nop ; not filled. add r4,r0,r31 j L330 nop ; not filled. L331: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333 nop ; not filled. addi r4,r2,#-87 j L330 nop ; not filled. L333: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330 nop ; not filled. addi r4,r3,#-55 L330: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338 nop ; not filled. add r2,r0,r31 j L337 nop ; not filled. L338: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340 nop ; not filled. addi r2,r2,#-87 j L337 nop ; not filled. L340: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337 nop ; not filled. addi r2,r3,#-55 L337: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315 nop ; not filled. L305: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345 nop ; not filled. L346: addi r29,r29,#-16 lhi r12,((LC42)>>16)&0xffff addui r12,r12,(LC42)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L345: add r1,r0,r5 L347: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64: .space 120 .align 2 LC43: .ascii "Hi Uday, How are you?\n\000" .align 2 LC44: .ascii "Got %d arguments.\n\000" .align 2 LC45: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC46: .ascii "Argument count is %d.\n\000" .align 2 LC47: .ascii "Argument %d is %s.\n\000" .align 2 LC48: .ascii "Converted %s to %d=%s\n\000" _buf65: .space 200 .align 2 LC49: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC50: .ascii "Option %s not recognized.\n\000" .align 2 LC51: .ascii "About to initialize queues.\n\000" .align 2 LC52: .ascii "After initializing queues.\n\000" .align 2 LC53: .ascii "After initializing memory.\n\000" .align 2 LC54: .ascii "After initializing processes.\n\000" .align 2 LC55: .ascii "After initializing synchronization tools.\n\000" .align 2 LC56: .ascii "After initializing keyboard.\n\000" .align 2 LC57: .ascii "vm\000" .align 2 LC58: .ascii "VM Descriptor is %d\n\000" .align 2 LC59: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC60: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#200 ; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop ; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb (r1),r21 addi r29,r29,#-8 lhi r21,((LC43)>>16)&0xffff addui r21,r21,(LC43)&0xffff sw (r29),r21 jal _printf nop ; not filled. jal _MyFuncRetZero nop ; not filled. lhi r21,((LC44)>>16)&0xffff addui r21,r21,(LC44)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. jal _MemoryGetSize nop ; not filled. addi r29,r29,#-8 lhi r21,((LC45)>>16)&0xffff addui r21,r21,(LC45)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop ; not filled. lhi r21,((LC46)>>16)&0xffff addui r21,r21,(LC46)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354 nop ; not filled. add r2,r0,r20 L356: addi r29,r29,#-16 lhi r21,((LC47)>>16)&0xffff addui r21,r21,(LC47)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop ; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356 nop ; not filled. L354: jal _FsModuleInit nop ; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359 nop ; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65)>>16)&0xffff addui r15,r15,(_buf65)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360 nop ; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366 nop ; not filled. sgti r1,r2,#102 bnez r1,L378 nop ; not filled. seqi r1,r2,#68 beqz r1,L376 nop ; not filled. j L364 nop ; not filled. L378: seqi r1,r2,#105 bnez r1,L365 nop ; not filled. seqi r1,r2,#117 beqz r1,L376 nop ; not filled. j L375 nop ; not filled. L364: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop ; not filled. j L411 nop ; not filled. L365: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop ; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop ; not filled. lhi r21,((LC48)>>16)&0xffff addui r21,r21,(LC48)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 j L363 nop ; not filled. L366: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r10,r0,r1 lhi r21,((LC27)>>16)&0xffff addui r21,r21,(LC27)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop ; not filled. lhi r21,((LC28)>>16)&0xffff addui r21,r21,(LC28)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop ; not filled. lhi r21,((LC29)>>16)&0xffff addui r21,r21,(LC29)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop ; not filled. addi r29,r29,#24 lhi r11,((_buf65+3)>>16)&0xffff addui r11,r11,(_buf65+3)&0xffff L367: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65)>>16)&0xffff addui r21,r21,(_buf65)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop ; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368 nop ; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367 nop ; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373: addi r29,r29,#-24 lhi r21,((LC49)>>16)&0xffff addui r21,r21,(LC49)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373 nop ; not filled. j L367 nop ; not filled. L368: addi r29,r29,#-8 sw (r29),r10 jal _close nop ; not filled. j L411 nop ; not filled. L375: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363 nop ; not filled. L376: addi r29,r29,#-8 lhi r21,((LC50)>>16)&0xffff addui r21,r21,(LC50)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop ; not filled. L411: addi r29,r29,#8 L363: snei r1,r16,#0 bnez r1,L359 nop ; not filled. L360: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361 nop ; not filled. L359: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381 nop ; not filled. L382: addi r29,r29,#-8 lhi r21,((LC51)>>16)&0xffff addui r21,r21,(LC51)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L381: jal _QueueModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383 nop ; not filled. L384: addi r29,r29,#-8 lhi r21,((LC52)>>16)&0xffff addui r21,r21,(LC52)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L383: jal _MemoryModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385 nop ; not filled. L386: addi r29,r29,#-8 lhi r21,((LC53)>>16)&0xffff addui r21,r21,(LC53)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L385: jal _ProcessModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387 nop ; not filled. L388: addi r29,r29,#-8 lhi r21,((LC54)>>16)&0xffff addui r21,r21,(LC54)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L387: jal _SynchModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389 nop ; not filled. L390: addi r29,r29,#-8 lhi r21,((LC55)>>16)&0xffff addui r21,r21,(LC55)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L389: jal _KbdModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391 nop ; not filled. L392: addi r29,r29,#-8 lhi r21,((LC56)>>16)&0xffff addui r21,r21,(LC56)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L391: addi r2,r30,#-128 addi r3,r30,#-29 L396: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396 nop ; not filled. addi r29,r29,#-8 lhi r21,((LC57)>>16)&0xffff addui r21,r21,(LC57)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop ; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398 nop ; not filled. L399: addi r29,r29,#-8 lhi r21,((LC58)>>16)&0xffff addui r21,r21,(LC58)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L398: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop ; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop ; not filled. sw (r29),r9 jal _FsClose nop ; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400 nop ; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402 nop ; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402 nop ; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406 nop ; not filled. L402: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop ; not filled. addi r29,r29,#48 L400: jal _SysprocCreateProcesses nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407 nop ; not filled. L408: addi r29,r29,#-8 lhi r21,((LC59)>>16)&0xffff addui r21,r21,(LC59)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L407: addi r29,r29,#-8 lhi r3,((_processQuantum)>>16)&0xffff addui r3,r3,(_processQuantum)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409 nop ; not filled. L410: addi r29,r29,#-8 lhi r21,((LC60)>>16)&0xffff addui r21,r21,(LC60)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L409: jal _intrreturn nop ; not filled. jal _exitsim nop ; not filled. jal _exit nop .endproc _main .data .align 2 LC62: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,((LC62)>>16)&0xffff addui r1,r1,(LC62)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1032 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420 nop ; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422: addi r2,r0,#0 add r3,r4,r5 L423: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423 nop ; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422 nop ; not filled. L420: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _ProcessSchedule nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs: .space 12 .align 2 _runQueue: .space 12 .align 2 _waitQueue: .space 12 .align 2 _zombieQueue: .space 12 .align 2 _pcbs: .space 3840 .text .align 2 .proc _ProcessExit _ProcessExit: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _exit nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit

option1/lab4_2/src/errors

option1/lab4_2/src/misc.h

// // Routines used by the entire operating system. // #ifndef _misc_h_ #define _misc_h_ extern char* dstrcpy(char*, const char*); extern char* dstrncpy(char*, const char*, int n); extern const char *dstrstr (const char *, const char *); extern int dstrlen (const char *); extern int dstrncmp (const char *, const char *, int); extern int dstrtol(char*, char**, int); extern const char* dindex(const char*, int); extern const char* dmindex(const char*, const char *); inline int isspace (char c) { return ((c == ' ') || (c == '\t') || (c == '\n')); } inline int isxdigit (char c) { return (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) || ((c >= 'A') && (c <= 'A'))); } #endif // !_misc_h_

option1/lab4_2/src/os.dlx

; Linked by DLX-LD. ; MemSize 90112 ; Data size: 32376 ; Text size: 41180 ; Stack size: 8192 .text 0x1000 .data 0xc000 ;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem_LF0 lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg_LF0; skip over the system part.... intrSystem_LF0: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg_LF0: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6; push CAUSE sw 4(r29),r4; push IAR sw 8(r29),r5; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1),r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1),r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1); 156-340 = -184 lw r1,-296(r1); 44-340 = -296 rfe .endproc _intrreturn ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2; save r2 lw r2,16(r29); Get the new interrupt level andi r2,r2,#0x0f; Mask off interrupt levels movs2i r1,status sw 8(r29),r1; Store the old interrupt values andi r1,r1,#0xfff0; Mask off old interrupt level or r1,r2,r1; OR in new interrupt level movi2s status,r1 lw r1,8(r29); Get back the original interrupt level andi r1,r1,#0x0f; Mask off all but interrupt levels lw r2,12(r29); restore r2 addui r29,r29,#16; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom ; Compiled by GCC .data .align 2 _rcsid_LF2: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF2 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF2: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF2: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1_LF2: .ascii "dlx:\000" .align 2 LC2_LF2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3_LF2: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55_LF2 nop; not filled. L56_LF2: addi r29,r29,#-16 lhi r8,((LC0_LF2)>>16)&0xffff addui r8,r8,(LC0_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L55_LF2: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74_LF2 nop; not filled. addi r3,r0,#0 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r2,r0,r6 L61_LF2: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59_LF2 nop; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61_LF2 nop; not filled. L59_LF2: sgti r1,r3,#31 beqz r1,L64_LF2 nop; not filled. L74_LF2: addi r1,r0,#-1 j L73_LF2 nop; not filled. L64_LF2: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65_LF2 nop; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75_LF2 nop; not filled. L65_LF2: addi r8,r0,#0 L75_LF2: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67_LF2 nop; not filled. L68_LF2: addi r29,r29,#-16 lhi r8,((LC2_LF2)>>16)&0xffff addui r8,r8,(LC2_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L67_LF2: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs_LF2)>>16)&0xffff addui r8,r8,(_fs_LF2)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69_LF2 nop; not filled. lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73_LF2 nop; not filled. L69_LF2: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF2 nop; not filled. L72_LF2: addi r29,r29,#-24 lhi r8,((LC3_LF2)>>16)&0xffff addui r8,r8,(LC3_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L71_LF2: add r1,r0,r3 L73_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84_LF2 nop; not filled. addi r2,r0,#1 L84_LF2: snei r1,r2,#0 beqz r1,L82_LF2 nop; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs_LF2)>>16)&0xffff addui r4,r4,(_fs_LF2)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop; not filled. addi r29,r29,#8 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86_LF2 nop; not filled. L82_LF2: addi r1,r0,#-1 L86_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94_LF2 nop; not filled. addi r2,r0,#1 L94_LF2: snei r1,r2,#0 beqz r1,L92_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L91_LF2 nop; not filled. L92_LF2: addi r1,r0,#-1 L91_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103_LF2 nop; not filled. addi r2,r0,#1 L103_LF2: snei r1,r2,#0 beqz r1,L101_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L100_LF2 nop; not filled. L101_LF2: addi r1,r0,#-1 L100_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112_LF2 nop; not filled. addi r2,r0,#1 L112_LF2: snei r1,r2,#0 beqz r1,L110_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L109_LF2 nop; not filled. L110_LF2: addi r1,r0,#-1 L109_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118_LF2 nop; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs_LF2+44)>>16)&0xffff addui r1,r1,(_fs_LF2+44)&0xffff j L120_LF2 nop; not filled. L118_LF2: addi r29,r29,#-8 lhi r1,((_fs_LF2+20)>>16)&0xffff addui r1,r1,(_fs_LF2+20)&0xffff L120_LF2: sw (r29),r2 lw r1,(r1) jalr r1 nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4_LF2: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126_LF2 nop; not filled. L127_LF2: addi r29,r29,#-16 lhi r6,((LC4_LF2)>>16)&0xffff addui r6,r6,(LC4_LF2)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L126_LF2: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128_LF2 nop; not filled. addi r1,r0,#1 L128_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff addi r2,r31,#8308 L182_LF2: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182_LF2 nop; not filled. lhi r1,((_fs_LF2)>>16)&0xffff addui r1,r1,(_fs_LF2)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs_LF2: .space 48 .align 2 _openfiles_LF2: .space 8576 ; Compiled by GCC .align 2 _rcsid_LF3: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF3 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF3 nop; not filled. L6_LF3: addi r31,r0,#1 L5_LF3: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF3 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF3 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF3 nop; not filled. L12_LF3: addi r2,r0,#1 L11_LF3: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF3 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF3: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone_LF3: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0_LF3: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61_LF3 nop; not filled. addi r2,r3,#31 L61_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF3 nop; not filled. L65_LF3: addi r29,r29,#-16 lhi r6,((LC0_LF3)>>16)&0xffff addui r6,r6,(LC0_LF3)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L64_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1_LF3: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2_LF3: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3_LF3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68_LF3 nop; not filled. addui r2,r2,#65535 L68_LF3: srai r8,r2,#0x10 lhi r3,((_pagestart_LF3)>>16)&0xffff addui r3,r3,(_pagestart_LF3)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69_LF3 nop; not filled. addui r2,r2,#65535 L69_LF3: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax_LF3)>>16)&0xffff addui r3,r3,(_freemapmax_LF3)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70_LF3 nop; not filled. addi r2,r8,#62 L70_LF3: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF3 nop; not filled. L72_LF3: addi r29,r29,#-16 lhi r11,((LC1_LF3)>>16)&0xffff addui r11,r11,(LC1_LF3)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop; not filled. addi r29,r29,#16 L71_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73_LF3 nop; not filled. L74_LF3: addi r29,r29,#-8 lhi r11,((LC2_LF3)>>16)&0xffff addui r11,r11,(LC2_LF3)&0xffff sw (r29),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L73_LF3: addi r2,r0,#0 lhi r4,((_freemapmax_LF3)>>16)&0xffff addui r4,r4,(_freemapmax_LF3)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76_LF3 nop; not filled. lhi r3,((_freepages_LF3)>>16)&0xffff addui r3,r3,(_freepages_LF3)&0xffff L78_LF3: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78_LF3 nop; not filled. L76_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81_LF3 nop; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone_LF3)>>16)&0xffff addui r9,r9,(_negativeone_LF3)&0xffff L83_LF3: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85_LF3 nop; not filled. addi r2,r4,#31 L85_LF3: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages_LF3)>>16)&0xffff addui r11,r11,(_freepages_LF3)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89_LF3 nop; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82_LF3 nop; not filled. L89_LF3: addi r29,r29,#-16 lhi r11,((LC0_LF3)>>16)&0xffff addui r11,r11,(LC0_LF3)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L82_LF3: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83_LF3 nop; not filled. L81_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF3 nop; not filled. L92_LF3: addi r29,r29,#-8 lhi r11,((LC3_LF3)>>16)&0xffff addui r11,r11,(LC3_LF3)&0xffff sw (r29),r11 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L91_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42_LF3: .word 0 .align 2 LC4_LF3: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5_LF3: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6_LF3: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((LC4_LF3)>>16)&0xffff addui r7,r7,(LC4_LF3)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110_LF3 nop; not filled. L111_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF3 nop; not filled. L113_LF3: addi r29,r29,#-8 lhi r7,((LC5_LF3)>>16)&0xffff addui r7,r7,(LC5_LF3)&0xffff sw (r29),r7 lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L112_LF3: lhi r2,((_mapnum42_LF3)>>16)&0xffff addui r2,r2,(_mapnum42_LF3)&0xffff lw r1,(r2) lhi r4,((_freepages_LF3)>>16)&0xffff addui r4,r4,(_freepages_LF3)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115_LF3 nop; not filled. lhi r1,((_freemapmax_LF3)>>16)&0xffff addui r1,r1,(_freemapmax_LF3)&0xffff lw r3,(r1) L116_LF3: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114_LF3 nop; not filled. addi r7,r0,#0 sw (r2),r7 L114_LF3: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116_LF3 nop; not filled. L115_LF3: lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120_LF3 nop; not filled. addi r2,r0,#1 L121_LF3: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121_LF3 nop; not filled. L120_LF3: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42_LF3)>>16)&0xffff addui r5,r5,(_mapnum42_LF3)&0xffff lw r3,(r5) lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125_LF3 nop; not filled. L126_LF3: addi r29,r29,#-16 lhi r7,((LC6_LF3)>>16)&0xffff addui r7,r7,(LC6_LF3)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L125_LF3: lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7_LF3: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129_LF3 nop; not filled. addi r2,r6,#31 L129_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128_LF3 nop; not filled. L133_LF3: addi r29,r29,#-16 lhi r7,((LC0_LF3)>>16)&0xffff addui r7,r7,(LC0_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L128_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134_LF3 nop; not filled. L135_LF3: addi r29,r29,#-16 lhi r7,((LC7_LF3)>>16)&0xffff addui r7,r7,(LC7_LF3)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L134_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139_LF3 nop; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140_LF3 nop; not filled. L139_LF3: addi r1,r0,#0 L140_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L168_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170_LF3 nop; not filled. addi r31,r0,#0 j L169_LF3 nop; not filled. L170_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169_LF3: snei r1,r31,#0 beqz r1,L167_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172_LF3 nop; not filled. add r2,r0,r3 L172_LF3: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168_LF3 nop; not filled. L167_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L192_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194_LF3 nop; not filled. addi r31,r0,#0 j L193_LF3 nop; not filled. L194_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193_LF3: snei r1,r31,#0 beqz r1,L191_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197_LF3 nop; not filled. add r2,r0,r3 L197_LF3: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192_LF3 nop; not filled. L191_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61_LF3: .word 13316 .align 2 LC8_LF3: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214_LF3 nop; not filled. lhi r1,((_invalidOps61_LF3)>>16)&0xffff addui r1,r1,(_invalidOps61_LF3)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213_LF3 nop; not filled. L214_LF3: addi r1,r0,#-1 j L218_LF3 nop; not filled. L213_LF3: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215_LF3 nop; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215_LF3: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216_LF3 nop; not filled. L217_LF3: addi r29,r29,#-24 lhi r7,((LC8_LF3)>>16)&0xffff addui r7,r7,(LC8_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L216_LF3: add r1,r0,r4 L218_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart_LF3: .space 4 .align 2 _freemapmax_LF3: .space 4 .align 2 _nfreepages_LF3: .space 4 .align 2 _freepages_LF3: .space 8192 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF4 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF4 nop; not filled. L6_LF4: addi r31,r0,#1 L5_LF4: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF4 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF4 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF4 nop; not filled. L12_LF4: addi r2,r0,#1 L11_LF4: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF4: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF4 nop; not filled. L34_LF4: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF4 nop; not filled. L37_LF4: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF4 nop; not filled. L32_LF4: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF4 nop; not filled. L51_LF4: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF4 nop; not filled. L50_LF4: add r2,r0,r31 lw r31,4(r30) L54_LF4: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF4 nop; not filled. L75_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF4 nop; not filled. L73_LF4: seq r1,r2,r5 beqz r1,L80_LF4 nop; not filled. L86_LF4: addi r1,r0,#0 j L84_LF4 nop; not filled. L80_LF4: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF4 nop; not filled. sne r2,r31,r3 L82_LF4: add r1,r0,r2 L84_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF4 nop; not filled. L95_LF4: addi r2,r2,#1 L97_LF4: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF4 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF4 nop; not filled. L126_LF4: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF4 nop; not filled. L125_LF4: add r6,r0,r3 j L149_LF4 nop; not filled. L130_LF4: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF4 nop; not filled. L136_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF4 nop; not filled. L134_LF4: seq r1,r2,r6 beqz r1,L141_LF4 nop; not filled. L150_LF4: addi r1,r0,#0 j L132_LF4 nop; not filled. L141_LF4: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF4 nop; not filled. sne r31,r3,r2 L143_LF4: add r1,r0,r31 L132_LF4: snei r1,r1,#0 bnez r1,L131_LF4 nop; not filled. add r1,r0,r5 j L146_LF4 nop; not filled. L131_LF4: addi r5,r5,#1 L149_LF4: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF4 nop; not filled. addi r1,r0,#0 L146_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF4 nop; not filled. add r5,r0,r1 L165_LF4: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF4 nop; not filled. lbu r3,(r4) L169_LF4: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF4 nop; not filled. add r1,r0,r4 j L173_LF4 nop; not filled. L168_LF4: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF4 nop; not filled. L163_LF4: bnez r5,L165_LF4 nop; not filled. L164_LF4: addi r1,r0,#0 L173_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF4 nop; not filled. L183_LF4: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF4 nop; not filled. add r1,r0,r2 j L186_LF4 nop; not filled. L184_LF4: addi r2,r2,#1 L187_LF4: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF4 nop; not filled. addi r1,r0,#0 L186_LF4: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF4 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF4 nop; not filled. L203_LF4: snei r1,r3,#0 bnez r1,L205_LF4 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF4: sb (r4),r6 addi r4,r4,#1 j L204_LF4 nop; not filled. L205_LF4: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF4 nop; not filled. L209_LF4: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF4 nop; not filled. L208_LF4: addi r5,r0,#10 L212_LF4: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF4 nop; not filled. L204_LF4: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF4 nop; not filled. L220_LF4: addi r2,r2,#1 L247_LF4: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF4 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF4 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF4 nop; not filled. sw (r5),r2 L222_LF4: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF4 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF4 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF4 nop; not filled. L224_LF4: addi r6,r0,#1 L225_LF4: snei r1,r4,#0 bnez r1,L226_LF4 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF4 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF4 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF4 nop; not filled. L229_LF4: addi r4,r0,#16 addi r2,r2,#1 j L226_LF4 nop; not filled. L228_LF4: addi r4,r0,#8 j L226_LF4 nop; not filled. L227_LF4: addi r4,r0,#10 L226_LF4: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF4 nop; not filled. L248_LF4: add r1,r0,r3 j L245_LF4 nop; not filled. L233_LF4: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF4 nop; not filled. L236_LF4: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF4 nop; not filled. L238_LF4: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF4 nop; not filled. L240_LF4: addi r1,r0,#1000 L237_LF4: slt r31,r1,r4 beqz r31,L246_LF4 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF4 nop; not filled. L246_LF4: snei r1,r5,#0 beqz r1,L244_LF4 nop; not filled. sw (r5),r2 L244_LF4: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF4 nop; not filled. L257_LF4: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF4 nop; not filled. L268_LF4: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF5 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF5 nop; not filled. L6_LF5: addi r31,r0,#1 L5_LF5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF5 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF5 nop; not filled. L12_LF5: addi r2,r0,#1 L11_LF5: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF5 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF5: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum_LF5: .word 10000 .align 2 LC0_LF5: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1_LF5: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2_LF5: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF5 nop; not filled. L53_LF5: addi r29,r29,#-8 lhi r8,((LC0_LF5)>>16)&0xffff addui r8,r8,(LC0_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L52_LF5: addi r29,r29,#-8 lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff sw (r29),r2 jal _QueueInit nop; not filled. lhi r8,((_runQueue_LF5)>>16)&0xffff addui r8,r8,(_runQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_waitQueue_LF5)>>16)&0xffff addui r8,r8,(_waitQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_zombieQueue_LF5)>>16)&0xffff addui r8,r8,(_zombieQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs_LF5)>>16)&0xffff addui r1,r1,(_pcbs_LF5)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57_LF5: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58_LF5 nop; not filled. L59_LF5: addi r29,r29,#-16 lhi r8,((LC1_LF5)>>16)&0xffff addui r8,r8,(LC1_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L58_LF5: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57_LF5 nop; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF5 nop; not filled. L65_LF5: addi r29,r29,#-8 lhi r8,((LC2_LF5)>>16)&0xffff addui r8,r8,(LC2_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L64_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83_LF5 nop; not filled. add r3,r0,r4 L85_LF5: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85_LF5 nop; not filled. L83_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3_LF5: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4_LF5: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5_LF5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6_LF5: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7_LF5: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF5 nop; not filled. L92_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3_LF5)>>16)&0xffff addui r8,r8,(LC3_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L91_LF5: lhi r5,((_runQueue_LF5)>>16)&0xffff addui r5,r5,(_runQueue_LF5)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94_LF5 nop; not filled. addi r29,r29,#-8 lhi r8,((LC4_LF5)>>16)&0xffff addui r8,r8,(LC4_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L94_LF5: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98_LF5 nop; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100_LF5 nop; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100_LF5: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105_LF5 nop; not filled. L106_LF5: addi r29,r29,#-16 lhi r8,((LC5_LF5)>>16)&0xffff addui r8,r8,(LC5_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L105_LF5: lhi r7,((_zombieQueue_LF5)>>16)&0xffff addui r7,r7,(_zombieQueue_LF5)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs_LF5)>>16)&0xffff addui r5,r5,(_freepcbs_LF5)&0xffff L107_LF5: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108_LF5 nop; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113_LF5 nop; not filled. L114_LF5: addi r29,r29,#-8 lhi r8,((LC6_LF5)>>16)&0xffff addui r8,r8,(LC6_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop; not filled. addi r29,r29,#8 L113_LF5: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116_LF5 nop; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116_LF5: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122_LF5 nop; not filled. add r2,r0,r4 L124_LF5: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124_LF5 nop; not filled. L122_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107_LF5 nop; not filled. L108_LF5: addi r29,r29,#-8 lhi r1,((_processQuantum_LF5)>>16)&0xffff addui r1,r1,(_processQuantum_LF5)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127_LF5 nop; not filled. L128_LF5: addi r29,r29,#-8 lhi r8,((LC7_LF5)>>16)&0xffff addui r8,r8,(LC7_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L127_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8_LF5: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9_LF5: .ascii "%s: %s\n\000" .align 2 LC10_LF5: .ascii "ProcessSuspend\000" .align 2 LC11_LF5: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF5 nop; not filled. L131_LF5: addi r29,r29,#-16 lhi r4,((LC8_LF5)>>16)&0xffff addui r4,r4,(LC8_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L130_LF5: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC10_LF5)>>16)&0xffff addui r1,r1,(LC10_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC11_LF5)>>16)&0xffff addui r4,r4,(LC11_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L133_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue_LF5)>>16)&0xffff addui r2,r2,(_waitQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12_LF5: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13_LF5: .ascii "ProcessWakeup\000" .align 2 LC14_LF5: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141_LF5 nop; not filled. L142_LF5: addi r29,r29,#-8 lhi r4,((LC12_LF5)>>16)&0xffff addui r4,r4,(LC12_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L141_LF5: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC13_LF5)>>16)&0xffff addui r1,r1,(LC13_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC14_LF5)>>16)&0xffff addui r4,r4,(LC14_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L144_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue_LF5)>>16)&0xffff addui r2,r2,(_runQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15_LF5: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16_LF5: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152_LF5 nop; not filled. L153_LF5: addi r29,r29,#-8 lhi r4,((LC15_LF5)>>16)&0xffff addui r4,r4,(LC15_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L152_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue_LF5)>>16)&0xffff addui r2,r2,(_zombieQueue_LF5)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159_LF5 nop; not filled. L160_LF5: addi r29,r29,#-8 lhi r4,((LC16_LF5)>>16)&0xffff addui r4,r4,(LC16_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L159_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52_LF5: .space 4 .align 2 _location53_LF5: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r2 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r5,r0,#0 sw (r1),r5 L173_LF5: lhi r31,((_location53_LF5)>>16)&0xffff addui r31,r31,(_location53_LF5)&0xffff lw r3,(r31) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175_LF5 nop; not filled. sgti r1,r3,#98 beqz r1,L174_LF5 nop; not filled. L175_LF5: addi r1,r0,#0 j L182_LF5 nop; not filled. L183_LF5: addi r1,r31,#1 sw (r2),r1 j L177_LF5 nop; not filled. L174_LF5: slei r1,r3,#99 beqz r1,L177_LF5 nop; not filled. add r4,r0,r2 add r2,r0,r31 L179_LF5: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183_LF5 nop; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179_LF5 nop; not filled. L177_LF5: add r1,r0,r3 L182_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17_LF5: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18_LF5: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19_LF5: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20_LF5: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21_LF5: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22_LF5: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23_LF5: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24_LF5: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25_LF5: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26_LF5: .ascii "About to load %s\n\000" .align 2 LC27_LF5: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28_LF5: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29_LF5: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30_LF5: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31_LF5: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32_LF5: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#728; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF5 nop; not filled. L187_LF5: addi r29,r29,#-8 lhi r13,((LC17_LF5)>>16)&0xffff addui r13,r13,(LC17_LF5)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L186_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188_LF5 nop; not filled. L189_LF5: addi r29,r29,#-24 lhi r13,((LC18_LF5)>>16)&0xffff addui r13,r13,(LC18_LF5)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop; not filled. addi r29,r29,#24 L188_LF5: lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC19_LF5)>>16)&0xffff addui r13,r13,(LC19_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L190_LF5: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194_LF5 nop; not filled. L195_LF5: addi r29,r29,#-8 lhi r13,((LC20_LF5)>>16)&0xffff addui r13,r13,(LC20_LF5)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L194_LF5: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197_LF5 nop; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197_LF5: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199_LF5 nop; not filled. L200_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC21_LF5)>>16)&0xffff addui r13,r13,(LC21_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L199_LF5: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202_LF5 nop; not filled. L203_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC22_LF5)>>16)&0xffff addui r13,r13,(LC22_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L202_LF5: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC23_LF5)>>16)&0xffff addui r13,r13,(LC23_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L204_LF5: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC24_LF5)>>16)&0xffff addui r13,r13,(LC24_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L205_LF5: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206_LF5 nop; not filled. L207_LF5: addi r29,r29,#-24 lhi r13,((LC25_LF5)>>16)&0xffff addui r13,r13,(LC25_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 L206_LF5: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209_LF5 nop; not filled. L210_LF5: addi r29,r29,#-8 lhi r13,((LC26_LF5)>>16)&0xffff addui r13,r13,(LC26_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L209_LF5: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211_LF5 nop; not filled. lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217_LF5 nop; not filled. add r3,r0,r6 L219_LF5: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219_LF5 nop; not filled. L217_LF5: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268_LF5 nop; not filled. L211_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222_LF5 nop; not filled. L223_LF5: addi r29,r29,#-16 lhi r13,((LC27_LF5)>>16)&0xffff addui r13,r13,(LC27_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L222_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224_LF5 nop; not filled. L225_LF5: addi r29,r29,#-16 lhi r13,((LC28_LF5)>>16)&0xffff addui r13,r13,(LC28_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L224_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226_LF5 nop; not filled. L227_LF5: addi r29,r29,#-16 lhi r13,((LC29_LF5)>>16)&0xffff addui r13,r13,(LC29_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L226_LF5: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228_LF5: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231_LF5 nop; not filled. L232_LF5: addi r29,r29,#-16 lhi r13,((LC30_LF5)>>16)&0xffff addui r13,r13,(LC30_LF5)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L231_LF5: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 j L228_LF5 nop; not filled. L229_LF5: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r10 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r13,r0,#0 sw (r1),r13 L234_LF5: lhi r3,((_location53_LF5)>>16)&0xffff addui r3,r3,(_location53_LF5)&0xffff lw r4,(r3) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236_LF5 nop; not filled. sgti r1,r4,#98 beqz r1,L235_LF5 nop; not filled. L236_LF5: addi r3,r0,#0 j L233_LF5 nop; not filled. L269_LF5: addi r1,r2,#1 sw (r3),r1 j L238_LF5 nop; not filled. L235_LF5: slei r1,r4,#99 beqz r1,L238_LF5 nop; not filled. add r5,r0,r2 L240_LF5: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269_LF5 nop; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240_LF5 nop; not filled. L238_LF5: add r3,r0,r4 L233_LF5: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53_LF5)>>16)&0xffff addui r4,r4,(_location53_LF5)&0xffff lhi r11,((_str52_LF5)>>16)&0xffff addui r11,r11,(_str52_LF5)&0xffff add r10,r0,r2 addi r5,r30,#4 L243_LF5: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249_LF5 nop; not filled. sgti r1,r31,#98 beqz r1,L248_LF5 nop; not filled. L249_LF5: addi r3,r0,#0 j L246_LF5 nop; not filled. L270_LF5: addi r1,r3,#1 sw (r4),r1 j L251_LF5 nop; not filled. L248_LF5: slei r1,r31,#99 beqz r1,L251_LF5 nop; not filled. add r2,r0,r3 L253_LF5: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270_LF5 nop; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253_LF5 nop; not filled. L251_LF5: add r3,r0,r31 L246_LF5: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244_LF5 nop; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243_LF5 nop; not filled. L244_LF5: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257_LF5 nop; not filled. L208_LF5: lhi r13,((_ProcessExit_LF5)>>16)&0xffff addui r13,r13,(_ProcessExit_LF5)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257_LF5: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r3,((_runQueue_LF5)>>16)&0xffff addui r3,r3,(_runQueue_LF5)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264_LF5 nop; not filled. L265_LF5: addi r29,r29,#-16 lhi r13,((LC31_LF5)>>16)&0xffff addui r13,r13,(LC31_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L264_LF5: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266_LF5 nop; not filled. L267_LF5: addi r29,r29,#-8 lhi r13,((LC32_LF5)>>16)&0xffff addui r13,r13,(LC32_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L266_LF5: lhi r13,((_pcbs_LF5)>>16)&0xffff addui r13,r13,(_pcbs_LF5)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33_LF5: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34_LF5: .ascii "File descriptor is now %d.\n\000" .align 2 LC35_LF5: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36_LF5: .ascii "start:\000" .align 2 LC37_LF5: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#168; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L281_LF5: addi r29,r29,#-16 lhi r12,((LC33_LF5)>>16)&0xffff addui r12,r12,(LC33_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 j L288_LF5 nop; not filled. L279_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282_LF5 nop; not filled. L283_LF5: addi r29,r29,#-8 lhi r12,((LC34_LF5)>>16)&0xffff addui r12,r12,(LC34_LF5)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L282_LF5: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285_LF5 nop; not filled. L286_LF5: addi r29,r29,#-16 lhi r12,((LC35_LF5)>>16)&0xffff addui r12,r12,(LC35_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L285_LF5: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278_LF5 nop; not filled. L284_LF5: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36_LF5)>>16)&0xffff addui r1,r1,(LC36_LF5)&0xffff sw 4(r29),r1 jal _dstrstr nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L289_LF5: addi r29,r29,#-8 lhi r12,((LC37_LF5)>>16)&0xffff addui r12,r12,(LC37_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L288_LF5: addi r1,r0,#-1 j L278_LF5 nop; not filled. L287_LF5: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. add r1,r0,r3 addi r29,r29,#16 L278_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38_LF5: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39_LF5: .ascii " terminated at %d.\n\000" .align 2 LC40_LF5: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41_LF5: .ascii "New address is 0x%x.\n\000" .align 2 LC42_LF5: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#272; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292_LF5 nop; not filled. addi r2,r0,#200 L292_LF5: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293_LF5 nop; not filled. addi r1,r0,#0 j L347_LF5 nop; not filled. L293_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294_LF5 nop; not filled. L295_LF5: addi r29,r29,#-16 lhi r12,((LC38_LF5)>>16)&0xffff addui r12,r12,(LC38_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop; not filled. addi r29,r29,#16 L294_LF5: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350_LF5 nop; not filled. L296_LF5: addi r2,r2,#-1 addi r5,r5,#-1 L350_LF5: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296_LF5 nop; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300_LF5 nop; not filled. L301_LF5: addi r29,r29,#-8 lhi r12,((LC39_LF5)>>16)&0xffff addui r12,r12,(LC39_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop; not filled. addi r29,r29,#8 L300_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302_LF5 nop; not filled. L303_LF5: addi r29,r29,#-8 lhi r12,((LC40_LF5)>>16)&0xffff addui r12,r12,(LC40_LF5)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L302_LF5: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304_LF5: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349_LF5 nop; not filled. sgti r1,r5,#0 bnez r1,L305_LF5 nop; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308_LF5 nop; not filled. L311_LF5: addi r29,r29,#-8 lhi r12,((LC41_LF5)>>16)&0xffff addui r12,r12,(LC41_LF5)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L308_LF5: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305_LF5 nop; not filled. L349_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315_LF5: lw r1,-220(r30) j L351_LF5 nop; not filled. L318_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351_LF5: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318_LF5 nop; not filled. seqi r1,r31,#9 bnez r1,L318_LF5 nop; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320_LF5 nop; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304_LF5 nop; not filled. L320_LF5: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326_LF5 nop; not filled. snei r1,r3,#65 bnez r1,L325_LF5 nop; not filled. L326_LF5: addi r2,r0,#1 L325_LF5: snei r1,r2,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329_LF5 nop; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329_LF5 nop; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328_LF5 nop; not filled. L329_LF5: addi r3,r0,#1 L328_LF5: snei r1,r3,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331_LF5 nop; not filled. add r4,r0,r31 j L330_LF5 nop; not filled. L331_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333_LF5 nop; not filled. addi r4,r2,#-87 j L330_LF5 nop; not filled. L333_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330_LF5 nop; not filled. addi r4,r3,#-55 L330_LF5: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338_LF5 nop; not filled. add r2,r0,r31 j L337_LF5 nop; not filled. L338_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340_LF5 nop; not filled. addi r2,r2,#-87 j L337_LF5 nop; not filled. L340_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337_LF5 nop; not filled. addi r2,r3,#-55 L337_LF5: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315_LF5 nop; not filled. L305_LF5: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345_LF5 nop; not filled. L346_LF5: addi r29,r29,#-16 lhi r12,((LC42_LF5)>>16)&0xffff addui r12,r12,(LC42_LF5)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L345_LF5: add r1,r0,r5 L347_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64_LF5: .space 120 .align 2 LC43_LF5: .ascii "Hi Uday, How are you?\n\000" .align 2 LC44_LF5: .ascii "Got %d arguments.\n\000" .align 2 LC45_LF5: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC46_LF5: .ascii "Argument count is %d.\n\000" .align 2 LC47_LF5: .ascii "Argument %d is %s.\n\000" .align 2 LC48_LF5: .ascii "Converted %s to %d=%s\n\000" _buf65_LF5: .space 200 .align 2 LC49_LF5: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC50_LF5: .ascii "Option %s not recognized.\n\000" .align 2 LC51_LF5: .ascii "About to initialize queues.\n\000" .align 2 LC52_LF5: .ascii "After initializing queues.\n\000" .align 2 LC53_LF5: .ascii "After initializing memory.\n\000" .align 2 LC54_LF5: .ascii "After initializing processes.\n\000" .align 2 LC55_LF5: .ascii "After initializing synchronization tools.\n\000" .align 2 LC56_LF5: .ascii "After initializing keyboard.\n\000" .align 2 LC57_LF5: .ascii "vm\000" .align 2 LC58_LF5: .ascii "VM Descriptor is %d\n\000" .align 2 LC59_LF5: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC60_LF5: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#200; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb (r1),r21 addi r29,r29,#-8 lhi r21,((LC43_LF5)>>16)&0xffff addui r21,r21,(LC43_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. jal _MyFuncRetZero nop; not filled. lhi r21,((LC44_LF5)>>16)&0xffff addui r21,r21,(LC44_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. jal _MemoryGetSize nop; not filled. addi r29,r29,#-8 lhi r21,((LC45_LF5)>>16)&0xffff addui r21,r21,(LC45_LF5)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop; not filled. lhi r21,((LC46_LF5)>>16)&0xffff addui r21,r21,(LC46_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354_LF5 nop; not filled. add r2,r0,r20 L356_LF5: addi r29,r29,#-16 lhi r21,((LC47_LF5)>>16)&0xffff addui r21,r21,(LC47_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356_LF5 nop; not filled. L354_LF5: jal _FsModuleInit nop; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359_LF5 nop; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65_LF5)>>16)&0xffff addui r15,r15,(_buf65_LF5)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361_LF5: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360_LF5 nop; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366_LF5 nop; not filled. sgti r1,r2,#102 bnez r1,L378_LF5 nop; not filled. seqi r1,r2,#68 beqz r1,L376_LF5 nop; not filled. j L364_LF5 nop; not filled. L378_LF5: seqi r1,r2,#105 bnez r1,L365_LF5 nop; not filled. seqi r1,r2,#117 beqz r1,L376_LF5 nop; not filled. j L375_LF5 nop; not filled. L364_LF5: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop; not filled. j L411_LF5 nop; not filled. L365_LF5: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop; not filled. lhi r21,((LC48_LF5)>>16)&0xffff addui r21,r21,(LC48_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 j L363_LF5 nop; not filled. L366_LF5: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r10,r0,r1 lhi r21,((LC27_LF5)>>16)&0xffff addui r21,r21,(LC27_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop; not filled. lhi r21,((LC28_LF5)>>16)&0xffff addui r21,r21,(LC28_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop; not filled. lhi r21,((LC29_LF5)>>16)&0xffff addui r21,r21,(LC29_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop; not filled. addi r29,r29,#24 lhi r11,((_buf65_LF5+3)>>16)&0xffff addui r11,r11,(_buf65_LF5+3)&0xffff L367_LF5: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65_LF5)>>16)&0xffff addui r21,r21,(_buf65_LF5)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368_LF5 nop; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367_LF5 nop; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373_LF5: addi r29,r29,#-24 lhi r21,((LC49_LF5)>>16)&0xffff addui r21,r21,(LC49_LF5)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373_LF5 nop; not filled. j L367_LF5 nop; not filled. L368_LF5: addi r29,r29,#-8 sw (r29),r10 jal _close nop; not filled. j L411_LF5 nop; not filled. L375_LF5: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363_LF5 nop; not filled. L376_LF5: addi r29,r29,#-8 lhi r21,((LC50_LF5)>>16)&0xffff addui r21,r21,(LC50_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop; not filled. L411_LF5: addi r29,r29,#8 L363_LF5: snei r1,r16,#0 bnez r1,L359_LF5 nop; not filled. L360_LF5: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361_LF5 nop; not filled. L359_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381_LF5 nop; not filled. L382_LF5: addi r29,r29,#-8 lhi r21,((LC51_LF5)>>16)&0xffff addui r21,r21,(LC51_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L381_LF5: jal _QueueModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383_LF5 nop; not filled. L384_LF5: addi r29,r29,#-8 lhi r21,((LC52_LF5)>>16)&0xffff addui r21,r21,(LC52_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L383_LF5: jal _MemoryModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385_LF5 nop; not filled. L386_LF5: addi r29,r29,#-8 lhi r21,((LC53_LF5)>>16)&0xffff addui r21,r21,(LC53_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L385_LF5: jal _ProcessModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387_LF5 nop; not filled. L388_LF5: addi r29,r29,#-8 lhi r21,((LC54_LF5)>>16)&0xffff addui r21,r21,(LC54_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L387_LF5: jal _SynchModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389_LF5 nop; not filled. L390_LF5: addi r29,r29,#-8 lhi r21,((LC55_LF5)>>16)&0xffff addui r21,r21,(LC55_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L389_LF5: jal _KbdModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391_LF5 nop; not filled. L392_LF5: addi r29,r29,#-8 lhi r21,((LC56_LF5)>>16)&0xffff addui r21,r21,(LC56_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L391_LF5: addi r2,r30,#-128 addi r3,r30,#-29 L396_LF5: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396_LF5 nop; not filled. addi r29,r29,#-8 lhi r21,((LC57_LF5)>>16)&0xffff addui r21,r21,(LC57_LF5)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398_LF5 nop; not filled. L399_LF5: addi r29,r29,#-8 lhi r21,((LC58_LF5)>>16)&0xffff addui r21,r21,(LC58_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L398_LF5: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop; not filled. sw (r29),r9 jal _FsClose nop; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400_LF5 nop; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402_LF5 nop; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406_LF5: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402_LF5 nop; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406_LF5 nop; not filled. L402_LF5: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop; not filled. addi r29,r29,#48 L400_LF5: jal _SysprocCreateProcesses nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407_LF5 nop; not filled. L408_LF5: addi r29,r29,#-8 lhi r21,((LC59_LF5)>>16)&0xffff addui r21,r21,(LC59_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L407_LF5: addi r29,r29,#-8 lhi r3,((_processQuantum_LF5)>>16)&0xffff addui r3,r3,(_processQuantum_LF5)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409_LF5 nop; not filled. L410_LF5: addi r29,r29,#-8 lhi r21,((LC60_LF5)>>16)&0xffff addui r21,r21,(LC60_LF5)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L409_LF5: jal _intrreturn nop; not filled. jal _exitsim nop; not filled. jal _exit nop .endproc _main .data .align 2 LC62_LF5: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,((LC62_LF5)>>16)&0xffff addui r1,r1,(LC62_LF5)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1032; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420_LF5 nop; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422_LF5: addi r2,r0,#0 add r3,r4,r5 L423_LF5: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423_LF5 nop; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422_LF5 nop; not filled. L420_LF5: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _ProcessSchedule nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs_LF5: .space 12 .align 2 _runQueue_LF5: .space 12 .align 2 _waitQueue_LF5: .space 12 .align 2 _zombieQueue_LF5: .space 12 .align 2 _pcbs_LF5: .space 3840 .text .align 2 .proc _ProcessExit_LF5 _ProcessExit_LF5: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _exit nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit_LF5 ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF6 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF6 nop; not filled. L6_LF6: addi r31,r0,#1 L5_LF6: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF6 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF6 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF6 nop; not filled. L12_LF6: addi r2,r0,#1 L11_LF6: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF6 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF6: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF6: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool_LF6)>>16)&0xffff addui r2,r2,(_linkpool_LF6)&0xffff L63_LF6: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF6 nop; not filled. L65_LF6: addi r29,r29,#-8 lhi r5,((LC0_LF6)>>16)&0xffff addui r5,r5,(LC0_LF6)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L64_LF6: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63_LF6 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1_LF6: .ascii "%s: %s\n\000" .align 2 LC2_LF6: .ascii "QueueFreeLink\000" .align 2 LC3_LF6: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC2_LF6)>>16)&0xffff addui r1,r1,(LC2_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC3_LF6)>>16)&0xffff addui r4,r4,(LC3_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L77_LF6: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4_LF6: .ascii "QueueAllocLink\000" .align 2 LC5_LF6: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92_LF6 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97_LF6 nop; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97_LF6: addi r4,r0,#0 sw (r3),r4 j L98_LF6 nop; not filled. L92_LF6: addi r3,r0,#0 L98_LF6: snei r1,r3,#0 bnez r1,L100_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC4_LF6)>>16)&0xffff addui r1,r1,(LC4_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC5_LF6)>>16)&0xffff addui r4,r4,(LC5_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L100_LF6: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool_LF6: .space 6400 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF7 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF7 nop; not filled. L6_LF7: addi r31,r0,#1 L5_LF7: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF7 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF7 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF7 nop; not filled. L12_LF7: addi r2,r0,#1 L11_LF7: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF7 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF7: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF7: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1_LF7: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF7 nop; not filled. L53_LF7: addi r29,r29,#-8 lhi r3,((LC0_LF7)>>16)&0xffff addui r3,r3,(LC0_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L52_LF7: lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff addi r2,r31,#620 L57_LF7: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57_LF7 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59_LF7 nop; not filled. L60_LF7: addi r29,r29,#-8 lhi r3,((LC1_LF7)>>16)&0xffff addui r3,r3,(LC1_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L59_LF7: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff L79_LF7: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86_LF7 nop; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79_LF7 nop; not filled. L77_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83_LF7 nop; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems_LF7)>>16)&0xffff addui r5,r5,(_sems_LF7)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85_LF7 nop; not filled. L86_LF7: addi r5,r0,#1 sw 16(r31),r5 j L77_LF7 nop; not filled. L83_LF7: addi r1,r0,#-1 L85_LF7: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2_LF7: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3_LF7: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4_LF7: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89_LF7 nop; not filled. L90_LF7: addi r29,r29,#-8 lhi r7,((LC2_LF7)>>16)&0xffff addui r7,r7,(LC2_LF7)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L89_LF7: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF7 nop; not filled. L92_LF7: addi r29,r29,#-16 lhi r7,((LC3_LF7)>>16)&0xffff addui r7,r7,(LC3_LF7)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 L91_LF7: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93_LF7 nop; not filled. jal _QueueAllocLink nop; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95_LF7 nop; not filled. L96_LF7: addi r29,r29,#-8 lhi r7,((LC4_LF7)>>16)&0xffff addui r7,r7,(LC4_LF7)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L95_LF7: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop; not filled. L93_LF7: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105_LF7 nop; not filled. L107_LF7: addi r1,r0,#1 j L105_LF7 nop; not filled. L106_LF7: addi r1,r0,#1 L105_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5_LF7: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6_LF7: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF7 nop; not filled. L113_LF7: addi r29,r29,#-16 lhi r5,((LC5_LF7)>>16)&0xffff addui r5,r5,(LC5_LF7)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L112_LF7: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114_LF7 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117_LF7 nop; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117_LF7: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118_LF7 nop; not filled. L119_LF7: addi r29,r29,#-8 lhi r5,((LC6_LF7)>>16)&0xffff addui r5,r5,(LC6_LF7)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L118_LF7: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop; not filled. sw (r29),r3 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 L114_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125_LF7 nop; not filled. L127_LF7: addi r1,r0,#1 j L125_LF7 nop; not filled. L126_LF7: addi r1,r0,#1 L125_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems_LF7: .space 640 ; Compiled by GCC .align 2 _rcsid_LF8: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF8 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF8 nop; not filled. L6_LF8: addi r31,r0,#1 L5_LF8: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF8 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF8 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF8 nop; not filled. L12_LF8: addi r2,r0,#1 L11_LF8: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF8 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF8: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0_LF8: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler_LF8 _TrapProcessCreateHandler_LF8: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1696; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65_LF8: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65_LF8 nop; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68_LF8: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73_LF8 nop; not filled. j L68_LF8 nop; not filled. L67_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop; not filled. addi r29,r29,#16 L73_LF8: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74_LF8 nop; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85_LF8: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86_LF8 nop; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80_LF8: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80_LF8 nop; not filled. L77_LF8: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86_LF8 nop; not filled. j L85_LF8 nop; not filled. L74_LF8: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93_LF8: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92_LF8 nop; not filled. addi r29,r29,#-8 lhi r12,((LC0_LF8)>>16)&0xffff addui r12,r12,(LC0_LF8)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L92_LF8: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93_LF8 nop; not filled. L86_LF8: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler_LF8 .align 2 .proc _TrapPrintfHandler_LF8 _TrapPrintfHandler_LF8: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#208; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96_LF8: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101_LF8 nop; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101_LF8 nop; not filled. j L96_LF8 nop; not filled. L95_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop; not filled. addi r29,r29,#16 L101_LF8: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103_LF8 nop; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105_LF8: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104_LF8 nop; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107_LF8 nop; not filled. addi r3,r3,#1 j L104_LF8 nop; not filled. L107_LF8: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110_LF8: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109_LF8 nop; not filled. seqi r1,r2,#108 bnez r1,L110_LF8 nop; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116_LF8 nop; not filled. seqi r1,r2,#101 beqz r1,L115_LF8 nop; not filled. L116_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109_LF8 nop; not filled. L115_LF8: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110_LF8 nop; not filled. L109_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104_LF8: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105_LF8 nop; not filled. L103_LF8: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler_LF8 .data .align 2 LC1_LF8: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2_LF8: .ascii "Got a context switch trap!\n\000" .align 2 LC3_LF8: .ascii "Got an exit trap!\n\000" .align 2 LC4_LF8: .ascii "Got a fork trap!\n\000" .align 2 LC5_LF8: .ascii "Got a process sleep trap!\n\000" .align 2 LC6_LF8: .ascii "Got a printf trap!\n\000" .align 2 LC7_LF8: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8_LF8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9_LF8: .ascii "Got a timer interrupt!\n\000" .align 2 LC10_LF8: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11_LF8: .ascii "Trap access\n\000" .align 2 LC12_LF8: .ascii "Current PROC %s\n\000" .align 2 LC13_LF8: .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" .align 2 LC14_LF8: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC15_LF8: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC16_LF8: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#88; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122_LF8 nop; not filled. L123_LF8: addi r29,r29,#-24 lhi r7,((LC1_LF8)>>16)&0xffff addui r7,r7,(LC1_LF8)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L122_LF8: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124_LF8 nop; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126_LF8 nop; not filled. sgtui r1,r2,#1024 bnez r1,L179_LF8 nop; not filled. seqi r1,r2,#530 bnez r1,L160_LF8 nop; not filled. sgtui r1,r2,#530 bnez r1,L180_LF8 nop; not filled. seqi r1,r2,#528 bnez r1,L151_LF8 nop; not filled. sgtui r1,r2,#528 bnez r1,L154_LF8 nop; not filled. seqi r1,r2,#513 beqz r1,L177_LF8 nop; not filled. j L140_LF8 nop; not filled. L180_LF8: seqi r1,r2,#532 bnez r1,L148_LF8 nop; not filled. sltui r1,r2,#532 bnez r1,L143_LF8 nop; not filled. seqi r1,r2,#768 beqz r1,L177_LF8 nop; not filled. j L129_LF8 nop; not filled. L179_LF8: seqi r1,r2,#1074 bnez r1,L164_LF8 nop; not filled. sgtui r1,r2,#1074 bnez r1,L181_LF8 nop; not filled. seqi r1,r2,#1072 bnez r1,L134_LF8 nop; not filled. sgtui r1,r2,#1072 bnez r1,L163_LF8 nop; not filled. seqi r1,r2,#1040 beqz r1,L177_LF8 nop; not filled. j L137_LF8 nop; not filled. L181_LF8: seqi r1,r2,#1105 bnez r1,L169_LF8 nop; not filled. sgtui r1,r2,#1105 bnez r1,L182_LF8 nop; not filled. seqi r1,r2,#1104 beqz r1,L177_LF8 nop; not filled. j L165_LF8 nop; not filled. L182_LF8: seqi r1,r2,#1106 bnez r1,L173_LF8 nop; not filled. seqi r1,r2,#1408 beqz r1,L177_LF8 nop; not filled. j L157_LF8 nop; not filled. L126_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF8 nop; not filled. L128_LF8: addi r29,r29,#-8 lhi r7,((LC2_LF8)>>16)&0xffff addui r7,r7,(LC2_LF8)&0xffff j L209_LF8 nop; not filled. L129_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF8 nop; not filled. L131_LF8: addi r29,r29,#-8 lhi r7,((LC3_LF8)>>16)&0xffff addui r7,r7,(LC3_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L130_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L132_LF8 nop; not filled. L133_LF8: addi r29,r29,#-8 lhi r7,((LC3_LF8)>>16)&0xffff addui r7,r7,(LC3_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L132_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L203_LF8 nop; not filled. L134_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L136_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L183_LF8 nop; not filled. L136_LF8: addi r29,r29,#-8 lhi r7,((LC4_LF8)>>16)&0xffff addui r7,r7,(LC4_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. j L203_LF8 nop; not filled. L137_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L139_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L138_LF8 nop; not filled. L139_LF8: addi r29,r29,#-8 lhi r7,((LC5_LF8)>>16)&0xffff addui r7,r7,(LC5_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L138_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop; not filled. jal _ProcessSchedule nop; not filled. j L203_LF8 nop; not filled. L140_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141_LF8 nop; not filled. L142_LF8: addi r29,r29,#-8 lhi r7,((LC6_LF8)>>16)&0xffff addui r7,r7,(LC6_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L141_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler_LF8 nop; not filled. j L203_LF8 nop; not filled. L143_LF8: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L144_LF8 nop; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L145_LF8 nop; not filled. L144_LF8: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L145_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop; not filled. addi r29,r29,#-8 lhi r7,((LC7_LF8)>>16)&0xffff addui r7,r7,(LC7_LF8)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L148_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L151_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L154_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L157_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L160_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L203_LF8 nop; not filled. L163_LF8: jal _GetCurrentPid nop; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L164_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler_LF8 nop; not filled. j L203_LF8 nop; not filled. L165_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L167_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L204_LF8 nop; not filled. L167_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L204_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L169_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L171_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L205_LF8 nop; not filled. L171_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L205_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L173_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L175_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L206_LF8 nop; not filled. L175_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L206_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L203_LF8 nop; not filled. L177_LF8: addi r29,r29,#-8 lhi r7,((LC8_LF8)>>16)&0xffff addui r7,r7,(LC8_LF8)&0xffff j L207_LF8 nop; not filled. L124_LF8: seqi r1,r2,#3 bnez r1,L193_LF8 nop; not filled. sgtui r1,r2,#3 bnez r1,L199_LF8 nop; not filled. seqi r1,r2,#1 bnez r1,L195_LF8 nop; not filled. seqi r1,r2,#2 beqz r1,L197_LF8 nop; not filled. j L194_LF8 nop; not filled. L199_LF8: seqi r1,r2,#64 bnez r1,L185_LF8 nop; not filled. sgtui r1,r2,#64 bnez r1,L200_LF8 nop; not filled. seqi r1,r2,#32 beqz r1,L197_LF8 nop; not filled. j L196_LF8 nop; not filled. L200_LF8: seqi r1,r2,#72 beqz r1,L197_LF8 nop; not filled. j L188_LF8 nop; not filled. L185_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF8 nop; not filled. L187_LF8: addi r29,r29,#-8 lhi r7,((LC9_LF8)>>16)&0xffff addui r7,r7,(LC9_LF8)&0xffff L209_LF8: sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L186_LF8: jal _ProcessSchedule nop; not filled. j L183_LF8 nop; not filled. L188_LF8: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L189_LF8: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10_LF8)>>16)&0xffff addui r7,r7,(LC10_LF8)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L183_LF8 nop; not filled. j L189_LF8 nop; not filled. L193_LF8: addi r29,r29,#-8 lhi r7,((LC11_LF8)>>16)&0xffff addui r7,r7,(LC11_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L203_LF8 nop; not filled. L194_LF8: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12_LF8)>>16)&0xffff addui r7,r7,(LC12_LF8)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#-8 lhi r7,((LC13_LF8)>>16)&0xffff addui r7,r7,(LC13_LF8)&0xffff j L208_LF8 nop; not filled. L195_LF8: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12_LF8)>>16)&0xffff addui r7,r7,(LC12_LF8)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#-8 lhi r7,((LC14_LF8)>>16)&0xffff addui r7,r7,(LC14_LF8)&0xffff L208_LF8: sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#16 j L183_LF8 nop; not filled. L196_LF8: jal _PageFaultHandler nop; not filled. j L183_LF8 nop; not filled. L197_LF8: addi r29,r29,#-8 lhi r7,((LC15_LF8)>>16)&0xffff addui r7,r7,(LC15_LF8)&0xffff L207_LF8: sw (r29),r7 sw 4(r29),r2 jal _printf nop; not filled. jal _exitsim nop; not filled. L203_LF8: addi r29,r29,#8 L183_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L202_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L201_LF8 nop; not filled. L202_LF8: addi r29,r29,#-8 lhi r7,((LC16_LF8)>>16)&0xffff addui r7,r7,(LC16_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L201_LF8: jal _intrreturn nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF9 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF9 nop; not filled. L6_LF9: addi r31,r0,#1 L5_LF9: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF9 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF9 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF9 nop; not filled. L12_LF9: addi r2,r0,#1 L11_LF9: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF9 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF9: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF9: .ascii "Process #\000" .align 2 LC1_LF9: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething_LF9 _doSomething_LF9: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#120; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52_LF9 nop; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56_LF9: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0_LF9)>>16)&0xffff addui r8,r8,(LC0_LF9)&0xffff sw 4(r29),r8 jal _dstrcpy nop; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop; not filled. addi r29,r29,#-8 lhi r8,((_doSomething_LF9)>>16)&0xffff addui r8,r8,(_doSomething_LF9)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56_LF9 nop; not filled. L52_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59_LF9 nop; not filled. addi r5,r0,#1000 add r4,r0,r2 L61_LF9: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62_LF9 nop; not filled. addi r29,r29,#-16 lhi r8,((LC1_LF9)>>16)&0xffff addui r8,r8,(LC1_LF9)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 L62_LF9: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61_LF9 nop; not filled. L59_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething_LF9 .data .align 2 LC2_LF9: .ascii "chasetail\000" .align 2 LC3_LF9: .ascii "Chasing tail %d.\n\000" .align 2 LC4_LF9: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5_LF9: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail_LF9 _chaseTail_LF9: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2_LF9)>>16)&0xffff addui r3,r3,(LC2_LF9)&0xffff addi r29,r29,#-8 lhi r5,((LC3_LF9)>>16)&0xffff addui r5,r5,(LC3_LF9)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop; not filled. addi r29,r29,#-8 lhi r5,((LC4_LF9)>>16)&0xffff addui r5,r5,(LC4_LF9)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67_LF9 nop; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail_LF9)>>16)&0xffff addui r5,r5,(_chaseTail_LF9)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5_LF9)>>16)&0xffff addui r5,r5,(LC5_LF9)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop; not filled. addi r29,r29,#16 L67_LF9: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail_LF9 .data .align 2 LC6_LF9: .ascii "%d \000" .align 2 LC7_LF9: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems_LF9)>>16)&0xffff addui r2,r2,(_mysems_LF9)&0xffff addi r3,r2,#180 L90_LF9: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90_LF9 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems_LF9: .space 200 ;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8 ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .text .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two sets of traps here. The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 .proc _open .global _open _open: trap #0x2013 jr r31 nop .endproc _open .proc _close .global _close _close: trap #0x2014 jr r31 nop .endproc _close .proc _read .global _read _read: trap #0x2010 jr r31 nop .endproc _read .proc _write .global _write _write: trap #0x2011 jr r31 nop .endproc _write .proc _lseek .global _lseek _lseek: trap #0x2012 jr r31 nop .endproc _lseek ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two exit traps. The first, _exitsim, actually exits the ;;; simulator. The second, _exit, simply calls a regular trap in the ;;; DLX simulator, and would be suitable for a user program that wants ;;; to signal the OS that it's exiting. ;;; ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and ;;; programs run without an OS - should call exitsim() rather than just ;;; falling through to exit. ;;; .align 2 .proc _exitsim .global _exitsim _exitsim: trap #0x2f00 jr r31 nop .endproc _exitsim .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .proc _printf .global _printf _printf: trap #0x2001 jr r31 nop .endproc _printf .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_2/src/usertraps.s

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

option1/lab4_2/src/memory.h

// // memory.h // // Definitions for dealing with memory. // // // $Id: memory.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ #ifndef _memory_h_ #define _memory_h_ // We can read this address in I/O space to figure out how much memory // is available on the system. #define DLX_MEMSIZE_ADDRESS 0xffff0000 // We currently support 64 KB pages. This is done as 64 KB pages in // the level 1 page table and no level 2 page table // These two constants should be set as follows: // L1_PAGE_SIZE_BITS -> amount mapped by a single entry in the L1 table // L2_PAGE_SIZE_BITS -> amount mapped by a single entry in the L2 table // // For example, if you have 4KB pages and each L2 page table has 512 entries, // you'd have 2MB per entry in a L1 table. That would mean L1_BITS=21 and // L2_BITS=12. #define MEMORY_L1_PAGE_SIZE_BITS 16 // each entry in L1 is 64 KB #define MEMORY_L2_PAGE_SIZE_BITS 16 // if L1 == L2, there's no L2 tables #define MEMORY_PAGE_SIZE (1 << MEMORY_L2_PAGE_SIZE_BITS) #define MEMORY_PAGE_MASK (MEMORY_PAGE_SIZE-1) #define MEMORY_MAX_PAGES 0x10000 #define TOP_VIRTUAL_ADDRESS_SPACE MEMORY_PAGE_SIZE #define L1_MAX_ENTRIES 0x01 #define L2_MAX_ENTRIES 0x01 // The PTE is valid if this bit is set in the PTE! #define MEMORY_PTE_VALID 0x00000001 // The page is dirty if this bit is set in the PTE #define MEMORY_PTE_DIRTY 0x00000002 // The page has been referenced if this bit is set in the PTE #define MEMORY_PTE_REFERENCED 0x00000004 #define MEMORY_PTE_MASK (~(MEMORY_PTE_VALID|MEMORY_PTE_DIRTY|MEMORY_PTE_REFERENCED)) extern int lastosaddress; // Defined in an assembly file extern int MemoryGetSize (); extern int MemoryAllocPage (); extern void MemoryFreePage (uint32 page); extern uint32 MemorySetupPte (uint32 page); extern void MemoryFreePte (uint32 pte); extern uint32 MemoryPteToPage (); extern void MemoryModuleInit (); extern uint32 MemoryTranslateUserToSystem (); extern int MemoryCopySystemToUser (); extern int MemoryCopyUserToSystem (); #endif // _memory_h_

option1/lab4_2/src/filesys.c

// // filesys.c // // This file has handlers for the file systems supported by the DLX // operating system. These include both the basic, simulator-provided // file system and the more complex file system from the file system // assignment. static char rcsid[] = "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "process.h" #include "filesys.h" // One entry for each type of file system. Currently, the file systems // are native Unix (0) and DLX (1). static Fs fs[2]; // One entry for each open file in the operating system. static FsOpenFile openfiles[FS_MAX_OPEN_FILES]; //---------------------------------------------------------------------- // // FdValid // // Return 1 if the file descriptor is valid, 0 otherwise. // //---------------------------------------------------------------------- static inline int FdValid (int fd) { return ((fd > 0) && (fd < FS_MAX_OPEN_FILES) && (openfiles[fd].flags != 0)); } //---------------------------------------------------------------------- // // FsFreeEntry // // Free an entry in the open files table. // //---------------------------------------------------------------------- static inline void FsFreeEntry (int x) { openfiles[x].flags = 0; } � //---------------------------------------------------------------------- // // FsOpen // // Open a file. The name of the file is passed, along with the file // mode (read or write). // // This function figures out which file system is desired using a // simple heuristic. Basically, if the file starts with "dlx:", it's // a DLX file system file. Otherwise, it's a UNIX file. // // Once the file system is figured out, this routine allocates a // file descriptor and calls the file-system specific open routine. // //---------------------------------------------------------------------- int FsOpen (const char *name, int mode) { int i, retval; dbprintf ('f', "Attepmting to open %s mode=%d.\n", name, mode); // Mask off all but the mode bits mode &= FS_MODE_RW; // ERROR if the caller hasn't specified a file mode. if (mode == 0) { return (-1); } for (i = 0; i < FS_MAX_OPEN_FILES; i++) { if (openfiles[i].flags == 0) { break; } } if (i >= FS_MAX_OPEN_FILES) { return (-1); } openfiles[i].flags = mode; // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxOpen. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" openfiles[i].fs = 1; } else { openfiles[i].fs = 0; } dbprintf ('f', "File %s opening in file system %d.\n",name,openfiles[i].fs); retval = fs[openfiles[i].fs].Open (i, name, mode); if (retval < 0) { // Open failed, so return error code FsFreeEntry (i); return (retval); } dbprintf ('f', "Opened %s in FS %d, mode=%d slot=%d.\n", name, openfiles[i].fs, mode, i); return (i); } //---------------------------------------------------------------------- // // FsClose // // Close an open file. Call the FS-specific routine, and then mark // the file table entry unused. // //---------------------------------------------------------------------- int FsClose (int fd) { int retval; if (!FdValid (fd)) { return (-1); } retval = fs[openfiles[fd].fs].Close (fd); FsFreeEntry (fd); return (retval); } � //---------------------------------------------------------------------- // // FsRead // // Read data from a file. // //---------------------------------------------------------------------- int FsRead (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Read (fd, buf, n)); } //---------------------------------------------------------------------- // // FsWrite // // Write data to a file. // //---------------------------------------------------------------------- int FsWrite (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Write (fd, buf, n)); } //---------------------------------------------------------------------- // // FsSeek // // Seek in a file. // //---------------------------------------------------------------------- int FsSeek (int fd, int offset, int whence) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Seek (fd, offset, whence)); } //---------------------------------------------------------------------- // // FsDelete // // Delete a file. // //---------------------------------------------------------------------- int FsDelete (const char *name) { // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxDelete. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" return (fs[1].Delete (name)); } else { return (fs[0].Delete (name)); } } � //---------------------------------------------------------------------- // // FsUnixOpen // FsUnixRead // FsUnixWrite // FsUnixSeek // FsUnixClose // // Unix file I/O routines. These are pretty simple, and just call // the simulator traps directly using the file descriptor stored in // the open file table. // //---------------------------------------------------------------------- int FsUnixOpen (int x, const char *name, int mode) { dbprintf ('f', "Attempting to open file %s into desc %d, mode %d.\n", name, x, mode); if ((openfiles[x].u.Unix.fd = open (name, mode)) < 0) { return (openfiles[x].u.Unix.fd); } return (1); } int FsUnixRead (int x, char *buf, int n) { return (read (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixWrite (int x, char *buf, int n) { return (write (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixSeek (int x, int offset, int where) { return (lseek (openfiles[x].u.Unix.fd, offset, where)); } int FsUnixClose (int x) { int retval; retval = close (openfiles[x].u.Unix.fd); return (retval); } int FsUnixDelete (const char *name) { // Refuse to delete Unix files via the simulator. This is for safety // reasons. return (-1); } � //---------------------------------------------------------------------- // // FsDlxIo // // Perform a read or a write on a DLX file. // //---------------------------------------------------------------------- int FsDlxIo (int fd, char *buf, int n, int which) { // Your code to read or write a DLX file goes here. return (1); } //---------------------------------------------------------------------- // // FsDlxRead // FsDlxWrite // // This is just a stub that calls FsDlxIo to do either a read or a // write in the DLX file system. // //---------------------------------------------------------------------- int FsDlxRead (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 0)); } int FsDlxWrite (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 1)); } � //---------------------------------------------------------------------- // // FsDlxOpen // // Open a file in the DLX file system. Currently, this just means // to set current position to 0. However, it should also check to // make sure that the file exists. // //---------------------------------------------------------------------- int FsDlxOpen (int f, const char *name, int mode) { openfiles[f].u.Dlx.curpos = 0; // You may want to put additional code here (checking to see if the // file exists, etc.) return (1); } //---------------------------------------------------------------------- // // FsDlxSeek // // Seek in a DLX file. This just requires adjusting the current // position as recorded in the open files table. // //---------------------------------------------------------------------- int FsDlxSeek (int f, int offset, int whence) { switch (whence) { case FS_SEEK_SET: break; case FS_SEEK_CUR: break; case FS_SEEK_END: break; }; return (openfiles[f].u.Dlx.curpos); } //---------------------------------------------------------------------- // // FsDlxClose // // Close a DLX file system file. //---------------------------------------------------------------------- int FsDlxClose (int f) { // You may want to add code to this routine. return (1); } � //---------------------------------------------------------------------- // // FsDlxDelete // // Delete a file in the DLX file system. // //---------------------------------------------------------------------- int FsDlxDelete (const char *file) { // Your code goes here. return (1); } � //---------------------------------------------------------------------- // // FsModuleInit // // Initialize the file system module. This consists simply of marking // all the file slots as available. // //---------------------------------------------------------------------- void FsModuleInit () { int i; for (i = 0; i < FS_MAX_OPEN_FILES; i++) { openfiles[i].flags = 0; } fs[0].Open = FsUnixOpen; fs[0].Close = FsUnixClose; fs[0].Read = FsUnixRead; fs[0].Write = FsUnixWrite; fs[0].Seek = FsUnixSeek; fs[0].Delete = FsUnixDelete; fs[1].Open = FsDlxOpen; fs[1].Close = FsDlxClose; fs[1].Read = FsDlxRead; fs[1].Write = FsDlxWrite; fs[1].Seek = FsDlxSeek; fs[1].Delete = FsDlxDelete; }

option1/lab4_2/src/queue.h

// // queue.h // // Definitions for routines used to manage queues. The queues are // doubly-linked lists so it's easier to add and remove from them. // Also, the links themselves have pointers to objects so that objects // may be on more than one queue. // #ifndef _queue_h_ #define _queue_h_ #ifndef NULL #define NULL ((void *)0) #endif #define QUEUE_MAX_LINKS 400 typedef struct Link { struct Link *next; struct Link *prev; struct Queue *queue; void *object; } Link; typedef struct Queue { struct Link *first; struct Link *last; int nitems; } Queue; inline void QueueLinkInit (Link *l, void *obj) { l->next = NULL; l->object = obj; } inline Link * QueueNext (Link *l) { return (l->next); } inline Link * QueuePrev (Link *l) { return (l->prev); } inline Link * QueueFirst (Queue *q) { return (q->first); } inline Link * QueueLast (Queue *q) { return (q->last); } inline void QueueInsertAfter (Queue *q, Link *after, Link *l) { l->queue = q; l->prev = after; l->next = after->next; after->next = l; l->next->prev = l; q->nitems += 1; } inline void QueueInsertFirst (Queue *q, Link *l) { QueueInsertAfter (q, (Link *)q, l); } inline void QueueInsertLast (Queue *q, Link *l) { QueueInsertAfter (q, QueueLast(q), l); } inline void QueueRemove (Link *l) { if (l->queue->nitems > 0) { l->prev->next = l->next; l->next->prev = l->prev; l->queue->nitems -= 1; } l->next = NULL; } inline int QueueLength (Queue *q) { return (q->nitems); } inline int QueueEmpty (Queue *q) { return (QueueLength (q) == 0); } extern void QueueModuleInit (); extern void QueueFreeLink (Link *l); extern Link *QueueAllocLink (); extern void QueueInit (Queue *q); #endif // _queue_h_

option1/lab4_2/src/osend.s

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

option1/lab4_2/src/trap_random.s

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

option1/lab4_2/src/traps.c

// // traps.c // // This file handles the low-level trap stuff for an operating system // running under DLX. static char rcsid[] = "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlx.h" #include "dlxos.h" #include "traps.h" #include "process.h" //---------------------------------------------------------------------- // // TimerSet // // Set the timer to go off after a particular number of microseconds. // The number of microseconds is passed to the routine. // //---------------------------------------------------------------------- void TimerSet (int us) { *((int *)DLX_TIMER_ADDRESS) = us; } � //---------------------------------------------------------------------- // // KbdModuleInit // // Initialize the keyboard module. This involves turning on // interrupts for the keyboard. // //---------------------------------------------------------------------- void KbdModuleInit () { *((uint32 *)DLX_KBD_INTR) = 1; } //-------------------------------------------------------------------- // GetUintFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static uint32 GetUintFromTrapArg(uint32 *trapArgs, int sysmode) { uint32 arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // GetIntFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static int GetIntFromTrapArg(uint32 *trapArgs, int sysmode) { int arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // Here we support reading the arguments // Maximum 10 command-line arguments are allowed // Also the total length of the arguments including the terminating // '\0' should be less than or equal to 100 //-------------------------------------------------------------------- static void TrapProcessCreateHandler(uint32 *trapArgs, int sysmode) { char allargs[SIZE_ARG_BUFF]; char name[100]; int i=0, j=0, k=0; uint32 args[MAX_ARGS]; char *destination; // The first argument is the name of the executable file i=0; for(i=0;i<100; i++) allargs[i] = 0; i=0; if(!sysmode) { //Get the arguments into the sytem space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,name+i,1); i++; } while ((i < sizeof (name)) && (name[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], name, sizeof (name)); } name[sizeof(name)-1] = '\0'; // null terminate the name i=0; if(!sysmode) { //Copy the rest of the arguments to the system space for(j=0; (j<11)&&(args[j]!=0); j++) { k=0; do { MemoryCopyUserToSystem (currentPCB,((char*)args[j])+k,allargs+i,1); i++; k++; } while ((i<sizeof(allargs)) && (allargs[i-1]!='\0')); } } else { destination = &allargs[0]; for(j=0; (j<11)&&(args[j]!=0); j++) { k = dstrlen((char *)args[j]); //length of the argument if(&destination[k]-allargs>100) { printf("Fatal: Cumulative length of all arguments > 100\n"); exitsim(); } dstrcpy(destination, (char *)args[j]); destination[k] = '\0'; } } allargs[sizeof(allargs)-1] = '\0'; // null terminate the name ProcessFork(0, (uint32)allargs, name, 1); } � //---------------------------------------------------------------------- // // TrapPrintfHandler // // Handle a printf trap.here. This printf code will correctly // handle integers but will not correctly handle strings (yet). // Also, note that the maximum format string length is 79 characters. // Exceeding this length will cause the format to be truncated. // //---------------------------------------------------------------------- static void TrapPrintfHandler (uint32 *trapArgs, int sysMode) { char formatstr[80]; int i = 0; uint32 printfArgs[10]; uint32 args[10]; int nargs = 0; char *c; // The first argument is the print format string. Copy it to system // space, truncating if necessary. i = 0; if (!sysMode) { // Get the arguments themselves into system space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,formatstr+i,1); i++; } while ((i < sizeof (formatstr)) && (formatstr[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], formatstr, sizeof (formatstr)); } formatstr[sizeof(formatstr)-1] = '\0'; // null terminate the fmt str for (c = formatstr; *c != '\0'; c++) { if (*c == '%') { // if this is a %%, skip past second % if (*(c+1) == '%') { c++; continue; } // Get the current argument off the stack printfArgs[nargs] = args[nargs+1]; // dbprintf ('t', "Argument %d at 0x%x is %d (0x%x).\n", nargs, // args[nargs], args[nargs]); while (1) { c++; if (*c == 's') { // Handle strings here. They don't work for user programs (yet...) break; } else if (*c == 'l') { continue; } else if ((*c == 'f') || (*c == 'g') || (*c == 'e')) { // If it's a floating point number, it'll be passed as // a double, so grab the second word also. nargs += 1; printfArgs[nargs] = args[nargs+1]; break; } else if ((*c >= 'a') && (*c <= 'z')) { // If it's another formatting character, it's not // a string, but we can leave the loop anyway. break; } } nargs += 1; } } printf (formatstr,printfArgs[0],printfArgs[1],printfArgs[2], printfArgs[3], printfArgs[4], printfArgs[5], printfArgs[6], printfArgs[7]); } � //---------------------------------------------------------------------- // // doInterrupt // // Handle an interrupt or trap. // //---------------------------------------------------------------------- void dointerrupt (unsigned int cause, unsigned int iar, unsigned int isr, uint32 *trapArgs) { int result; int i; uint32 args[4]; int intrs; uint32 handle; int ihandle; PCB *pcb; dbprintf ('t',"Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n", cause, iar, isr, trapArgs); // If the TRAP_INSTR bit is set, this was from a trap instruction. // If the bit isn't set, this was a system interrupt. if (cause & TRAP_TRAP_INSTR) { cause &= ~TRAP_TRAP_INSTR; switch (cause) { case TRAP_CONTEXT_SWITCH: dbprintf ('t', "Got a context switch trap!\n"); ProcessSchedule (); break; case TRAP_EXIT: dbprintf ('t', "Got an exit trap!\n"); dbprintf ('t', "Got an exit trap!\n"); ProcessKill (currentPCB); break; case TRAP_PROCESS_FORK: dbprintf ('t', "Got a fork trap!\n"); break; case TRAP_PROCESS_SLEEP: dbprintf ('t', "Got a process sleep trap!\n"); ProcessSuspend (currentPCB); ProcessSchedule (); break; case TRAP_PRINTF: // Call the trap printf handler and pass the arguments and a flag // indicating whether the trap was called from system mode. dbprintf ('t', "Got a printf trap!\n"); TrapPrintfHandler (trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_OPEN: // Get the arguments to the trap handler. If this is a user mode trap, // copy them from user space. if (isr & DLX_STATUS_SYSMODE) { args[0] = trapArgs[0]; args[1] = trapArgs[1]; } else { char filename[32]; // trapArgs points to the trap arguments in user space. There are // two of them, so copy them to to system space. The first argument // is a string, so it has to be copied to system space and the // argument replaced with a pointer to the string in system space. MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof(args[0])*2); MemoryCopyUserToSystem (currentPCB, args[0], filename, 31); // Null-terminate the string in case it's longer than 31 characters. filename[31] = '\0'; // Set the argument to be the filename args[0] = (uint32)filename; } // Allow Open() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, args[1] + 0x10000); printf ("Got an open with parameters ('%s',0x%x)\n", args[0], args[1]); RestoreIntrs (intrs); break; case TRAP_CLOSE: // Allow Close() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_READ: // Allow Read() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_WRITE: // Allow Write() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_DELETE: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_SEEK: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_PROCESS_GETPID: ProcessSetResult(currentPCB, GetCurrentPid()); break; case TRAP_PROCESS_CREATE: TrapProcessCreateHandler(trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_SEM_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = SemCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_SEM_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleWait(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_SEM_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleSignal(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; default: printf ("Got an unrecognized trap (0x%x) - exiting!\n", cause); exitsim (); break; } } else { switch (cause) { case TRAP_TIMER: dbprintf ('t', "Got a timer interrupt!\n"); ProcessSchedule (); break; case TRAP_KBD: do { i = *((uint32 *)DLX_KBD_NCHARSIN); result = *((uint32 *)DLX_KBD_GETCHAR); printf ("Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n", result, result, i); } while (i > 1); break; case TRAP_ACCESS: //printf ("Exiting after illegal access at iar=0x%x, isr=0x%x\n", //iar, isr); printf("Trap access\n"); //exitsim (); ProcessKill(currentPCB); break; case TRAP_ADDRESS: pcb = currentPCB; printf("Current PROC %s\n", pcb->name); printf ("Exiting after illegal address at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_ILLEGALINST: pcb = currentPCB; printf("Current PROC %s\n", pcb->name); printf ("Exiting after illegal instruction at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_PAGEFAULT: //printf("In page fault handler\n"); PageFaultHandler(); break; default: printf ("Got an unrecognized system interrupt (0x%x) - exiting!\n", cause); exitsim (); break; } } dbprintf ('t',"About to return from dointerrupt.\n"); // Note that this return may schedule a new process! intrreturn (); }

option1/lab4_2/src/dlxos.s

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

option1/lab4_2/src/lab4.h

#ifndef _LAB4_H_ #define _LAB4_H_ #define NULL (void *)0x0 #define INVALID_SEM -1 typedef unsigned int uint32; typedef int sem_t; //Related to processes uint32 getpid(); //trap 0x431 void process_create(char *arg1, ...); //trap 0x432 //Related to semaphores sem_t sem_create(int count); //trap 0x450 int sem_wait(sem_t sem); //trap 0x451 int sem_signal(sem_t sem); //trap 0x452 #endif _LAB4_H_

option1/lab4_2/src/userprog1.o

; Compiled by GCC .data .align 2 LC0: .ascii "In Userprog1, Sum : %d\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal ___main nop ; not filled. addi r3,r0,(#0x0)&0xff lhi r4,#16 addui r4,r4,#0 addi r31,r0,#0 add r2,r0,r4 L16: sb (r2),r31 addi r2,r2,#8196 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16 nop ; not filled. add r31,r0,r4 lhi r5,#1 addui r5,r5,#24620 or r2,r31,r5 L21: lb r5,(r31) add r3,r5,r3 addi r31,r31,#8196 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

option1/lab4_2/src/syscall.h

// // syscall.h // // This file declares all of the system calls available as builtins // in the simulator. // #ifndef _syscall_h_ #define _syscall_h_ extern int open(const char *, int); extern int read(int, char *, int); extern int write(int, char *, int); extern int lseek(int, int, int); extern int close(int); #endif // _syscall_h_

option1/lab4_2/src/synch.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // // Semaphores are the only "native" synchronization primitive. #ifndef _synch_h_ #define _synch_h_ #include "queue.h" #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system typedef int sem_t; #define INVALID_SEM -1 #define INVALID_PROC -1 typedef struct Sem { Queue waiting; int count; uint32 inuse; //indicates whether the semaphore is being //used by any process } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); #endif //_synch_h_

option1/lab4_2/src/synch.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r3,((LC0)>>16)&0xffff addui r3,r3,(LC0)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L52: lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff addi r2,r31,#620 L57: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59 nop ; not filled. L60: addi r29,r29,#-8 lhi r3,((LC1)>>16)&0xffff addui r3,r3,(LC1)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L59: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff L79: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79 nop ; not filled. L77: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83 nop ; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems)>>16)&0xffff addui r5,r5,(_sems)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85 nop ; not filled. L86: addi r5,r0,#1 sw 16(r31),r5 j L77 nop ; not filled. L83: addi r1,r0,#-1 L85: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop ; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89 nop ; not filled. L90: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L89: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-16 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 L91: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95 nop ; not filled. L96: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L95: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop ; not filled. L93: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105 nop ; not filled. L107: addi r1,r0,#1 j L105 nop ; not filled. L106: addi r1,r0,#1 L105: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-16 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L112: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117 nop ; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118 nop ; not filled. L119: addi r29,r29,#-8 lhi r5,((LC6)>>16)&0xffff addui r5,r5,(LC6)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L118: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L114: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125 nop ; not filled. L127: addi r1,r0,#1 j L125 nop ; not filled. L126: addi r1,r0,#1 L125: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems: .space 640

option1/lab4_2/src/dlxsim.cc

option1/lab4_2/src/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  Copyright (c) 1999 by Ethan L. Miller
//  University of Maryland Baltimore County
//

static   char  rcsid []   =   "$Id: dlxsim.cc,v 1.2 2000/09/20 22:16:34 elm Exp elm $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   "dlx.h"

extern   int  errno ;
char     debug [ 100 ];

//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu   ( int  msize )
{
   int        i ;
   struct  timeval t ;

  flags  =   0 ;
  usElapsed  =   0.0 ;
  instrsExecuted  =   0.0 ;
  usPerInst  =   1.0 ;
   for   ( =   0 ;  i  <   32 ;  i ++ )   {
    sreg [ i ]   =   0 ;
    ireg [ i ]   =   0 ;
    freg [ i ]   =   0 ;
   }
   SetStatusBit   ( DLX_STATUS_PAGE_TABLE );
   SetStatusBit   ( DLX_STATUS_SYSMODE );
   EnableInterrupts   ();
  timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
  memSize  =  msize ;
  memory  =   new  uint32 [ msize / sizeof ( uint32 )];
  basicBlockStart  =   1 ;    // basic block can never start at address 1!
   // Initialize the keyboard I/O stuff.
  kbdbufferedchars  =   0 ;
  kbdrpos  =  kbdwpos  =   0 ;
  kbdcounter  =   0 ;
   SetupRawIo   ();
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   ( double ) t . tv_sec  +   (( double ) t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
Cpu :: TraceFile   ( char   * name )
{
   if   (( name  ==  NULL )   ||   ( ! strcmp  ( name ,   "-" )))   {
    tracefp  =  stdout ;
     return   ( 1 );
   }   else   if   (( tracefp  =  fopen  ( name ,   "w" ))   ==  NULL )   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Instruction parsing functions
//
//  These functions take an instruction and return the relevant fields.
//
//----------------------------------------------------------------------
inline
void
Cpu :: GetRFields   ( uint32 inst ,  uint32 &  src1 ,  uint32 &  src2 ,  uint32 &  dst )
{
  src1  =   ( inst  >>  DLX_RFMT_SRC1_SHIFT )   &  DLX_REG_MASK ;
  src2  =   ( inst  >>  DLX_RFMT_SRC2_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_RFMT_DST_SHIFT )   &  DLX_REG_MASK ;
}

inline
void
Cpu :: GetIFields   ( uint32 inst ,  uint32 &  src ,  uint32 &  imm ,  uint32 &  dst )
{
  src  =   ( inst  >>  DLX_IFMT_SRC_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_IFMT_DST_SHIFT )   &  DLX_REG_MASK ;
  imm  =   ( inst  >>  DLX_IFMT_IMM_SHIFT )   &   0xffff ;
}

inline
void
Cpu :: GetJFields   ( uint32 inst ,  uint32 &  jaddr )
{
  jaddr  =  inst  &   0x1ffffff ;
   if   ( jaddr  &   0x1000000 )   {
    jaddr  |=   0xfe000000 ;
   }
}

inline
void
Cpu :: SignExtend16   ( uint32 &  v )
{
   if   ( &   0x8000 )   {
    v  |=   0xffff0000 ;
   }
}

inline
void
Cpu :: SignExtend8   ( uint32 &  v )
{
   if   ( &   0x80 )   {
    v  |=   0xffffff00 ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Jump
//
//  Jump to a particular location after dealing with the delay
//  slot.  Checks to ensure that the jump address could be valid
//  (ie, is on a word boundary).  It doesn't check to ensure that
//  the jump destination is valid; that's done on the first instruction
//  fetch to follow.
//
//----------------------------------------------------------------------
inline
int
Cpu :: Jump   ( uint32 jmpDst )
{
   if   (( jmpDst  &   0x3 )   ==   0 )   {
    DBPRINTF  ( 'j' ,   "Jump from 0x%x to 0x%x.\n" ,  PC (),  jmpDst );
     OutputBasicBlock   ( jmpDst );
     SetPC   ( jmpDst );
   }   else   {
     CauseException   ( DLX_EXC_ADDRESS );
   }
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Instruction functions
//
//  These functions implement individual instructions.  They return
//  the number of instructions executed, which will either be 1 if the
//  instruction completed successfully or 0 if the instruction caused
//  an exception.
//
//  Since the instructions are pretty simple (and similar), they won't
//  be documented extensively except for the more complex ones.
//----------------------------------------------------------------------

//----------------------------------------------------------------------
//
//  Generic ALU R-R instructions
//
//----------------------------------------------------------------------
static
int
InstAdd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSub   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate arithmetic functions
//
//----------------------------------------------------------------------
static
int
InstAddi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSubi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for addui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for subui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R logical functions
//
//----------------------------------------------------------------------

static
int
InstAnd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstOr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstXor   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstSll   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  v2 );
   return   ( 1 );
}

static
int
InstSra   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  result  =  v1  >>  v2 ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  v2 )   -   1 )   <<   ( 32   -  v2 );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrl   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  v2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate logical functions
//
//----------------------------------------------------------------------
static
int
InstAndi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  imm );
   return   ( 1 );
}

static
int
InstOri   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  imm );
   return   ( 1 );
}

static
int
InstXori   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  imm );
   return   ( 1 );
}

static
int
InstSlli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  imm );
   return   ( 1 );
}

static
int
InstSrai   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  result  =  v1  >>  imm ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  imm )   -   1 )   <<   ( 32   -  imm );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  imm );
   return   ( 1 );
}

static
int
InstLhi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  dst ,  imm ;

  cpu -> GetIFields   ( inst ,  src ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  imm  <<   16 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R set instructions
//
//----------------------------------------------------------------------
static
int
InstSeq   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSne   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSgt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSle   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSge   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate set instructions
//
//----------------------------------------------------------------------
static
int
InstSeqi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSnei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Load instructions
//
//----------------------------------------------------------------------
static
int
InstLw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  DBPRINTF  ( 'l' ,   "Loading word 0x%08x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lw" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  DBPRINTF  ( 'l' , "Loading signed half 0x%04x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lh" ,  dst ,  addr ,  val );
  cpu -> SignExtend16   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLhu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xffff ;
  DBPRINTF  ( 'l' , "Loading unsigned half 0x%04x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lhu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading signed byte 0x%02x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lb" ,  dst ,  addr ,  val );
  cpu -> SignExtend8   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLbu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading unsigned byte 0x%02x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lbu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Store instructions
//
//----------------------------------------------------------------------
static
int
InstSh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   // ReadWord checks for misaligned accesses.
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffe ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xffff );
  val  &=   ~ ( 0xffff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing half 0x%04x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sh" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xff );
  val  &=   ~ ( 0xff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing byte 0x%02x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sb" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetIreg   ( dst );
  DBPRINTF  ( 's' , "Storing word 0x%08x to location 0x%x.\n" ,  val ,  addr );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sw" ,  dst ,  addr ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  FP load/store instructions
//
//----------------------------------------------------------------------
static
int
InstLf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> PutFreg   ( dst ,  val );
  cpu -> TraceAccess ( "lf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstLd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
   if   (( dst  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   if   ( !  cpu -> ReadWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  cpu -> PutFreg   ( dst ,  val1 );
  cpu -> PutFreg   ( dst + 1 , val2 );
#else
  cpu -> PutFreg   ( dst , val2 );
  cpu -> PutFreg   ( dst + 1 ,  val1 );
#endif
  DBPRINTF  ( 'f' , "Read double %lf from address %08x\n" ,  cpu -> GetFregD   ( dst ),
        addr );
  cpu -> TraceAccess ( "ld0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "ld1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

static
int
InstSf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetFreg   ( dst );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstSd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> TestWriteWord   ( addr + 4 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  val1  =  cpu -> GetFreg   ( dst );
  val2  =  cpu -> GetFreg   ( dst + 1 );
#else
  val1  =  cpu -> GetFreg   ( dst + 1 );
  val2  =  cpu -> GetFreg   ( dst );
#endif
   if   ( !  cpu -> WriteWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   // Should never fail, since write was tested earlier
   if   ( !  cpu -> WriteWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sd0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "sd1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous FP move instructions
//
//----------------------------------------------------------------------
static
int
InstMovf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   (( dst  &   0x1 )   ||   ( src1  &   0x1 ))   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
  cpu -> PutFreg   ( dst + 1 ,  cpu -> GetFreg   ( src1 + 1 ));
   return   ( 1 );
}

static
int
InstMovfp2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovi2fp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Unconditional jumps & subroutine calls
//
//----------------------------------------------------------------------
static
int
InstJmp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

static
int
InstJal   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
  DBPRINTF  ( 'j' ,   "jal from 0x%x to 0x%x.\n" ,  cpu -> PC (),
        cpu -> PC ()   +   ( int ) joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJalr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

//----------------------------------------------------------------------
//
//  Conditional branches
//
//----------------------------------------------------------------------
static
int
InstBeqz   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   ==   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBnez   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   !=   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( !  cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Integer multiply and divide (done by FP unit).  Note that
//  multiplication overflows are NOT caught, and results are
//  unpredictable (may depend on machine on which simulator is
//  run).
//
//----------------------------------------------------------------------
static
int
InstMult   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   *   ( int ) cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstMultu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   *  cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstDiv   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   /   ( int ) denom );
   }
   return   ( 1 );
}

static
int
InstDivu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  trap
//
//  NOTE: different from the description in the DLX handbook.
//
//  The trap in DLX is unvectored; it's up to the interrupt handler
//  to do the vectoring.  However, the cause register is loaded with
//  the trap argument with the top 5 bits set to 00001.  This makes
//  it easy to identify traps and to vector them properly.
//
//  The trap instruction is also a way to access services from the
//  underlying machine.  In particular, we can do such things as
//  file access and printing.  Note that character access is handled
//  separately.
//----------------------------------------------------------------------
static
int
InstTrap   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    trapVector ;

  cpu -> GetJFields   ( inst ,  trapVector );
  trapVector  &=   0x0fffffff ;
  DBPRINTF  ( 't' , "Got a trap, inst=%08x, vector=%x\n" ,  inst ,  trapVector );
   if   (( trapVector  ==  DLX_TRAP_EXIT )   &&   !  cpu -> IgnoreExit ())   {
    cpu -> Exit   ();
   }
   if   ( trapVector  <   0x2000 )   {
     // Increment the PC so the address in the IAR is that of the
     // following instruction.
    cpu -> SetPC   ( cpu -> PC () + 4 );
    cpu -> CauseException   ( trapVector  |   0x08000000 );
   }   else   {
    cpu -> OutputBasicBlock   ( cpu -> PC () + 4 );
     if   ( cpu -> Flags ()   &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
      fprintf  ( cpu -> TraceFp (),   "T %x %x\n" ,  trapVector ,  cpu -> PC ());
     }
     // Handle simulator services here.  This isn't so performance
     // critical, so we can use a switch statement.
     // Parameters are passed on the stack.
     // Return values go into r1
     switch   ( trapVector )   {
     case  DLX_TRAP_EXITSIM :
      cpu -> Exit   ();
       break ;
     case  DLX_TRAP_PRINTF :
      cpu -> Printf   ();
       break ;
     case  DLX_TRAP_OPEN :
      cpu -> Open   ();
       break ;
     case  DLX_TRAP_READ :
      cpu -> Read   ();
       break ;
     case  DLX_TRAP_WRITE :
      cpu -> Write   ();
       break ;
     case  DLX_TRAP_LSEEK :
      cpu -> Seek   ();
       break ;
     case  DLX_TRAP_CLOSE :
      cpu -> Close   ();
       break ;
     case  DLX_TRAP_RANDOM :
      cpu -> Random   ();
       break ;
     case  DLX_TRAP_SRANDOM :
      cpu -> Srandom   ();
       break ;
     case  DLX_TRAP_TIMERGET :
      cpu -> Timerget ();
       break ;
     }
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  rfe
//
//  When returning from an exception, jump to the IAR.  To avoid
//  illegal addresses, mask off the low two bits.  Also, turn
//  interrupts on.
//----------------------------------------------------------------------
static
int
InstRfe   ( uint32 inst ,   Cpu   * cpu )
{
   return   ( cpu -> DoRfe   ( inst ));
}

int
Cpu :: DoRfe   ( uint32 inst )
{
  uint32    iar ;
  uint32    isr ;

   if   ( UserMode   ())   {
     CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  iar  =   GetSreg   ( DLX_SREG_IAR )   &   ~ 0x3 ;
   OutputBasicBlock   ( iar );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "R %x %x\n" ,  PC () - 4 ,  iar );
   }
  isr  =   GetSreg   ( DLX_SREG_ISR );
   PutSreg   ( DLX_SREG_STATUS ,  isr );
   SetPC   ( iar );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous instructions
//
//----------------------------------------------------------------------
static
int
InstMovi2s   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving integer reg %d (0x%x) to special reg %d.\n" ,
        src1 ,  cpu -> GetIreg ( src1 ),  dst );
  cpu -> PutSreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovs2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving special reg %d (0x%x) to integer reg %d.\n" ,
        src1 ,  cpu -> GetSreg ( src1 ),  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetSreg   ( src1 ));
   return   ( 1 );
}

static
int
InstIllegal   ( uint32 inst ,   Cpu   * cpu )
{
  cpu -> CauseException   ( DLX_EXC_ILLEGALINST );
   return   ( 1 );
}

static
int
InstNop   ( uint32 ,   Cpu   * cpu )
{
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Single precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   +  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstSubf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   -  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstMultf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   *  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstDivf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   float  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregF   ( src2 );
   if   ( denom  ==   ( float ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Single precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   ==  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   !=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}
static
int
InstLtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   +  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstSubd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   -  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstMultd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   *  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstDivd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   double     denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregD   ( src2 );
   if   ( denom  ==   ( double ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregD   ( dst ,  cpu -> GetFregD ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   ==  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   !=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Conversion instructions
//
//----------------------------------------------------------------------
static
int
InstCvtf2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtf2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'f' , "Converting f%d (%08x) to DFP (%lf) in f%d\n" ,
        src1 ,  cpu -> GetFreg ( src1 ),   ( double ) cpu -> GetFreg ( src1 ),  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  RR Instruction Table
//
//----------------------------------------------------------------------
Instruction   Cpu :: rrrInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x02 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x03 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x04 ,  DLX_FMT_RFMT ,   InstSll },
   { 0x05 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x06 ,  DLX_FMT_RFMT ,   InstSrl },
   { 0x07 ,  DLX_FMT_RFMT ,   InstSra },
   { 0x08 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x09 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0c ,  DLX_FMT_RFMT ,   InstIllegal },          // ALU TRAP instruction
   { 0x0d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x10 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x11 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x12 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x13 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x14 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x15 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x16 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x17 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x18 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x19 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_RFMT ,   InstAdd },
   { 0x21 ,  DLX_FMT_RFMT ,   InstAddu },
   { 0x22 ,  DLX_FMT_RFMT ,   InstSub },
   { 0x23 ,  DLX_FMT_RFMT ,   InstSubu },
   { 0x24 ,  DLX_FMT_RFMT ,   InstAnd },
   { 0x25 ,  DLX_FMT_RFMT ,   InstOr },
   { 0x26 ,  DLX_FMT_RFMT ,   InstXor },
   { 0x27 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x28 ,  DLX_FMT_RFMT ,   InstSeq },
   { 0x29 ,  DLX_FMT_RFMT ,   InstSne },
   { 0x2a ,  DLX_FMT_RFMT ,   InstSlt },
   { 0x2b ,  DLX_FMT_RFMT ,   InstSgt },
   { 0x2c ,  DLX_FMT_RFMT ,   InstSle },
   { 0x2d ,  DLX_FMT_RFMT ,   InstSge },
   { 0x2e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x2f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x30 ,  DLX_FMT_RFMT ,   InstMovi2s },
   { 0x31 ,  DLX_FMT_RFMT ,   InstMovs2i },
   { 0x32 ,  DLX_FMT_RFMT ,   InstMovf },
   { 0x33 ,  DLX_FMT_RFMT ,   InstMovd },
   { 0x34 ,  DLX_FMT_RFMT ,   InstMovfp2i },
   { 0x35 ,  DLX_FMT_RFMT ,   InstMovi2fp },
   { 0x36 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of "regular" instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: regInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },          // R-format instructions
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },          // FP instructions
   { 0x02 ,  DLX_FMT_JFMT ,   InstJmp },
   { 0x03 ,  DLX_FMT_JFMT ,   InstJal },
   { 0x04 ,  DLX_FMT_IFMT ,   InstBeqz },
   { 0x05 ,  DLX_FMT_IFMT ,   InstBnez },
   { 0x06 ,  DLX_FMT_IFMT ,   InstBfpt },
   { 0x07 ,  DLX_FMT_IFMT ,   InstBfpf },
   { 0x08 ,  DLX_FMT_IFMT ,   InstAddi },
   { 0x09 ,  DLX_FMT_IFMT ,   InstAddui },
   { 0x0a ,  DLX_FMT_IFMT ,   InstSubi },
   { 0x0b ,  DLX_FMT_IFMT ,   InstSubui },
   { 0x0c ,  DLX_FMT_IFMT ,   InstAndi },
   { 0x0d ,  DLX_FMT_IFMT ,   InstOri },
   { 0x0e ,  DLX_FMT_IFMT ,   InstXori },
   { 0x0f ,  DLX_FMT_IFMT ,   InstLhi },
   { 0x10 ,  DLX_FMT_JFMT ,   InstRfe },
   { 0x11 ,  DLX_FMT_JFMT ,   InstTrap },
   { 0x12 ,  DLX_FMT_JFMT ,   InstJr },
   { 0x13 ,  DLX_FMT_JFMT ,   InstJalr },
   { 0x14 ,  DLX_FMT_IFMT ,   InstSlli },
   { 0x15 ,  DLX_FMT_IFMT ,   InstNop },
   { 0x16 ,  DLX_FMT_IFMT ,   InstSrli },
   { 0x17 ,  DLX_FMT_IFMT ,   InstSrai },
   { 0x18 ,  DLX_FMT_IFMT ,   InstSeqi },
   { 0x19 ,  DLX_FMT_IFMT ,   InstSnei },
   { 0x1a ,  DLX_FMT_IFMT ,   InstSlti },
   { 0x1b ,  DLX_FMT_IFMT ,   InstSgti },
   { 0x1c ,  DLX_FMT_IFMT ,   InstSlei },
   { 0x1d ,  DLX_FMT_IFMT ,   InstSgei },
   { 0x1e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_IFMT ,   InstLb },
   { 0x21 ,  DLX_FMT_IFMT ,   InstLh },
   { 0x22 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x23 ,  DLX_FMT_IFMT ,   InstLw },
   { 0x24 ,  DLX_FMT_IFMT ,   InstLbu },
   { 0x25 ,  DLX_FMT_IFMT ,   InstLhu },
   { 0x26 ,  DLX_FMT_IFMT ,   InstLf },
   { 0x27 ,  DLX_FMT_IFMT ,   InstLd },
   { 0x28 ,  DLX_FMT_IFMT ,   InstSb },
   { 0x29 ,  DLX_FMT_IFMT ,   InstSh },
   { 0x2a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2b ,  DLX_FMT_IFMT ,   InstSw },
   { 0x2c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2e ,  DLX_FMT_IFMT ,   InstSf },
   { 0x2f ,  DLX_FMT_IFMT ,   InstSd },
   { 0x30 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x31 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x32 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x33 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x34 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x35 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x36 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_IFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of FP instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: fpInstrs [ 32 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstAddf },
   { 0x01 ,  DLX_FMT_RFMT ,   InstSubf },
   { 0x02 ,  DLX_FMT_RFMT ,   InstMultf },
   { 0x03 ,  DLX_FMT_RFMT ,   InstDivf },
   { 0x04 ,  DLX_FMT_RFMT ,   InstAddd },
   { 0x05 ,  DLX_FMT_RFMT ,   InstSubd },
   { 0x06 ,  DLX_FMT_RFMT ,   InstMultd },
   { 0x07 ,  DLX_FMT_RFMT ,   InstDivd },
   { 0x08 ,  DLX_FMT_RFMT ,   InstCvtf2d },
   { 0x09 ,  DLX_FMT_RFMT ,   InstCvtf2i },
   { 0x0a ,  DLX_FMT_RFMT ,   InstCvtd2f },
   { 0x0b ,  DLX_FMT_RFMT ,   InstCvtd2i },
   { 0x0c ,  DLX_FMT_RFMT ,   InstCvti2f },
   { 0x0d ,  DLX_FMT_RFMT ,   InstCvti2d },
   { 0x0e ,  DLX_FMT_RFMT ,   InstMult },
   { 0x0f ,  DLX_FMT_RFMT ,   InstDiv },
   { 0x10 ,  DLX_FMT_RFMT ,   InstEqf },
   { 0x11 ,  DLX_FMT_RFMT ,   InstNef },
   { 0x12 ,  DLX_FMT_RFMT ,   InstLtf },
   { 0x13 ,  DLX_FMT_RFMT ,   InstGtf },
   { 0x14 ,  DLX_FMT_RFMT ,   InstLef },
   { 0x15 ,  DLX_FMT_RFMT ,   InstGef },
   { 0x16 ,  DLX_FMT_RFMT ,   InstMultu },
   { 0x17 ,  DLX_FMT_RFMT ,   InstDivu },
   { 0x18 ,  DLX_FMT_RFMT ,   InstEqd },
   { 0x19 ,  DLX_FMT_RFMT ,   InstNed },
   { 0x1a ,  DLX_FMT_RFMT ,   InstLtd },
   { 0x1b ,  DLX_FMT_RFMT ,   InstGtd },
   { 0x1c ,  DLX_FMT_RFMT ,   InstLed },
   { 0x1d ,  DLX_FMT_RFMT ,   InstGed },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int
Cpu :: CauseException   ( int  excType )
{
  uint32    ivec ;

  DBPRINTF  ( 't' , "Exception being done (cause=0x%x @ pc=0x%x).\n" , excType ,
        PC () - 4 );
  ivec  =   GetSreg   ( DLX_SREG_INTRVEC );
   OutputBasicBlock   ( ivec );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "X %x %x\n" , excType ,  PC () - 4 );
   }
   PutSreg ( DLX_SREG_CAUSE ,  excType );
   // PC has already been incremented, so decrement it first.  If this
   // is a trap or interrupt, the PC will have already been incremented
   // (if necessary) so the IAR points to the next instruction to
   // execute.
   PutSreg ( DLX_SREG_IAR ,  PC () - 4 );
   // Save the current status register
   PutSreg ( DLX_SREG_ISR ,   GetSreg   ( DLX_SREG_STATUS ));
   // Save the current value of register 31.  This is necessary to give
   // the interrupt handler a temporary register that can be used to
   // switch to a system stack (rather than user stack)
   PutSreg ( DLX_SREG_IR31 ,   GetIreg   ( 31 ));
   // Set the next instruction to be run to be the interrupt vector.
   SetPC   ( ivec );
   // Set the status register to be system mode
   PutSreg ( DLX_SREG_STATUS ,   GetSreg   ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
   // Turn off interrupts
   DisableInterrupts   ();
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
int
Cpu :: VaddrToPaddr   ( uint32 vaddr ,  uint32 &  paddr ,  uint32 op ,  uint32 pteflags )
{
  uint32    pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
  uint32    pteaddr ;
  uint32    offsetinpage ,  entrynum ;
  uint32    pagemask ;

   if   (( vaddr  &   0x3 )   !=   0 )   {
     CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   if   ( StatusBit   ( DLX_STATUS_PAGE_TABLE ))   {
     // Translate if in user mode or if in system mode and the appropriate
     // translation bit is set in the status register.
     if   ( UserMode   ()   ||
     (( op  ==  DLX_MEM_READ )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_RD ))   ||
     (( op  ==  DLX_MEM_WRITE )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_WR )))   {
      DBPRINTF  ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
      pt1base  =   GetSreg   ( DLX_SREG_PGTBL_BASE );
      pt1pagebits  =   GetSreg   ( DLX_SREG_PGTBL_BITS );
      pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
      pt1pagebits  &=   0xffff ;
      pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
      offsetinpage  =  vaddr  &  pagemask ;
       // Mask off the low bits
      vaddr  &=   ~ pagemask ;
       if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
       GetSreg   ( DLX_SREG_PGTBL_SIZE ))   {
    DBPRINTF  ( 'm' ,   "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
          pt1pagebits ,  pt2pagebits ,   GetSreg ( DLX_SREG_PGTBL_SIZE ),
          entrynum );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
      pteaddr  =  pt1base  +   4   *  entrynum ;
      paddr  =   Memory   ( pteaddr );
       // If the L2 page size is the same as the L1 page size, there's
       // no L2 page table!
       if   ( pt1pagebits  !=  pt2pagebits )   {
    pt2base  =  paddr ;
     if   ( pt2base  ==   0 )   {
      DBPRINTF  ( 'm' ,   "No L2 table at entry %d! (base = 0x%x)\n" ,
            entrynum ,  pt1base );
       CauseException   ( DLX_EXC_PAGEFAULT );
       return   ( 0 );
     }
    pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                  (( 1   <<   ( pt1pagebits - pt2pagebits )) - 1 ));
    paddr  =   Memory   ( pteaddr );
       }
      DBPRINTF  ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
       if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
    DBPRINTF  ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
     PutSreg   ( DLX_SREG_FAULT_ADDR ,  vaddr );
     CauseException   ( DLX_EXC_PAGEFAULT );
     return   ( 0 );
       }
       if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     SetMemory   ( pteaddr ,
           paddr  |   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
       }
      paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
      paddr  |=  offsetinpage ;
      DBPRINTF  ( 'm' ,
         "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
        vaddr  |  offsetinpage ,  paddr ,
         Memory   ( paddr ),
        pt1base ,  pt1pagebits ,  entrynum );
       return   ( 1 );
     }   else   {
       // For system references, physical address is the same
       // as virtual address.
      paddr  =  vaddr ;
       if   (( vaddr  <=  memSize )   ||   (( vaddr  >=  DLX_IO_BASE )   &&
                  ( vaddr  <=   ( DLX_IO_BASE + DLX_IO_SIZE ))))   {
     return   ( 1 );
       }   else   {
    DBPRINTF  ( 't' , "Illegal system address: 0x%x.\n" ,  vaddr );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
     }
   }   else   if   ( StatusBit   ( DLX_STATUS_TLB ))   {
     // DLX_STATUS_TLB
     return   ( 1 );
   }   else   {
    paddr  =  vaddr ;
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
Cpu :: ReadWord   ( uint32 vaddr ,  uint32  & val ,  uint32 op )
{
  uint32    paddr ;

  DBPRINTF  ( 'l' , "Trying to read virtual address: 0x%x.\n" ,  vaddr );
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
    val  =   Memory ( paddr );
   }   else   {
    DBPRINTF  ( 'l' , "Trying to load special address: 0x%x.\n" ,  paddr );
     switch   ( paddr )   {
     case  DLX_KBD_NCHARSIN :
      val  =   KbdNumInChars   ();
       break ;
     case  DLX_KBD_NCHARSOUT :
      val  =   KbdNumOutChars   ();
       break ;
     case  DLX_KBD_GETCHAR :
      val  =   KbdGetChar   ();
       break ;
     case  DLX_DISK_STATUS :
       break ;
     case  DLX_GETMEMSIZE :
      val  =  memSize ;
       break ;
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: WriteWord   ( uint32 vaddr ,  uint32 val )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
             DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
     SetMemory ( paddr ,  val );
   }   else   {
     switch   ( paddr )   {
     case  DLX_KBD_PUTCHAR :
       KbdPutChar   ( val );
       break ;
     case  DLX_KBD_INTR :
       if   ( val  ==   0 )   {
    flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
       }   else   {
    flags  |=  DLX_FLAG_KBD_INTERRUPT ;
       }
       break ;
     case  DLX_TIMER_SETTIMER :
      DBPRINTF  ( 'o' , "Setting timer to %d us.\n" ,  val );
       SetTimer   ( val );
       break ;
#if   0
     case  DLX_DISK_REQUEST :
      diskReq  =  val ;
       StartDiskIo   ();
       break ;
     case  DLX_DISK_BLOCK :
      diskBlock  =  val ;
       break ;
     case  DLX_DISK_ADDR :
      diskAddr  =  val ;
       break ;
#endif
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: TestWriteWord   ( uint32 vaddr )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void
Cpu :: Open   ()
{
  uint32    name ;
   char   nameBuf [ 100 ];
   char    * tp ;
   int        accessType ;
   int        i ;

  name  =   GetParam ( 0 );
  accessType  =   GetParam ( 1 );
  DBPRINTF  ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * ) memory  +  name ,
        accessType );
   switch   ( accessType )   {
   case   1 :
    tp  =   "r" ;
     break ;
   case   2 :
    tp  =   "w" ;
     break ;
   case   3 :
    tp  =   "r+" ;
     break ;
   default :
     SetResult   ( 0xffffffff );
     return ;
     break ;
   }
   for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
     if   ( fp [ i ]   ==  NULL )   {
       if   ( ! CheckAddr   ( name ))   {
     SetResult   ( 0xffffffff );
     return ;
       }
      strncpy  ( nameBuf ,   ( char   * ) memory  +  name ,   98 );
       // If fopen fails, it returns NULL, so it looks like no open
       // was done.
      fp [ i ]   =  fopen  ( nameBuf ,  tp );
       break ;
     }
   }
   if   ( >=  DLX_MAX_FILES )   {
    i  =   - 1 ;
   }   else   if   ( fp [ i ]   ==  NULL )   {
    i  =   - errno ;
   }
  DBPRINTF  ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
   SetResult   ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void
Cpu :: Read   ()
{
   FileIo   ( DLX_FILE_READ );
}

void
Cpu :: Write   ()
{
   FileIo   ( DLX_FILE_WRITE );
}

void
Cpu :: FileIo   ( int  kind )
{
   int        fd ;
  uint32    buf ;
   int        size ;
   int        n ;

  fd  =   GetParam   ( 0 );
  buf  =   GetParam   ( 1 );
  size  =   GetParam   ( 2 );
  DBPRINTF  ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
         ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,
        fd ,  size ,  buf );
   if   ( !   CheckAddr   ( buf )   ||   ( !   CheckFd   ( fd )))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   ( kind  ==  DLX_FILE_WRITE )   {
    n  =  fwrite  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }   else   {
    n  =  fread  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }
   if   ( >   0 )   {
     SetResult   ( n );
   }   else   if   ( feof  ( fp [ fd ]))   {
     SetResult   ( 0 );
   }   else   {
     SetResult   ( - errno );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void
Cpu :: Seek   ()
{
   int        fd ;
   int        offset ;
   int        whence ;
   int        rv ;

  fd  =   GetParam ( 0 );
  offset  =   GetParam ( 1 );
  whence  =   GetParam ( 2 );
   if   ( !   CheckFd   ( fd ))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   (( rv  =  fseek  ( fp [ fd ],  offset ,  whence ))   <   0 )   {
     SetResult   ( rv );
   }   else   {
     SetResult   ( ftell  ( fp [ fd ]));
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void
Cpu :: Close   ()
{
   int        fd ;
  uint32    retval ;

  fd  =   GetParam ( 0 );
   if   ( ! CheckFd   ( fd ))   {
    retval  =   0xffffffff ;
   }   else   {
    retval  =  fclose  ( fp [ fd ]);
   }
  DBPRINTF  ( 'F' ,   "Closing file %d.\n" ,  fd );
  fp [ fd ]   =  NULL ;
   SetResult   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void
Cpu :: Random   ()
{
   int        n ;

  n  =  random  ();
   SetResult   ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void
Cpu :: Srandom   ()
{
  uint32    seed ;

  seed  =   GetParam   ( 0 );
  srandom  ( seed );
   SetResult   ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32
Cpu :: GetParam   ( int  p )
{
  uint32    stackPtr ;

  stackPtr  =   GetIreg   ( 29 );
   return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void
Cpu :: SetResult   ( uint32 r )
{
   PutIreg   ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void
Cpu :: Printf   ()
{
  uint32    fmtaddr ;
   char    * c ;
  uint32    args [ 10 ];
   int        nargs  =   0 ;

  fmtaddr  =   GetParam ( 0 );
   // 
   for   ( =  fmtaddr  +   ( char   * ) memory ;   * !=   '\0' ;  c ++ )   {
     if   ( * ==   '%' )   {
       // if this is a %%, skip past second %
       if   ( * ( c + 1 )   ==   '%' )   {
    c ++ ;
     continue ;
       }
       // Get the current argument off the stack
      args [ nargs ]   =   GetParam ( nargs + 1 );
      DBPRINTF  ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
        args [ nargs ],  args [ nargs ]);
       while   ( 1 )   {
    c ++ ;
     if   ( * ==   's' )   {
       // If it's a string, the address is relative to the
       // start of emulated memory.
      args [ nargs ]   +=   ( uint32 ) memory ;
       break ;
     }   else   if   ( * ==   'l' )   {
       continue ;
     }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
       // If it's a floating point number, it'll be passed as
       // a double, so grab the second word also.
      nargs  +=   1 ;
      args [ nargs ]   =   GetParam ( nargs + 1 );
       break ;
     }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
       // If it's another formatting character, it's not
       // a string, but we can leave the loop anyway.
       break ;
     }
       }
      nargs  +=   1 ;
     }
   }
  printf  ( fmtaddr  +   ( char   * ) memory ,
      args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
      args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
  fflush  ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void
Cpu :: Exit   ()
{
   struct  timeval    t ;

  printf  ( "Exiting at program request.\n" );
  printf  ( "Instructions executed: %.0lf\n" ,  instrsExecuted );
  printf  ( "Time simulated: %.03lf secs\n" ,  usElapsed  /   1e6 );
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   (( double ) t . tv_sec  +   (( double ) t . tv_usec ) * 1e-6 )   -  realElapsed ;
  printf  ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
  printf  ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
      instrsExecuted  *   1e-6   /  realElapsed );
  exit  ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int
Cpu :: ExecOne   ()
{
  uint32    curInst ;
  uint32    tmpPc ;
  uint32    curOp ;
  uint32    retval ;
  uint32    funcCode ;         // subcode for RRR & FP ops

  usElapsed  +=  usPerInst ;
  instrsExecuted  +=   1.0 ;
   // Increment PC before checking for interrupts because CauseException
   // will subtract 4 off the PC before placing the value into the IAR.
   // By incrementing here, we ensure that the current instruction is
   // the one whose address goes into the IAR.
   SetPC   ( PC ()   +   4 );
   // Check for an input character.  If we got one and interrupts are
   // enabled, do an interrupt.
   if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
    kbdcounter  =   0 ;
     if   ( GetCharIfAvail   ()   &&   ( IntrLevel   ()   <   8 ))   {
      DBPRINTF  ( 't' , "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
        PC () - 4 ,  usElapsed );
       CauseException   ( DLX_EXC_KBD );
       return   ( 0 );
     }
   }
   if   ( IntrLevel ()   <   8 )   {
     if   ( timerInterrupt  <  usElapsed )   {
      DBPRINTF  ( 't' ,   "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
        PC () - 4 ,  usElapsed ,  timerInterrupt );
      timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
       CauseException   ( DLX_EXC_TIMER );
       return   ( 0 );
     }
   }
   if   ( !   ReadWord   ( PC () - 4 ,  curInst ,  DLX_MEM_INSTR ))   {
    DBPRINTF  ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC () - 4 );
     return   ( 0 );
   }
  curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
  DBPRINTF  ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
         ( int ) instrsExecuted  %   1000000 ,
        curInst ,  PC ()   -   4 ,  curOp ,
         ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &  DLX_ALU_FUNC_CODE_MASK );
   switch   ( curOp )   {
   case   0x00 :          // ALU and other R-R operations
    funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
        DLX_ALU_FUNC_CODE_MASK );
    retval  =   ( rrrInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   case   0x01 :          // FP operations
    funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
        DLX_FPU_FUNC_CODE_MASK );
    retval  =   ( fpInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   default :
    retval  =   ( regInstrs [ curOp ]. handler )( curInst ,   this );
     break ;
   }
   return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format consists of a
//  leading address, followed by a colon, followed by the data
//  to go at that address.  If the address is omitted, the data
//  follows that from the previous line of the file.
//
//----------------------------------------------------------------------
static
inline
int
getxvalue  ( int  x )
{
   if   (( >=   '0' )   &&   ( <=   '9' ))   {
     return   ( -   '0' );
   }   else   if   (( >=   'a' )   &&   ( <=   'f' ))   {
     return   ( +   10   -   'a' );
   }   else   if   (( >=   'A' )   &&   ( <=   'F' ))   {
     return   ( +   10   -   'A' );
   }   else   {
     return   ( 0 );
   }
}

int
Cpu :: LoadMemory   ( const   char   * file ,  uint32 &  startAt )
{
  FILE   * fp ;
   char   buffer [ 200 ];
   char    * pos ;
   int        nread  =   0 ;
  uint32    addr  =   0 ;
  uint32    val ;
   int        count ;

   if   (( fp  =  fopen  ( file ,   "r" ))   ==  NULL )   {
     return   ( 0 );
   }
   if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
     return   ( 0 );
   }
   // Read in the "start" line
   if   ( strstr  ( buffer ,   "start:" )   ==  NULL )   {
     return   ( 0 );
   }
  pos  =  index  ( buffer ,   ':' )   +   1 ;
  startAt  =  strtol  ( pos ,  NULL ,   16 );
   while   ( 1 )   {
    pos  =  buffer ;
     if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
       return   ( nread );
     }
     if   ( index  ( buffer ,   ':' )   ==  NULL )   {
       continue ;
     }
     if   ( * pos  !=   ':' )   {
      addr  =  strtol  ( pos ,   & pos ,   16 );
     }
     if   ( * pos  !=   ':' )   {
      fprintf  ( stderr ,   "Error reading data file near:\n%s\n" ,  buffer );
       return   ( nread );
     }
    pos ++ ;    // skip past colon
     while   ( 1 )   {
       while   ( isspace  ( * pos ))   {
    pos ++ ;
       }
       // Exit loop if at least one digit isn't a hex digit.
       if   ( ! ( isxdigit  ( * pos )   &&  isxdigit  ( * ( pos + 1 ))))   {
     break ;
       }
      val  =   ( getxvalue ( * pos )   *   16 )   +  getxvalue ( * ( pos + 1 ));
       * ((( unsigned   char   * ) memory )   +  addr )   =  val ;
      pos  +=   2 ;
      addr ++ ;
      nread ++ ;
     }
   }
}

//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void
Cpu :: SetTimer   ( uint32 usecs )
{
  timerInterrupt  =  usElapsed  +   ( double ) usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::Timerget
//
//  return Simulated time(in milliseconds) 
//
//----------------------------------------------------------------------
uint32 
Cpu :: Timerget ()
{
    unsigned   int  result ;
   result  =   ( unsigned   int )( usElapsed / 1e3 );
    SetResult   ( result );
}
//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32
Cpu :: KbdGetChar   ()
{
  uint32    v ;

   if   ( kbdbufferedchars  ==   0 )   {
     return   ( 0 );
   }
  v  =  kbdbuffer [ kbdrpos ++ ];
  kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
  kbdbufferedchars -- ;
   return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void
Cpu :: IgnoreExit   ( int  ignore )
{
  flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
   if   ( ignore )   {
    flags  |=  DLX_FLAG_IGNORE_EXIT ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void
Cpu :: OutputBasicBlockActual   ()
{
   int        i ,  ninstrs ;

  ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
   // Print out the basic block information here
   if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
    fprintf  ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
   }
   if   ( flags  &  DLX_TRACE_MEMORY )   {
     for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
      fprintf  ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,  accesses [ i ]. reg ,
           accesses [ i ]. addr , accesses [ i ]. value );
     }
   }
  naccesses  =   0 ;
}

option1/lab4_2/src/userprog.o

; Compiled by GCC .data .align 2 LC0: .ascii "Testing case %d\n\000" .align 2 LC1: .ascii "\nUsage: \000" .align 2 LC2: .ascii " [case id]\n\000" .align 2 LC3: .ascii "userprog1.dlx.obj\000" .align 2 LC4: .ascii "userprog2.dlx.obj\000" .align 2 LC5: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop ; not filled. seqi r1,r2,#2 beqz r1,L14 nop ; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop ; not filled. add r2,r0,r1 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. addi r29,r29,#16 j L12 nop ; not filled. L14: addi r29,r29,#-8 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 jal _Printf nop ; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop ; not filled. lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 jal _Printf nop ; not filled. jal _exit nop ; not filled. L12: seqi r1,r2,#1 bnez r1,L17 nop ; not filled. seqi r1,r2,#2 beqz r1,L19 nop ; not filled. j L18 nop ; not filled. L17: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L18: addi r29,r29,#-8 lhi r4,((LC4)>>16)&0xffff addui r4,r4,(LC4)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L19: addi r29,r29,#-8 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. L21: addi r29,r29,#8 jal _exit nop .endproc _main

option1/lab4_2/src/memory.c

// // memory.c // // Routines for dealing with memory management. static char rcsid[] = "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "memory.h" #include "process.h" #include "queue.h" static uint32 pagestart; static int freemapmax; static int nfreepages; static uint32 freepages[MEMORY_MAX_PAGES/32]; static uint32 negativeone = 0xffffffff; //---------------------------------------------------------------------- // // This silliness is required because the compiler believes that // it can invert a number by subtracting it from zero and subtracting // an additional 1. This works unless you try to negate 0x80000000, // which causes an overflow when subtracted from 0. Simply // trying to do an XOR with 0xffffffff results in the same code // being emitted. // //---------------------------------------------------------------------- static inline uint32 invert (uint32 n) { return (n ^ negativeone); } //---------------------------------------------------------------------- // // MemoryGetSize // // Return the total size of memory in the simulator. This is // available by reading a special location. // //---------------------------------------------------------------------- int MemoryGetSize () { return (*((int *)DLX_MEMSIZE_ADDRESS)); } //---------------------------------------------------------------------- // // MemorySetFreemap // //---------------------------------------------------------------------- inline void MemorySetFreemap (int p, int b) { uint32 wd = p / 32; uint32 bitnum = p % 32; freepages[wd] = (freepages[wd] & invert(1 << bitnum)) | (b << bitnum); dbprintf ('m', "Set freemap entry %d to 0x%x.\n", wd, freepages[wd]); } � //---------------------------------------------------------------------- // // MemoryInitModule // // Initialize the memory module of the operating system. // //---------------------------------------------------------------------- void MemoryModuleInit () { int i; int maxpage = MemoryGetSize () / MEMORY_PAGE_SIZE; int curpage; pagestart = (lastosaddress + MEMORY_PAGE_SIZE - 4) / MEMORY_PAGE_SIZE; freemapmax = (maxpage+31) / 32; dbprintf ('m', "Map has %d entries, memory size is 0x%x.\n", freemapmax, maxpage); dbprintf ('m', "Free pages start with page # 0x%x.\n", pagestart); for (i = 0; i < freemapmax; i++) { // Initially, all pages are considered in use. This is done to make // sure we don't have any partially initialized freemap entries. freepages[i] = 0; } nfreepages = 0; for (curpage = pagestart; curpage < maxpage; curpage++) { nfreepages += 1; MemorySetFreemap (curpage, 1); } dbprintf ('m', "Initialized %d free pages.\n", nfreepages); } � //---------------------------------------------------------------------- // // MemoryAllocPage // // Allocate a page of memory. // //---------------------------------------------------------------------- inline int MemoryAllocPage () { static int mapnum = 0; int bitnum; uint32 v; if (nfreepages == 0) { printf("ERROR AT THIS POINT\n"); return (0); } dbprintf ('m', "Allocating memory, starting with page %d\n", mapnum); while (freepages[mapnum] == 0) { mapnum += 1; if (mapnum >= freemapmax) { mapnum = 0; } } v = freepages[mapnum]; for (bitnum = 0; (v & (1 << bitnum)) == 0; bitnum++) { } freepages[mapnum] &= invert(1 << bitnum); v = (mapnum * 32) + bitnum; dbprintf ('m', "Allocated memory, from map %d, page %d, map=0x%x.\n", mapnum, v, freepages[mapnum]); nfreepages -= 1; return (v); } //---------------------------------------------------------------------- // // MemoryFreePage // // Free a page of memory. // //---------------------------------------------------------------------- void MemoryFreePage(uint32 page) { MemorySetFreemap (page, 1); nfreepages += 1; dbprintf ('m',"Freed page 0x%x, %d remaining.\n", page, nfreepages); } � //---------------------------------------------------------------------- // // MemoryTranslateUserToSystem // // Translate a user address (in the process referenced by pcb) // into an OS (physical) address. This works for simple one-level // page tables, but will have to be modified for two-level page // tables. // //---------------------------------------------------------------------- uint32 MemoryTranslateUserToSystem (PCB *pcb, uint32 addr) { //------------------------------------------- // You need to change the code below //------------------------------------------- int page = addr / MEMORY_PAGE_SIZE; int offset = addr % MEMORY_PAGE_SIZE; if (page > pcb->npages) { return (0); } return ((pcb->pagetable[page] & MEMORY_PTE_MASK) + offset); } � //---------------------------------------------------------------------- // // moveBetweenSpaces // // Copy data between user and system spaces. This is done page by // page by: // * Translating the user address into system space. // * Copying all of the data in that page // * Repeating until all of the data is copied. // A positive direction means the copy goes from system to user // space; negative direction means the copy goes from user to system // space. // // This routine returns the number of bytes copied. Note that this // may be less than the number requested if there were unmapped pages // in the user range. If this happens, the copy stops at the // first unmapped address. // //---------------------------------------------------------------------- static int moveBetweenSpaces (PCB *pcb, unsigned char *s, unsigned char *u, int n, int dir) { unsigned char *curUser; int bytesCopied = 0; int bytesToCopy; while (n > 0) { // Translate current user page to system address. If this fails, return // the number of bytes copied so far. curUser = (unsigned char *)MemoryTranslateUserToSystem (pcb, (uint32)u); if (curUser == (unsigned char *)0) { // Leave the loop if translation fails. break; } // Calculate the number of bytes to copy this time. This is the minimum // of the bytes left on this page and the bytes left to copy. bytesToCopy = MEMORY_PAGE_SIZE - ((uint32)curUser % MEMORY_PAGE_SIZE); if (bytesToCopy > n) { bytesToCopy = n; } // Perform the copy. if (dir >= 0) { bcopy (s, curUser, bytesToCopy); } else { bcopy (curUser, s, bytesToCopy); } // Keep track of bytes copied and adjust addresses appropriately. n -= bytesToCopy; bytesCopied += bytesToCopy; s += bytesToCopy; u += bytesToCopy; } return (bytesCopied); } //---------------------------------------------------------------------- // // These two routines copy data between user and system spaces. // They call a common routine to do the copying; the only difference // between the calls is the actual call to do the copying. Everything // else is identical. // //---------------------------------------------------------------------- int MemoryCopySystemToUser (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, from, to, n, 1)); } int MemoryCopyUserToSystem (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, to, from, n, -1)); } � //---------------------------------------------------------------------- // // MemorySetupPte // // Set up a PTE given a page number. // //---------------------------------------------------------------------- uint32 MemorySetupPte (uint32 page) { return ((page * MEMORY_PAGE_SIZE) | MEMORY_PTE_VALID); } //---------------------------------------------------------------------- // // MemoryFreePte // // Free a page given its PTE. // //---------------------------------------------------------------------- void MemoryFreePte (uint32 pte) { MemoryFreePage ((pte & MEMORY_PTE_MASK) / MEMORY_PAGE_SIZE); } //---------------------------------------------------------------------- // // MemoryPteToPage // // Given a PTE, return the base address for the (virtual) page the // PTE references. // //---------------------------------------------------------------------- uint32 MemoryPteToPage (uint32 pte) { return (pte & MEMORY_PTE_MASK); } � //---------------------------------------------------------------------- // // MemoryGetOperandAddress // // This routine takes an instruction and a pointer to a PCB, and // returns the address that the instruction is trying to use // for its memory operand. If the instruction doesn't access memory, // it returns 0xffffffff. Note that this means it's impossible to // distinguish between a valid access to 0xffffffff and an instruction // without an operand.... // //---------------------------------------------------------------------- uint32 MemoryGetOperandAddress (PCB *pcb, uint32 instr) { static uint32 invalidOps = 0x3404; uint32 opcode = (instr >> 26) & 0x3f; uint32 reg; uint32 addr; uint32 offset; uint32 regValue; if ((opcode<0x20) || (opcode>0x2f) || ((invalidOps >> (opcode-0x20) & 1))) { return (0xffffffff); } reg = (instr >> 21) & 0x1f; offset = instr & 0xffff; if (offset & 0x8000) { offset |= 0xffff0000; } regValue = pcb->currentSavedFrame[PROCESS_STACK_IREG+reg]; addr = regValue + offset; dbprintf ('m', "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n", instr, addr, reg, regValue); return (addr); }

option1/lab4_2/src/filesys.h

// // filesys.h // // Includes for the file system. Includes the definition of the file // system interface structure. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: filesys.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _filesys_h_ #define _filesys_h_ #define FS_FS_BUILTIN 1 #define FS_FS_DLXOS 2 #define FS_MODE_READ 0x1 #define FS_MODE_WRITE 0x2 #define FS_MODE_RW (FS_MODE_READ | FS_MODE_WRITE) // If this flag is set, a new file is created if no file already exists. // This flag only works with the DLX file system. #define FS_MODE_CREATE 0x4 // IMPORTANT: These must match the underlying UNIX seek parameters. // These values are correct for Linux and should work elsewhere, but // be careful.... #define FS_SEEK_SET 0 #define FS_SEEK_CUR 1 #define FS_SEEK_END 2 #define FS_BUFFER_SIZE 256 #define FS_MAX_OPEN_FILES 32 typedef struct Fs { int (*Open)(int, const char *, int); int (*Read)(int, char *, int); int (*Write)(int, char *, int); int (*Seek)(int, int, int); int (*Close)(int); int (*Delete)(const char *); } Fs; typedef struct FsUnixInfo { int fd; // Unix file descriptor } FsUnixInfo; typedef struct FsDlxInfo { int curpos; // What's our current position in the file? } FsDlxInfo; typedef struct FsOpenFile { int fs; // which file system is this file in? int flags; char buffer[FS_BUFFER_SIZE]; union { FsUnixInfo Unix; FsDlxInfo Dlx; } u; } FsOpenFile; extern int FsOpen (const char *, int); extern int FsRead (int, char *, int); extern int FsWrite (int, char *, int); extern int FsSeek (int, int, int); extern int FsClose (int); extern int FsDelete (const char *); #endif // _filesys_h_

option1/lab4_2/src/queue.c

// // queue.c // // Variables for queues, and a routine to initialize the pool of links. // // #include "dlxos.h" #include "queue.h" Queue freeLinks; static Link linkpool[QUEUE_MAX_LINKS]; void QueueModuleInit () { int i; QueueInit (&freeLinks); for (i = 0; i < QUEUE_MAX_LINKS; i++) { dbprintf ('i', "Initializing queue link %d.\n", i); linkpool[i].next = NULL; QueueFreeLink (&(linkpool[i])); } } void QueueInit (Queue *q) { q->first = (Link *)q; q->last = (Link *)q; q->nitems = 0; } void QueueFreeLink (Link *l) { extern Queue freeLinks; // Make sure the link has already been freed! ASSERT ((l->next == NULL), "Link not empty"); QueueInsertLast (&freeLinks, l); } Link * QueueAllocLink () { extern Queue freeLinks; Link *l; if (! QueueEmpty (&freeLinks)) { l = QueueFirst (&freeLinks); QueueRemove (l); } else { l = NULL; } ASSERT ((l != NULL), "Link not allocated!"); return (l); }

option1/lab4_2/src/misc.c

// // misc.c // // Miscellaneous routines for the operating system. These include // basic routines that would be in libc if we had access to it. // #include "misc.h" //---------------------------------------------------------------------- // // dstrcpy // dstrncpy // dstrcat // // These three functions do exactly what their counterparts in the // standard C library do. // //---------------------------------------------------------------------- char* dstrcpy (char *to, const char *from) { char *tokeep = to; char last; do { last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char* dstrncpy (char *to, const char *from, int n) { char *tokeep = to; char last; int cur = 0; do { // Stop if we're exceeded the maximum string length if (n-- <= 0) { break; } last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char * dstrcat (char *onto, const char *addn) { char *konto = onto; while (*onto != '\0') { onto++; } dstrcpy (onto, addn); return (konto); } int dstrncmp (const char *s1, const char *s2, int n) { int i; for (i = 0; i < n; i++) { // If they don't match, end the loop if (*s2 == '\0') { // If the second string is NULL, we're at the end of the string and // have a match. return (0); } else if (*s1 != *s2) { break; } s1++; s2++; } if (i == n) { return (0); } else { return (((*s1 - *s2) < 0) ? -1 : ((*s1 == *s2) ? 0 : 1)); } } int dstrlen (const char *s) { int i = 0; while (*(s++) != '\0') { i++; } return (i); } const char * dstrstr (const char *buf, const char *pattern) { int n = dstrlen (pattern); while (*buf != '\0') { if (dstrncmp (buf, pattern, n) == 0) { return (buf); } buf++; } return ((char *)0); } � //---------------------------------------------------------------------- // // dindex // dmindex // // dindex is identical to the libc function index. dmindex is // similar to dindex, but it reports the index in the string of the // first match for any one of the characters passed (rather than // matching only on a single specific character). // //---------------------------------------------------------------------- const char * dmindex (const char *s, const char *match) { const char *c; while (*s != '\0') { for (c = match; *c != '\0'; c++) { if (*s == *c) { return (s); } } } return ((const char *)0); } const char* dindex (const char *s, int c) { while (*s != '\0') { if (*s == c) { return (s); } s++; } return ((char *)0); } � //---------------------------------------------------------------------- // // ditoa: Convert an integer into an ASCII number. // dstrtol: Convert ASCII into an integer // //---------------------------------------------------------------------- void ditoa (int n, char *buf) { int k; if (n < 0) { *(buf++) = '-'; n = -n; } else if (n == 0) { *(buf++) = '0'; } else { for (k = 1; k <= n; k *= 10) { } do { k /= 10; *(buf++) = (n / k) + '0'; n %= k; } while (k > 1); } *buf = '\0'; } int dstrtol (char *c, char **newpos, int base) { int v = 0; int curdigit; int sign; while ((*c == ' ') || (*c == '\t') || (*c == '\n')) { c++; } if (newpos != (char **)0) { *newpos = c; } if (*c == '\0') { return (v); } if (*c == '-') { sign = -1; c++; } else { sign = 1; } if (base == 0) { if (*c == '0') { c++; if ((*c == 'x') || (*c == 'X')) { base = 16; c++; } else { base = 8; } } else { base = 10; } } if ((base <= 0) || (base > 16)) { return (v); } do { if ((*c >= '0') && (*c <= '9')) { curdigit = (*c) - '0'; } else if ((*c >= 'a') && (*c <= 'z')) { curdigit = (*c) + 10 - 'a'; } else if ((*c >= 'A') && (*c <= 'Z')) { curdigit = (*c) + 10 - 'A'; } else { curdigit = 1000; } if (curdigit < base) { v *= base; v += curdigit; c++; } } while (curdigit < base); if (newpos != (char **)0) { *newpos = c; } v *= sign; return (v); } � //---------------------------------------------------------------------- // // bcopy: Copy bytes from one location to another. // bzero: Set all the bytes in a region to zero. // //---------------------------------------------------------------------- void bcopy (char *src, char *dst, int count) { while (count-- > 0) { *(dst++) = *(src++); } } void bzero (char *dst, int count) { while (count-- > 0) { *(dst++) = 0; } }

option1/lab4_2/src/userprog2.c

// This test case should generate 5 page faults and display output as Sum=210. main() { int i,j; int Sum=0; int nArray[10000]; for(i=0,j=1;i<10000;i+=500) nArray[i]=j++; for(i=0;i<10000;i+=500) Sum+= nArray[i]; Printf("\nIn Userprog2, Sum : %d\n\n",Sum); }

option1/lab4_2/src/dlxos.h

// // Routines used by the entire operating system. // #ifndef _dlxos_h_ #define _dlxos_h_ #include "misc.h" typedef unsigned int uint32; #define DLX_PROCESS_QUANTUM 10000 // in microseconds extern void SetTimer (int); extern char debugstr[]; #define ASSERT(cond,s) (cond ? 0 : printf ("%s: %s\n", __FUNCTION__,s)) // dbprintf() is a VERY useful macro. It gets used as follows: // dbprintf ('x', "This prints %d and %x\n", val1, val2); // This will print the expected string only if the debugging options contain // the letter 'x'. This allows users to turn on different debugging // statements at different times by using different letters. For example, // process debugging statements could use 'p', and memory 'm'. Specifying // a '+' in the debugging string will turn on all debugging printfs. #define dbprintf(flag, format, args...) \ if ((dindex(debugstr,flag)!=(char *)0) || \ (dindex(debugstr,'+')!=(char *)0)) { \ printf (format, ## args); \ } extern int CurrentIntrs (); extern int SetIntrs (int); extern void KbdModuleInit (); extern void intrreturn (); inline int DisableIntrs () { return (SetIntrs (0xf)); } inline int EnableIntrs () { return (SetIntrs (0x0)); } inline int RestoreIntrs (int intrs) { return (SetIntrs (intrs)); } #endif // _dlxos_h_

option1/lab4_2/src/dlxos.o

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

option1/lab4_2/src/sysproc.c

// // sysproc.c // // This file defines system processes run by the OS. It also // includes a routine to initialize system processes. #include "process.h" #include "synch.h" //---------------------------------------------------------------------- // // doSomething // // A useless little function that does some small stuff to test // process switching and the like. // //---------------------------------------------------------------------- static Sem mysems[10]; static void doSomething (int me) { int i; int j; int mygrp = me % 10; char buf[40]; char buf2[40]; if (me < 100) { SemInit (&(mysems[mygrp]), 1); for (i = 1; i <= 6; i++) { dstrcpy (buf, "Process #"); ditoa (i, buf2); dstrcat (buf, buf2); ProcessFork (&doSomething, i * me * 1000 + me, buf, 0); } } SemWait (&mysems[mygrp]); for (i = 0, j = 0; i < (me * 2); i++) { if ((i % 1000) == 0) { printf ("Running process %d (iteration %d)!\n", me, i); } j += (i & 3); } SemSignal (&mysems[mygrp]); } � //---------------------------------------------------------------------- // // chaseTail // // A little function that chases its tail, forking off other // processes before exiting. This can be used to test resource // allocation and reclamation. // //---------------------------------------------------------------------- static void chaseTail (int me) { char *str = "chasetail"; printf ("Chasing tail %d.\n", me); printf ("Open of (%s,0x%x) returns 0x%x.\n", str, me+0x2000, Open (str, me + 0x2000)); if (me < 40) { ProcessFork (&chaseTail, me + 1, "ChaseTail", 0); } } //---------------------------------------------------------------------- // // emptyLoop // // This is an empty loop. It's used to test running code. A similar // loop could be used as the "idle" process. // //---------------------------------------------------------------------- static void emptyLoop (int me) { int i; int limit = me * 50000; i = 0; while (1) { i += 1; if (i > limit) { i = 0; printf ("%d ", me); } } } � //---------------------------------------------------------------------- // // randomStuff // // This routine tests random number usage in DLXOS. // //---------------------------------------------------------------------- static void randomStuff (int seed) { int i,rn; extern int random(),srandom(); srandom (seed); for (i = 0; i < 40; i++) { rn = random (); printf ("Random number %02i is 0x%08x.\n", i, rn); } } //---------------------------------------------------------------------- // // SysprocCreateProcesses // // This is the routine that is called by main to create processes. // It must create at least one process, and there must always be // at least one runnable process. If there isn't, the OS will // exit. // //---------------------------------------------------------------------- void SysprocCreateProcesses () { int i; for (i = 0; i < 10; i++) { SemInit (&mysems[i], 1); } // ProcessFork (&emptyLoop, 1, "Loop1", 0); // ProcessFork (&emptyLoop, 2, "Loop1", 0); // ProcessFork (&emptyLoop, 3, "Loop1", 0); // ProcessFork (&doSomething, 1, "Creator1", 0); // ProcessFork (&doSomething, 2, "Creator2", 0); // ProcessFork (&randomStuff, 1234, "randomStuff", 0); // ProcessFork (&chaseTail, 10, "ChaseTail", 0); }

option1/lab4_2/src/process.c

// // process.c // // This file defines routines for dealing with processes. This // includes the "main" routine for the OS, which creates a process // for the initial thread of execution. It also includes // code to create and delete processes, as well as context switch // code. Note, however, that the actual context switching is // done in assembly language elsewhere. #include "dlxos.h" #include "memory.h" #include "process.h" #include "synch.h" #include "filesys.h" float MyFuncRetZero(); // Pointer to the current PCB. This is used by the assembly language // routines for context switches. PCB *currentPCB; // List of free PCBs. static Queue freepcbs; // List of processes that are ready to run (ie, not waiting for something // to happen). static Queue runQueue; // List of processes that are waiting for something to happen. There's no // reason why this must be a single list; there could be many lists for many // different conditions. static Queue waitQueue; // List of processes waiting to be deleted. See below for a description of // the reason that we need a separate queue for processes about to die. static Queue zombieQueue; // Static area for all process control blocks. This is necessary because // we can't use malloc() inside the OS. static PCB pcbs[PROCESS_MAX_PROCS]; // Default value for scheduler quantum. This could be set to any value. // In fact, it could even be dynamic, though that would require modifying // the timer trap handler.... static processQuantum = DLX_PROCESS_QUANTUM; // String listing debugging options to print out. char debugstr[200]; � //---------------------------------------------------------------------- // // ProcessModuleInit // // Initialize the process module. This involves initializing all // of the process control blocks to appropriate values (ie, free // and available). We also need to initialize all of the queues. // //---------------------------------------------------------------------- void ProcessModuleInit () { int i; dbprintf ('p', "Entering ProcessModuleInit\n"); QueueInit (&freepcbs); QueueInit (&runQueue); QueueInit (&waitQueue); QueueInit (&zombieQueue); for (i = 0; i < PROCESS_MAX_PROCS; i++) { dbprintf ('p', "Initializing PCB %d @ 0x%x.\n", i, &(pcbs[i])); pcbs[i].flags = PROCESS_STATUS_FREE; QueueLinkInit (&(pcbs[i].l), (void *)&pcbs[i]); QueueInsertFirst(&freepcbs, &(pcbs[i].l)); } currentPCB = NULL; dbprintf ('p', "Leaving ProcessModuleInit\n"); } � //---------------------------------------------------------------------- // // ProcessSetStatus // // Set the status of a process. // //---------------------------------------------------------------------- void ProcessSetStatus (PCB *pcb, int status) { pcb->flags &= ~PROCESS_STATUS_MASK; pcb->flags |= status; } //---------------------------------------------------------------------- // // ProcessFreeResources // // Free the resources associated with a process. This assumes the // process isn't currently on any queue. // //---------------------------------------------------------------------- void ProcessFreeResources (PCB *pcb) { int i; int npages; QueueInsertLast (&freepcbs, &pcb->l); // Free the process's memory. This is easy with a one-level page // table, but could get more complex with two-level page tables. //------------------------------------------ // You may change the code below //------------------------------------------ npages = pcb->npages; for (i = 0; i < pcb->npages; i++) { MemoryFreePte (pcb->pagetable[i]); } // Free the page allocated for the system stack MemoryFreePage (pcb->sysStackArea / MEMORY_PAGE_SIZE); ProcessSetStatus (pcb, PROCESS_STATUS_FREE); } //---------------------------------------------------------------------- // // ProcessSetResult // // Set the result returned to a process. This is done by storing // the value into the current register save area for r1. When the // context is restored, r1 will contain the return value. This // routine should only be called from a trap. Calling it at other // times (such as an interrupt handler) will cause unpredictable // results. // //---------------------------------------------------------------------- void ProcessSetResult (PCB * pcb, uint32 result) { pcb->currentSavedFrame[PROCESS_STACK_IREG+1] = result; } � //---------------------------------------------------------------------- // // ProcessSchedule // // Schedule the next process to run. If there are no processes to // run, exit. This means that there should be an idle loop process // if you want to allow the system to "run" when there's no real // work to be done. // // NOTE: the scheduler should only be called from a trap or interrupt // handler. This way, interrupts are disabled. Also, it must be // called consistently, and because it might be called from an interrupt // handler (the timer interrupt), it must ALWAYS be called from a trap // or interrupt handler. // // Note that this procedure doesn't actually START the next process. // It only changes the currentPCB and other variables so the next // return from interrupt will restore a different context from that // which was saved. // //---------------------------------------------------------------------- void ProcessSchedule () { PCB *pcb; int i; dbprintf ('p', "Now entering ProcessSchedule (cur=0x%x, %d ready)\n", currentPCB, QueueLength (&runQueue)); // The OS exits if there's no runnable process. This is a feature, not a // bug. An easy solution to allowing no runnable "user" processes is to // have an "idle" process that's simply an infinite loop. if (QueueEmpty (&runQueue)) { printf ("No runnable processes - exiting!\n"); exitsim (); // NEVER RETURNS } // Move the front of the queue to the end, if it is the running process. pcb = (PCB *)((QueueFirst (&runQueue))->object); if (pcb == currentPCB) { QueueRemove (&pcb->l); QueueInsertLast (&runQueue, &pcb->l); } // Now, run the one at the head of the queue. pcb = (PCB *)((QueueFirst (&runQueue))->object); currentPCB = pcb; dbprintf ('p',"About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n", pcb, pcb->flags, pcb->sysStackPtr[PROCESS_STACK_IAR]); // Clean up zombie processes here. This is done at interrupt time // because it can't be done while the process might still be running while (!QueueEmpty (&zombieQueue)) { pcb = (PCB *)(QueueFirst (&zombieQueue)->object); dbprintf ('p', "Freeing zombie PCB 0x%x.\n", pcb); QueueRemove (&pcb->l); ProcessFreeResources (pcb); } // Set the timer so this process gets at most a fixed quantum of time. TimerSet (processQuantum); dbprintf ('p', "Leaving ProcessSchedule (cur=0x%x)\n", currentPCB); } � //---------------------------------------------------------------------- // // ProcessSuspend // // Place a process in suspended animation until it's // awakened by ProcessAwaken. // // NOTE: This must only be called from an interrupt or trap. It // should be immediately followed by ProcessSchedule(). // //---------------------------------------------------------------------- void ProcessSuspend (PCB *suspend) { // Make sure it's already a runnable process. dbprintf ('p', "Suspending PCB 0x%x (%s).\n", suspend, suspend->name); ASSERT (suspend->flags & PROCESS_STATUS_RUNNABLE, "Trying to suspend a non-running process!\n"); ProcessSetStatus (suspend, PROCESS_STATUS_WAITING); QueueRemove (&suspend->l); QueueInsertLast (&waitQueue, &suspend->l); } //---------------------------------------------------------------------- // // ProcessWakeup // // Wake up a process from its slumber. This only involves putting // it on the run queue; it's not guaranteed to be the next one to // run. // // NOTE: This must only be called from an interrupt or trap. It // need not be followed immediately by ProcessSchedule() because // the currently running process is unaffected. // //---------------------------------------------------------------------- void ProcessWakeup (PCB *wakeup) { dbprintf ('p',"Waking up PCB 0x%x.\n", wakeup); // Make sure it's not yet a runnable process. ASSERT (wakeup->flags & PROCESS_STATUS_WAITING, "Trying to wake up a non-sleeping process!\n"); ProcessSetStatus (wakeup, PROCESS_STATUS_RUNNABLE); QueueRemove (&wakeup->l); QueueInsertLast (&runQueue, &wakeup->l); } � //---------------------------------------------------------------------- // // ProcessDestroy // // Destroy a process by setting its status to zombie and putting it // on the zombie queue. The next time the scheduler is called, this // process will be marked as free. We can't necessarily do it now // because we might be the currently running process. // // NOTE: This must only be called from an interrupt or trap. However, // it need not be followed immediately by a ProcessSchedule() because // the process can continue running. // //---------------------------------------------------------------------- void ProcessDestroy (PCB *pcb) { dbprintf('p', "Entering ProcessDestroy for 0x%x.\n", pcb); ProcessSetStatus (pcb, PROCESS_STATUS_ZOMBIE); QueueRemove (&pcb->l); QueueInsertFirst (&zombieQueue, &pcb->l); dbprintf('p', "Leaving ProcessDestroy for 0x%x.\n", pcb); } //---------------------------------------------------------------------- // // ProcessExit // // This routine is called to exit from a system process. It simply // calls an exit trap, which will be caught to exit the process. // //---------------------------------------------------------------------- static void ProcessExit () { exit (); } uint32 get_argument(char *string) { static char *str; static int location=0; int location2; if(string) { str=string; location = 0; } location2 = location; if(str[location]=='\0'||location>=99) return 0; for(;location<100;location++) { if(str[location]=='\0') { location++; break; } } return location2; } //---------------------------------------------------------------------- // // ProcessFork // // Create a new process and make it runnable. This involves the // following steps: // * Allocate resources for the process (PCB, memory, etc.) // * Initialize the resources // * Place the PCB on the runnable queue // // NOTE: This code has been tested for system processes, but not // for user processes. // //---------------------------------------------------------------------- int ProcessFork (VoidFunc func, uint32 param, char *name, int isUser) { int i, j, fd, n; Link *l; int start, codeS, codeL, dataS, dataL; uint32 *stackframe; int newPage; PCB *pcb; int addr = 0; int intrs; unsigned char buf[100]; uint32 dum[MAX_ARGS+8], count, offset; char *str; intrs = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrs); dbprintf ('p', "Entering ProcessFork args=0x%x 0x%x %s %d\n", func, param, name, isUser); // Get a free PCB for the new process if (QueueEmpty (&freepcbs)) { printf ("FATAL error: no free processes!\n"); exitsim (); // NEVER RETURNS! } l = QueueFirst (&freepcbs); dbprintf ('p', "Got a link @ 0x%x\n", l); QueueRemove (l); pcb = (PCB *)(l->object); // This prevents someone else from grabbing this process ProcessSetStatus (pcb, PROCESS_STATUS_RUNNABLE); // At this point, the PCB is allocated and nobody else can get it. // However, it's not in the run queue, so it won't be run. Thus, we // can turn on interrupts here. dbprintf ('I', "Before restore interrupt value is 0x%x.\n", CurrentIntrs()); RestoreIntrs (intrs); dbprintf ('I', "New interrupt value is 0x%x.\n", CurrentIntrs()); // Copy the process name into the PCB. dstrcpy (pcb->name, name); //---------------------------------------------------------------------- // This section initializes the memory for this process //---------------------------------------------------------------------- // For now, we'll use one user page and a page for the system stack. // For system processes, though, all pages must be contiguous. // Of course, system processes probably need just a single page for // their stack, and don't need any code or data pages allocated for them. //------------------------------------------------------------ // Put your own code here //------------------------------------------------------------ pcb->npages = 1; newPage = MemoryAllocPage (); if (newPage == 0) { printf ("aFATAL: couldn't allocate memory - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->pagetable[0] = MemorySetupPte (newPage); newPage = MemoryAllocPage (); if (newPage == 0) { printf ("bFATAL: couldn't allocate system stack - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->sysStackArea = newPage * MEMORY_PAGE_SIZE; //---------------------------------------------------------------------- // Stacks grow down from the top. The current system stack pointer has // to be set to the bottom of the interrupt stack frame, which is at the // high end (address-wise) of the system stack. stackframe = ((uint32 *)(pcb->sysStackArea + MEMORY_PAGE_SIZE)) - (PROCESS_STACK_FRAME_SIZE + 8); // The system stack pointer is set to the base of the current interrupt // stack frame. pcb->sysStackPtr = stackframe; // The current stack frame pointer is set to the same thing. pcb->currentSavedFrame = stackframe; dbprintf ('p', "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n", pcb, pcb->sysStackArea, pcb->pagetable[0], pcb->npages * MEMORY_PAGE_SIZE); //---------------------------------------------------------------------- // This section sets up the stack frame for the process. This is done // so that the frame looks to the interrupt handler like the process // was "suspended" right before it began execution. The standard // mechanism of swapping in the registers and returning to the place // where it was "interrupted" will then work. //---------------------------------------------------------------------- // The previous stack frame pointer is set to 0, meaning there is no // previous frame. stackframe[PROCESS_STACK_PREV_FRAME] = 0; // Set the base of the level 1 page table. If there's only one page // table level, this is it. For 2-level page tables, put the address // of the level 1 page table here. For 2-level page tables, we'll also // have to build up the necessary tables.... stackframe[PROCESS_STACK_PTBASE] = (uint32)&(pcb->pagetable[0]); //---------------------------------------------- // You may change the code below //---------------------------------------------- // Set the size (maximum number of entries) of the level 1 page table. // In our case, it's just one page, but it could be larger. stackframe[PROCESS_STACK_PTSIZE] = pcb->npages; // Set the number of bits for both the level 1 and level 2 page tables. // This can be changed on a per-process basis if desired. For now, // though, it's fixed. stackframe[PROCESS_STACK_PTBITS] = (MEMORY_L1_PAGE_SIZE_BITS + (MEMORY_L2_PAGE_SIZE_BITS << 16)); if (isUser) { dbprintf ('p', "About to load %s\n", name); fd = ProcessGetCodeInfo (name, &start, &codeS, &codeL, &dataS, &dataL); if (fd < 0) { // Free newpage and pcb so we don't run out... ProcessFreeResources (pcb); return (-1); } dbprintf ('p', "File %s -> start=0x%08x\n", name, start); dbprintf ('p', "File %s -> code @ 0x%08x (size=0x%08x)\n", name, codeS, codeL); dbprintf ('p', "File %s -> data @ 0x%08x (size=0x%08x)\n", name, dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { dbprintf ('p', "Placing %d bytes at vaddr %08x.\n", n, addr - n); // Copy the data to user memory. Note that the user memory needs to // have enough space so that this copy will succeed! MemoryCopySystemToUser (pcb, buf, addr - n, n); } FsClose (fd); stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_USER; // Set the initial stack pointer correctly. Currently, it's just set // to the top of the (single) user address space allocated to this // process. str = (char *)param; stackframe[PROCESS_STACK_IREG+29] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF; // Copy the initial parameter to the top of stack MemoryCopySystemToUser (pcb, (char *)str, (char *)stackframe[PROCESS_STACK_IREG+29], SIZE_ARG_BUFF-32); offset = get_argument((char *)param); dum[2] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; for(count=3;;count++) { offset=get_argument(NULL); dum[count] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; if(offset==0) { break; } } dum[0] = count-2; dum[1] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF - (count-2)*4; MemoryCopySystemToUser (pcb, (char *)dum, (char *)(stackframe[PROCESS_STACK_IREG+29]-count*4), (count)*sizeof(uint32)); stackframe[PROCESS_STACK_IREG+29] -= 4*count; // Set the correct address at which to execute a user process. stackframe[PROCESS_STACK_IAR] = (uint32)start; pcb->flags |= PROCESS_TYPE_USER; } else { // Set r31 to ProcessExit(). This will only be called for a system // process; user processes do an exit() trap. stackframe[PROCESS_STACK_IREG+31] = (uint32)ProcessExit; // Set the stack register to the base of the system stack. stackframe[PROCESS_STACK_IREG+29]=pcb->sysStackArea + MEMORY_PAGE_SIZE-32; // Set the initial parameter properly by placing it on the stack frame // at the location pointed to by the "saved" stack pointer (r29). *((uint32 *)(stackframe[PROCESS_STACK_IREG+29])) = param; // Set up the initial address at which to execute. This is done by // placing the address into the IAR slot of the stack frame. stackframe[PROCESS_STACK_IAR] = (uint32)func; // Set the initial value for the interrupt status register stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_SYS; // Mark this as a system process. pcb->flags |= PROCESS_TYPE_SYSTEM; } // Place the PCB onto the run queue. intrs = DisableIntrs (); QueueInsertLast (&runQueue, l); RestoreIntrs (intrs); // If this is the first process, make it the current one if (currentPCB == NULL) { dbprintf ('p', "Setting currentPCB=0x%x, stackframe=0x%x\n", pcb, pcb->currentSavedFrame); currentPCB = pcb; } dbprintf ('p', "Leaving ProcessFork (%s)\n", name); // Return the process number (found by subtracting the PCB number // from the base of the PCB array). return (pcb - pcbs); } � //---------------------------------------------------------------------- // // getxvalue // // Convert a hex digit into an actual value. // //---------------------------------------------------------------------- static inline int getxvalue (int x) { if ((x >= '0') && (x <= '9')) { return (x - '0'); } else if ((x >= 'a') && (x <= 'f')) { return (x + 10 - 'a'); } else if ((x >= 'A') && (x <= 'F')) { return (x + 10 - 'A'); } else { return (0); } } � //---------------------------------------------------------------------- // // ProcessGetCodeSizes // // Get the code sizes (stack & data) for a file. A file descriptor // for the named file is returned. This descriptor MUST be closed // (presumably by the caller) at some point. // //---------------------------------------------------------------------- int ProcessGetCodeInfo (const char *file, uint32 *startAddr, uint32 *codeStart, uint32 *codeSize, uint32 *dataStart, uint32 *dataSize) { int fd; int totalsize; char buf[100]; char *pos; // Open the file for reading. If it returns a negative number, the open // didn't work. if ((fd = FsOpen (file, FS_MODE_READ)) < 0) { dbprintf ('f', "ProcessGetCodeInfo: open of %s failed (%d).\n", file, fd); return (-1); } dbprintf ('f', "File descriptor is now %d.\n", fd); if ((totalsize = FsRead (fd, buf, sizeof (buf))) != sizeof (buf)) { dbprintf ('f', "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n", totalsize, sizeof (buf), file); FsClose (fd); return (-1); } if (dstrstr (buf, "start:") == NULL) { dbprintf ('f', "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n", file); return (-1); } pos = (char *)dindex (buf, ':') + 1; // Get the start address and overall size *startAddr = dstrtol (pos, &pos, 16); totalsize = dstrtol (pos, &pos, 16); // Get code & data section start & sizes *codeStart = dstrtol (pos, &pos, 16); *codeSize = dstrtol (pos, &pos, 16); *dataStart = dstrtol (pos, &pos, 16); *dataSize = dstrtol (pos, &pos, 16); // Seek to start of first real line FsSeek (fd, 1 + dindex (buf, '\n') - buf, 0); return (fd); } � //---------------------------------------------------------------------- // // ProcessGetFromFile // // Inputs: // addr - points to an integer that contains the address of // the byte past that previously returned. If this is the // first call to this routine, *addr should be set to 0. // fd - File descriptor from which to read data. The file format // is the same as that used by the DLX simulator. // buf - points to a buffer that will receive data from the input // file. Note that the data is NOT 0-terminated, and may // include any number of 0 bytes. // max - maximum length of data to return. The routine collects data // until either the address changes or it has read max bytes. // // Returns the number of bytes actually stored into buf. In addition, // *addr is updated to point to the byte following the last byte in // the buffer. // // Load a file into memory. The file format consists of a // leading address, followed by a colon, followed by the data // to go at that address. If the address is omitted, the data // follows that from the previous line of the file. // //---------------------------------------------------------------------- int ProcessGetFromFile (int fd, unsigned char *buf, uint32 *addr, int max) { char localbuf[204]; int nbytes; int seekpos; unsigned char *pos = buf; char *lpos = localbuf; // Remember our position at the start of the routine so we can adjust // it later. seekpos = FsSeek (fd, 0, FS_SEEK_CUR); // The maximum number of characters we could read is limited to the // maximum buffer space available to the caller * 2 because each 2 // characters in the input file result in a single byte of program // info being read in. max = max * 2; // If the callers maximum is greater than the available buffer space, // limit the buffer space further. if (max > (sizeof(localbuf)-4)) { max = sizeof(localbuf)-4; } if ((nbytes = FsRead (fd, localbuf, max)) <= 0) { return (0); } // 'Z' is unused in load file, so use it to mark the end of the buffer // Back up until just after the last newline in the data we read. dbprintf ('f', "Got %d bytes at offset %d ...", nbytes, seekpos); while (localbuf[--nbytes] != '\n') { } localbuf[nbytes+1] = 'Z'; localbuf[nbytes+2] = '\0'; dbprintf ('f', " terminated at %d.\n", nbytes); dbprintf ('f', "Buffer is '%s'\n", localbuf); nbytes = 0; while (dindex (lpos, 'Z') != NULL) { if (dindex (lpos, ':') == NULL) { break; } if (*lpos != ':') { // If we're going to go to a new address, we break out of the // loop and return what we've got already. if (nbytes > 0) { break; } *addr = dstrtol (lpos, &lpos, 16); dbprintf ('f', "New address is 0x%x.\n", *addr); } if (*lpos != ':') { break; } lpos++; // skip past colon while (1) { while (((*lpos) == ' ') || (*lpos == '\t')) { lpos++; } if (*lpos == '\n') { lpos++; break; } else if (!(isxdigit (*lpos) && isxdigit (*(lpos+1)))) { // Exit loop if at least one digit isn't a hex digit. break; } pos[nbytes++] = (getxvalue(*lpos) * 16) + getxvalue(*(lpos+1)); lpos += 2; (*addr)++; } } // Seek to just past the last line we read. FsSeek (fd, seekpos + lpos - localbuf, FS_SEEK_SET); dbprintf ('f', "Seeking to %d and returning %d bytes!\n", seekpos + lpos - localbuf, nbytes); return (nbytes); } � //---------------------------------------------------------------------- // // main // // This routine is called when the OS starts up. It allocates a // PCB for the first process - the one corresponding to the initial // thread of execution. Note that the stack pointer is already // set correctly by _osinit (assembly language code) to point // to the stack for the 0th process. This stack isn't very big, // though, so it should be replaced by the system stack of the // currently running process. // //---------------------------------------------------------------------- main (int argc, char *argv[]) { int i, j; int n; char buf[120]; char *userprog = (char *)0; static PCB temppcb; uint32 addr; extern void SysprocCreateProcesses (); char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; int base; debugstr[0] = '\0'; printf("Hi Uday, How are you?\n"); MyFuncRetZero(); printf ("Got %d arguments.\n", argc); printf ("Available memory: 0x%x -> 0x%x.\n", lastosaddress, MemoryGetSize ()); printf ("Argument count is %d.\n", argc); for (i = 0; i < argc; i++) { printf ("Argument %d is %s.\n", i, argv[i]); } // *((int *)0xfff00100) = 't'; FsModuleInit (); for (i = 0; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'D': dstrcpy (debugstr, argv[++i]); break; case 'i': n = dstrtol (argv[++i], (void *)0, 0); ditoa (n, buf); printf ("Converted %s to %d=%s\n", argv[i], n, buf); break; case 'f': { int start, codeS, codeL, dataS, dataL, fd, j; int addr = 0; static unsigned char buf[200]; fd = ProcessGetCodeInfo (argv[++i], &start, &codeS, &codeL, &dataS, &dataL); printf ("File %s -> start=0x%08x\n", argv[i], start); printf ("File %s -> code @ 0x%08x (size=0x%08x)\n", argv[i], codeS, codeL); printf ("File %s -> data @ 0x%08x (size=0x%08x)\n", argv[i], dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { for (j = 0; j < n; j += 4) { printf ("%08x: %02x%02x%02x%02x\n", addr + j - n, buf[j], buf[j+1], buf[j+2], buf[j+3]); } } close (fd); break; } case 'u': userprog = argv[++i]; base = i; break; default: printf ("Option %s not recognized.\n", argv[i]); break; } if(userprog) break; } } dbprintf ('i', "About to initialize queues.\n"); QueueModuleInit (); dbprintf ('i', "After initializing queues.\n"); MemoryModuleInit (); dbprintf ('i', "After initializing memory.\n"); ProcessModuleInit (); dbprintf ('i', "After initializing processes.\n"); SynchModuleInit (); dbprintf ('i', "After initializing synchronization tools.\n"); KbdModuleInit (); dbprintf ('i', "After initializing keyboard.\n"); for (i = 0; i < 100; i++) { buf[i] = 'a'; } i = FsOpen ("vm", FS_MODE_WRITE); dbprintf ('i', "VM Descriptor is %d\n", i); FsSeek (i, 0, FS_SEEK_SET); FsWrite (i, buf, 80); FsClose (i); if (userprog != (char *)0) { for(i=base;i<argc&&i-base<11; i++) { param[i-base] = argv[i]; } process_create(param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7], param[8], param[9], param[10], param[11]); // ProcessFork (0, (uint32)"Help Me man!", userprog, 1); } SysprocCreateProcesses (); dbprintf ('i', "Created processes - about to set timer quantum.\n"); TimerSet (processQuantum); dbprintf ('i', "Set timer quantum to %d, about to run first process.\n", processQuantum); intrreturn (); // Should never be called because the scheduler exits when there // are no runnable processes left. exitsim(); // NEVER RETURNS! } float MyFuncRetZero() { return 0; } unsigned GetCurrentPid() { return (unsigned)(currentPCB - pcbs); } unsigned findpid(PCB *pcb) { return (unsigned)(pcb - pcbs); } void process_create(char *name, ...) { char **args; int i, j, k; char allargs[1000]; args = &name; k=0; for(i=0; args[i]!=NULL; i++) { j=0; do { allargs[k] = args[i][j]; j++; k++; } while(args[i][j-1]!='\0'); } allargs[k] = allargs[k+1] = 0; ProcessFork(0, (uint32)allargs, name, 1); } void ProcessKill (PCB *pcb) { // add your code below ProcessSchedule (); } void PageFaultHandler() { // add your code below uint32 *tempstackframe; uint32 fault_address; tempstackframe = currentPCB->currentSavedFrame ; fault_address = tempstackframe[PROCESS_STACK_FAULT]; }

option1/lab4_2/src/filesys.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1: .ascii "dlx:\000" .align 2 LC2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55 nop ; not filled. L56: addi r29,r29,#-16 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L55: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74 nop ; not filled. addi r3,r0,#0 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r2,r0,r6 L61: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59 nop ; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61 nop ; not filled. L59: sgti r1,r3,#31 beqz r1,L64 nop ; not filled. L74: addi r1,r0,#-1 j L73 nop ; not filled. L64: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75 nop ; not filled. L65: addi r8,r0,#0 L75: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67 nop ; not filled. L68: addi r29,r29,#-16 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L67: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs)>>16)&0xffff addui r8,r8,(_fs)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop ; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69 nop ; not filled. lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73 nop ; not filled. L69: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-24 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L71: add r1,r0,r3 L73: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84 nop ; not filled. addi r2,r0,#1 L84: snei r1,r2,#0 beqz r1,L82 nop ; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs)>>16)&0xffff addui r4,r4,(_fs)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86 nop ; not filled. L82: addi r1,r0,#-1 L86: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94 nop ; not filled. addi r2,r0,#1 L94: snei r1,r2,#0 beqz r1,L92 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L91 nop ; not filled. L92: addi r1,r0,#-1 L91: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r2,r0,#1 L103: snei r1,r2,#0 beqz r1,L101 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L100 nop ; not filled. L101: addi r1,r0,#-1 L100: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112 nop ; not filled. addi r2,r0,#1 L112: snei r1,r2,#0 beqz r1,L110 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L109 nop ; not filled. L110: addi r1,r0,#-1 L109: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118 nop ; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs+44)>>16)&0xffff addui r1,r1,(_fs+44)&0xffff j L120 nop ; not filled. L118: addi r29,r29,#-8 lhi r1,((_fs+20)>>16)&0xffff addui r1,r1,(_fs+20)&0xffff L120: sw (r29),r2 lw r1,(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126 nop ; not filled. L127: addi r29,r29,#-16 lhi r6,((LC4)>>16)&0xffff addui r6,r6,(LC4)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L126: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop ; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128 nop ; not filled. addi r1,r0,#1 L128: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff addi r2,r31,#8308 L182: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182 nop ; not filled. lhi r1,((_fs)>>16)&0xffff addui r1,r1,(_fs)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs: .space 48 .align 2 _openfiles: .space 8576

option1/lab4_2/src/osend.o

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

option1/lab4_2/src/Makefile

# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c \ OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog1 userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o $(CC) -mtraps -O3 dlxos.o trap_random.o $(OBJS) osend.o -o os.dlx osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog: userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -L userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog1: userprog1.o usertraps.o misc.o $(CC) -mtraps -O3 userprog1.o usertraps.o misc.o -o userprog1.dlx $(AS) -L userprog1.lst userprog1.dlx mv userprog1.dlx.obj ../execs userprog2: userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -L userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend

option1/lab4_2/src/trap_random.o

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

option1/lab4_2/src/userprog.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 112 4 ; Text size: 3060 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 54657374 .ascii "Testing case %d\n\000" 12 00002004 696e6720 12 00002008 63617365 12 0000200c 2025640a 12 00002010 00 13 00002011 .align 2 14 00002014 LC1_LF0: 15 00002014 0a557361 .ascii "\nUsage: \000" 15 00002018 67653a20 15 0000201c 00 16 0000201d .align 2 17 00002020 LC2_LF0: 18 00002020 205b6361 .ascii " [case id]\n\000" 18 00002024 73652069 18 00002028 645d0a00 19 0000202c .align 2 20 0000202c LC3_LF0: 21 0000202c 75736572 .ascii "userprog1.dlx.obj\000" 21 00002030 70726f67 21 00002034 312e646c 21 00002038 782e6f62 21 0000203c 6a00 22 0000203e .align 2 23 00002040 LC4_LF0: 24 00002040 75736572 .ascii "userprog2.dlx.obj\000" 24 00002044 70726f67 24 00002048 322e646c 24 0000204c 782e6f62 24 00002050 6a00 25 00002052 .align 2 26 00002054 LC5_LF0: 27 00002054 54657374 .ascii "Test case %d not supported\n\000" 27 00002058 20636173 27 0000205c 65202564 27 00002060 206e6f74 27 00002064 20737570 27 00002068 706f7274 27 0000206c 65640a00 28 00002070 .text 29 00001000 .align 2 30 00001000 .proc _main 31 00001000 .global _main 32 00001000 _main: 33 ; Function 'main'; 0 bytes of locals, 0 regs to save. 34 00001000 afbefffc sw -4(r29),r30; push fp 35 00001004 001df020 add r30,r0,r29; fp = sp 36 00001008 afbffff8 sw -8(r29),r31; push ret addr 37 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 38 00001010 8fc20000 lw r2,(r30) 39 00001014 8fc30004 lw r3,4(r30) 40 00001018 0c000bd0 jal ___main 41 0000101c 54000000 nop; not filled. 42 00001020 60410002 seqi r1,r2,#2 43 00001024 10200050 beqz r1,L14_LF0 44 00001028 54000000 nop; not filled. 45 0000102c 23bdfff0 addi r29,r29,#-16 46 00001030 8c630004 lw r3,4(r3) 47 00001034 afa30000 sw (r29),r3 48 00001038 20040000 addi r4,r0,#0 49 0000103c afa40004 sw 4(r29),r4 50 00001040 2004000a addi r4,r0,#10 51 00001044 afa40008 sw 8(r29),r4 52 00001048 0c0008b4 jal _dstrtol 53 0000104c 54000000 nop; not filled. 54 00001050 00011020 add r2,r0,r1 55 00001054 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 56 00001058 24842000 addui r4,r4,(LC0_LF0)&0xffff 57 0000105c afa40000 sw (r29),r4 58 00001060 afa20004 sw 4(r29),r2 59 00001064 0c000134 jal _Printf 60 00001068 54000000 nop; not filled. 61 0000106c 23bd0010 addi r29,r29,#16 62 00001070 08000048 j L12_LF0 63 00001074 54000000 nop; not filled. 64 00001078 L14_LF0: 65 00001078 23bdfff8 addi r29,r29,#-8 66 0000107c 3c040000 lhi r4,((LC1_LF0)>>16)&0xffff 67 00001080 24842014 addui r4,r4,(LC1_LF0)&0xffff 68 00001084 afa40000 sw (r29),r4 69 00001088 0c000110 jal _Printf 70 0000108c 54000000 nop; not filled. 71 00001090 8c630000 lw r3,(r3) 72 00001094 afa30000 sw (r29),r3 73 00001098 0c000100 jal _Printf 74 0000109c 54000000 nop; not filled. 75 000010a0 3c040000 lhi r4,((LC2_LF0)>>16)&0xffff 76 000010a4 24842020 addui r4,r4,(LC2_LF0)&0xffff 77 000010a8 afa40000 sw (r29),r4 78 000010ac 0c0000ec jal _Printf 79 000010b0 54000000 nop; not filled. 80 000010b4 0c000b28 jal _exit 81 000010b8 54000000 nop; not filled. 82 000010bc L12_LF0: 83 000010bc 60410001 seqi r1,r2,#1 84 000010c0 14200018 bnez r1,L17_LF0 85 000010c4 54000000 nop; not filled. 86 000010c8 60410002 seqi r1,r2,#2 87 000010cc 1020005c beqz r1,L19_LF0 88 000010d0 54000000 nop; not filled. 89 000010d4 0800002c j L18_LF0 90 000010d8 54000000 nop; not filled. 91 000010dc L17_LF0: 92 000010dc 23bdfff8 addi r29,r29,#-8 93 000010e0 3c040000 lhi r4,((LC3_LF0)>>16)&0xffff 94 000010e4 2484202c addui r4,r4,(LC3_LF0)&0xffff 95 000010e8 afa40000 sw (r29),r4 96 000010ec 20040000 addi r4,r0,#0 97 000010f0 afa40004 sw 4(r29),r4 98 000010f4 0c0000bc jal _process_create 99 000010f8 54000000 nop; not filled. 100 000010fc 08000048 j L21_LF0 101 00001100 54000000 nop; not filled. 102 00001104 L18_LF0: 103 00001104 23bdfff8 addi r29,r29,#-8 104 00001108 3c040000 lhi r4,((LC4_LF0)>>16)&0xffff 105 0000110c 24842040 addui r4,r4,(LC4_LF0)&0xffff 106 00001110 afa40000 sw (r29),r4 107 00001114 20040000 addi r4,r0,#0 108 00001118 afa40004 sw 4(r29),r4 109 0000111c 0c000094 jal _process_create 110 00001120 54000000 nop; not filled. 111 00001124 08000020 j L21_LF0 112 00001128 54000000 nop; not filled. 113 0000112c L19_LF0: 114 0000112c 23bdfff8 addi r29,r29,#-8 115 00001130 3c040000 lhi r4,((LC5_LF0)>>16)&0xffff 116 00001134 24842054 addui r4,r4,(LC5_LF0)&0xffff 117 00001138 afa40000 sw (r29),r4 118 0000113c afa20004 sw 4(r29),r2 119 00001140 0c000058 jal _Printf 120 00001144 54000000 nop; not filled. 121 00001148 L21_LF0: 122 00001148 23bd0008 addi r29,r29,#8 123 0000114c 0c000a90 jal _exit 124 00001150 54000000 nop 125 00001154 .endproc _main 126 ;;; 127 ;;; Stub functions for DLX traps. 128 ;;; 129 ;;; Ethan L. Miller, 1999. Released to the public domain. 130 ;;; 131 ;;; The traps such as Open and Close 132 ;;; (note the capital letters) are for use by user programs. The traps 133 ;;; with names such as open and close (lower case) are for use by the OS. 134 ;;; 137 00001154 .align 2 139 ;;; The following are the traps to be used by user-level programs 140 ;;; 142 00001154 .align 2 143 00001154 .proc _Open 144 00001154 .global _Open 145 00001154 _Open: 146 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 147 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 148 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 149 00001154 44000213 trap #0x213 150 00001158 4be00000 jr r31 151 0000115c 54000000 nop 152 00001160 .endproc _Open 154 00001160 .proc _Close 155 00001160 .global _Close 156 00001160 _Close: 157 00001160 44000214 trap #0x214 158 00001164 4be00000 jr r31 159 00001168 54000000 nop 160 0000116c .endproc _Close 162 0000116c .proc _Read 163 0000116c .global _Read 164 0000116c _Read: 165 0000116c 44000210 trap #0x210 166 00001170 4be00000 jr r31 167 00001174 54000000 nop 168 00001178 .endproc _Read 170 00001178 .proc _Write 171 00001178 .global _Write 172 00001178 _Write: 173 00001178 44000211 trap #0x211 174 0000117c 4be00000 jr r31 175 00001180 54000000 nop 176 00001184 .endproc _Write 178 00001184 .proc _Lseek 179 00001184 .global _Lseek 180 00001184 _Lseek: 181 00001184 44000212 trap #0x212 182 00001188 4be00000 jr r31 183 0000118c 54000000 nop 184 00001190 .endproc _Lseek 186 00001190 .proc _Putchar 187 00001190 .global _Putchar 188 00001190 _Putchar: 189 00001190 44000280 trap #0x280 190 00001194 4be00000 jr r31 191 00001198 54000000 nop 192 0000119c .endproc _Putchar 194 0000119c .proc _Printf 195 0000119c .global _Printf 196 0000119c _Printf: 197 0000119c 44000201 trap #0x201 198 000011a0 4be00000 jr r31 199 000011a4 54000000 nop 200 000011a8 .endproc _Printf 202 000011a8 .proc _getpid 203 000011a8 .global _getpid 204 000011a8 _getpid: 205 000011a8 44000431 trap #0x431 206 000011ac 4be00000 jr r31 207 000011b0 54000000 nop 208 000011b4 .endproc _getpid 210 000011b4 .proc _process_create 211 000011b4 .global _process_create 212 000011b4 _process_create: 213 000011b4 44000432 trap #0x432 214 000011b8 4be00000 jr r31 215 000011bc 54000000 nop 216 000011c0 .endproc _process_create 219 000011c0 .proc _sem_create 220 000011c0 .global _sem_create 221 000011c0 _sem_create: 222 000011c0 44000450 trap #0x450 223 000011c4 4be00000 jr r31 224 000011c8 54000000 nop 225 000011cc .endproc _sem_create 227 000011cc .proc _sem_wait 228 000011cc .global _sem_wait 229 000011cc _sem_wait: 230 000011cc 44000451 trap #0x451 231 000011d0 4be00000 jr r31 232 000011d4 54000000 nop 233 000011d8 .endproc _sem_wait 235 000011d8 .proc _sem_signal 236 000011d8 .global _sem_signal 237 000011d8 _sem_signal: 238 000011d8 44000452 trap #0x452 239 000011dc 4be00000 jr r31 240 000011e0 54000000 nop 241 000011e4 .endproc _sem_signal 244 ; Compiled by GCC 246 000011e4 .align 2 247 000011e4 .proc _isspace 248 000011e4 .global _isspace 249 000011e4 _isspace: 250 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 251 000011e4 afbefffc sw -4(r29),r30; push fp 252 000011e8 001df020 add r30,r0,r29; fp = sp 253 000011ec afbffff8 sw -8(r29),r31; push ret addr 254 000011f0 2fbd0010 subui r29,r29,#16; alloc local storage 255 000011f4 afa20000 sw 0(r29),r2 256 000011f8 83c20003 lb r2,3(r30) 257 000011fc 201f0000 addi r31,r0,#0 258 00001200 304100ff andi r1,r2,#0x00ff 259 00001204 60210020 seqi r1,r1,#32 260 00001208 14200018 bnez r1,L6_LF2 261 0000120c 54000000 nop; not filled. 262 00001210 2041fff7 addi r1,r2,#-9 263 00001214 302100ff andi r1,r1,#0x00ff 264 00001218 70210001 sleui r1,r1,#1 265 0000121c 10200008 beqz r1,L5_LF2 266 00001220 54000000 nop; not filled. 267 00001224 L6_LF2: 268 00001224 201f0001 addi r31,r0,#1 269 00001228 L5_LF2: 270 00001228 001f0820 add r1,r0,r31 271 0000122c 8fa20000 lw r2,0(r29) 272 00001230 8fdffff8 lw r31,-8(r30) 273 00001234 001ee820 add r29,r0,r30 274 00001238 8fdefffc lw r30,-4(r30) 275 0000123c 4be00000 jr r31 276 00001240 54000000 nop 277 00001244 .endproc _isspace 278 00001244 .align 2 279 00001244 .proc _isxdigit 280 00001244 .global _isxdigit 281 00001244 _isxdigit: 282 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 283 00001244 afbefffc sw -4(r29),r30; push fp 284 00001248 001df020 add r30,r0,r29; fp = sp 285 0000124c afbffff8 sw -8(r29),r31; push ret addr 286 00001250 2fbd0010 subui r29,r29,#16; alloc local storage 287 00001254 afa20000 sw 0(r29),r2 288 00001258 83df0003 lb r31,3(r30) 289 0000125c 20020000 addi r2,r0,#0 290 00001260 23e1ffd0 addi r1,r31,#-48 291 00001264 302100ff andi r1,r1,#0x00ff 292 00001268 70210009 sleui r1,r1,#9 293 0000126c 14200028 bnez r1,L12_LF2 294 00001270 54000000 nop; not filled. 295 00001274 23e1ff9f addi r1,r31,#-97 296 00001278 302100ff andi r1,r1,#0x00ff 297 0000127c 70210005 sleui r1,r1,#5 298 00001280 14200014 bnez r1,L12_LF2 299 00001284 54000000 nop; not filled. 300 00001288 33e100ff andi r1,r31,#0x00ff 301 0000128c 64210041 snei r1,r1,#65 302 00001290 14200008 bnez r1,L11_LF2 303 00001294 54000000 nop; not filled. 304 00001298 L12_LF2: 305 00001298 20020001 addi r2,r0,#1 306 0000129c L11_LF2: 307 0000129c 00020820 add r1,r0,r2 308 000012a0 8fa20000 lw r2,0(r29) 309 000012a4 8fdffff8 lw r31,-8(r30) 310 000012a8 001ee820 add r29,r0,r30 311 000012ac 8fdefffc lw r30,-4(r30) 312 000012b0 4be00000 jr r31 313 000012b4 54000000 nop 314 000012b8 .endproc _isxdigit 315 000012b8 .align 2 316 000012b8 .proc _dstrcpy 317 000012b8 .global _dstrcpy 318 000012b8 _dstrcpy: 319 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 320 000012b8 afbefffc sw -4(r29),r30; push fp 321 000012bc 001df020 add r30,r0,r29; fp = sp 322 000012c0 afbffff8 sw -8(r29),r31; push ret addr 323 000012c4 2fbd0010 subui r29,r29,#16; alloc local storage 324 000012c8 afa20000 sw 0(r29),r2 325 000012cc afa30004 sw 4(r29),r3 326 000012d0 8fdf0000 lw r31,(r30) 327 000012d4 8fc20004 lw r2,4(r30) 328 000012d8 001f1820 add r3,r0,r31 329 000012dc L19_LF2: 330 000012dc 80410000 lb r1,(r2) 331 000012e0 a3e10000 sb (r31),r1 332 000012e4 20420001 addi r2,r2,#1 333 000012e8 23ff0001 addi r31,r31,#1 334 000012ec 302100ff andi r1,r1,#0x00ff 335 000012f0 64210000 snei r1,r1,#0 336 000012f4 1420ffe4 bnez r1,L19_LF2 337 000012f8 54000000 nop; not filled. 338 000012fc 00030820 add r1,r0,r3 339 00001300 8fa20000 lw r2,0(r29) 340 00001304 8fa30004 lw r3,4(r29) 341 00001308 8fdffff8 lw r31,-8(r30) 342 0000130c 001ee820 add r29,r0,r30 343 00001310 8fdefffc lw r30,-4(r30) 344 00001314 4be00000 jr r31 345 00001318 54000000 nop 346 0000131c .endproc _dstrcpy 347 0000131c .align 2 348 0000131c .proc _dstrncpy 349 0000131c .global _dstrncpy 350 0000131c _dstrncpy: 351 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 352 0000131c afbefffc sw -4(r29),r30; push fp 353 00001320 001df020 add r30,r0,r29; fp = sp 354 00001324 afbffff8 sw -8(r29),r31; push ret addr 355 00001328 2fbd0018 subui r29,r29,#24; alloc local storage 356 0000132c afa20000 sw 0(r29),r2 357 00001330 afa30004 sw 4(r29),r3 358 00001334 afa40008 sw 8(r29),r4 359 00001338 8fc20000 lw r2,(r30) 360 0000133c 8fc30004 lw r3,4(r30) 361 00001340 8fdf0008 lw r31,8(r30) 362 00001344 00022020 add r4,r0,r2 363 00001348 08000024 j L37_LF2 364 0000134c 54000000 nop; not filled. 365 00001350 L34_LF2: 366 00001350 80610000 lb r1,(r3) 367 00001354 a0410000 sb (r2),r1 368 00001358 20630001 addi r3,r3,#1 369 0000135c 20420001 addi r2,r2,#1 370 00001360 302100ff andi r1,r1,#0x00ff 371 00001364 64210000 snei r1,r1,#0 372 00001368 10200018 beqz r1,L32_LF2 373 0000136c 54000000 nop; not filled. 374 00001370 L37_LF2: 375 00001370 001f0820 add r1,r0,r31 376 00001374 23ffffff addi r31,r31,#-1 377 00001378 70210000 slei r1,r1,#0 378 0000137c 1020ffd0 beqz r1,L34_LF2 379 00001380 54000000 nop; not filled. 380 00001384 L32_LF2: 381 00001384 00040820 add r1,r0,r4 382 00001388 8fa20000 lw r2,0(r29) 383 0000138c 8fa30004 lw r3,4(r29) 384 00001390 8fa40008 lw r4,8(r29) 385 00001394 8fdffff8 lw r31,-8(r30) 386 00001398 001ee820 add r29,r0,r30 387 0000139c 8fdefffc lw r30,-4(r30) 388 000013a0 4be00000 jr r31 389 000013a4 54000000 nop 390 000013a8 .endproc _dstrncpy 391 000013a8 .align 2 392 000013a8 .proc _dstrcat 393 000013a8 .global _dstrcat 394 000013a8 _dstrcat: 395 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 396 000013a8 afbefffc sw -4(r29),r30; push fp 397 000013ac 001df020 add r30,r0,r29; fp = sp 398 000013b0 afbffff8 sw -8(r29),r31; push ret addr 399 000013b4 2fbd0010 subui r29,r29,#16; alloc local storage 400 000013b8 afa20000 sw 0(r29),r2 401 000013bc afa30004 sw 4(r29),r3 402 000013c0 8fdf0000 lw r31,(r30) 403 000013c4 001f1820 add r3,r0,r31 404 000013c8 90610000 lbu r1,(r3) 405 000013cc 64210000 snei r1,r1,#0 406 000013d0 10200018 beqz r1,L50_LF2 407 000013d4 54000000 nop; not filled. 408 000013d8 L51_LF2: 409 000013d8 23ff0001 addi r31,r31,#1 410 000013dc 93e10000 lbu r1,(r31) 411 000013e0 64210000 snei r1,r1,#0 412 000013e4 1420fff0 bnez r1,L51_LF2 413 000013e8 54000000 nop; not filled. 414 000013ec L50_LF2: 415 000013ec 001f1020 add r2,r0,r31 416 000013f0 8fdf0004 lw r31,4(r30) 417 000013f4 L54_LF2: 418 000013f4 83e10000 lb r1,(r31) 419 000013f8 a0410000 sb (r2),r1 420 000013fc 23ff0001 addi r31,r31,#1 421 00001400 20420001 addi r2,r2,#1 422 00001404 302100ff andi r1,r1,#0x00ff 423 00001408 64210000 snei r1,r1,#0 424 0000140c 1420ffe4 bnez r1,L54_LF2 425 00001410 54000000 nop; not filled. 426 00001414 00030820 add r1,r0,r3 427 00001418 8fa20000 lw r2,0(r29) 428 0000141c 8fa30004 lw r3,4(r29) 429 00001420 8fdffff8 lw r31,-8(r30) 430 00001424 001ee820 add r29,r0,r30 431 00001428 8fdefffc lw r30,-4(r30) 432 0000142c 4be00000 jr r31 433 00001430 54000000 nop 434 00001434 .endproc _dstrcat 435 00001434 .align 2 436 00001434 .proc _dstrncmp 437 00001434 .global _dstrncmp 438 00001434 _dstrncmp: 439 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 440 00001434 afbefffc sw -4(r29),r30; push fp 441 00001438 001df020 add r30,r0,r29; fp = sp 442 0000143c afbffff8 sw -8(r29),r31; push ret addr 443 00001440 2fbd0018 subui r29,r29,#24; alloc local storage 444 00001444 afa20000 sw 0(r29),r2 445 00001448 afa30004 sw 4(r29),r3 446 0000144c afa40008 sw 8(r29),r4 447 00001450 afa5000c sw 12(r29),r5 448 00001454 8fc30000 lw r3,(r30) 449 00001458 8fc40004 lw r4,4(r30) 450 0000145c 8fc50008 lw r5,8(r30) 451 00001460 20020000 addi r2,r0,#0 452 00001464 0045082a slt r1,r2,r5 453 00001468 1020003c beqz r1,L73_LF2 454 0000146c 54000000 nop; not filled. 455 00001470 L75_LF2: 456 00001470 909f0000 lbu r31,(r4) 457 00001474 67e10000 snei r1,r31,#0 458 00001478 10200038 beqz r1,L86_LF2 459 0000147c 54000000 nop; not filled. 460 00001480 90610000 lbu r1,(r3) 461 00001484 003f0829 sne r1,r1,r31 462 00001488 1420001c bnez r1,L73_LF2 463 0000148c 54000000 nop; not filled. 464 00001490 20630001 addi r3,r3,#1 465 00001494 20840001 addi r4,r4,#1 466 00001498 20420001 addi r2,r2,#1 467 0000149c 0045082a slt r1,r2,r5 468 000014a0 1420ffcc bnez r1,L75_LF2 469 000014a4 54000000 nop; not filled. 470 000014a8 L73_LF2: 471 000014a8 00450828 seq r1,r2,r5 472 000014ac 10200010 beqz r1,L80_LF2 473 000014b0 54000000 nop; not filled. 474 000014b4 L86_LF2: 475 000014b4 20010000 addi r1,r0,#0 476 000014b8 08000028 j L84_LF2 477 000014bc 54000000 nop; not filled. 478 000014c0 L80_LF2: 479 000014c0 907f0000 lbu r31,(r3) 480 000014c4 90830000 lbu r3,(r4) 481 000014c8 03e30822 sub r1,r31,r3 482 000014cc 74210000 sgei r1,r1,#0 483 000014d0 2002ffff addi r2,r0,#-1 484 000014d4 10200008 beqz r1,L82_LF2 485 000014d8 54000000 nop; not filled. 486 000014dc 03e31029 sne r2,r31,r3 487 000014e0 L82_LF2: 488 000014e0 00020820 add r1,r0,r2 489 000014e4 L84_LF2: 490 000014e4 8fa20000 lw r2,0(r29) 491 000014e8 8fa30004 lw r3,4(r29) 492 000014ec 8fa40008 lw r4,8(r29) 493 000014f0 8fa5000c lw r5,12(r29) 494 000014f4 8fdffff8 lw r31,-8(r30) 495 000014f8 001ee820 add r29,r0,r30 496 000014fc 8fdefffc lw r30,-4(r30) 497 00001500 4be00000 jr r31 498 00001504 54000000 nop 499 00001508 .endproc _dstrncmp 500 00001508 .align 2 501 00001508 .proc _dstrlen 502 00001508 .global _dstrlen 503 00001508 _dstrlen: 504 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 505 00001508 afbefffc sw -4(r29),r30; push fp 506 0000150c 001df020 add r30,r0,r29; fp = sp 507 00001510 afbffff8 sw -8(r29),r31; push ret addr 508 00001514 2fbd0010 subui r29,r29,#16; alloc local storage 509 00001518 afa20000 sw 0(r29),r2 510 0000151c 8fdf0000 lw r31,(r30) 511 00001520 20020000 addi r2,r0,#0 512 00001524 08000008 j L97_LF2 513 00001528 54000000 nop; not filled. 514 0000152c L95_LF2: 515 0000152c 20420001 addi r2,r2,#1 516 00001530 L97_LF2: 517 00001530 93e10000 lbu r1,(r31) 518 00001534 23ff0001 addi r31,r31,#1 519 00001538 64210000 snei r1,r1,#0 520 0000153c 1420ffec bnez r1,L95_LF2 521 00001540 54000000 nop; not filled. 522 00001544 00020820 add r1,r0,r2 523 00001548 8fa20000 lw r2,0(r29) 524 0000154c 8fdffff8 lw r31,-8(r30) 525 00001550 001ee820 add r29,r0,r30 526 00001554 8fdefffc lw r30,-4(r30) 527 00001558 4be00000 jr r31 528 0000155c 54000000 nop 529 00001560 .endproc _dstrlen 530 00001560 .align 2 531 00001560 .proc _dstrstr 532 00001560 .global _dstrstr 533 00001560 _dstrstr: 534 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 535 00001560 afbefffc sw -4(r29),r30; push fp 536 00001564 001df020 add r30,r0,r29; fp = sp 537 00001568 afbffff8 sw -8(r29),r31; push ret addr 538 0000156c 2fbd0020 subui r29,r29,#32; alloc local storage 539 00001570 afa20000 sw 0(r29),r2 540 00001574 afa30004 sw 4(r29),r3 541 00001578 afa40008 sw 8(r29),r4 542 0000157c afa5000c sw 12(r29),r5 543 00001580 afa60010 sw 16(r29),r6 544 00001584 afa70014 sw 20(r29),r7 545 00001588 8fc50000 lw r5,(r30) 546 0000158c 8fc70004 lw r7,4(r30) 547 00001590 20030000 addi r3,r0,#0 548 00001594 90e10000 lbu r1,(r7) 549 00001598 20e20001 addi r2,r7,#1 550 0000159c 64210000 snei r1,r1,#0 551 000015a0 1020001c beqz r1,L125_LF2 552 000015a4 54000000 nop; not filled. 553 000015a8 L126_LF2: 554 000015a8 20630001 addi r3,r3,#1 555 000015ac 90410000 lbu r1,(r2) 556 000015b0 20420001 addi r2,r2,#1 557 000015b4 64210000 snei r1,r1,#0 558 000015b8 1420ffec bnez r1,L126_LF2 559 000015bc 54000000 nop; not filled. 560 000015c0 L125_LF2: 561 000015c0 00033020 add r6,r0,r3 562 000015c4 080000ac j L149_LF2 563 000015c8 54000000 nop; not filled. 564 000015cc L130_LF2: 565 000015cc 00051820 add r3,r0,r5 566 000015d0 00072020 add r4,r0,r7 567 000015d4 20020000 addi r2,r0,#0 568 000015d8 0046082a slt r1,r2,r6 569 000015dc 1020003c beqz r1,L134_LF2 570 000015e0 54000000 nop; not filled. 571 000015e4 L136_LF2: 572 000015e4 909f0000 lbu r31,(r4) 573 000015e8 67e10000 snei r1,r31,#0 574 000015ec 10200038 beqz r1,L150_LF2 575 000015f0 54000000 nop; not filled. 576 000015f4 90610000 lbu r1,(r3) 577 000015f8 003f0829 sne r1,r1,r31 578 000015fc 1420001c bnez r1,L134_LF2 579 00001600 54000000 nop; not filled. 580 00001604 20630001 addi r3,r3,#1 581 00001608 20840001 addi r4,r4,#1 582 0000160c 20420001 addi r2,r2,#1 583 00001610 0046082a slt r1,r2,r6 584 00001614 1420ffcc bnez r1,L136_LF2 585 00001618 54000000 nop; not filled. 586 0000161c L134_LF2: 587 0000161c 00460828 seq r1,r2,r6 588 00001620 10200010 beqz r1,L141_LF2 589 00001624 54000000 nop; not filled. 590 00001628 L150_LF2: 591 00001628 20010000 addi r1,r0,#0 592 0000162c 08000028 j L132_LF2 593 00001630 54000000 nop; not filled. 594 00001634 L141_LF2: 595 00001634 90630000 lbu r3,(r3) 596 00001638 90820000 lbu r2,(r4) 597 0000163c 00620822 sub r1,r3,r2 598 00001640 74210000 sgei r1,r1,#0 599 00001644 201fffff addi r31,r0,#-1 600 00001648 10200008 beqz r1,L143_LF2 601 0000164c 54000000 nop; not filled. 602 00001650 0062f829 sne r31,r3,r2 603 00001654 L143_LF2: 604 00001654 001f0820 add r1,r0,r31 605 00001658 L132_LF2: 606 00001658 64210000 snei r1,r1,#0 607 0000165c 14200010 bnez r1,L131_LF2 608 00001660 54000000 nop; not filled. 609 00001664 00050820 add r1,r0,r5 610 00001668 0800001c j L146_LF2 611 0000166c 54000000 nop; not filled. 612 00001670 L131_LF2: 613 00001670 20a50001 addi r5,r5,#1 614 00001674 L149_LF2: 615 00001674 90a10000 lbu r1,(r5) 616 00001678 64210000 snei r1,r1,#0 617 0000167c 1420ff4c bnez r1,L130_LF2 618 00001680 54000000 nop; not filled. 619 00001684 20010000 addi r1,r0,#0 620 00001688 L146_LF2: 621 00001688 8fa20000 lw r2,0(r29) 622 0000168c 8fa30004 lw r3,4(r29) 623 00001690 8fa40008 lw r4,8(r29) 624 00001694 8fa5000c lw r5,12(r29) 625 00001698 8fa60010 lw r6,16(r29) 626 0000169c 8fa70014 lw r7,20(r29) 627 000016a0 8fdffff8 lw r31,-8(r30) 628 000016a4 001ee820 add r29,r0,r30 629 000016a8 8fdefffc lw r30,-4(r30) 630 000016ac 4be00000 jr r31 631 000016b0 54000000 nop 632 000016b4 .endproc _dstrstr 633 000016b4 .align 2 634 000016b4 .proc _dmindex 635 000016b4 .global _dmindex 636 000016b4 _dmindex: 637 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 638 000016b4 afbefffc sw -4(r29),r30; push fp 639 000016b8 001df020 add r30,r0,r29; fp = sp 640 000016bc afbffff8 sw -8(r29),r31; push ret addr 641 000016c0 2fbd0020 subui r29,r29,#32; alloc local storage 642 000016c4 afa20000 sw 0(r29),r2 643 000016c8 afa30004 sw 4(r29),r3 644 000016cc afa40008 sw 8(r29),r4 645 000016d0 afa5000c sw 12(r29),r5 646 000016d4 afa60010 sw 16(r29),r6 647 000016d8 8fc40000 lw r4,(r30) 648 000016dc 8fc60004 lw r6,4(r30) 649 000016e0 90810000 lbu r1,(r4) 650 000016e4 64210000 snei r1,r1,#0 651 000016e8 10200060 beqz r1,L164_LF2 652 000016ec 54000000 nop; not filled. 653 000016f0 00012820 add r5,r0,r1 654 000016f4 L165_LF2: 655 000016f4 00061020 add r2,r0,r6 656 000016f8 80df0000 lb r31,(r6) 657 000016fc 33e100ff andi r1,r31,#0x00ff 658 00001700 64210000 snei r1,r1,#0 659 00001704 1020003c beqz r1,L163_LF2 660 00001708 54000000 nop; not filled. 661 0000170c 90830000 lbu r3,(r4) 662 00001710 L169_LF2: 663 00001710 33e100ff andi r1,r31,#0x00ff 664 00001714 00610828 seq r1,r3,r1 665 00001718 10200010 beqz r1,L168_LF2 666 0000171c 54000000 nop; not filled. 667 00001720 00040820 add r1,r0,r4 668 00001724 08000028 j L173_LF2 669 00001728 54000000 nop; not filled. 670 0000172c L168_LF2: 671 0000172c 20420001 addi r2,r2,#1 672 00001730 805f0000 lb r31,(r2) 673 00001734 33e100ff andi r1,r31,#0x00ff 674 00001738 64210000 snei r1,r1,#0 675 0000173c 1420ffd0 bnez r1,L169_LF2 676 00001740 54000000 nop; not filled. 677 00001744 L163_LF2: 678 00001744 14a0ffac bnez r5,L165_LF2 679 00001748 54000000 nop; not filled. 680 0000174c L164_LF2: 681 0000174c 20010000 addi r1,r0,#0 682 00001750 L173_LF2: 683 00001750 8fa20000 lw r2,0(r29) 684 00001754 8fa30004 lw r3,4(r29) 685 00001758 8fa40008 lw r4,8(r29) 686 0000175c 8fa5000c lw r5,12(r29) 687 00001760 8fa60010 lw r6,16(r29) 688 00001764 8fdffff8 lw r31,-8(r30) 689 00001768 001ee820 add r29,r0,r30 690 0000176c 8fdefffc lw r30,-4(r30) 691 00001770 4be00000 jr r31 692 00001774 54000000 nop 693 00001778 .endproc _dmindex 694 00001778 .align 2 695 00001778 .proc _dindex 696 00001778 .global _dindex 697 00001778 _dindex: 698 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 699 00001778 afbefffc sw -4(r29),r30; push fp 700 0000177c 001df020 add r30,r0,r29; fp = sp 701 00001780 afbffff8 sw -8(r29),r31; push ret addr 702 00001784 2fbd0010 subui r29,r29,#16; alloc local storage 703 00001788 afa20000 sw 0(r29),r2 704 0000178c afa30004 sw 4(r29),r3 705 00001790 8fc20000 lw r2,(r30) 706 00001794 8fc30004 lw r3,4(r30) 707 00001798 08000024 j L187_LF2 708 0000179c 54000000 nop; not filled. 709 000017a0 L183_LF2: 710 000017a0 33e100ff andi r1,r31,#0x00ff 711 000017a4 00230828 seq r1,r1,r3 712 000017a8 10200010 beqz r1,L184_LF2 713 000017ac 54000000 nop; not filled. 714 000017b0 00020820 add r1,r0,r2 715 000017b4 08000020 j L186_LF2 716 000017b8 54000000 nop; not filled. 717 000017bc L184_LF2: 718 000017bc 20420001 addi r2,r2,#1 719 000017c0 L187_LF2: 720 000017c0 805f0000 lb r31,(r2) 721 000017c4 33e100ff andi r1,r31,#0x00ff 722 000017c8 64210000 snei r1,r1,#0 723 000017cc 1420ffd0 bnez r1,L183_LF2 724 000017d0 54000000 nop; not filled. 725 000017d4 20010000 addi r1,r0,#0 726 000017d8 L186_LF2: 727 000017d8 8fa20000 lw r2,0(r29) 728 000017dc 8fa30004 lw r3,4(r29) 729 000017e0 8fdffff8 lw r31,-8(r30) 730 000017e4 001ee820 add r29,r0,r30 731 000017e8 8fdefffc lw r30,-4(r30) 732 000017ec 4be00000 jr r31 733 000017f0 54000000 nop 734 000017f4 .endproc _dindex 735 000017f4 .align 2 736 000017f4 .proc _ditoa 737 000017f4 .global _ditoa 738 000017f4 _ditoa: 739 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 740 000017f4 afbefffc sw -4(r29),r30; push fp 741 000017f8 001df020 add r30,r0,r29; fp = sp 742 000017fc afbffff8 sw -8(r29),r31; push ret addr 743 00001800 2fbd0020 subui r29,r29,#32; alloc local storage 744 00001804 afa20000 sw 0(r29),r2 745 00001808 afa30004 sw 4(r29),r3 746 0000180c afa40008 sw 8(r29),r4 747 00001810 afa5000c sw 12(r29),r5 748 00001814 afa60010 sw 16(r29),r6 749 00001818 8fc30000 lw r3,(r30) 750 0000181c 8fc40004 lw r4,4(r30) 751 00001820 68610000 slti r1,r3,#0 752 00001824 10200010 beqz r1,L203_LF2 753 00001828 54000000 nop; not filled. 754 0000182c 2006002d addi r6,r0,(#0x2d)&0xff 755 00001830 08000014 j L216_LF2 756 00001834 54000000 nop; not filled. 757 00001838 L203_LF2: 758 00001838 64610000 snei r1,r3,#0 759 0000183c 14200018 bnez r1,L205_LF2 760 00001840 54000000 nop; not filled. 761 00001844 20060030 addi r6,r0,(#0x30)&0xff 762 00001848 L216_LF2: 763 00001848 a0860000 sb (r4),r6 764 0000184c 20840001 addi r4,r4,#1 765 00001850 0800007c j L204_LF2 766 00001854 54000000 nop; not filled. 767 00001858 L205_LF2: 768 00001858 201f0001 addi r31,r0,#1 769 0000185c 03e3082c sle r1,r31,r3 770 00001860 1020001c beqz r1,L208_LF2 771 00001864 54000000 nop; not filled. 772 00001868 L209_LF2: 773 00001868 53e10002 slli r1,r31,#0x2 774 0000186c 003f0820 add r1,r1,r31 775 00001870 503f0001 slli r31,r1,#0x1 776 00001874 03e3082c sle r1,r31,r3 777 00001878 1420ffec bnez r1,L209_LF2 778 0000187c 54000000 nop; not filled. 779 00001880 L208_LF2: 780 00001880 2005000a addi r5,r0,#10 781 00001884 L212_LF2: 782 00001884 03e00035 movi2fp f0,r31 783 00001888 00a00835 movi2fp f1,r5 784 0000188c 0401000f div f0,f0,f1 785 00001890 0000f834 movfp2i r31,f0 786 00001894 00600035 movi2fp f0,r3 787 00001898 03e00835 movi2fp f1,r31 788 0000189c 0401000f div f0,f0,f1 789 000018a0 00001034 movfp2i r2,f0 790 000018a4 20410030 addi r1,r2,#48 791 000018a8 a0810000 sb (r4),r1 792 000018ac 20840001 addi r4,r4,#1 793 000018b0 00400035 movi2fp f0,r2 794 000018b4 03e00835 movi2fp f1,r31 795 000018b8 0401000e mult f0,f0,f1 796 000018bc 00000834 movfp2i r1,f0 797 000018c0 00611822 sub r3,r3,r1 798 000018c4 6fe10001 sgti r1,r31,#1 799 000018c8 1420ffb8 bnez r1,L212_LF2 800 000018cc 54000000 nop; not filled. 801 000018d0 L204_LF2: 802 000018d0 20060000 addi r6,r0,(#0x0)&0xff 803 000018d4 a0860000 sb (r4),r6 804 000018d8 8fa20000 lw r2,0(r29) 805 000018dc 8fa30004 lw r3,4(r29) 806 000018e0 8fa40008 lw r4,8(r29) 807 000018e4 8fa5000c lw r5,12(r29) 808 000018e8 8fa60010 lw r6,16(r29) 809 000018ec 8fdffff8 lw r31,-8(r30) 810 000018f0 001ee820 add r29,r0,r30 811 000018f4 8fdefffc lw r30,-4(r30) 812 000018f8 4be00000 jr r31 813 000018fc 54000000 nop 814 00001900 .endproc _ditoa 815 00001900 .align 2 816 00001900 .proc _dstrtol 817 00001900 .global _dstrtol 818 00001900 _dstrtol: 819 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 820 00001900 afbefffc sw -4(r29),r30; push fp 821 00001904 001df020 add r30,r0,r29; fp = sp 822 00001908 afbffff8 sw -8(r29),r31; push ret addr 823 0000190c 2fbd0020 subui r29,r29,#32; alloc local storage 824 00001910 afa20000 sw 0(r29),r2 825 00001914 afa30004 sw 4(r29),r3 826 00001918 afa40008 sw 8(r29),r4 827 0000191c afa5000c sw 12(r29),r5 828 00001920 afa60010 sw 16(r29),r6 829 00001924 8fc20000 lw r2,(r30) 830 00001928 8fc50004 lw r5,4(r30) 831 0000192c 8fc40008 lw r4,8(r30) 832 00001930 20030000 addi r3,r0,#0 833 00001934 08000008 j L247_LF2 834 00001938 54000000 nop; not filled. 835 0000193c L220_LF2: 836 0000193c 20420001 addi r2,r2,#1 837 00001940 L247_LF2: 838 00001940 805f0000 lb r31,(r2) 839 00001944 33e100ff andi r1,r31,#0x00ff 840 00001948 60210020 seqi r1,r1,#32 841 0000194c 1420ffec bnez r1,L220_LF2 842 00001950 54000000 nop; not filled. 843 00001954 23e1fff7 addi r1,r31,#-9 844 00001958 302100ff andi r1,r1,#0x00ff 845 0000195c 70210001 sleui r1,r1,#1 846 00001960 1420ffd8 bnez r1,L220_LF2 847 00001964 54000000 nop; not filled. 848 00001968 64a10000 snei r1,r5,#0 849 0000196c 10200008 beqz r1,L222_LF2 850 00001970 54000000 nop; not filled. 851 00001974 aca20000 sw (r5),r2 852 00001978 L222_LF2: 853 00001978 905f0000 lbu r31,(r2) 854 0000197c 67e10000 snei r1,r31,#0 855 00001980 10200090 beqz r1,L248_LF2 856 00001984 54000000 nop; not filled. 857 00001988 63e1002d seqi r1,r31,#45 858 0000198c 10200014 beqz r1,L224_LF2 859 00001990 54000000 nop; not filled. 860 00001994 2006ffff addi r6,r0,#-1 861 00001998 20420001 addi r2,r2,#1 862 0000199c 08000008 j L225_LF2 863 000019a0 54000000 nop; not filled. 864 000019a4 L224_LF2: 865 000019a4 20060001 addi r6,r0,#1 866 000019a8 L225_LF2: 867 000019a8 64810000 snei r1,r4,#0 868 000019ac 14200054 bnez r1,L226_LF2 869 000019b0 54000000 nop; not filled. 870 000019b4 90410000 lbu r1,(r2) 871 000019b8 60210030 seqi r1,r1,#48 872 000019bc 10200040 beqz r1,L227_LF2 873 000019c0 54000000 nop; not filled. 874 000019c4 20420001 addi r2,r2,#1 875 000019c8 905f0000 lbu r31,(r2) 876 000019cc 63e10078 seqi r1,r31,#120 877 000019d0 14200010 bnez r1,L229_LF2 878 000019d4 54000000 nop; not filled. 879 000019d8 63e10058 seqi r1,r31,#88 880 000019dc 10200014 beqz r1,L228_LF2 881 000019e0 54000000 nop; not filled. 882 000019e4 L229_LF2: 883 000019e4 20040010 addi r4,r0,#16 884 000019e8 20420001 addi r2,r2,#1 885 000019ec 08000014 j L226_LF2 886 000019f0 54000000 nop; not filled. 887 000019f4 L228_LF2: 888 000019f4 20040008 addi r4,r0,#8 889 000019f8 08000008 j L226_LF2 890 000019fc 54000000 nop; not filled. 891 00001a00 L227_LF2: 892 00001a00 2004000a addi r4,r0,#10 893 00001a04 L226_LF2: 894 00001a04 2081ffff addi r1,r4,#-1 895 00001a08 6c21000f sgtui r1,r1,#15 896 00001a0c 10200010 beqz r1,L233_LF2 897 00001a10 54000000 nop; not filled. 898 00001a14 L248_LF2: 899 00001a14 00030820 add r1,r0,r3 900 00001a18 080000c4 j L245_LF2 901 00001a1c 54000000 nop; not filled. 902 00001a20 L233_LF2: 903 00001a20 805f0000 lb r31,(r2) 904 00001a24 23e1ffd0 addi r1,r31,#-48 905 00001a28 302100ff andi r1,r1,#0x00ff 906 00001a2c 70210009 sleui r1,r1,#9 907 00001a30 10200014 beqz r1,L236_LF2 908 00001a34 54000000 nop; not filled. 909 00001a38 33e100ff andi r1,r31,#0x00ff 910 00001a3c 2021ffd0 addi r1,r1,#-48 911 00001a40 08000050 j L237_LF2 912 00001a44 54000000 nop; not filled. 913 00001a48 L236_LF2: 914 00001a48 23e1ff9f addi r1,r31,#-97 915 00001a4c 302100ff andi r1,r1,#0x00ff 916 00001a50 70210019 sleui r1,r1,#25 917 00001a54 10200014 beqz r1,L238_LF2 918 00001a58 54000000 nop; not filled. 919 00001a5c 33e100ff andi r1,r31,#0x00ff 920 00001a60 2021ffa9 addi r1,r1,#-87 921 00001a64 0800002c j L237_LF2 922 00001a68 54000000 nop; not filled. 923 00001a6c L238_LF2: 924 00001a6c 23e1ffbf addi r1,r31,#-65 925 00001a70 302100ff andi r1,r1,#0x00ff 926 00001a74 70210019 sleui r1,r1,#25 927 00001a78 10200014 beqz r1,L240_LF2 928 00001a7c 54000000 nop; not filled. 929 00001a80 33e100ff andi r1,r31,#0x00ff 930 00001a84 2021ffc9 addi r1,r1,#-55 931 00001a88 08000008 j L237_LF2 932 00001a8c 54000000 nop; not filled. 933 00001a90 L240_LF2: 934 00001a90 200103e8 addi r1,r0,#1000 935 00001a94 L237_LF2: 936 00001a94 0024f82a slt r31,r1,r4 937 00001a98 13e00024 beqz r31,L246_LF2 938 00001a9c 54000000 nop; not filled. 939 00001aa0 00600035 movi2fp f0,r3 940 00001aa4 00800835 movi2fp f1,r4 941 00001aa8 0401000e mult f0,f0,f1 942 00001aac 00001834 movfp2i r3,f0 943 00001ab0 00611820 add r3,r3,r1 944 00001ab4 20420001 addi r2,r2,#1 945 00001ab8 17e0ff64 bnez r31,L233_LF2 946 00001abc 54000000 nop; not filled. 947 00001ac0 L246_LF2: 948 00001ac0 64a10000 snei r1,r5,#0 949 00001ac4 10200008 beqz r1,L244_LF2 950 00001ac8 54000000 nop; not filled. 951 00001acc aca20000 sw (r5),r2 952 00001ad0 L244_LF2: 953 00001ad0 00600035 movi2fp f0,r3 954 00001ad4 00c00835 movi2fp f1,r6 955 00001ad8 0401000e mult f0,f0,f1 956 00001adc 00000834 movfp2i r1,f0 957 00001ae0 L245_LF2: 958 00001ae0 8fa20000 lw r2,0(r29) 959 00001ae4 8fa30004 lw r3,4(r29) 960 00001ae8 8fa40008 lw r4,8(r29) 961 00001aec 8fa5000c lw r5,12(r29) 962 00001af0 8fa60010 lw r6,16(r29) 963 00001af4 8fdffff8 lw r31,-8(r30) 964 00001af8 001ee820 add r29,r0,r30 965 00001afc 8fdefffc lw r30,-4(r30) 966 00001b00 4be00000 jr r31 967 00001b04 54000000 nop 968 00001b08 .endproc _dstrtol 969 00001b08 .align 2 970 00001b08 .proc _bcopy 971 00001b08 .global _bcopy 972 00001b08 _bcopy: 973 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 974 00001b08 afbefffc sw -4(r29),r30; push fp 975 00001b0c 001df020 add r30,r0,r29; fp = sp 976 00001b10 afbffff8 sw -8(r29),r31; push ret addr 977 00001b14 2fbd0018 subui r29,r29,#24; alloc local storage 978 00001b18 afa20000 sw 0(r29),r2 979 00001b1c afa30004 sw 4(r29),r3 980 00001b20 afa40008 sw 8(r29),r4 981 00001b24 8fc30000 lw r3,(r30) 982 00001b28 8fc20004 lw r2,4(r30) 983 00001b2c 8fdf0008 lw r31,8(r30) 984 00001b30 08000014 j L259_LF2 985 00001b34 54000000 nop; not filled. 986 00001b38 L257_LF2: 987 00001b38 80640000 lb r4,(r3) 988 00001b3c a0440000 sb (r2),r4 989 00001b40 20630001 addi r3,r3,#1 990 00001b44 20420001 addi r2,r2,#1 991 00001b48 L259_LF2: 992 00001b48 001f0820 add r1,r0,r31 993 00001b4c 23ffffff addi r31,r31,#-1 994 00001b50 6c210000 sgti r1,r1,#0 995 00001b54 1420ffe0 bnez r1,L257_LF2 996 00001b58 54000000 nop; not filled. 997 00001b5c 8fa20000 lw r2,0(r29) 998 00001b60 8fa30004 lw r3,4(r29) 999 00001b64 8fa40008 lw r4,8(r29) 1000 00001b68 8fdffff8 lw r31,-8(r30) 1001 00001b6c 001ee820 add r29,r0,r30 1002 00001b70 8fdefffc lw r30,-4(r30) 1003 00001b74 4be00000 jr r31 1004 00001b78 54000000 nop 1005 00001b7c .endproc _bcopy 1006 00001b7c .align 2 1007 00001b7c .proc _bzero 1008 00001b7c .global _bzero 1009 00001b7c _bzero: 1010 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 1011 00001b7c afbefffc sw -4(r29),r30; push fp 1012 00001b80 001df020 add r30,r0,r29; fp = sp 1013 00001b84 afbffff8 sw -8(r29),r31; push ret addr 1014 00001b88 2fbd0010 subui r29,r29,#16; alloc local storage 1015 00001b8c afa20000 sw 0(r29),r2 1016 00001b90 afa30004 sw 4(r29),r3 1017 00001b94 8fc20000 lw r2,(r30) 1018 00001b98 8fdf0004 lw r31,4(r30) 1019 00001b9c 08000010 j L270_LF2 1020 00001ba0 54000000 nop; not filled. 1021 00001ba4 L268_LF2: 1022 00001ba4 20030000 addi r3,r0,(#0x0)&0xff 1023 00001ba8 a0430000 sb (r2),r3 1024 00001bac 20420001 addi r2,r2,#1 1025 00001bb0 L270_LF2: 1026 00001bb0 001f0820 add r1,r0,r31 1027 00001bb4 23ffffff addi r31,r31,#-1 1028 00001bb8 6c210000 sgti r1,r1,#0 1029 00001bbc 1420ffe4 bnez r1,L268_LF2 1030 00001bc0 54000000 nop; not filled. 1031 00001bc4 8fa20000 lw r2,0(r29) 1032 00001bc8 8fa30004 lw r3,4(r29) 1033 00001bcc 8fdffff8 lw r31,-8(r30) 1034 00001bd0 001ee820 add r29,r0,r30 1035 00001bd4 8fdefffc lw r30,-4(r30) 1036 00001bd8 4be00000 jr r31 1037 00001bdc 54000000 nop 1038 00001be0 .endproc _bzero 1039 ;;; Ethan L. Miller, 1999. Released to the public domain 1040 ;;; 1041 ;;; Most of the traps are called in files from libtraps. 1044 00001be0 .align 2 1045 00001be0 .proc _exit 1046 00001be0 .global _exit 1047 00001be0 _exit: 1048 00001be0 44000300 trap #0x300 1049 00001be4 4be00000 jr r31 1050 00001be8 54000000 nop 1051 00001bec .endproc _exit 1053 ; for the benefit of gcc. 1054 00001bec .proc ___main 1055 00001bec .global ___main 1056 00001bec ___main: 1057 00001bec 4be00000 jr r31 1058 00001bf0 54000000 nop 1059 00001bf4 .endproc ___main 1060 00001bf4 .text 1061 00001bf4 .global _etext 1062 00001bf4 _etext: 1063 00001bf4 .align 3 1064 00001bf8 .data 1065 00002070 .global _edata 1066 00002070 _edata:

option1/lab4_2/src/traps.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler _TrapProcessCreateHandler: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1696 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65 nop ; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73 nop ; not filled. j L68 nop ; not filled. L67: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop ; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L73: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74 nop ; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80 nop ; not filled. L77: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86 nop ; not filled. j L85 nop ; not filled. L74: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop ; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC0)>>16)&0xffff addui r12,r12,(LC0)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L92: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop ; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93 nop ; not filled. L86: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler .align 2 .proc _TrapPrintfHandler _TrapPrintfHandler: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#208 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101 nop ; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101 nop ; not filled. j L96 nop ; not filled. L95: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop ; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L101: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104 nop ; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107 nop ; not filled. addi r3,r3,#1 j L104 nop ; not filled. L107: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109 nop ; not filled. seqi r1,r2,#108 bnez r1,L110 nop ; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116 nop ; not filled. seqi r1,r2,#101 beqz r1,L115 nop ; not filled. L116: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109 nop ; not filled. L115: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110 nop ; not filled. L109: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105 nop ; not filled. L103: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop ; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler .data .align 2 LC1: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2: .ascii "Got a context switch trap!\n\000" .align 2 LC3: .ascii "Got an exit trap!\n\000" .align 2 LC4: .ascii "Got a fork trap!\n\000" .align 2 LC5: .ascii "Got a process sleep trap!\n\000" .align 2 LC6: .ascii "Got a printf trap!\n\000" .align 2 LC7: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9: .ascii "Got a timer interrupt!\n\000" .align 2 LC10: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11: .ascii "Trap access\n\000" .align 2 LC12: .ascii "Current PROC %s\n\000" .align 2 LC13: .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" .align 2 LC14: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC15: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC16: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#88 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122 nop ; not filled. L123: addi r29,r29,#-24 lhi r7,((LC1)>>16)&0xffff addui r7,r7,(LC1)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L122: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124 nop ; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126 nop ; not filled. sgtui r1,r2,#1024 bnez r1,L179 nop ; not filled. seqi r1,r2,#530 bnez r1,L160 nop ; not filled. sgtui r1,r2,#530 bnez r1,L180 nop ; not filled. seqi r1,r2,#528 bnez r1,L151 nop ; not filled. sgtui r1,r2,#528 bnez r1,L154 nop ; not filled. seqi r1,r2,#513 beqz r1,L177 nop ; not filled. j L140 nop ; not filled. L180: seqi r1,r2,#532 bnez r1,L148 nop ; not filled. sltui r1,r2,#532 bnez r1,L143 nop ; not filled. seqi r1,r2,#768 beqz r1,L177 nop ; not filled. j L129 nop ; not filled. L179: seqi r1,r2,#1074 bnez r1,L164 nop ; not filled. sgtui r1,r2,#1074 bnez r1,L181 nop ; not filled. seqi r1,r2,#1072 bnez r1,L134 nop ; not filled. sgtui r1,r2,#1072 bnez r1,L163 nop ; not filled. seqi r1,r2,#1040 beqz r1,L177 nop ; not filled. j L137 nop ; not filled. L181: seqi r1,r2,#1105 bnez r1,L169 nop ; not filled. sgtui r1,r2,#1105 bnez r1,L182 nop ; not filled. seqi r1,r2,#1104 beqz r1,L177 nop ; not filled. j L165 nop ; not filled. L182: seqi r1,r2,#1106 bnez r1,L173 nop ; not filled. seqi r1,r2,#1408 beqz r1,L177 nop ; not filled. j L157 nop ; not filled. L126: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L128: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff j L209 nop ; not filled. L129: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-8 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L130: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L132 nop ; not filled. L133: addi r29,r29,#-8 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L132: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L203 nop ; not filled. L134: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L136 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L183 nop ; not filled. L136: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. j L203 nop ; not filled. L137: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L139 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L138 nop ; not filled. L139: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L138: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop ; not filled. jal _ProcessSchedule nop ; not filled. j L203 nop ; not filled. L140: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141 nop ; not filled. L142: addi r29,r29,#-8 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L141: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler nop ; not filled. j L203 nop ; not filled. L143: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L144 nop ; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L145 nop ; not filled. L144: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L145: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop ; not filled. addi r29,r29,#-8 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L148: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L151: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L154: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L157: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L160: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L203 nop ; not filled. L163: jal _GetCurrentPid nop ; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L164: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler nop ; not filled. j L203 nop ; not filled. L165: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L167 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L204 nop ; not filled. L167: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L204: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L169: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L171 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L205 nop ; not filled. L171: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L205: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L173: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L175 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L206 nop ; not filled. L175: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L206: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L203 nop ; not filled. L177: addi r29,r29,#-8 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff j L207 nop ; not filled. L124: seqi r1,r2,#3 bnez r1,L193 nop ; not filled. sgtui r1,r2,#3 bnez r1,L199 nop ; not filled. seqi r1,r2,#1 bnez r1,L195 nop ; not filled. seqi r1,r2,#2 beqz r1,L197 nop ; not filled. j L194 nop ; not filled. L199: seqi r1,r2,#64 bnez r1,L185 nop ; not filled. sgtui r1,r2,#64 bnez r1,L200 nop ; not filled. seqi r1,r2,#32 beqz r1,L197 nop ; not filled. j L196 nop ; not filled. L200: seqi r1,r2,#72 beqz r1,L197 nop ; not filled. j L188 nop ; not filled. L185: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L187: addi r29,r29,#-8 lhi r7,((LC9)>>16)&0xffff addui r7,r7,(LC9)&0xffff L209: sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L186: jal _ProcessSchedule nop ; not filled. j L183 nop ; not filled. L188: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L189: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10)>>16)&0xffff addui r7,r7,(LC10)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L183 nop ; not filled. j L189 nop ; not filled. L193: addi r29,r29,#-8 lhi r7,((LC11)>>16)&0xffff addui r7,r7,(LC11)&0xffff sw (r29),r7 jal _printf nop ; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L203 nop ; not filled. L194: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12)>>16)&0xffff addui r7,r7,(LC12)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#-8 lhi r7,((LC13)>>16)&0xffff addui r7,r7,(LC13)&0xffff j L208 nop ; not filled. L195: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) addi r29,r29,#-8 lhi r7,((LC12)>>16)&0xffff addui r7,r7,(LC12)&0xffff sw (r29),r7 addi r1,r1,#16 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#-8 lhi r7,((LC14)>>16)&0xffff addui r7,r7,(LC14)&0xffff L208: sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#16 j L183 nop ; not filled. L196: jal _PageFaultHandler nop ; not filled. j L183 nop ; not filled. L197: addi r29,r29,#-8 lhi r7,((LC15)>>16)&0xffff addui r7,r7,(LC15)&0xffff L207: sw (r29),r7 sw 4(r29),r2 jal _printf nop ; not filled. jal _exitsim nop ; not filled. L203: addi r29,r29,#8 L183: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L202 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L201 nop ; not filled. L202: addi r29,r29,#-8 lhi r7,((LC16)>>16)&0xffff addui r7,r7,(LC16)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L201: jal _intrreturn nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt

option1/lab4_2/src/userprog1.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 24 4 ; Text size: 2872 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 496e2055 .ascii "In Userprog1, Sum : %d\n\000" 12 00002004 73657270 12 00002008 726f6731 12 0000200c 2c205375 12 00002010 6d203a20 12 00002014 25640a00 13 00002018 .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 0 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 23 00001010 0c000b1c jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20030000 addi r3,r0,(#0x0)&0xff 26 0000101c 3c040010 lhi r4,#16 27 00001020 24840000 addui r4,r4,#0 28 00001024 201f0000 addi r31,r0,#0 29 00001028 00041020 add r2,r0,r4 30 0000102c L16_LF0: 31 0000102c a05f0000 sb (r2),r31 32 00001030 20422004 addi r2,r2,#8196 33 00001034 23ff0001 addi r31,r31,#1 34 00001038 73e1000b slei r1,r31,#11 35 0000103c 1420ffec bnez r1,L16_LF0 36 00001040 54000000 nop; not filled. 37 00001044 0004f820 add r31,r0,r4 38 00001048 3c050001 lhi r5,#1 39 0000104c 24a5602c addui r5,r5,#24620 40 00001050 03e51025 or r2,r31,r5 41 00001054 L21_LF0: 42 00001054 83e50000 lb r5,(r31) 43 00001058 00a31820 add r3,r5,r3 44 0000105c 23ff2004 addi r31,r31,#8196 45 00001060 03e2082c sle r1,r31,r2 46 00001064 1420ffec bnez r1,L21_LF0 47 00001068 54000000 nop; not filled. 48 0000106c 23bdfff8 addi r29,r29,#-8 49 00001070 3c050000 lhi r5,((LC0_LF0)>>16)&0xffff 50 00001074 24a52000 addui r5,r5,(LC0_LF0)&0xffff 51 00001078 afa50000 sw (r29),r5 52 0000107c 306100ff andi r1,r3,#0x00ff 53 00001080 afa10004 sw 4(r29),r1 54 00001084 0c000058 jal _Printf 55 00001088 54000000 nop; not filled. 56 0000108c 23bd0008 addi r29,r29,#8 57 00001090 0c000a90 jal _exit 58 00001094 54000000 nop 59 00001098 .endproc _main 60 ;;; 61 ;;; Stub functions for DLX traps. 62 ;;; 63 ;;; Ethan L. Miller, 1999. Released to the public domain. 64 ;;; 65 ;;; The traps such as Open and Close 66 ;;; (note the capital letters) are for use by user programs. The traps 67 ;;; with names such as open and close (lower case) are for use by the OS. 68 ;;; 71 00001098 .align 2 73 ;;; The following are the traps to be used by user-level programs 74 ;;; 76 00001098 .align 2 77 00001098 .proc _Open 78 00001098 .global _Open 79 00001098 _Open: 80 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 81 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 82 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 83 00001098 44000213 trap #0x213 84 0000109c 4be00000 jr r31 85 000010a0 54000000 nop 86 000010a4 .endproc _Open 88 000010a4 .proc _Close 89 000010a4 .global _Close 90 000010a4 _Close: 91 000010a4 44000214 trap #0x214 92 000010a8 4be00000 jr r31 93 000010ac 54000000 nop 94 000010b0 .endproc _Close 96 000010b0 .proc _Read 97 000010b0 .global _Read 98 000010b0 _Read: 99 000010b0 44000210 trap #0x210 100 000010b4 4be00000 jr r31 101 000010b8 54000000 nop 102 000010bc .endproc _Read 104 000010bc .proc _Write 105 000010bc .global _Write 106 000010bc _Write: 107 000010bc 44000211 trap #0x211 108 000010c0 4be00000 jr r31 109 000010c4 54000000 nop 110 000010c8 .endproc _Write 112 000010c8 .proc _Lseek 113 000010c8 .global _Lseek 114 000010c8 _Lseek: 115 000010c8 44000212 trap #0x212 116 000010cc 4be00000 jr r31 117 000010d0 54000000 nop 118 000010d4 .endproc _Lseek 120 000010d4 .proc _Putchar 121 000010d4 .global _Putchar 122 000010d4 _Putchar: 123 000010d4 44000280 trap #0x280 124 000010d8 4be00000 jr r31 125 000010dc 54000000 nop 126 000010e0 .endproc _Putchar 128 000010e0 .proc _Printf 129 000010e0 .global _Printf 130 000010e0 _Printf: 131 000010e0 44000201 trap #0x201 132 000010e4 4be00000 jr r31 133 000010e8 54000000 nop 134 000010ec .endproc _Printf 136 000010ec .proc _getpid 137 000010ec .global _getpid 138 000010ec _getpid: 139 000010ec 44000431 trap #0x431 140 000010f0 4be00000 jr r31 141 000010f4 54000000 nop 142 000010f8 .endproc _getpid 144 000010f8 .proc _process_create 145 000010f8 .global _process_create 146 000010f8 _process_create: 147 000010f8 44000432 trap #0x432 148 000010fc 4be00000 jr r31 149 00001100 54000000 nop 150 00001104 .endproc _process_create 153 00001104 .proc _sem_create 154 00001104 .global _sem_create 155 00001104 _sem_create: 156 00001104 44000450 trap #0x450 157 00001108 4be00000 jr r31 158 0000110c 54000000 nop 159 00001110 .endproc _sem_create 161 00001110 .proc _sem_wait 162 00001110 .global _sem_wait 163 00001110 _sem_wait: 164 00001110 44000451 trap #0x451 165 00001114 4be00000 jr r31 166 00001118 54000000 nop 167 0000111c .endproc _sem_wait 169 0000111c .proc _sem_signal 170 0000111c .global _sem_signal 171 0000111c _sem_signal: 172 0000111c 44000452 trap #0x452 173 00001120 4be00000 jr r31 174 00001124 54000000 nop 175 00001128 .endproc _sem_signal 178 ; Compiled by GCC 180 00001128 .align 2 181 00001128 .proc _isspace 182 00001128 .global _isspace 183 00001128 _isspace: 184 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 185 00001128 afbefffc sw -4(r29),r30; push fp 186 0000112c 001df020 add r30,r0,r29; fp = sp 187 00001130 afbffff8 sw -8(r29),r31; push ret addr 188 00001134 2fbd0010 subui r29,r29,#16; alloc local storage 189 00001138 afa20000 sw 0(r29),r2 190 0000113c 83c20003 lb r2,3(r30) 191 00001140 201f0000 addi r31,r0,#0 192 00001144 304100ff andi r1,r2,#0x00ff 193 00001148 60210020 seqi r1,r1,#32 194 0000114c 14200018 bnez r1,L6_LF2 195 00001150 54000000 nop; not filled. 196 00001154 2041fff7 addi r1,r2,#-9 197 00001158 302100ff andi r1,r1,#0x00ff 198 0000115c 70210001 sleui r1,r1,#1 199 00001160 10200008 beqz r1,L5_LF2 200 00001164 54000000 nop; not filled. 201 00001168 L6_LF2: 202 00001168 201f0001 addi r31,r0,#1 203 0000116c L5_LF2: 204 0000116c 001f0820 add r1,r0,r31 205 00001170 8fa20000 lw r2,0(r29) 206 00001174 8fdffff8 lw r31,-8(r30) 207 00001178 001ee820 add r29,r0,r30 208 0000117c 8fdefffc lw r30,-4(r30) 209 00001180 4be00000 jr r31 210 00001184 54000000 nop 211 00001188 .endproc _isspace 212 00001188 .align 2 213 00001188 .proc _isxdigit 214 00001188 .global _isxdigit 215 00001188 _isxdigit: 216 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 217 00001188 afbefffc sw -4(r29),r30; push fp 218 0000118c 001df020 add r30,r0,r29; fp = sp 219 00001190 afbffff8 sw -8(r29),r31; push ret addr 220 00001194 2fbd0010 subui r29,r29,#16; alloc local storage 221 00001198 afa20000 sw 0(r29),r2 222 0000119c 83df0003 lb r31,3(r30) 223 000011a0 20020000 addi r2,r0,#0 224 000011a4 23e1ffd0 addi r1,r31,#-48 225 000011a8 302100ff andi r1,r1,#0x00ff 226 000011ac 70210009 sleui r1,r1,#9 227 000011b0 14200028 bnez r1,L12_LF2 228 000011b4 54000000 nop; not filled. 229 000011b8 23e1ff9f addi r1,r31,#-97 230 000011bc 302100ff andi r1,r1,#0x00ff 231 000011c0 70210005 sleui r1,r1,#5 232 000011c4 14200014 bnez r1,L12_LF2 233 000011c8 54000000 nop; not filled. 234 000011cc 33e100ff andi r1,r31,#0x00ff 235 000011d0 64210041 snei r1,r1,#65 236 000011d4 14200008 bnez r1,L11_LF2 237 000011d8 54000000 nop; not filled. 238 000011dc L12_LF2: 239 000011dc 20020001 addi r2,r0,#1 240 000011e0 L11_LF2: 241 000011e0 00020820 add r1,r0,r2 242 000011e4 8fa20000 lw r2,0(r29) 243 000011e8 8fdffff8 lw r31,-8(r30) 244 000011ec 001ee820 add r29,r0,r30 245 000011f0 8fdefffc lw r30,-4(r30) 246 000011f4 4be00000 jr r31 247 000011f8 54000000 nop 248 000011fc .endproc _isxdigit 249 000011fc .align 2 250 000011fc .proc _dstrcpy 251 000011fc .global _dstrcpy 252 000011fc _dstrcpy: 253 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 254 000011fc afbefffc sw -4(r29),r30; push fp 255 00001200 001df020 add r30,r0,r29; fp = sp 256 00001204 afbffff8 sw -8(r29),r31; push ret addr 257 00001208 2fbd0010 subui r29,r29,#16; alloc local storage 258 0000120c afa20000 sw 0(r29),r2 259 00001210 afa30004 sw 4(r29),r3 260 00001214 8fdf0000 lw r31,(r30) 261 00001218 8fc20004 lw r2,4(r30) 262 0000121c 001f1820 add r3,r0,r31 263 00001220 L19_LF2: 264 00001220 80410000 lb r1,(r2) 265 00001224 a3e10000 sb (r31),r1 266 00001228 20420001 addi r2,r2,#1 267 0000122c 23ff0001 addi r31,r31,#1 268 00001230 302100ff andi r1,r1,#0x00ff 269 00001234 64210000 snei r1,r1,#0 270 00001238 1420ffe4 bnez r1,L19_LF2 271 0000123c 54000000 nop; not filled. 272 00001240 00030820 add r1,r0,r3 273 00001244 8fa20000 lw r2,0(r29) 274 00001248 8fa30004 lw r3,4(r29) 275 0000124c 8fdffff8 lw r31,-8(r30) 276 00001250 001ee820 add r29,r0,r30 277 00001254 8fdefffc lw r30,-4(r30) 278 00001258 4be00000 jr r31 279 0000125c 54000000 nop 280 00001260 .endproc _dstrcpy 281 00001260 .align 2 282 00001260 .proc _dstrncpy 283 00001260 .global _dstrncpy 284 00001260 _dstrncpy: 285 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 286 00001260 afbefffc sw -4(r29),r30; push fp 287 00001264 001df020 add r30,r0,r29; fp = sp 288 00001268 afbffff8 sw -8(r29),r31; push ret addr 289 0000126c 2fbd0018 subui r29,r29,#24; alloc local storage 290 00001270 afa20000 sw 0(r29),r2 291 00001274 afa30004 sw 4(r29),r3 292 00001278 afa40008 sw 8(r29),r4 293 0000127c 8fc20000 lw r2,(r30) 294 00001280 8fc30004 lw r3,4(r30) 295 00001284 8fdf0008 lw r31,8(r30) 296 00001288 00022020 add r4,r0,r2 297 0000128c 08000024 j L37_LF2 298 00001290 54000000 nop; not filled. 299 00001294 L34_LF2: 300 00001294 80610000 lb r1,(r3) 301 00001298 a0410000 sb (r2),r1 302 0000129c 20630001 addi r3,r3,#1 303 000012a0 20420001 addi r2,r2,#1 304 000012a4 302100ff andi r1,r1,#0x00ff 305 000012a8 64210000 snei r1,r1,#0 306 000012ac 10200018 beqz r1,L32_LF2 307 000012b0 54000000 nop; not filled. 308 000012b4 L37_LF2: 309 000012b4 001f0820 add r1,r0,r31 310 000012b8 23ffffff addi r31,r31,#-1 311 000012bc 70210000 slei r1,r1,#0 312 000012c0 1020ffd0 beqz r1,L34_LF2 313 000012c4 54000000 nop; not filled. 314 000012c8 L32_LF2: 315 000012c8 00040820 add r1,r0,r4 316 000012cc 8fa20000 lw r2,0(r29) 317 000012d0 8fa30004 lw r3,4(r29) 318 000012d4 8fa40008 lw r4,8(r29) 319 000012d8 8fdffff8 lw r31,-8(r30) 320 000012dc 001ee820 add r29,r0,r30 321 000012e0 8fdefffc lw r30,-4(r30) 322 000012e4 4be00000 jr r31 323 000012e8 54000000 nop 324 000012ec .endproc _dstrncpy 325 000012ec .align 2 326 000012ec .proc _dstrcat 327 000012ec .global _dstrcat 328 000012ec _dstrcat: 329 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 330 000012ec afbefffc sw -4(r29),r30; push fp 331 000012f0 001df020 add r30,r0,r29; fp = sp 332 000012f4 afbffff8 sw -8(r29),r31; push ret addr 333 000012f8 2fbd0010 subui r29,r29,#16; alloc local storage 334 000012fc afa20000 sw 0(r29),r2 335 00001300 afa30004 sw 4(r29),r3 336 00001304 8fdf0000 lw r31,(r30) 337 00001308 001f1820 add r3,r0,r31 338 0000130c 90610000 lbu r1,(r3) 339 00001310 64210000 snei r1,r1,#0 340 00001314 10200018 beqz r1,L50_LF2 341 00001318 54000000 nop; not filled. 342 0000131c L51_LF2: 343 0000131c 23ff0001 addi r31,r31,#1 344 00001320 93e10000 lbu r1,(r31) 345 00001324 64210000 snei r1,r1,#0 346 00001328 1420fff0 bnez r1,L51_LF2 347 0000132c 54000000 nop; not filled. 348 00001330 L50_LF2: 349 00001330 001f1020 add r2,r0,r31 350 00001334 8fdf0004 lw r31,4(r30) 351 00001338 L54_LF2: 352 00001338 83e10000 lb r1,(r31) 353 0000133c a0410000 sb (r2),r1 354 00001340 23ff0001 addi r31,r31,#1 355 00001344 20420001 addi r2,r2,#1 356 00001348 302100ff andi r1,r1,#0x00ff 357 0000134c 64210000 snei r1,r1,#0 358 00001350 1420ffe4 bnez r1,L54_LF2 359 00001354 54000000 nop; not filled. 360 00001358 00030820 add r1,r0,r3 361 0000135c 8fa20000 lw r2,0(r29) 362 00001360 8fa30004 lw r3,4(r29) 363 00001364 8fdffff8 lw r31,-8(r30) 364 00001368 001ee820 add r29,r0,r30 365 0000136c 8fdefffc lw r30,-4(r30) 366 00001370 4be00000 jr r31 367 00001374 54000000 nop 368 00001378 .endproc _dstrcat 369 00001378 .align 2 370 00001378 .proc _dstrncmp 371 00001378 .global _dstrncmp 372 00001378 _dstrncmp: 373 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 374 00001378 afbefffc sw -4(r29),r30; push fp 375 0000137c 001df020 add r30,r0,r29; fp = sp 376 00001380 afbffff8 sw -8(r29),r31; push ret addr 377 00001384 2fbd0018 subui r29,r29,#24; alloc local storage 378 00001388 afa20000 sw 0(r29),r2 379 0000138c afa30004 sw 4(r29),r3 380 00001390 afa40008 sw 8(r29),r4 381 00001394 afa5000c sw 12(r29),r5 382 00001398 8fc30000 lw r3,(r30) 383 0000139c 8fc40004 lw r4,4(r30) 384 000013a0 8fc50008 lw r5,8(r30) 385 000013a4 20020000 addi r2,r0,#0 386 000013a8 0045082a slt r1,r2,r5 387 000013ac 1020003c beqz r1,L73_LF2 388 000013b0 54000000 nop; not filled. 389 000013b4 L75_LF2: 390 000013b4 909f0000 lbu r31,(r4) 391 000013b8 67e10000 snei r1,r31,#0 392 000013bc 10200038 beqz r1,L86_LF2 393 000013c0 54000000 nop; not filled. 394 000013c4 90610000 lbu r1,(r3) 395 000013c8 003f0829 sne r1,r1,r31 396 000013cc 1420001c bnez r1,L73_LF2 397 000013d0 54000000 nop; not filled. 398 000013d4 20630001 addi r3,r3,#1 399 000013d8 20840001 addi r4,r4,#1 400 000013dc 20420001 addi r2,r2,#1 401 000013e0 0045082a slt r1,r2,r5 402 000013e4 1420ffcc bnez r1,L75_LF2 403 000013e8 54000000 nop; not filled. 404 000013ec L73_LF2: 405 000013ec 00450828 seq r1,r2,r5 406 000013f0 10200010 beqz r1,L80_LF2 407 000013f4 54000000 nop; not filled. 408 000013f8 L86_LF2: 409 000013f8 20010000 addi r1,r0,#0 410 000013fc 08000028 j L84_LF2 411 00001400 54000000 nop; not filled. 412 00001404 L80_LF2: 413 00001404 907f0000 lbu r31,(r3) 414 00001408 90830000 lbu r3,(r4) 415 0000140c 03e30822 sub r1,r31,r3 416 00001410 74210000 sgei r1,r1,#0 417 00001414 2002ffff addi r2,r0,#-1 418 00001418 10200008 beqz r1,L82_LF2 419 0000141c 54000000 nop; not filled. 420 00001420 03e31029 sne r2,r31,r3 421 00001424 L82_LF2: 422 00001424 00020820 add r1,r0,r2 423 00001428 L84_LF2: 424 00001428 8fa20000 lw r2,0(r29) 425 0000142c 8fa30004 lw r3,4(r29) 426 00001430 8fa40008 lw r4,8(r29) 427 00001434 8fa5000c lw r5,12(r29) 428 00001438 8fdffff8 lw r31,-8(r30) 429 0000143c 001ee820 add r29,r0,r30 430 00001440 8fdefffc lw r30,-4(r30) 431 00001444 4be00000 jr r31 432 00001448 54000000 nop 433 0000144c .endproc _dstrncmp 434 0000144c .align 2 435 0000144c .proc _dstrlen 436 0000144c .global _dstrlen 437 0000144c _dstrlen: 438 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 439 0000144c afbefffc sw -4(r29),r30; push fp 440 00001450 001df020 add r30,r0,r29; fp = sp 441 00001454 afbffff8 sw -8(r29),r31; push ret addr 442 00001458 2fbd0010 subui r29,r29,#16; alloc local storage 443 0000145c afa20000 sw 0(r29),r2 444 00001460 8fdf0000 lw r31,(r30) 445 00001464 20020000 addi r2,r0,#0 446 00001468 08000008 j L97_LF2 447 0000146c 54000000 nop; not filled. 448 00001470 L95_LF2: 449 00001470 20420001 addi r2,r2,#1 450 00001474 L97_LF2: 451 00001474 93e10000 lbu r1,(r31) 452 00001478 23ff0001 addi r31,r31,#1 453 0000147c 64210000 snei r1,r1,#0 454 00001480 1420ffec bnez r1,L95_LF2 455 00001484 54000000 nop; not filled. 456 00001488 00020820 add r1,r0,r2 457 0000148c 8fa20000 lw r2,0(r29) 458 00001490 8fdffff8 lw r31,-8(r30) 459 00001494 001ee820 add r29,r0,r30 460 00001498 8fdefffc lw r30,-4(r30) 461 0000149c 4be00000 jr r31 462 000014a0 54000000 nop 463 000014a4 .endproc _dstrlen 464 000014a4 .align 2 465 000014a4 .proc _dstrstr 466 000014a4 .global _dstrstr 467 000014a4 _dstrstr: 468 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 469 000014a4 afbefffc sw -4(r29),r30; push fp 470 000014a8 001df020 add r30,r0,r29; fp = sp 471 000014ac afbffff8 sw -8(r29),r31; push ret addr 472 000014b0 2fbd0020 subui r29,r29,#32; alloc local storage 473 000014b4 afa20000 sw 0(r29),r2 474 000014b8 afa30004 sw 4(r29),r3 475 000014bc afa40008 sw 8(r29),r4 476 000014c0 afa5000c sw 12(r29),r5 477 000014c4 afa60010 sw 16(r29),r6 478 000014c8 afa70014 sw 20(r29),r7 479 000014cc 8fc50000 lw r5,(r30) 480 000014d0 8fc70004 lw r7,4(r30) 481 000014d4 20030000 addi r3,r0,#0 482 000014d8 90e10000 lbu r1,(r7) 483 000014dc 20e20001 addi r2,r7,#1 484 000014e0 64210000 snei r1,r1,#0 485 000014e4 1020001c beqz r1,L125_LF2 486 000014e8 54000000 nop; not filled. 487 000014ec L126_LF2: 488 000014ec 20630001 addi r3,r3,#1 489 000014f0 90410000 lbu r1,(r2) 490 000014f4 20420001 addi r2,r2,#1 491 000014f8 64210000 snei r1,r1,#0 492 000014fc 1420ffec bnez r1,L126_LF2 493 00001500 54000000 nop; not filled. 494 00001504 L125_LF2: 495 00001504 00033020 add r6,r0,r3 496 00001508 080000ac j L149_LF2 497 0000150c 54000000 nop; not filled. 498 00001510 L130_LF2: 499 00001510 00051820 add r3,r0,r5 500 00001514 00072020 add r4,r0,r7 501 00001518 20020000 addi r2,r0,#0 502 0000151c 0046082a slt r1,r2,r6 503 00001520 1020003c beqz r1,L134_LF2 504 00001524 54000000 nop; not filled. 505 00001528 L136_LF2: 506 00001528 909f0000 lbu r31,(r4) 507 0000152c 67e10000 snei r1,r31,#0 508 00001530 10200038 beqz r1,L150_LF2 509 00001534 54000000 nop; not filled. 510 00001538 90610000 lbu r1,(r3) 511 0000153c 003f0829 sne r1,r1,r31 512 00001540 1420001c bnez r1,L134_LF2 513 00001544 54000000 nop; not filled. 514 00001548 20630001 addi r3,r3,#1 515 0000154c 20840001 addi r4,r4,#1 516 00001550 20420001 addi r2,r2,#1 517 00001554 0046082a slt r1,r2,r6 518 00001558 1420ffcc bnez r1,L136_LF2 519 0000155c 54000000 nop; not filled. 520 00001560 L134_LF2: 521 00001560 00460828 seq r1,r2,r6 522 00001564 10200010 beqz r1,L141_LF2 523 00001568 54000000 nop; not filled. 524 0000156c L150_LF2: 525 0000156c 20010000 addi r1,r0,#0 526 00001570 08000028 j L132_LF2 527 00001574 54000000 nop; not filled. 528 00001578 L141_LF2: 529 00001578 90630000 lbu r3,(r3) 530 0000157c 90820000 lbu r2,(r4) 531 00001580 00620822 sub r1,r3,r2 532 00001584 74210000 sgei r1,r1,#0 533 00001588 201fffff addi r31,r0,#-1 534 0000158c 10200008 beqz r1,L143_LF2 535 00001590 54000000 nop; not filled. 536 00001594 0062f829 sne r31,r3,r2 537 00001598 L143_LF2: 538 00001598 001f0820 add r1,r0,r31 539 0000159c L132_LF2: 540 0000159c 64210000 snei r1,r1,#0 541 000015a0 14200010 bnez r1,L131_LF2 542 000015a4 54000000 nop; not filled. 543 000015a8 00050820 add r1,r0,r5 544 000015ac 0800001c j L146_LF2 545 000015b0 54000000 nop; not filled. 546 000015b4 L131_LF2: 547 000015b4 20a50001 addi r5,r5,#1 548 000015b8 L149_LF2: 549 000015b8 90a10000 lbu r1,(r5) 550 000015bc 64210000 snei r1,r1,#0 551 000015c0 1420ff4c bnez r1,L130_LF2 552 000015c4 54000000 nop; not filled. 553 000015c8 20010000 addi r1,r0,#0 554 000015cc L146_LF2: 555 000015cc 8fa20000 lw r2,0(r29) 556 000015d0 8fa30004 lw r3,4(r29) 557 000015d4 8fa40008 lw r4,8(r29) 558 000015d8 8fa5000c lw r5,12(r29) 559 000015dc 8fa60010 lw r6,16(r29) 560 000015e0 8fa70014 lw r7,20(r29) 561 000015e4 8fdffff8 lw r31,-8(r30) 562 000015e8 001ee820 add r29,r0,r30 563 000015ec 8fdefffc lw r30,-4(r30) 564 000015f0 4be00000 jr r31 565 000015f4 54000000 nop 566 000015f8 .endproc _dstrstr 567 000015f8 .align 2 568 000015f8 .proc _dmindex 569 000015f8 .global _dmindex 570 000015f8 _dmindex: 571 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 572 000015f8 afbefffc sw -4(r29),r30; push fp 573 000015fc 001df020 add r30,r0,r29; fp = sp 574 00001600 afbffff8 sw -8(r29),r31; push ret addr 575 00001604 2fbd0020 subui r29,r29,#32; alloc local storage 576 00001608 afa20000 sw 0(r29),r2 577 0000160c afa30004 sw 4(r29),r3 578 00001610 afa40008 sw 8(r29),r4 579 00001614 afa5000c sw 12(r29),r5 580 00001618 afa60010 sw 16(r29),r6 581 0000161c 8fc40000 lw r4,(r30) 582 00001620 8fc60004 lw r6,4(r30) 583 00001624 90810000 lbu r1,(r4) 584 00001628 64210000 snei r1,r1,#0 585 0000162c 10200060 beqz r1,L164_LF2 586 00001630 54000000 nop; not filled. 587 00001634 00012820 add r5,r0,r1 588 00001638 L165_LF2: 589 00001638 00061020 add r2,r0,r6 590 0000163c 80df0000 lb r31,(r6) 591 00001640 33e100ff andi r1,r31,#0x00ff 592 00001644 64210000 snei r1,r1,#0 593 00001648 1020003c beqz r1,L163_LF2 594 0000164c 54000000 nop; not filled. 595 00001650 90830000 lbu r3,(r4) 596 00001654 L169_LF2: 597 00001654 33e100ff andi r1,r31,#0x00ff 598 00001658 00610828 seq r1,r3,r1 599 0000165c 10200010 beqz r1,L168_LF2 600 00001660 54000000 nop; not filled. 601 00001664 00040820 add r1,r0,r4 602 00001668 08000028 j L173_LF2 603 0000166c 54000000 nop; not filled. 604 00001670 L168_LF2: 605 00001670 20420001 addi r2,r2,#1 606 00001674 805f0000 lb r31,(r2) 607 00001678 33e100ff andi r1,r31,#0x00ff 608 0000167c 64210000 snei r1,r1,#0 609 00001680 1420ffd0 bnez r1,L169_LF2 610 00001684 54000000 nop; not filled. 611 00001688 L163_LF2: 612 00001688 14a0ffac bnez r5,L165_LF2 613 0000168c 54000000 nop; not filled. 614 00001690 L164_LF2: 615 00001690 20010000 addi r1,r0,#0 616 00001694 L173_LF2: 617 00001694 8fa20000 lw r2,0(r29) 618 00001698 8fa30004 lw r3,4(r29) 619 0000169c 8fa40008 lw r4,8(r29) 620 000016a0 8fa5000c lw r5,12(r29) 621 000016a4 8fa60010 lw r6,16(r29) 622 000016a8 8fdffff8 lw r31,-8(r30) 623 000016ac 001ee820 add r29,r0,r30 624 000016b0 8fdefffc lw r30,-4(r30) 625 000016b4 4be00000 jr r31 626 000016b8 54000000 nop 627 000016bc .endproc _dmindex 628 000016bc .align 2 629 000016bc .proc _dindex 630 000016bc .global _dindex 631 000016bc _dindex: 632 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 633 000016bc afbefffc sw -4(r29),r30; push fp 634 000016c0 001df020 add r30,r0,r29; fp = sp 635 000016c4 afbffff8 sw -8(r29),r31; push ret addr 636 000016c8 2fbd0010 subui r29,r29,#16; alloc local storage 637 000016cc afa20000 sw 0(r29),r2 638 000016d0 afa30004 sw 4(r29),r3 639 000016d4 8fc20000 lw r2,(r30) 640 000016d8 8fc30004 lw r3,4(r30) 641 000016dc 08000024 j L187_LF2 642 000016e0 54000000 nop; not filled. 643 000016e4 L183_LF2: 644 000016e4 33e100ff andi r1,r31,#0x00ff 645 000016e8 00230828 seq r1,r1,r3 646 000016ec 10200010 beqz r1,L184_LF2 647 000016f0 54000000 nop; not filled. 648 000016f4 00020820 add r1,r0,r2 649 000016f8 08000020 j L186_LF2 650 000016fc 54000000 nop; not filled. 651 00001700 L184_LF2: 652 00001700 20420001 addi r2,r2,#1 653 00001704 L187_LF2: 654 00001704 805f0000 lb r31,(r2) 655 00001708 33e100ff andi r1,r31,#0x00ff 656 0000170c 64210000 snei r1,r1,#0 657 00001710 1420ffd0 bnez r1,L183_LF2 658 00001714 54000000 nop; not filled. 659 00001718 20010000 addi r1,r0,#0 660 0000171c L186_LF2: 661 0000171c 8fa20000 lw r2,0(r29) 662 00001720 8fa30004 lw r3,4(r29) 663 00001724 8fdffff8 lw r31,-8(r30) 664 00001728 001ee820 add r29,r0,r30 665 0000172c 8fdefffc lw r30,-4(r30) 666 00001730 4be00000 jr r31 667 00001734 54000000 nop 668 00001738 .endproc _dindex 669 00001738 .align 2 670 00001738 .proc _ditoa 671 00001738 .global _ditoa 672 00001738 _ditoa: 673 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 674 00001738 afbefffc sw -4(r29),r30; push fp 675 0000173c 001df020 add r30,r0,r29; fp = sp 676 00001740 afbffff8 sw -8(r29),r31; push ret addr 677 00001744 2fbd0020 subui r29,r29,#32; alloc local storage 678 00001748 afa20000 sw 0(r29),r2 679 0000174c afa30004 sw 4(r29),r3 680 00001750 afa40008 sw 8(r29),r4 681 00001754 afa5000c sw 12(r29),r5 682 00001758 afa60010 sw 16(r29),r6 683 0000175c 8fc30000 lw r3,(r30) 684 00001760 8fc40004 lw r4,4(r30) 685 00001764 68610000 slti r1,r3,#0 686 00001768 10200010 beqz r1,L203_LF2 687 0000176c 54000000 nop; not filled. 688 00001770 2006002d addi r6,r0,(#0x2d)&0xff 689 00001774 08000014 j L216_LF2 690 00001778 54000000 nop; not filled. 691 0000177c L203_LF2: 692 0000177c 64610000 snei r1,r3,#0 693 00001780 14200018 bnez r1,L205_LF2 694 00001784 54000000 nop; not filled. 695 00001788 20060030 addi r6,r0,(#0x30)&0xff 696 0000178c L216_LF2: 697 0000178c a0860000 sb (r4),r6 698 00001790 20840001 addi r4,r4,#1 699 00001794 0800007c j L204_LF2 700 00001798 54000000 nop; not filled. 701 0000179c L205_LF2: 702 0000179c 201f0001 addi r31,r0,#1 703 000017a0 03e3082c sle r1,r31,r3 704 000017a4 1020001c beqz r1,L208_LF2 705 000017a8 54000000 nop; not filled. 706 000017ac L209_LF2: 707 000017ac 53e10002 slli r1,r31,#0x2 708 000017b0 003f0820 add r1,r1,r31 709 000017b4 503f0001 slli r31,r1,#0x1 710 000017b8 03e3082c sle r1,r31,r3 711 000017bc 1420ffec bnez r1,L209_LF2 712 000017c0 54000000 nop; not filled. 713 000017c4 L208_LF2: 714 000017c4 2005000a addi r5,r0,#10 715 000017c8 L212_LF2: 716 000017c8 03e00035 movi2fp f0,r31 717 000017cc 00a00835 movi2fp f1,r5 718 000017d0 0401000f div f0,f0,f1 719 000017d4 0000f834 movfp2i r31,f0 720 000017d8 00600035 movi2fp f0,r3 721 000017dc 03e00835 movi2fp f1,r31 722 000017e0 0401000f div f0,f0,f1 723 000017e4 00001034 movfp2i r2,f0 724 000017e8 20410030 addi r1,r2,#48 725 000017ec a0810000 sb (r4),r1 726 000017f0 20840001 addi r4,r4,#1 727 000017f4 00400035 movi2fp f0,r2 728 000017f8 03e00835 movi2fp f1,r31 729 000017fc 0401000e mult f0,f0,f1 730 00001800 00000834 movfp2i r1,f0 731 00001804 00611822 sub r3,r3,r1 732 00001808 6fe10001 sgti r1,r31,#1 733 0000180c 1420ffb8 bnez r1,L212_LF2 734 00001810 54000000 nop; not filled. 735 00001814 L204_LF2: 736 00001814 20060000 addi r6,r0,(#0x0)&0xff 737 00001818 a0860000 sb (r4),r6 738 0000181c 8fa20000 lw r2,0(r29) 739 00001820 8fa30004 lw r3,4(r29) 740 00001824 8fa40008 lw r4,8(r29) 741 00001828 8fa5000c lw r5,12(r29) 742 0000182c 8fa60010 lw r6,16(r29) 743 00001830 8fdffff8 lw r31,-8(r30) 744 00001834 001ee820 add r29,r0,r30 745 00001838 8fdefffc lw r30,-4(r30) 746 0000183c 4be00000 jr r31 747 00001840 54000000 nop 748 00001844 .endproc _ditoa 749 00001844 .align 2 750 00001844 .proc _dstrtol 751 00001844 .global _dstrtol 752 00001844 _dstrtol: 753 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 754 00001844 afbefffc sw -4(r29),r30; push fp 755 00001848 001df020 add r30,r0,r29; fp = sp 756 0000184c afbffff8 sw -8(r29),r31; push ret addr 757 00001850 2fbd0020 subui r29,r29,#32; alloc local storage 758 00001854 afa20000 sw 0(r29),r2 759 00001858 afa30004 sw 4(r29),r3 760 0000185c afa40008 sw 8(r29),r4 761 00001860 afa5000c sw 12(r29),r5 762 00001864 afa60010 sw 16(r29),r6 763 00001868 8fc20000 lw r2,(r30) 764 0000186c 8fc50004 lw r5,4(r30) 765 00001870 8fc40008 lw r4,8(r30) 766 00001874 20030000 addi r3,r0,#0 767 00001878 08000008 j L247_LF2 768 0000187c 54000000 nop; not filled. 769 00001880 L220_LF2: 770 00001880 20420001 addi r2,r2,#1 771 00001884 L247_LF2: 772 00001884 805f0000 lb r31,(r2) 773 00001888 33e100ff andi r1,r31,#0x00ff 774 0000188c 60210020 seqi r1,r1,#32 775 00001890 1420ffec bnez r1,L220_LF2 776 00001894 54000000 nop; not filled. 777 00001898 23e1fff7 addi r1,r31,#-9 778 0000189c 302100ff andi r1,r1,#0x00ff 779 000018a0 70210001 sleui r1,r1,#1 780 000018a4 1420ffd8 bnez r1,L220_LF2 781 000018a8 54000000 nop; not filled. 782 000018ac 64a10000 snei r1,r5,#0 783 000018b0 10200008 beqz r1,L222_LF2 784 000018b4 54000000 nop; not filled. 785 000018b8 aca20000 sw (r5),r2 786 000018bc L222_LF2: 787 000018bc 905f0000 lbu r31,(r2) 788 000018c0 67e10000 snei r1,r31,#0 789 000018c4 10200090 beqz r1,L248_LF2 790 000018c8 54000000 nop; not filled. 791 000018cc 63e1002d seqi r1,r31,#45 792 000018d0 10200014 beqz r1,L224_LF2 793 000018d4 54000000 nop; not filled. 794 000018d8 2006ffff addi r6,r0,#-1 795 000018dc 20420001 addi r2,r2,#1 796 000018e0 08000008 j L225_LF2 797 000018e4 54000000 nop; not filled. 798 000018e8 L224_LF2: 799 000018e8 20060001 addi r6,r0,#1 800 000018ec L225_LF2: 801 000018ec 64810000 snei r1,r4,#0 802 000018f0 14200054 bnez r1,L226_LF2 803 000018f4 54000000 nop; not filled. 804 000018f8 90410000 lbu r1,(r2) 805 000018fc 60210030 seqi r1,r1,#48 806 00001900 10200040 beqz r1,L227_LF2 807 00001904 54000000 nop; not filled. 808 00001908 20420001 addi r2,r2,#1 809 0000190c 905f0000 lbu r31,(r2) 810 00001910 63e10078 seqi r1,r31,#120 811 00001914 14200010 bnez r1,L229_LF2 812 00001918 54000000 nop; not filled. 813 0000191c 63e10058 seqi r1,r31,#88 814 00001920 10200014 beqz r1,L228_LF2 815 00001924 54000000 nop; not filled. 816 00001928 L229_LF2: 817 00001928 20040010 addi r4,r0,#16 818 0000192c 20420001 addi r2,r2,#1 819 00001930 08000014 j L226_LF2 820 00001934 54000000 nop; not filled. 821 00001938 L228_LF2: 822 00001938 20040008 addi r4,r0,#8 823 0000193c 08000008 j L226_LF2 824 00001940 54000000 nop; not filled. 825 00001944 L227_LF2: 826 00001944 2004000a addi r4,r0,#10 827 00001948 L226_LF2: 828 00001948 2081ffff addi r1,r4,#-1 829 0000194c 6c21000f sgtui r1,r1,#15 830 00001950 10200010 beqz r1,L233_LF2 831 00001954 54000000 nop; not filled. 832 00001958 L248_LF2: 833 00001958 00030820 add r1,r0,r3 834 0000195c 080000c4 j L245_LF2 835 00001960 54000000 nop; not filled. 836 00001964 L233_LF2: 837 00001964 805f0000 lb r31,(r2) 838 00001968 23e1ffd0 addi r1,r31,#-48 839 0000196c 302100ff andi r1,r1,#0x00ff 840 00001970 70210009 sleui r1,r1,#9 841 00001974 10200014 beqz r1,L236_LF2 842 00001978 54000000 nop; not filled. 843 0000197c 33e100ff andi r1,r31,#0x00ff 844 00001980 2021ffd0 addi r1,r1,#-48 845 00001984 08000050 j L237_LF2 846 00001988 54000000 nop; not filled. 847 0000198c L236_LF2: 848 0000198c 23e1ff9f addi r1,r31,#-97 849 00001990 302100ff andi r1,r1,#0x00ff 850 00001994 70210019 sleui r1,r1,#25 851 00001998 10200014 beqz r1,L238_LF2 852 0000199c 54000000 nop; not filled. 853 000019a0 33e100ff andi r1,r31,#0x00ff 854 000019a4 2021ffa9 addi r1,r1,#-87 855 000019a8 0800002c j L237_LF2 856 000019ac 54000000 nop; not filled. 857 000019b0 L238_LF2: 858 000019b0 23e1ffbf addi r1,r31,#-65 859 000019b4 302100ff andi r1,r1,#0x00ff 860 000019b8 70210019 sleui r1,r1,#25 861 000019bc 10200014 beqz r1,L240_LF2 862 000019c0 54000000 nop; not filled. 863 000019c4 33e100ff andi r1,r31,#0x00ff 864 000019c8 2021ffc9 addi r1,r1,#-55 865 000019cc 08000008 j L237_LF2 866 000019d0 54000000 nop; not filled. 867 000019d4 L240_LF2: 868 000019d4 200103e8 addi r1,r0,#1000 869 000019d8 L237_LF2: 870 000019d8 0024f82a slt r31,r1,r4 871 000019dc 13e00024 beqz r31,L246_LF2 872 000019e0 54000000 nop; not filled. 873 000019e4 00600035 movi2fp f0,r3 874 000019e8 00800835 movi2fp f1,r4 875 000019ec 0401000e mult f0,f0,f1 876 000019f0 00001834 movfp2i r3,f0 877 000019f4 00611820 add r3,r3,r1 878 000019f8 20420001 addi r2,r2,#1 879 000019fc 17e0ff64 bnez r31,L233_LF2 880 00001a00 54000000 nop; not filled. 881 00001a04 L246_LF2: 882 00001a04 64a10000 snei r1,r5,#0 883 00001a08 10200008 beqz r1,L244_LF2 884 00001a0c 54000000 nop; not filled. 885 00001a10 aca20000 sw (r5),r2 886 00001a14 L244_LF2: 887 00001a14 00600035 movi2fp f0,r3 888 00001a18 00c00835 movi2fp f1,r6 889 00001a1c 0401000e mult f0,f0,f1 890 00001a20 00000834 movfp2i r1,f0 891 00001a24 L245_LF2: 892 00001a24 8fa20000 lw r2,0(r29) 893 00001a28 8fa30004 lw r3,4(r29) 894 00001a2c 8fa40008 lw r4,8(r29) 895 00001a30 8fa5000c lw r5,12(r29) 896 00001a34 8fa60010 lw r6,16(r29) 897 00001a38 8fdffff8 lw r31,-8(r30) 898 00001a3c 001ee820 add r29,r0,r30 899 00001a40 8fdefffc lw r30,-4(r30) 900 00001a44 4be00000 jr r31 901 00001a48 54000000 nop 902 00001a4c .endproc _dstrtol 903 00001a4c .align 2 904 00001a4c .proc _bcopy 905 00001a4c .global _bcopy 906 00001a4c _bcopy: 907 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 908 00001a4c afbefffc sw -4(r29),r30; push fp 909 00001a50 001df020 add r30,r0,r29; fp = sp 910 00001a54 afbffff8 sw -8(r29),r31; push ret addr 911 00001a58 2fbd0018 subui r29,r29,#24; alloc local storage 912 00001a5c afa20000 sw 0(r29),r2 913 00001a60 afa30004 sw 4(r29),r3 914 00001a64 afa40008 sw 8(r29),r4 915 00001a68 8fc30000 lw r3,(r30) 916 00001a6c 8fc20004 lw r2,4(r30) 917 00001a70 8fdf0008 lw r31,8(r30) 918 00001a74 08000014 j L259_LF2 919 00001a78 54000000 nop; not filled. 920 00001a7c L257_LF2: 921 00001a7c 80640000 lb r4,(r3) 922 00001a80 a0440000 sb (r2),r4 923 00001a84 20630001 addi r3,r3,#1 924 00001a88 20420001 addi r2,r2,#1 925 00001a8c L259_LF2: 926 00001a8c 001f0820 add r1,r0,r31 927 00001a90 23ffffff addi r31,r31,#-1 928 00001a94 6c210000 sgti r1,r1,#0 929 00001a98 1420ffe0 bnez r1,L257_LF2 930 00001a9c 54000000 nop; not filled. 931 00001aa0 8fa20000 lw r2,0(r29) 932 00001aa4 8fa30004 lw r3,4(r29) 933 00001aa8 8fa40008 lw r4,8(r29) 934 00001aac 8fdffff8 lw r31,-8(r30) 935 00001ab0 001ee820 add r29,r0,r30 936 00001ab4 8fdefffc lw r30,-4(r30) 937 00001ab8 4be00000 jr r31 938 00001abc 54000000 nop 939 00001ac0 .endproc _bcopy 940 00001ac0 .align 2 941 00001ac0 .proc _bzero 942 00001ac0 .global _bzero 943 00001ac0 _bzero: 944 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 945 00001ac0 afbefffc sw -4(r29),r30; push fp 946 00001ac4 001df020 add r30,r0,r29; fp = sp 947 00001ac8 afbffff8 sw -8(r29),r31; push ret addr 948 00001acc 2fbd0010 subui r29,r29,#16; alloc local storage 949 00001ad0 afa20000 sw 0(r29),r2 950 00001ad4 afa30004 sw 4(r29),r3 951 00001ad8 8fc20000 lw r2,(r30) 952 00001adc 8fdf0004 lw r31,4(r30) 953 00001ae0 08000010 j L270_LF2 954 00001ae4 54000000 nop; not filled. 955 00001ae8 L268_LF2: 956 00001ae8 20030000 addi r3,r0,(#0x0)&0xff 957 00001aec a0430000 sb (r2),r3 958 00001af0 20420001 addi r2,r2,#1 959 00001af4 L270_LF2: 960 00001af4 001f0820 add r1,r0,r31 961 00001af8 23ffffff addi r31,r31,#-1 962 00001afc 6c210000 sgti r1,r1,#0 963 00001b00 1420ffe4 bnez r1,L268_LF2 964 00001b04 54000000 nop; not filled. 965 00001b08 8fa20000 lw r2,0(r29) 966 00001b0c 8fa30004 lw r3,4(r29) 967 00001b10 8fdffff8 lw r31,-8(r30) 968 00001b14 001ee820 add r29,r0,r30 969 00001b18 8fdefffc lw r30,-4(r30) 970 00001b1c 4be00000 jr r31 971 00001b20 54000000 nop 972 00001b24 .endproc _bzero 973 ;;; Ethan L. Miller, 1999. Released to the public domain 974 ;;; 975 ;;; Most of the traps are called in files from libtraps. 978 00001b24 .align 2 979 00001b24 .proc _exit 980 00001b24 .global _exit 981 00001b24 _exit: 982 00001b24 44000300 trap #0x300 983 00001b28 4be00000 jr r31 984 00001b2c 54000000 nop 985 00001b30 .endproc _exit 987 ; for the benefit of gcc. 988 00001b30 .proc ___main 989 00001b30 .global ___main 990 00001b30 ___main: 991 00001b30 4be00000 jr r31 992 00001b34 54000000 nop 993 00001b38 .endproc ___main 994 00001b38 .text 995 00001b38 .global _etext 996 00001b38 _etext: 997 00001b38 .align 3 998 00001b38 .data 999 00002018 .global _edata 1000 00002018 _edata:

option1/lab4_2/src/os.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 90112 3 ; Data size: 32376 4 ; Text size: 41180 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0xc000 8 ;;; 9 ;;; Initialization code for programs running in the DLX simulator. 10 ;;; Copyright (c) 1999 by Ethan Miller 11 ;;; 12 ;;; 14 0000c000 .text 15 00001000 .align 2 17 ;;;---------------------------------------------------------------------- 18 ;;; osinit 19 ;;; 20 ;;; This is the first function called by the simulator, even before main. 21 ;;; Since it's called BEFORE any "real" routines, we can use any registers 22 ;;; we want as long as we don't mess up the stack or frame pointers. 23 ;;; 24 ;;; This routine loads the interrupt vector to point to the interrupt 25 ;;; handler later in this file. It should never return, because _main 26 ;;; should call exitsim() or exit() rather than returning here. 27 ;;; 28 ;;; After initialization is done, this routine jumps to _main to start the 29 ;;; C code portion of the operating system. 30 ;;;---------------------------------------------------------------------- 31 00001000 .proc _osinit 32 00001000 .global _osinit 33 00001000 _osinit: 34 ;; Set up the interrupt handler 35 00001000 3c010000 lhi r1,(_intrhandler>>16)&0xffff 36 00001004 24211010 addui r1,r1,_intrhandler&0xffff 37 00001008 00204030 movi2s intrvec,r1 38 ;; Never returns because exitsim is called first 39 0000100c 08005e34 j _main 40 00001010 .endproc _osinit 42 ;;;---------------------------------------------------------------------- 43 ;;; intrhandler 44 ;;; 45 ;;; Called when an interrupt or trap is received by the CPU. It stores the 46 ;;; current register set on the system stack. It then pushes the parameters 47 ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE 48 ;;; registers along with the original stack pointer. The C interrupt 49 ;;; handler can then copy arguments from the original stack, performing 50 ;;; user -> system translations if necessary. 51 ;;; 52 ;;;---------------------------------------------------------------------- 53 00001010 .proc _intrhandler 54 00001010 .global _intrhandler 55 00001010 _intrhandler: 56 ;; We can use r31 as scratch space because its value was saved in 57 ;; ir31. However, we must save the "real" value of r31 on the 58 ;; stack. 60 ;; Always store the registers on the system stack. This way, we don't 61 ;; have to worry about translating things from user -> system. We 62 ;; use r31 as the base register because its value was saved in ir31. 64 ;; If this was a user process, load r29 with the current system 65 ;; stack pointer. If it was a system process, just use the 66 ;; current stack pointer. 67 00001010 0060f831 movs2i r31,isr 68 00001014 33ff0040 andi r31,r31,0x40 69 00001018 17e0001c bnez r31,intrSystem_LF0 70 0000101c 3c1f0001 lhi r31,(_currentPCB>>16)&0xffff 71 00001020 27ff0e40 addui r31,r31,_currentPCB&0xffff 72 00001024 8fff0000 lw r31,(r31) 73 00001028 8fff0004 lw r31,4(r31) 74 ;; Save the original (user) stack pointer 75 0000102c affdff48 sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 76 ;; Copy the system stack pointer into r29 (current stack pointer) 77 00001030 37fd0000 ori r29,r31,0 78 00001034 10000004 beqz r0,intrSaveReg_LF0; skip over the system part.... 79 00001038 intrSystem_LF0: 80 ;; Use the stack pointer we're already using 81 ;; Save r29 because we won't save it later 82 00001038 afbdff48 sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 83 0000103c intrSaveReg_LF0: 84 ;; Adjust stack pointer for all the stuff we're going to push. This 85 ;; is a bit more space than we need currently, but it leaves room 86 ;; for more stuff if needed. 87 0000103c 2fbd0154 subui r29,r29,#340 88 ;; Push all the stuff onto the stack 89 00001040 afa1002c sw 44(r29),r1 90 00001044 afa20030 sw 48(r29),r2 91 00001048 afa30034 sw 52(r29),r3 92 0000104c afa40038 sw 56(r29),r4 93 00001050 afa5003c sw 60(r29),r5 94 00001054 afa60040 sw 64(r29),r6 95 00001058 afa70044 sw 68(r29),r7 96 0000105c afa80048 sw 72(r29),r8 97 00001060 afa9004c sw 76(r29),r9 98 00001064 afaa0050 sw 80(r29),r10 99 00001068 afab0054 sw 84(r29),r11 100 0000106c afac0058 sw 88(r29),r12 101 00001070 afad005c sw 92(r29),r13 102 00001074 afae0060 sw 96(r29),r14 103 00001078 afaf0064 sw 100(r29),r15 104 0000107c afb00068 sw 104(r29),r16 105 00001080 afb1006c sw 108(r29),r17 106 00001084 afb20070 sw 112(r29),r18 107 00001088 afb30074 sw 116(r29),r19 108 0000108c afb40078 sw 120(r29),r20 109 00001090 afb5007c sw 124(r29),r21 110 00001094 afb60080 sw 128(r29),r22 111 00001098 afb70084 sw 132(r29),r23 112 0000109c afb80088 sw 136(r29),r24 113 000010a0 afb9008c sw 140(r29),r25 114 000010a4 afba0090 sw 144(r29),r26 115 000010a8 afbb0094 sw 148(r29),r27 116 000010ac afbc0098 sw 152(r29),r28 117 ;; Skip r29 - stored earlier! 118 000010b0 afbe00a0 sw 160(r29),r30 119 ;; Load the value of r31 from the special register and then save it 120 000010b4 00401831 movs2i r3,ir31 121 000010b8 afa300a4 sw 164(r29),r3 122 ;; Store the floating-point registers 123 000010bc bfa000a8 sd 168(r29),f0 124 000010c0 bfa200b0 sd 176(r29),f2 125 000010c4 bfa400b8 sd 184(r29),f4 126 000010c8 bfa600c0 sd 192(r29),f6 127 000010cc bfa800c8 sd 200(r29),f8 128 000010d0 bfaa00d0 sd 208(r29),f10 129 000010d4 bfac00d8 sd 216(r29),f12 130 000010d8 bfae00e0 sd 224(r29),f14 131 000010dc bfb000e8 sd 232(r29),f16 132 000010e0 bfb200f0 sd 240(r29),f18 133 000010e4 bfb400f8 sd 248(r29),f20 134 000010e8 bfb60100 sd 256(r29),f22 135 000010ec bfb80108 sd 264(r29),f24 136 000010f0 bfba0110 sd 272(r29),f26 137 000010f4 bfbc0118 sd 280(r29),f28 138 000010f8 bfbe0120 sd 288(r29),f30 139 ;; NOTE: we don't save the interrupt vector register because it 140 ;; doesn't change from process to process. 141 ;; NOTE: we don't save the status register because most of the flags 142 ;; are the same from process to process if they're in the interrupt 143 ;; handler. Of course, we DO save the ISR. 144 000010fc 00802031 movs2i r4,iar 145 00001100 afa40128 sw 296(r29),r4 146 00001104 00602831 movs2i r5,isr 147 00001108 afa5012c sw 300(r29),r5 148 0000110c 00c03031 movs2i r6,cause 149 00001110 afa60130 sw 304(r29),r6 150 00001114 01201831 movs2i r3,fault 151 00001118 afa30134 sw 308(r29),r3 152 0000111c 01801831 movs2i r3,ptbase 153 00001120 afa30138 sw 312(r29),r3 154 00001124 01a01831 movs2i r3,ptsize 155 00001128 afa3013c sw 316(r29),r3 156 0000112c 01c01831 movs2i r3,ptbits 157 00001130 afa30140 sw 320(r29),r3 159 ;; Push the interrupt information onto the stack 160 00001134 afa60000 sw 0(r29),r6; push CAUSE 161 00001138 afa40004 sw 4(r29),r4; push IAR 162 0000113c afa50008 sw 8(r29),r5; push ISR 163 ;; Get the original stack pointer 164 00001140 8fa1009c lw r1,156(r29) 165 00001144 afa1000c sw 12(r29),r1 166 ;; Save the previous interrupt stack frame address in the current frame 167 00001148 3c010001 lhi r1,(_currentPCB>>16)&0xffff 168 0000114c 24210e40 addui r1,r1,_currentPCB&0xffff 169 00001150 8c210000 lw r1,(r1) 170 00001154 8c220000 lw r2,0(r1) 171 00001158 afa20028 sw 40(r29),r2 172 ;; Save this frame address in the PCB. This is used so the OS can 173 ;; easily access the current interrupt save frame 174 0000115c ac3d0000 sw 0(r1),r29 175 ;; Call the "real" interrupt handler. This will possibly switch 176 ;; contexts. This call never returns; instead, a separate routine 177 ;; (_intrreturn) is called to return from interrupts after restoring 178 ;; the current context. 179 00001160 0800891c j _dointerrupt 180 00001164 54000000 nop 181 00001168 .endproc _intrhandler 183 ;;;---------------------------------------------------------------------- 184 ;;; intrreturn 185 ;;; 186 ;;; Return from an interrupt or trap. This restores all of the previously 187 ;;; saved registers and then returns to where the program left off. The 188 ;;; current contents of the registers are destroyed. This routine uses 189 ;;; the saved interrupt frame pointer, so the stack pointer need not 190 ;;; be correct. Note, though, that the register contents from the previous 191 ;;; process must have previously been saved - in other words, call this 192 ;;; routine from a trap or interrupt handler. 193 ;;;---------------------------------------------------------------------- 194 00001168 .proc _intrreturn 195 00001168 .global _intrreturn 196 00001168 _intrreturn: 197 ;; Disable interrupts - this routine must be atomic, and interrupts 198 ;; may not be currently disabled. Don't worry about saving registers 199 ;; because we're about to reload them anyway. 200 00001168 0c009758 jal _DisableIntrs 201 ;; Get our interrupt stack frame location and load it into the stack 202 ;; pointer. 203 0000116c 3c010001 lhi r1,(_currentPCB>>16)&0xffff 204 00001170 24210e40 addui r1,r1,_currentPCB&0xffff 205 00001174 8c210000 lw r1,0(r1) 206 00001178 8c3d0000 lw r29,0(r1) 207 ;; Get the previous interrupt stack frame location and make it the 208 ;; current interrupt save frame. 209 0000117c 8fa20028 lw r2,40(r29) 210 00001180 ac220000 sw 0(r1),r2 212 ;; Reload the registers for the new process. We don't have to 213 ;; load in the exact opposite order as long as we're careful to 214 ;; get the right values back in. 215 00001184 8fa30128 lw r3,296(r29) 216 00001188 00602030 movi2s iar,r3 217 0000118c 8fa3012c lw r3,300(r29) 218 00001190 00601830 movi2s isr,r3 219 00001194 8fa30130 lw r3,304(r29) 220 00001198 00603030 movi2s cause,r3 221 0000119c 8fa30134 lw r3,308(r29) 222 000011a0 00604830 movi2s fault,r3 223 000011a4 8fa30138 lw r3,312(r29) 224 000011a8 00606030 movi2s ptbase,r3 225 000011ac 8fa3013c lw r3,316(r29) 226 000011b0 00606830 movi2s ptsize,r3 227 000011b4 8fa30140 lw r3,320(r29) 228 000011b8 00607030 movi2s ptbits,r3 230 ;; Reload the floating point registers 231 000011bc 9fa000a8 ld f0,168(r29) 232 000011c0 9fa200b0 ld f2,176(r29) 233 000011c4 9fa400b8 ld f4,184(r29) 234 000011c8 9fa600c0 ld f6,192(r29) 235 000011cc 9fa800c8 ld f8,200(r29) 236 000011d0 9faa00d0 ld f10,208(r29) 237 000011d4 9fac00d8 ld f12,216(r29) 238 000011d8 9fae00e0 ld f14,224(r29) 239 000011dc 9fb000e8 ld f16,232(r29) 240 000011e0 9fb200f0 ld f18,240(r29) 241 000011e4 9fb400f8 ld f20,248(r29) 242 000011e8 9fb60100 ld f22,256(r29) 243 000011ec 9fb80108 ld f24,264(r29) 244 000011f0 9fba0110 ld f26,272(r29) 245 000011f4 9fbc0118 ld f28,280(r29) 246 000011f8 9fbe0120 ld f30,288(r29) 248 ;; Reload the integer registers. We don't reload r0 because it's 249 ;; always 0. We won't reload r29 here because we're using it as 250 ;; the stack pointer. The same goes for r1, which we'll use as 251 ;; scratch so we can store r29. 252 ;; Skip r1 - restored later 253 000011fc 8fa20030 lw r2,48(r29) 254 00001200 8fa30034 lw r3,52(r29) 255 00001204 8fa40038 lw r4,56(r29) 256 00001208 8fa5003c lw r5,60(r29) 257 0000120c 8fa60040 lw r6,64(r29) 258 00001210 8fa70044 lw r7,68(r29) 259 00001214 8fa80048 lw r8,72(r29) 260 00001218 8fa9004c lw r9,76(r29) 261 0000121c 8faa0050 lw r10,80(r29) 262 00001220 8fab0054 lw r11,84(r29) 263 00001224 8fac0058 lw r12,88(r29) 264 00001228 8fad005c lw r13,92(r29) 265 0000122c 8fae0060 lw r14,96(r29) 266 00001230 8faf0064 lw r15,100(r29) 267 00001234 8fb00068 lw r16,104(r29) 268 00001238 8fb1006c lw r17,108(r29) 269 0000123c 8fb20070 lw r18,112(r29) 270 00001240 8fb30074 lw r19,116(r29) 271 00001244 8fb40078 lw r20,120(r29) 272 00001248 8fb5007c lw r21,124(r29) 273 0000124c 8fb60080 lw r22,128(r29) 274 00001250 8fb70084 lw r23,132(r29) 275 00001254 8fb80088 lw r24,136(r29) 276 00001258 8fb9008c lw r25,140(r29) 277 0000125c 8fba0090 lw r26,144(r29) 278 00001260 8fbb0094 lw r27,148(r29) 279 00001264 8fbc0098 lw r28,152(r29) 280 ;; Skip r29 - restored later 281 00001268 8fbe00a0 lw r30,160(r29) 282 0000126c 8fbf00a4 lw r31,164(r29) 284 00001270 27bd0154 addui r29,r29,#340 285 ;; Save the current value of the stack pointer after adjusting it 286 ;; Note that this will "destroy" the stack values below this interrupt 287 ;; stack frame. This is exactly what we want! 288 00001274 ac3d0004 sw 4(r1),r29 289 00001278 37a10000 ori r1,r29,#0 290 0000127c 8c3dff48 lw r29,-184(r1); 156-340 = -184 291 00001280 8c21fed8 lw r1,-296(r1); 44-340 = -296 292 00001284 40000000 rfe 293 00001288 .endproc _intrreturn 295 ;;;---------------------------------------------------------------------- 296 ;;; SetIntrs 297 ;;; 298 ;;; This routine sets the interrupt level to the value passed (0 -> all 299 ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the 300 ;;; former value for the interrupt flags. 301 ;;;---------------------------------------------------------------------- 302 00001288 .proc _SetIntrs 303 00001288 .global _SetIntrs 304 00001288 _SetIntrs: 305 00001288 2fbd0010 subui r29,r29,#16 306 0000128c afa2000c sw 12(r29),r2; save r2 307 00001290 8fa20010 lw r2,16(r29); Get the new interrupt level 308 00001294 3042000f andi r2,r2,#0x0f; Mask off interrupt levels 309 00001298 00a00831 movs2i r1,status 310 0000129c afa10008 sw 8(r29),r1; Store the old interrupt values 311 000012a0 3021fff0 andi r1,r1,#0xfff0; Mask off old interrupt level 312 000012a4 00410825 or r1,r2,r1; OR in new interrupt level 313 000012a8 00202830 movi2s status,r1 314 000012ac 8fa10008 lw r1,8(r29); Get back the original interrupt level 315 000012b0 3021000f andi r1,r1,#0x0f; Mask off all but interrupt levels 316 000012b4 8fa2000c lw r2,12(r29); restore r2 317 000012b8 27bd0010 addui r29,r29,#16; restore stack pointer 318 000012bc 4be00000 jr r31 319 000012c0 54000000 nop 320 000012c4 .endproc _SetIntrs 322 000012c4 .proc _CurrentIntrs 323 000012c4 .global _CurrentIntrs 324 000012c4 _CurrentIntrs: 325 000012c4 00a00831 movs2i r1,status 326 000012c8 3021000f andi r1,r1,#0xf 327 000012cc 4be00000 jr r31 328 000012d0 54000000 nop 329 000012d4 .endproc _CurrentIntrs 330 ;;;---------------------------------------------------------------------- 331 ;;; _ProcessSleep 332 ;;; 333 ;;; If a context switch from elsewhere in the kernel is desired, take a 334 ;;; trap and call this routine from the trap handler. 335 ;;;---------------------------------------------------------------------- 336 000012d4 .proc _ProcessSleep 337 000012d4 .global _ProcessSleep 338 000012d4 _ProcessSleep: 339 000012d4 44000410 trap #0x410; This is a process sleep trap 340 000012d8 54000000 nop 341 000012dc 4be00000 jr r31 342 000012e0 54000000 nop 343 000012e4 .endproc _ProcessSleep 344 ; 345 ; Stub functions for DLX traps. 346 ; 347 ; Aaron Sawdey 1996; released to the Public Domain. 348 ; 350 000012e4 .align 2 351 000012e4 .proc _random 352 000012e4 .global _random 353 000012e4 _random: 354 000012e4 44002020 trap #0x2020 355 000012e8 4be00000 jr r31 356 000012ec 54000000 nop 357 000012f0 .endproc _random 359 000012f0 .proc _srandom 360 000012f0 .global _srandom 361 000012f0 _srandom: 362 000012f0 44002021 trap #0x2021 363 000012f4 4be00000 jr r31 364 000012f8 54000000 nop 365 000012fc .endproc _srandom 367 ; Compiled by GCC 368 000012fc .data 369 0000c000 .align 2 370 0000c000 _rcsid_LF2: 371 0000c000 3a206669 .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 371 0000c004 6c657379 371 0000c008 732e632c 371 0000c00c 7620312e 371 0000c010 31203230 371 0000c014 30302f30 371 0000c018 392f3230 371 0000c01c 2030313a 371 0000c020 35303a31 371 0000c024 3920656c 371 0000c028 6d204578 371 0000c02c 7020656c 371 0000c030 6d203030 371 0000c034 30 372 0000c035 .text 373 000012fc .align 2 374 000012fc .proc _isspace 375 000012fc .global _isspace 376 000012fc _isspace: 377 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 378 000012fc afbefffc sw -4(r29),r30; push fp 379 00001300 001df020 add r30,r0,r29; fp = sp 380 00001304 afbffff8 sw -8(r29),r31; push ret addr 381 00001308 2fbd0010 subui r29,r29,#16; alloc local storage 382 0000130c afa20000 sw 0(r29),r2 383 00001310 83c20003 lb r2,3(r30) 384 00001314 201f0000 addi r31,r0,#0 385 00001318 304100ff andi r1,r2,#0x00ff 386 0000131c 60210020 seqi r1,r1,#32 387 00001320 14200018 bnez r1,L6_LF2 388 00001324 54000000 nop; not filled. 389 00001328 2041fff7 addi r1,r2,#-9 390 0000132c 302100ff andi r1,r1,#0x00ff 391 00001330 70210001 sleui r1,r1,#1 392 00001334 10200008 beqz r1,L5_LF2 393 00001338 54000000 nop; not filled. 394 0000133c L6_LF2: 395 0000133c 201f0001 addi r31,r0,#1 396 00001340 L5_LF2: 397 00001340 001f0820 add r1,r0,r31 398 00001344 8fa20000 lw r2,0(r29) 399 00001348 8fdffff8 lw r31,-8(r30) 400 0000134c 001ee820 add r29,r0,r30 401 00001350 8fdefffc lw r30,-4(r30) 402 00001354 4be00000 jr r31 403 00001358 54000000 nop 404 0000135c .endproc _isspace 405 0000135c .align 2 406 0000135c .proc _isxdigit 407 0000135c .global _isxdigit 408 0000135c _isxdigit: 409 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 410 0000135c afbefffc sw -4(r29),r30; push fp 411 00001360 001df020 add r30,r0,r29; fp = sp 412 00001364 afbffff8 sw -8(r29),r31; push ret addr 413 00001368 2fbd0010 subui r29,r29,#16; alloc local storage 414 0000136c afa20000 sw 0(r29),r2 415 00001370 83df0003 lb r31,3(r30) 416 00001374 20020000 addi r2,r0,#0 417 00001378 23e1ffd0 addi r1,r31,#-48 418 0000137c 302100ff andi r1,r1,#0x00ff 419 00001380 70210009 sleui r1,r1,#9 420 00001384 14200028 bnez r1,L12_LF2 421 00001388 54000000 nop; not filled. 422 0000138c 23e1ff9f addi r1,r31,#-97 423 00001390 302100ff andi r1,r1,#0x00ff 424 00001394 70210005 sleui r1,r1,#5 425 00001398 14200014 bnez r1,L12_LF2 426 0000139c 54000000 nop; not filled. 427 000013a0 33e100ff andi r1,r31,#0x00ff 428 000013a4 64210041 snei r1,r1,#65 429 000013a8 14200008 bnez r1,L11_LF2 430 000013ac 54000000 nop; not filled. 431 000013b0 L12_LF2: 432 000013b0 20020001 addi r2,r0,#1 433 000013b4 L11_LF2: 434 000013b4 00020820 add r1,r0,r2 435 000013b8 8fa20000 lw r2,0(r29) 436 000013bc 8fdffff8 lw r31,-8(r30) 437 000013c0 001ee820 add r29,r0,r30 438 000013c4 8fdefffc lw r30,-4(r30) 439 000013c8 4be00000 jr r31 440 000013cc 54000000 nop 441 000013d0 .endproc _isxdigit 442 000013d0 .align 2 443 000013d0 .proc _DisableIntrs 444 000013d0 .global _DisableIntrs 445 000013d0 _DisableIntrs: 446 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 447 000013d0 afbefffc sw -4(r29),r30; push fp 448 000013d4 001df020 add r30,r0,r29; fp = sp 449 000013d8 afbffff8 sw -8(r29),r31; push ret addr 450 000013dc 2fbd0010 subui r29,r29,#16; alloc local storage 451 000013e0 afa20000 sw 0(r29),r2 452 000013e4 23bdfff8 addi r29,r29,#-8 453 000013e8 2002000f addi r2,r0,#15 454 000013ec afa20000 sw (r29),r2 455 000013f0 0ffffe94 jal _SetIntrs 456 000013f4 54000000 nop; not filled. 457 000013f8 23bd0008 addi r29,r29,#8 458 000013fc 8fa20000 lw r2,0(r29) 459 00001400 8fdffff8 lw r31,-8(r30) 460 00001404 001ee820 add r29,r0,r30 461 00001408 8fdefffc lw r30,-4(r30) 462 0000140c 4be00000 jr r31 463 00001410 54000000 nop 464 00001414 .endproc _DisableIntrs 465 00001414 .align 2 466 00001414 .proc _EnableIntrs 467 00001414 .global _EnableIntrs 468 00001414 _EnableIntrs: 469 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 470 00001414 afbefffc sw -4(r29),r30; push fp 471 00001418 001df020 add r30,r0,r29; fp = sp 472 0000141c afbffff8 sw -8(r29),r31; push ret addr 473 00001420 2fbd0010 subui r29,r29,#16; alloc local storage 474 00001424 afa20000 sw 0(r29),r2 475 00001428 23bdfff8 addi r29,r29,#-8 476 0000142c 20020000 addi r2,r0,#0 477 00001430 afa20000 sw (r29),r2 478 00001434 0ffffe50 jal _SetIntrs 479 00001438 54000000 nop; not filled. 480 0000143c 23bd0008 addi r29,r29,#8 481 00001440 8fa20000 lw r2,0(r29) 482 00001444 8fdffff8 lw r31,-8(r30) 483 00001448 001ee820 add r29,r0,r30 484 0000144c 8fdefffc lw r30,-4(r30) 485 00001450 4be00000 jr r31 486 00001454 54000000 nop 487 00001458 .endproc _EnableIntrs 488 00001458 .align 2 489 00001458 .proc _RestoreIntrs 490 00001458 .global _RestoreIntrs 491 00001458 _RestoreIntrs: 492 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 493 00001458 afbefffc sw -4(r29),r30; push fp 494 0000145c 001df020 add r30,r0,r29; fp = sp 495 00001460 afbffff8 sw -8(r29),r31; push ret addr 496 00001464 2fbd0010 subui r29,r29,#16; alloc local storage 497 00001468 afa20000 sw 0(r29),r2 498 0000146c 23bdfff8 addi r29,r29,#-8 499 00001470 8fc20000 lw r2,(r30) 500 00001474 afa20000 sw (r29),r2 501 00001478 0ffffe0c jal _SetIntrs 502 0000147c 54000000 nop; not filled. 503 00001480 23bd0008 addi r29,r29,#8 504 00001484 8fa20000 lw r2,0(r29) 505 00001488 8fdffff8 lw r31,-8(r30) 506 0000148c 001ee820 add r29,r0,r30 507 00001490 8fdefffc lw r30,-4(r30) 508 00001494 4be00000 jr r31 509 00001498 54000000 nop 510 0000149c .endproc _RestoreIntrs 511 0000149c .align 2 512 0000149c .proc _QueueLinkInit 513 0000149c .global _QueueLinkInit 514 0000149c _QueueLinkInit: 515 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 516 0000149c afbefffc sw -4(r29),r30; push fp 517 000014a0 001df020 add r30,r0,r29; fp = sp 518 000014a4 afbffff8 sw -8(r29),r31; push ret addr 519 000014a8 2fbd0010 subui r29,r29,#16; alloc local storage 520 000014ac afa20000 sw 0(r29),r2 521 000014b0 8fc10000 lw r1,(r30) 522 000014b4 8fc20004 lw r2,4(r30) 523 000014b8 201f0000 addi r31,r0,#0 524 000014bc ac3f0000 sw (r1),r31 525 000014c0 ac22000c sw 12(r1),r2 526 000014c4 8fa20000 lw r2,0(r29) 527 000014c8 8fdffff8 lw r31,-8(r30) 528 000014cc 001ee820 add r29,r0,r30 529 000014d0 8fdefffc lw r30,-4(r30) 530 000014d4 4be00000 jr r31 531 000014d8 54000000 nop 532 000014dc .endproc _QueueLinkInit 533 000014dc .align 2 534 000014dc .proc _QueueNext 535 000014dc .global _QueueNext 536 000014dc _QueueNext: 537 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 538 000014dc afbefffc sw -4(r29),r30; push fp 539 000014e0 001df020 add r30,r0,r29; fp = sp 540 000014e4 afbffff8 sw -8(r29),r31; push ret addr 541 000014e8 2fbd0008 subui r29,r29,#8; alloc local storage 542 000014ec 8fc10000 lw r1,(r30) 543 000014f0 8c210000 lw r1,(r1) 544 000014f4 8fdffff8 lw r31,-8(r30) 545 000014f8 001ee820 add r29,r0,r30 546 000014fc 8fdefffc lw r30,-4(r30) 547 00001500 4be00000 jr r31 548 00001504 54000000 nop 549 00001508 .endproc _QueueNext 550 00001508 .align 2 551 00001508 .proc _QueuePrev 552 00001508 .global _QueuePrev 553 00001508 _QueuePrev: 554 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 555 00001508 afbefffc sw -4(r29),r30; push fp 556 0000150c 001df020 add r30,r0,r29; fp = sp 557 00001510 afbffff8 sw -8(r29),r31; push ret addr 558 00001514 2fbd0008 subui r29,r29,#8; alloc local storage 559 00001518 8fc10000 lw r1,(r30) 560 0000151c 8c210004 lw r1,4(r1) 561 00001520 8fdffff8 lw r31,-8(r30) 562 00001524 001ee820 add r29,r0,r30 563 00001528 8fdefffc lw r30,-4(r30) 564 0000152c 4be00000 jr r31 565 00001530 54000000 nop 566 00001534 .endproc _QueuePrev 567 00001534 .align 2 568 00001534 .proc _QueueFirst 569 00001534 .global _QueueFirst 570 00001534 _QueueFirst: 571 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 572 00001534 afbefffc sw -4(r29),r30; push fp 573 00001538 001df020 add r30,r0,r29; fp = sp 574 0000153c afbffff8 sw -8(r29),r31; push ret addr 575 00001540 2fbd0008 subui r29,r29,#8; alloc local storage 576 00001544 8fc10000 lw r1,(r30) 577 00001548 8c210000 lw r1,(r1) 578 0000154c 8fdffff8 lw r31,-8(r30) 579 00001550 001ee820 add r29,r0,r30 580 00001554 8fdefffc lw r30,-4(r30) 581 00001558 4be00000 jr r31 582 0000155c 54000000 nop 583 00001560 .endproc _QueueFirst 584 00001560 .align 2 585 00001560 .proc _QueueLast 586 00001560 .global _QueueLast 587 00001560 _QueueLast: 588 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 589 00001560 afbefffc sw -4(r29),r30; push fp 590 00001564 001df020 add r30,r0,r29; fp = sp 591 00001568 afbffff8 sw -8(r29),r31; push ret addr 592 0000156c 2fbd0008 subui r29,r29,#8; alloc local storage 593 00001570 8fc10000 lw r1,(r30) 594 00001574 8c210004 lw r1,4(r1) 595 00001578 8fdffff8 lw r31,-8(r30) 596 0000157c 001ee820 add r29,r0,r30 597 00001580 8fdefffc lw r30,-4(r30) 598 00001584 4be00000 jr r31 599 00001588 54000000 nop 600 0000158c .endproc _QueueLast 601 0000158c .align 2 602 0000158c .proc _QueueInsertAfter 603 0000158c .global _QueueInsertAfter 604 0000158c _QueueInsertAfter: 605 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 606 0000158c afbefffc sw -4(r29),r30; push fp 607 00001590 001df020 add r30,r0,r29; fp = sp 608 00001594 afbffff8 sw -8(r29),r31; push ret addr 609 00001598 2fbd0010 subui r29,r29,#16; alloc local storage 610 0000159c afa20000 sw 0(r29),r2 611 000015a0 afa30004 sw 4(r29),r3 612 000015a4 8fc30000 lw r3,(r30) 613 000015a8 8fc20004 lw r2,4(r30) 614 000015ac 8fc10008 lw r1,8(r30) 615 000015b0 ac230008 sw 8(r1),r3 616 000015b4 ac220004 sw 4(r1),r2 617 000015b8 8c5f0000 lw r31,(r2) 618 000015bc ac3f0000 sw (r1),r31 619 000015c0 ac410000 sw (r2),r1 620 000015c4 8c220000 lw r2,(r1) 621 000015c8 ac410004 sw 4(r2),r1 622 000015cc 8c610008 lw r1,8(r3) 623 000015d0 20210001 addi r1,r1,#1 624 000015d4 ac610008 sw 8(r3),r1 625 000015d8 8fa20000 lw r2,0(r29) 626 000015dc 8fa30004 lw r3,4(r29) 627 000015e0 8fdffff8 lw r31,-8(r30) 628 000015e4 001ee820 add r29,r0,r30 629 000015e8 8fdefffc lw r30,-4(r30) 630 000015ec 4be00000 jr r31 631 000015f0 54000000 nop 632 000015f4 .endproc _QueueInsertAfter 633 000015f4 .align 2 634 000015f4 .proc _QueueInsertFirst 635 000015f4 .global _QueueInsertFirst 636 000015f4 _QueueInsertFirst: 637 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 638 000015f4 afbefffc sw -4(r29),r30; push fp 639 000015f8 001df020 add r30,r0,r29; fp = sp 640 000015fc afbffff8 sw -8(r29),r31; push ret addr 641 00001600 2fbd0010 subui r29,r29,#16; alloc local storage 642 00001604 afa20000 sw 0(r29),r2 643 00001608 afa30004 sw 4(r29),r3 644 0000160c 8fc30000 lw r3,(r30) 645 00001610 8fc10004 lw r1,4(r30) 646 00001614 ac230008 sw 8(r1),r3 647 00001618 ac230004 sw 4(r1),r3 648 0000161c 8c7f0000 lw r31,(r3) 649 00001620 ac3f0000 sw (r1),r31 650 00001624 ac610000 sw (r3),r1 651 00001628 8c220000 lw r2,(r1) 652 0000162c ac410004 sw 4(r2),r1 653 00001630 8c610008 lw r1,8(r3) 654 00001634 20210001 addi r1,r1,#1 655 00001638 ac610008 sw 8(r3),r1 656 0000163c 8fa20000 lw r2,0(r29) 657 00001640 8fa30004 lw r3,4(r29) 658 00001644 8fdffff8 lw r31,-8(r30) 659 00001648 001ee820 add r29,r0,r30 660 0000164c 8fdefffc lw r30,-4(r30) 661 00001650 4be00000 jr r31 662 00001654 54000000 nop 663 00001658 .endproc _QueueInsertFirst 664 00001658 .align 2 665 00001658 .proc _QueueInsertLast 666 00001658 .global _QueueInsertLast 667 00001658 _QueueInsertLast: 668 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 669 00001658 afbefffc sw -4(r29),r30; push fp 670 0000165c 001df020 add r30,r0,r29; fp = sp 671 00001660 afbffff8 sw -8(r29),r31; push ret addr 672 00001664 2fbd0010 subui r29,r29,#16; alloc local storage 673 00001668 afa20000 sw 0(r29),r2 674 0000166c afa30004 sw 4(r29),r3 675 00001670 8fc30000 lw r3,(r30) 676 00001674 8fc10004 lw r1,4(r30) 677 00001678 8c620004 lw r2,4(r3) 678 0000167c ac230008 sw 8(r1),r3 679 00001680 ac220004 sw 4(r1),r2 680 00001684 8c5f0000 lw r31,(r2) 681 00001688 ac3f0000 sw (r1),r31 682 0000168c ac410000 sw (r2),r1 683 00001690 8c220000 lw r2,(r1) 684 00001694 ac410004 sw 4(r2),r1 685 00001698 8c610008 lw r1,8(r3) 686 0000169c 20210001 addi r1,r1,#1 687 000016a0 ac610008 sw 8(r3),r1 688 000016a4 8fa20000 lw r2,0(r29) 689 000016a8 8fa30004 lw r3,4(r29) 690 000016ac 8fdffff8 lw r31,-8(r30) 691 000016b0 001ee820 add r29,r0,r30 692 000016b4 8fdefffc lw r30,-4(r30) 693 000016b8 4be00000 jr r31 694 000016bc 54000000 nop 695 000016c0 .endproc _QueueInsertLast 696 000016c0 .align 2 697 000016c0 .proc _QueueRemove 698 000016c0 .global _QueueRemove 699 000016c0 _QueueRemove: 700 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 701 000016c0 afbefffc sw -4(r29),r30; push fp 702 000016c4 001df020 add r30,r0,r29; fp = sp 703 000016c8 afbffff8 sw -8(r29),r31; push ret addr 704 000016cc 2fbd0010 subui r29,r29,#16; alloc local storage 705 000016d0 afa20000 sw 0(r29),r2 706 000016d4 afa30004 sw 4(r29),r3 707 000016d8 8fdf0000 lw r31,(r30) 708 000016dc 8fe10008 lw r1,8(r31) 709 000016e0 8c210008 lw r1,8(r1) 710 000016e4 6c210000 sgti r1,r1,#0 711 000016e8 1020002c beqz r1,L44_LF2 712 000016ec 54000000 nop; not filled. 713 000016f0 8fe10004 lw r1,4(r31) 714 000016f4 8fe30000 lw r3,(r31) 715 000016f8 ac230000 sw (r1),r3 716 000016fc 8fe10000 lw r1,(r31) 717 00001700 8fe30004 lw r3,4(r31) 718 00001704 ac230004 sw 4(r1),r3 719 00001708 8fe20008 lw r2,8(r31) 720 0000170c 8c410008 lw r1,8(r2) 721 00001710 2021ffff addi r1,r1,#-1 722 00001714 ac410008 sw 8(r2),r1 723 00001718 L44_LF2: 724 00001718 20030000 addi r3,r0,#0 725 0000171c afe30000 sw (r31),r3 726 00001720 8fa20000 lw r2,0(r29) 727 00001724 8fa30004 lw r3,4(r29) 728 00001728 8fdffff8 lw r31,-8(r30) 729 0000172c 001ee820 add r29,r0,r30 730 00001730 8fdefffc lw r30,-4(r30) 731 00001734 4be00000 jr r31 732 00001738 54000000 nop 733 0000173c .endproc _QueueRemove 734 0000173c .align 2 735 0000173c .proc _QueueLength 736 0000173c .global _QueueLength 737 0000173c _QueueLength: 738 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 739 0000173c afbefffc sw -4(r29),r30; push fp 740 00001740 001df020 add r30,r0,r29; fp = sp 741 00001744 afbffff8 sw -8(r29),r31; push ret addr 742 00001748 2fbd0008 subui r29,r29,#8; alloc local storage 743 0000174c 8fc10000 lw r1,(r30) 744 00001750 8c210008 lw r1,8(r1) 745 00001754 8fdffff8 lw r31,-8(r30) 746 00001758 001ee820 add r29,r0,r30 747 0000175c 8fdefffc lw r30,-4(r30) 748 00001760 4be00000 jr r31 749 00001764 54000000 nop 750 00001768 .endproc _QueueLength 751 00001768 .align 2 752 00001768 .proc _QueueEmpty 753 00001768 .global _QueueEmpty 754 00001768 _QueueEmpty: 755 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 756 00001768 afbefffc sw -4(r29),r30; push fp 757 0000176c 001df020 add r30,r0,r29; fp = sp 758 00001770 afbffff8 sw -8(r29),r31; push ret addr 759 00001774 2fbd0008 subui r29,r29,#8; alloc local storage 760 00001778 8fc10000 lw r1,(r30) 761 0000177c 8c210008 lw r1,8(r1) 762 00001780 60210000 seqi r1,r1,#0 763 00001784 8fdffff8 lw r31,-8(r30) 764 00001788 001ee820 add r29,r0,r30 765 0000178c 8fdefffc lw r30,-4(r30) 766 00001790 4be00000 jr r31 767 00001794 54000000 nop 768 00001798 .endproc _QueueEmpty 769 00001798 .data 770 0000c035 .align 2 771 0000c038 LC0_LF2: 772 0000c038 41747465 .ascii "Attepmting to open %s mode=%d.\n\000" 772 0000c03c 706d7469 772 0000c040 6e672074 772 0000c044 6f206f70 772 0000c048 656e2025 772 0000c04c 73206d6f 772 0000c050 64653d25 772 0000c054 642e0a00 773 0000c058 .align 2 774 0000c058 LC1_LF2: 775 0000c058 646c783a .ascii "dlx:\000" 775 0000c05c 00 776 0000c05d .align 2 777 0000c060 LC2_LF2: 778 0000c060 46696c65 .ascii "File %s opening in file system %d.\n\000" 778 0000c064 20257320 778 0000c068 6f70656e 778 0000c06c 696e6720 778 0000c070 696e2066 778 0000c074 696c6520 778 0000c078 73797374 778 0000c07c 656d2025 778 0000c080 642e0a00 779 0000c084 .align 2 780 0000c084 LC3_LF2: 781 0000c084 4f70656e .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" 781 0000c088 65642025 781 0000c08c 7320696e 781 0000c090 20465320 781 0000c094 25642c20 781 0000c098 6d6f6465 781 0000c09c 3d256420 781 0000c0a0 736c6f74 781 0000c0a4 3d25642e 781 0000c0a8 0a00 782 0000c0aa .text 783 00001798 .align 2 784 00001798 .proc _FsOpen 785 00001798 .global _FsOpen 786 00001798 _FsOpen: 787 ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. 788 00001798 afbefffc sw -4(r29),r30; push fp 789 0000179c 001df020 add r30,r0,r29; fp = sp 790 000017a0 afbffff8 sw -8(r29),r31; push ret addr 791 000017a4 2fbd0028 subui r29,r29,#40; alloc local storage 792 000017a8 afa20000 sw 0(r29),r2 793 000017ac afa30004 sw 4(r29),r3 794 000017b0 afa40008 sw 8(r29),r4 795 000017b4 afa5000c sw 12(r29),r5 796 000017b8 afa60010 sw 16(r29),r6 797 000017bc afa70014 sw 20(r29),r7 798 000017c0 afa80018 sw 24(r29),r8 799 000017c4 8fc40000 lw r4,(r30) 800 000017c8 8fc50004 lw r5,4(r30) 801 000017cc 23bdfff8 addi r29,r29,#-8 802 000017d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 803 000017d4 24420d78 addui r2,r2,(_debugstr)&0xffff 804 000017d8 afa20000 sw (r29),r2 805 000017dc 20080066 addi r8,r0,#102 806 000017e0 afa80004 sw 4(r29),r8 807 000017e4 0c00264c jal _dindex 808 000017e8 54000000 nop; not filled. 809 000017ec 23bd0008 addi r29,r29,#8 810 000017f0 64210000 snei r1,r1,#0 811 000017f4 1420002c bnez r1,L56_LF2 812 000017f8 54000000 nop; not filled. 813 000017fc 23bdfff8 addi r29,r29,#-8 814 00001800 afa20000 sw (r29),r2 815 00001804 2008002b addi r8,r0,#43 816 00001808 afa80004 sw 4(r29),r8 817 0000180c 0c002624 jal _dindex 818 00001810 54000000 nop; not filled. 819 00001814 23bd0008 addi r29,r29,#8 820 00001818 64210000 snei r1,r1,#0 821 0000181c 10200028 beqz r1,L55_LF2 822 00001820 54000000 nop; not filled. 823 00001824 L56_LF2: 824 00001824 23bdfff0 addi r29,r29,#-16 825 00001828 3c080000 lhi r8,((LC0_LF2)>>16)&0xffff 826 0000182c 2508c038 addui r8,r8,(LC0_LF2)&0xffff 827 00001830 afa80000 sw (r29),r8 828 00001834 afa40004 sw 4(r29),r4 829 00001838 afa50008 sw 8(r29),r5 830 0000183c 0c009890 jal _printf 831 00001840 54000000 nop; not filled. 832 00001844 23bd0010 addi r29,r29,#16 833 00001848 L55_LF2: 834 00001848 30a50003 andi r5,r5,#3 835 0000184c 64a10000 snei r1,r5,#0 836 00001850 10200044 beqz r1,L74_LF2 837 00001854 54000000 nop; not filled. 838 00001858 20030000 addi r3,r0,#0 839 0000185c 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 840 00001860 24c6c110 addui r6,r6,(_openfiles_LF2)&0xffff 841 00001864 00061020 add r2,r0,r6 842 00001868 L61_LF2: 843 00001868 8c410004 lw r1,4(r2) 844 0000186c 64210000 snei r1,r1,#0 845 00001870 10200018 beqz r1,L59_LF2 846 00001874 54000000 nop; not filled. 847 00001878 2042010c addi r2,r2,#268 848 0000187c 20630001 addi r3,r3,#1 849 00001880 7061001f slei r1,r3,#31 850 00001884 1420ffe0 bnez r1,L61_LF2 851 00001888 54000000 nop; not filled. 852 0000188c L59_LF2: 853 0000188c 6c61001f sgti r1,r3,#31 854 00001890 10200010 beqz r1,L64_LF2 855 00001894 54000000 nop; not filled. 856 00001898 L74_LF2: 857 00001898 2001ffff addi r1,r0,#-1 858 0000189c 08000224 j L73_LF2 859 000018a0 54000000 nop; not filled. 860 000018a4 L64_LF2: 861 000018a4 50610004 slli r1,r3,#0x4 862 000018a8 00230820 add r1,r1,r3 863 000018ac 50210002 slli r1,r1,#0x2 864 000018b0 00230822 sub r1,r1,r3 865 000018b4 50210002 slli r1,r1,#0x2 866 000018b8 00261020 add r2,r1,r6 867 000018bc ac450004 sw 4(r2),r5 868 000018c0 23bdfff0 addi r29,r29,#-16 869 000018c4 afa40000 sw (r29),r4 870 000018c8 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 871 000018cc 2421c058 addui r1,r1,(LC1_LF2)&0xffff 872 000018d0 afa10004 sw 4(r29),r1 873 000018d4 20080004 addi r8,r0,#4 874 000018d8 afa80008 sw 8(r29),r8 875 000018dc 0c002210 jal _dstrncmp 876 000018e0 54000000 nop; not filled. 877 000018e4 23bd0010 addi r29,r29,#16 878 000018e8 64210000 snei r1,r1,#0 879 000018ec 14200014 bnez r1,L65_LF2 880 000018f0 54000000 nop; not filled. 881 000018f4 20840004 addi r4,r4,#4 882 000018f8 20080001 addi r8,r0,#1 883 000018fc 08000008 j L75_LF2 884 00001900 54000000 nop; not filled. 885 00001904 L65_LF2: 886 00001904 20080000 addi r8,r0,#0 887 00001908 L75_LF2: 888 00001908 ac480000 sw (r2),r8 889 0000190c 23bdfff8 addi r29,r29,#-8 890 00001910 3c020001 lhi r2,((_debugstr)>>16)&0xffff 891 00001914 24420d78 addui r2,r2,(_debugstr)&0xffff 892 00001918 afa20000 sw (r29),r2 893 0000191c 20080066 addi r8,r0,#102 894 00001920 afa80004 sw 4(r29),r8 895 00001924 0c00250c jal _dindex 896 00001928 54000000 nop; not filled. 897 0000192c 23bd0008 addi r29,r29,#8 898 00001930 64210000 snei r1,r1,#0 899 00001934 1420002c bnez r1,L68_LF2 900 00001938 54000000 nop; not filled. 901 0000193c 23bdfff8 addi r29,r29,#-8 902 00001940 afa20000 sw (r29),r2 903 00001944 2008002b addi r8,r0,#43 904 00001948 afa80004 sw 4(r29),r8 905 0000194c 0c0024e4 jal _dindex 906 00001950 54000000 nop; not filled. 907 00001954 23bd0008 addi r29,r29,#8 908 00001958 64210000 snei r1,r1,#0 909 0000195c 1020004c beqz r1,L67_LF2 910 00001960 54000000 nop; not filled. 911 00001964 L68_LF2: 912 00001964 23bdfff0 addi r29,r29,#-16 913 00001968 3c080000 lhi r8,((LC2_LF2)>>16)&0xffff 914 0000196c 2508c060 addui r8,r8,(LC2_LF2)&0xffff 915 00001970 afa80000 sw (r29),r8 916 00001974 afa40004 sw 4(r29),r4 917 00001978 50610004 slli r1,r3,#0x4 918 0000197c 00230820 add r1,r1,r3 919 00001980 50210002 slli r1,r1,#0x2 920 00001984 00230822 sub r1,r1,r3 921 00001988 50210002 slli r1,r1,#0x2 922 0000198c 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 923 00001990 2508c110 addui r8,r8,(_openfiles_LF2)&0xffff 924 00001994 00280820 add r1,r1,r8 925 00001998 8c210000 lw r1,(r1) 926 0000199c afa10008 sw 8(r29),r1 927 000019a0 0c00972c jal _printf 928 000019a4 54000000 nop; not filled. 929 000019a8 23bd0010 addi r29,r29,#16 930 000019ac L67_LF2: 931 000019ac 23bdfff0 addi r29,r29,#-16 932 000019b0 50610004 slli r1,r3,#0x4 933 000019b4 00230820 add r1,r1,r3 934 000019b8 50210002 slli r1,r1,#0x2 935 000019bc 00230822 sub r1,r1,r3 936 000019c0 50260002 slli r6,r1,#0x2 937 000019c4 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 938 000019c8 2508c110 addui r8,r8,(_openfiles_LF2)&0xffff 939 000019cc 00c83820 add r7,r6,r8 940 000019d0 8ce20000 lw r2,(r7) 941 000019d4 50410001 slli r1,r2,#0x1 942 000019d8 00220820 add r1,r1,r2 943 000019dc 50210003 slli r1,r1,#0x3 944 000019e0 3c080000 lhi r8,((_fs_LF2)>>16)&0xffff 945 000019e4 2508c0e0 addui r8,r8,(_fs_LF2)&0xffff 946 000019e8 00280820 add r1,r1,r8 947 000019ec afa30000 sw (r29),r3 948 000019f0 afa40004 sw 4(r29),r4 949 000019f4 afa50008 sw 8(r29),r5 950 000019f8 8c210000 lw r1,(r1) 951 000019fc 4c200000 jalr r1 952 00001a00 54000000 nop; not filled. 953 00001a04 00011020 add r2,r0,r1 954 00001a08 23bd0010 addi r29,r29,#16 955 00001a0c 68410000 slti r1,r2,#0 956 00001a10 10200024 beqz r1,L69_LF2 957 00001a14 54000000 nop; not filled. 958 00001a18 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 959 00001a1c 2508c110 addui r8,r8,(_openfiles_LF2)&0xffff 960 00001a20 00c80820 add r1,r6,r8 961 00001a24 20080000 addi r8,r0,#0 962 00001a28 ac280004 sw 4(r1),r8 963 00001a2c 00020820 add r1,r0,r2 964 00001a30 08000090 j L73_LF2 965 00001a34 54000000 nop; not filled. 966 00001a38 L69_LF2: 967 00001a38 23bdfff8 addi r29,r29,#-8 968 00001a3c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 969 00001a40 24420d78 addui r2,r2,(_debugstr)&0xffff 970 00001a44 afa20000 sw (r29),r2 971 00001a48 20080066 addi r8,r0,#102 972 00001a4c afa80004 sw 4(r29),r8 973 00001a50 0c0023e0 jal _dindex 974 00001a54 54000000 nop; not filled. 975 00001a58 23bd0008 addi r29,r29,#8 976 00001a5c 64210000 snei r1,r1,#0 977 00001a60 1420002c bnez r1,L72_LF2 978 00001a64 54000000 nop; not filled. 979 00001a68 23bdfff8 addi r29,r29,#-8 980 00001a6c afa20000 sw (r29),r2 981 00001a70 2008002b addi r8,r0,#43 982 00001a74 afa80004 sw 4(r29),r8 983 00001a78 0c0023b8 jal _dindex 984 00001a7c 54000000 nop; not filled. 985 00001a80 23bd0008 addi r29,r29,#8 986 00001a84 64210000 snei r1,r1,#0 987 00001a88 10200034 beqz r1,L71_LF2 988 00001a8c 54000000 nop; not filled. 989 00001a90 L72_LF2: 990 00001a90 23bdffe8 addi r29,r29,#-24 991 00001a94 3c080000 lhi r8,((LC3_LF2)>>16)&0xffff 992 00001a98 2508c084 addui r8,r8,(LC3_LF2)&0xffff 993 00001a9c afa80000 sw (r29),r8 994 00001aa0 afa40004 sw 4(r29),r4 995 00001aa4 8ce70000 lw r7,(r7) 996 00001aa8 afa70008 sw 8(r29),r7 997 00001aac afa5000c sw 12(r29),r5 998 00001ab0 afa30010 sw 16(r29),r3 999 00001ab4 0c009618 jal _printf 1000 00001ab8 54000000 nop; not filled. 1001 00001abc 23bd0018 addi r29,r29,#24 1002 00001ac0 L71_LF2: 1003 00001ac0 00030820 add r1,r0,r3 1004 00001ac4 L73_LF2: 1005 00001ac4 8fa20000 lw r2,0(r29) 1006 00001ac8 8fa30004 lw r3,4(r29) 1007 00001acc 8fa40008 lw r4,8(r29) 1008 00001ad0 8fa5000c lw r5,12(r29) 1009 00001ad4 8fa60010 lw r6,16(r29) 1010 00001ad8 8fa70014 lw r7,20(r29) 1011 00001adc 8fa80018 lw r8,24(r29) 1012 00001ae0 8fdffff8 lw r31,-8(r30) 1013 00001ae4 001ee820 add r29,r0,r30 1014 00001ae8 8fdefffc lw r30,-4(r30) 1015 00001aec 4be00000 jr r31 1016 00001af0 54000000 nop 1017 00001af4 .endproc _FsOpen 1018 00001af4 .align 2 1019 00001af4 .proc _FsClose 1020 00001af4 .global _FsClose 1021 00001af4 _FsClose: 1022 ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. 1023 00001af4 afbefffc sw -4(r29),r30; push fp 1024 00001af8 001df020 add r30,r0,r29; fp = sp 1025 00001afc afbffff8 sw -8(r29),r31; push ret addr 1026 00001b00 2fbd0018 subui r29,r29,#24; alloc local storage 1027 00001b04 afa20000 sw 0(r29),r2 1028 00001b08 afa30004 sw 4(r29),r3 1029 00001b0c afa40008 sw 8(r29),r4 1030 00001b10 8fdf0000 lw r31,(r30) 1031 00001b14 20020000 addi r2,r0,#0 1032 00001b18 23e1ffff addi r1,r31,#-1 1033 00001b1c 7021001e sleui r1,r1,#30 1034 00001b20 10200038 beqz r1,L84_LF2 1035 00001b24 54000000 nop; not filled. 1036 00001b28 53e10004 slli r1,r31,#0x4 1037 00001b2c 003f0820 add r1,r1,r31 1038 00001b30 50210002 slli r1,r1,#0x2 1039 00001b34 003f0822 sub r1,r1,r31 1040 00001b38 50210002 slli r1,r1,#0x2 1041 00001b3c 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1042 00001b40 2484c110 addui r4,r4,(_openfiles_LF2)&0xffff 1043 00001b44 00240820 add r1,r1,r4 1044 00001b48 8c210004 lw r1,4(r1) 1045 00001b4c 64210000 snei r1,r1,#0 1046 00001b50 10200008 beqz r1,L84_LF2 1047 00001b54 54000000 nop; not filled. 1048 00001b58 20020001 addi r2,r0,#1 1049 00001b5c L84_LF2: 1050 00001b5c 64410000 snei r1,r2,#0 1051 00001b60 10200074 beqz r1,L82_LF2 1052 00001b64 54000000 nop; not filled. 1053 00001b68 23bdfff8 addi r29,r29,#-8 1054 00001b6c 53e10004 slli r1,r31,#0x4 1055 00001b70 003f0820 add r1,r1,r31 1056 00001b74 50210002 slli r1,r1,#0x2 1057 00001b78 003f0822 sub r1,r1,r31 1058 00001b7c 50230002 slli r3,r1,#0x2 1059 00001b80 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1060 00001b84 2484c110 addui r4,r4,(_openfiles_LF2)&0xffff 1061 00001b88 00640820 add r1,r3,r4 1062 00001b8c 8c220000 lw r2,(r1) 1063 00001b90 50410001 slli r1,r2,#0x1 1064 00001b94 00220820 add r1,r1,r2 1065 00001b98 50210003 slli r1,r1,#0x3 1066 00001b9c 3c040000 lhi r4,((_fs_LF2)>>16)&0xffff 1067 00001ba0 2484c0e0 addui r4,r4,(_fs_LF2)&0xffff 1068 00001ba4 00240820 add r1,r1,r4 1069 00001ba8 afbf0000 sw (r29),r31 1070 00001bac 8c210010 lw r1,16(r1) 1071 00001bb0 4c200000 jalr r1 1072 00001bb4 54000000 nop; not filled. 1073 00001bb8 23bd0008 addi r29,r29,#8 1074 00001bbc 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1075 00001bc0 2484c110 addui r4,r4,(_openfiles_LF2)&0xffff 1076 00001bc4 00641020 add r2,r3,r4 1077 00001bc8 20040000 addi r4,r0,#0 1078 00001bcc ac440004 sw 4(r2),r4 1079 00001bd0 08000008 j L86_LF2 1080 00001bd4 54000000 nop; not filled. 1081 00001bd8 L82_LF2: 1082 00001bd8 2001ffff addi r1,r0,#-1 1083 00001bdc L86_LF2: 1084 00001bdc 8fa20000 lw r2,0(r29) 1085 00001be0 8fa30004 lw r3,4(r29) 1086 00001be4 8fa40008 lw r4,8(r29) 1087 00001be8 8fdffff8 lw r31,-8(r30) 1088 00001bec 001ee820 add r29,r0,r30 1089 00001bf0 8fdefffc lw r30,-4(r30) 1090 00001bf4 4be00000 jr r31 1091 00001bf8 54000000 nop 1092 00001bfc .endproc _FsClose 1093 00001bfc .align 2 1094 00001bfc .proc _FsRead 1095 00001bfc .global _FsRead 1096 00001bfc _FsRead: 1097 ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. 1098 00001bfc afbefffc sw -4(r29),r30; push fp 1099 00001c00 001df020 add r30,r0,r29; fp = sp 1100 00001c04 afbffff8 sw -8(r29),r31; push ret addr 1101 00001c08 2fbd0010 subui r29,r29,#16; alloc local storage 1102 00001c0c afa20000 sw 0(r29),r2 1103 00001c10 afa30004 sw 4(r29),r3 1104 00001c14 8fdf0000 lw r31,(r30) 1105 00001c18 20020000 addi r2,r0,#0 1106 00001c1c 23e1ffff addi r1,r31,#-1 1107 00001c20 7021001e sleui r1,r1,#30 1108 00001c24 10200038 beqz r1,L94_LF2 1109 00001c28 54000000 nop; not filled. 1110 00001c2c 53e10004 slli r1,r31,#0x4 1111 00001c30 003f0820 add r1,r1,r31 1112 00001c34 50210002 slli r1,r1,#0x2 1113 00001c38 003f0822 sub r1,r1,r31 1114 00001c3c 50210002 slli r1,r1,#0x2 1115 00001c40 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1116 00001c44 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1117 00001c48 00230820 add r1,r1,r3 1118 00001c4c 8c210004 lw r1,4(r1) 1119 00001c50 64210000 snei r1,r1,#0 1120 00001c54 10200008 beqz r1,L94_LF2 1121 00001c58 54000000 nop; not filled. 1122 00001c5c 20020001 addi r2,r0,#1 1123 00001c60 L94_LF2: 1124 00001c60 64410000 snei r1,r2,#0 1125 00001c64 10200070 beqz r1,L92_LF2 1126 00001c68 54000000 nop; not filled. 1127 00001c6c 23bdfff0 addi r29,r29,#-16 1128 00001c70 53e10004 slli r1,r31,#0x4 1129 00001c74 003f0820 add r1,r1,r31 1130 00001c78 50210002 slli r1,r1,#0x2 1131 00001c7c 003f0822 sub r1,r1,r31 1132 00001c80 50210002 slli r1,r1,#0x2 1133 00001c84 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1134 00001c88 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1135 00001c8c 00230820 add r1,r1,r3 1136 00001c90 8c220000 lw r2,(r1) 1137 00001c94 50410001 slli r1,r2,#0x1 1138 00001c98 00220820 add r1,r1,r2 1139 00001c9c 50210003 slli r1,r1,#0x3 1140 00001ca0 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1141 00001ca4 2463c0e0 addui r3,r3,(_fs_LF2)&0xffff 1142 00001ca8 00230820 add r1,r1,r3 1143 00001cac afbf0000 sw (r29),r31 1144 00001cb0 8fc30004 lw r3,4(r30) 1145 00001cb4 afa30004 sw 4(r29),r3 1146 00001cb8 8fc30008 lw r3,8(r30) 1147 00001cbc afa30008 sw 8(r29),r3 1148 00001cc0 8c210004 lw r1,4(r1) 1149 00001cc4 4c200000 jalr r1 1150 00001cc8 54000000 nop; not filled. 1151 00001ccc 23bd0010 addi r29,r29,#16 1152 00001cd0 08000008 j L91_LF2 1153 00001cd4 54000000 nop; not filled. 1154 00001cd8 L92_LF2: 1155 00001cd8 2001ffff addi r1,r0,#-1 1156 00001cdc L91_LF2: 1157 00001cdc 8fa20000 lw r2,0(r29) 1158 00001ce0 8fa30004 lw r3,4(r29) 1159 00001ce4 8fdffff8 lw r31,-8(r30) 1160 00001ce8 001ee820 add r29,r0,r30 1161 00001cec 8fdefffc lw r30,-4(r30) 1162 00001cf0 4be00000 jr r31 1163 00001cf4 54000000 nop 1164 00001cf8 .endproc _FsRead 1165 00001cf8 .align 2 1166 00001cf8 .proc _FsWrite 1167 00001cf8 .global _FsWrite 1168 00001cf8 _FsWrite: 1169 ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. 1170 00001cf8 afbefffc sw -4(r29),r30; push fp 1171 00001cfc 001df020 add r30,r0,r29; fp = sp 1172 00001d00 afbffff8 sw -8(r29),r31; push ret addr 1173 00001d04 2fbd0010 subui r29,r29,#16; alloc local storage 1174 00001d08 afa20000 sw 0(r29),r2 1175 00001d0c afa30004 sw 4(r29),r3 1176 00001d10 8fdf0000 lw r31,(r30) 1177 00001d14 20020000 addi r2,r0,#0 1178 00001d18 23e1ffff addi r1,r31,#-1 1179 00001d1c 7021001e sleui r1,r1,#30 1180 00001d20 10200038 beqz r1,L103_LF2 1181 00001d24 54000000 nop; not filled. 1182 00001d28 53e10004 slli r1,r31,#0x4 1183 00001d2c 003f0820 add r1,r1,r31 1184 00001d30 50210002 slli r1,r1,#0x2 1185 00001d34 003f0822 sub r1,r1,r31 1186 00001d38 50210002 slli r1,r1,#0x2 1187 00001d3c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1188 00001d40 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1189 00001d44 00230820 add r1,r1,r3 1190 00001d48 8c210004 lw r1,4(r1) 1191 00001d4c 64210000 snei r1,r1,#0 1192 00001d50 10200008 beqz r1,L103_LF2 1193 00001d54 54000000 nop; not filled. 1194 00001d58 20020001 addi r2,r0,#1 1195 00001d5c L103_LF2: 1196 00001d5c 64410000 snei r1,r2,#0 1197 00001d60 10200070 beqz r1,L101_LF2 1198 00001d64 54000000 nop; not filled. 1199 00001d68 23bdfff0 addi r29,r29,#-16 1200 00001d6c 53e10004 slli r1,r31,#0x4 1201 00001d70 003f0820 add r1,r1,r31 1202 00001d74 50210002 slli r1,r1,#0x2 1203 00001d78 003f0822 sub r1,r1,r31 1204 00001d7c 50210002 slli r1,r1,#0x2 1205 00001d80 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1206 00001d84 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1207 00001d88 00230820 add r1,r1,r3 1208 00001d8c 8c220000 lw r2,(r1) 1209 00001d90 50410001 slli r1,r2,#0x1 1210 00001d94 00220820 add r1,r1,r2 1211 00001d98 50210003 slli r1,r1,#0x3 1212 00001d9c 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1213 00001da0 2463c0e0 addui r3,r3,(_fs_LF2)&0xffff 1214 00001da4 00230820 add r1,r1,r3 1215 00001da8 afbf0000 sw (r29),r31 1216 00001dac 8fc30004 lw r3,4(r30) 1217 00001db0 afa30004 sw 4(r29),r3 1218 00001db4 8fc30008 lw r3,8(r30) 1219 00001db8 afa30008 sw 8(r29),r3 1220 00001dbc 8c210008 lw r1,8(r1) 1221 00001dc0 4c200000 jalr r1 1222 00001dc4 54000000 nop; not filled. 1223 00001dc8 23bd0010 addi r29,r29,#16 1224 00001dcc 08000008 j L100_LF2 1225 00001dd0 54000000 nop; not filled. 1226 00001dd4 L101_LF2: 1227 00001dd4 2001ffff addi r1,r0,#-1 1228 00001dd8 L100_LF2: 1229 00001dd8 8fa20000 lw r2,0(r29) 1230 00001ddc 8fa30004 lw r3,4(r29) 1231 00001de0 8fdffff8 lw r31,-8(r30) 1232 00001de4 001ee820 add r29,r0,r30 1233 00001de8 8fdefffc lw r30,-4(r30) 1234 00001dec 4be00000 jr r31 1235 00001df0 54000000 nop 1236 00001df4 .endproc _FsWrite 1237 00001df4 .align 2 1238 00001df4 .proc _FsSeek 1239 00001df4 .global _FsSeek 1240 00001df4 _FsSeek: 1241 ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. 1242 00001df4 afbefffc sw -4(r29),r30; push fp 1243 00001df8 001df020 add r30,r0,r29; fp = sp 1244 00001dfc afbffff8 sw -8(r29),r31; push ret addr 1245 00001e00 2fbd0010 subui r29,r29,#16; alloc local storage 1246 00001e04 afa20000 sw 0(r29),r2 1247 00001e08 afa30004 sw 4(r29),r3 1248 00001e0c 8fdf0000 lw r31,(r30) 1249 00001e10 20020000 addi r2,r0,#0 1250 00001e14 23e1ffff addi r1,r31,#-1 1251 00001e18 7021001e sleui r1,r1,#30 1252 00001e1c 10200038 beqz r1,L112_LF2 1253 00001e20 54000000 nop; not filled. 1254 00001e24 53e10004 slli r1,r31,#0x4 1255 00001e28 003f0820 add r1,r1,r31 1256 00001e2c 50210002 slli r1,r1,#0x2 1257 00001e30 003f0822 sub r1,r1,r31 1258 00001e34 50210002 slli r1,r1,#0x2 1259 00001e38 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1260 00001e3c 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1261 00001e40 00230820 add r1,r1,r3 1262 00001e44 8c210004 lw r1,4(r1) 1263 00001e48 64210000 snei r1,r1,#0 1264 00001e4c 10200008 beqz r1,L112_LF2 1265 00001e50 54000000 nop; not filled. 1266 00001e54 20020001 addi r2,r0,#1 1267 00001e58 L112_LF2: 1268 00001e58 64410000 snei r1,r2,#0 1269 00001e5c 10200070 beqz r1,L110_LF2 1270 00001e60 54000000 nop; not filled. 1271 00001e64 23bdfff0 addi r29,r29,#-16 1272 00001e68 53e10004 slli r1,r31,#0x4 1273 00001e6c 003f0820 add r1,r1,r31 1274 00001e70 50210002 slli r1,r1,#0x2 1275 00001e74 003f0822 sub r1,r1,r31 1276 00001e78 50210002 slli r1,r1,#0x2 1277 00001e7c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1278 00001e80 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1279 00001e84 00230820 add r1,r1,r3 1280 00001e88 8c220000 lw r2,(r1) 1281 00001e8c 50410001 slli r1,r2,#0x1 1282 00001e90 00220820 add r1,r1,r2 1283 00001e94 50210003 slli r1,r1,#0x3 1284 00001e98 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1285 00001e9c 2463c0e0 addui r3,r3,(_fs_LF2)&0xffff 1286 00001ea0 00230820 add r1,r1,r3 1287 00001ea4 afbf0000 sw (r29),r31 1288 00001ea8 8fc30004 lw r3,4(r30) 1289 00001eac afa30004 sw 4(r29),r3 1290 00001eb0 8fc30008 lw r3,8(r30) 1291 00001eb4 afa30008 sw 8(r29),r3 1292 00001eb8 8c21000c lw r1,12(r1) 1293 00001ebc 4c200000 jalr r1 1294 00001ec0 54000000 nop; not filled. 1295 00001ec4 23bd0010 addi r29,r29,#16 1296 00001ec8 08000008 j L109_LF2 1297 00001ecc 54000000 nop; not filled. 1298 00001ed0 L110_LF2: 1299 00001ed0 2001ffff addi r1,r0,#-1 1300 00001ed4 L109_LF2: 1301 00001ed4 8fa20000 lw r2,0(r29) 1302 00001ed8 8fa30004 lw r3,4(r29) 1303 00001edc 8fdffff8 lw r31,-8(r30) 1304 00001ee0 001ee820 add r29,r0,r30 1305 00001ee4 8fdefffc lw r30,-4(r30) 1306 00001ee8 4be00000 jr r31 1307 00001eec 54000000 nop 1308 00001ef0 .endproc _FsSeek 1309 00001ef0 .align 2 1310 00001ef0 .proc _FsDelete 1311 00001ef0 .global _FsDelete 1312 00001ef0 _FsDelete: 1313 ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. 1314 00001ef0 afbefffc sw -4(r29),r30; push fp 1315 00001ef4 001df020 add r30,r0,r29; fp = sp 1316 00001ef8 afbffff8 sw -8(r29),r31; push ret addr 1317 00001efc 2fbd0010 subui r29,r29,#16; alloc local storage 1318 00001f00 afa20000 sw 0(r29),r2 1319 00001f04 afa30004 sw 4(r29),r3 1320 00001f08 8fc20000 lw r2,(r30) 1321 00001f0c 23bdfff0 addi r29,r29,#-16 1322 00001f10 afa20000 sw (r29),r2 1323 00001f14 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 1324 00001f18 2421c058 addui r1,r1,(LC1_LF2)&0xffff 1325 00001f1c afa10004 sw 4(r29),r1 1326 00001f20 20030004 addi r3,r0,#4 1327 00001f24 afa30008 sw 8(r29),r3 1328 00001f28 0c001bc4 jal _dstrncmp 1329 00001f2c 54000000 nop; not filled. 1330 00001f30 23bd0010 addi r29,r29,#16 1331 00001f34 64210000 snei r1,r1,#0 1332 00001f38 1420001c bnez r1,L118_LF2 1333 00001f3c 54000000 nop; not filled. 1334 00001f40 20420004 addi r2,r2,#4 1335 00001f44 23bdfff8 addi r29,r29,#-8 1336 00001f48 3c010000 lhi r1,((_fs_LF2+44)>>16)&0xffff 1337 00001f4c 2421c10c addui r1,r1,(_fs_LF2+44)&0xffff 1338 00001f50 08000010 j L120_LF2 1339 00001f54 54000000 nop; not filled. 1340 00001f58 L118_LF2: 1341 00001f58 23bdfff8 addi r29,r29,#-8 1342 00001f5c 3c010000 lhi r1,((_fs_LF2+20)>>16)&0xffff 1343 00001f60 2421c0f4 addui r1,r1,(_fs_LF2+20)&0xffff 1344 00001f64 L120_LF2: 1345 00001f64 afa20000 sw (r29),r2 1346 00001f68 8c210000 lw r1,(r1) 1347 00001f6c 4c200000 jalr r1 1348 00001f70 54000000 nop; not filled. 1349 00001f74 23bd0008 addi r29,r29,#8 1350 00001f78 8fa20000 lw r2,0(r29) 1351 00001f7c 8fa30004 lw r3,4(r29) 1352 00001f80 8fdffff8 lw r31,-8(r30) 1353 00001f84 001ee820 add r29,r0,r30 1354 00001f88 8fdefffc lw r30,-4(r30) 1355 00001f8c 4be00000 jr r31 1356 00001f90 54000000 nop 1357 00001f94 .endproc _FsDelete 1358 00001f94 .data 1359 0000c0aa .align 2 1360 0000c0ac LC4_LF2: 1361 0000c0ac 41747465 .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" 1361 0000c0b0 6d707469 1361 0000c0b4 6e672074 1361 0000c0b8 6f206f70 1361 0000c0bc 656e2066 1361 0000c0c0 696c6520 1361 0000c0c4 25732069 1361 0000c0c8 6e746f20 1361 0000c0cc 64657363 1361 0000c0d0 2025642c 1361 0000c0d4 206d6f64 1361 0000c0d8 65202564 1361 0000c0dc 2e0a00 1362 0000c0df .text 1363 00001f94 .align 2 1364 00001f94 .proc _FsUnixOpen 1365 00001f94 .global _FsUnixOpen 1366 00001f94 _FsUnixOpen: 1367 ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. 1368 00001f94 afbefffc sw -4(r29),r30; push fp 1369 00001f98 001df020 add r30,r0,r29; fp = sp 1370 00001f9c afbffff8 sw -8(r29),r31; push ret addr 1371 00001fa0 2fbd0020 subui r29,r29,#32; alloc local storage 1372 00001fa4 afa20000 sw 0(r29),r2 1373 00001fa8 afa30004 sw 4(r29),r3 1374 00001fac afa40008 sw 8(r29),r4 1375 00001fb0 afa5000c sw 12(r29),r5 1376 00001fb4 afa60010 sw 16(r29),r6 1377 00001fb8 8fc40000 lw r4,(r30) 1378 00001fbc 8fc30004 lw r3,4(r30) 1379 00001fc0 8fc50008 lw r5,8(r30) 1380 00001fc4 23bdfff8 addi r29,r29,#-8 1381 00001fc8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 1382 00001fcc 24420d78 addui r2,r2,(_debugstr)&0xffff 1383 00001fd0 afa20000 sw (r29),r2 1384 00001fd4 20060066 addi r6,r0,#102 1385 00001fd8 afa60004 sw 4(r29),r6 1386 00001fdc 0c001e54 jal _dindex 1387 00001fe0 54000000 nop; not filled. 1388 00001fe4 23bd0008 addi r29,r29,#8 1389 00001fe8 64210000 snei r1,r1,#0 1390 00001fec 1420002c bnez r1,L127_LF2 1391 00001ff0 54000000 nop; not filled. 1392 00001ff4 23bdfff8 addi r29,r29,#-8 1393 00001ff8 afa20000 sw (r29),r2 1394 00001ffc 2006002b addi r6,r0,#43 1395 00002000 afa60004 sw 4(r29),r6 1396 00002004 0c001e2c jal _dindex 1397 00002008 54000000 nop; not filled. 1398 0000200c 23bd0008 addi r29,r29,#8 1399 00002010 64210000 snei r1,r1,#0 1400 00002014 1020002c beqz r1,L126_LF2 1401 00002018 54000000 nop; not filled. 1402 0000201c L127_LF2: 1403 0000201c 23bdfff0 addi r29,r29,#-16 1404 00002020 3c060000 lhi r6,((LC4_LF2)>>16)&0xffff 1405 00002024 24c6c0ac addui r6,r6,(LC4_LF2)&0xffff 1406 00002028 afa60000 sw (r29),r6 1407 0000202c afa30004 sw 4(r29),r3 1408 00002030 afa40008 sw 8(r29),r4 1409 00002034 afa5000c sw 12(r29),r5 1410 00002038 0c009094 jal _printf 1411 0000203c 54000000 nop; not filled. 1412 00002040 23bd0010 addi r29,r29,#16 1413 00002044 L126_LF2: 1414 00002044 23bdfff8 addi r29,r29,#-8 1415 00002048 afa30000 sw (r29),r3 1416 0000204c afa50004 sw 4(r29),r5 1417 00002050 0c008fec jal _open 1418 00002054 54000000 nop; not filled. 1419 00002058 00011820 add r3,r0,r1 1420 0000205c 50810004 slli r1,r4,#0x4 1421 00002060 00240820 add r1,r1,r4 1422 00002064 50210002 slli r1,r1,#0x2 1423 00002068 00240822 sub r1,r1,r4 1424 0000206c 50210002 slli r1,r1,#0x2 1425 00002070 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 1426 00002074 24c6c110 addui r6,r6,(_openfiles_LF2)&0xffff 1427 00002078 00260820 add r1,r1,r6 1428 0000207c ac230108 sw 264(r1),r3 1429 00002080 23bd0008 addi r29,r29,#8 1430 00002084 68620000 slti r2,r3,#0 1431 00002088 00030820 add r1,r0,r3 1432 0000208c 14400008 bnez r2,L128_LF2 1433 00002090 54000000 nop; not filled. 1434 00002094 20010001 addi r1,r0,#1 1435 00002098 L128_LF2: 1436 00002098 8fa20000 lw r2,0(r29) 1437 0000209c 8fa30004 lw r3,4(r29) 1438 000020a0 8fa40008 lw r4,8(r29) 1439 000020a4 8fa5000c lw r5,12(r29) 1440 000020a8 8fa60010 lw r6,16(r29) 1441 000020ac 8fdffff8 lw r31,-8(r30) 1442 000020b0 001ee820 add r29,r0,r30 1443 000020b4 8fdefffc lw r30,-4(r30) 1444 000020b8 4be00000 jr r31 1445 000020bc 54000000 nop 1446 000020c0 .endproc _FsUnixOpen 1447 000020c0 .align 2 1448 000020c0 .proc _FsUnixRead 1449 000020c0 .global _FsUnixRead 1450 000020c0 _FsUnixRead: 1451 ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. 1452 000020c0 afbefffc sw -4(r29),r30; push fp 1453 000020c4 001df020 add r30,r0,r29; fp = sp 1454 000020c8 afbffff8 sw -8(r29),r31; push ret addr 1455 000020cc 2fbd0018 subui r29,r29,#24; alloc local storage 1456 000020d0 afa20000 sw 0(r29),r2 1457 000020d4 afa30004 sw 4(r29),r3 1458 000020d8 afa40008 sw 8(r29),r4 1459 000020dc afa5000c sw 12(r29),r5 1460 000020e0 8fc20000 lw r2,(r30) 1461 000020e4 8fc30004 lw r3,4(r30) 1462 000020e8 8fc40008 lw r4,8(r30) 1463 000020ec 23bdfff0 addi r29,r29,#-16 1464 000020f0 50410004 slli r1,r2,#0x4 1465 000020f4 00220820 add r1,r1,r2 1466 000020f8 50210002 slli r1,r1,#0x2 1467 000020fc 00220822 sub r1,r1,r2 1468 00002100 50210002 slli r1,r1,#0x2 1469 00002104 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1470 00002108 24a5c110 addui r5,r5,(_openfiles_LF2)&0xffff 1471 0000210c 00250820 add r1,r1,r5 1472 00002110 8c210108 lw r1,264(r1) 1473 00002114 afa10000 sw (r29),r1 1474 00002118 afa30004 sw 4(r29),r3 1475 0000211c afa40008 sw 8(r29),r4 1476 00002120 0c008f34 jal _read 1477 00002124 54000000 nop; not filled. 1478 00002128 23bd0010 addi r29,r29,#16 1479 0000212c 8fa20000 lw r2,0(r29) 1480 00002130 8fa30004 lw r3,4(r29) 1481 00002134 8fa40008 lw r4,8(r29) 1482 00002138 8fa5000c lw r5,12(r29) 1483 0000213c 8fdffff8 lw r31,-8(r30) 1484 00002140 001ee820 add r29,r0,r30 1485 00002144 8fdefffc lw r30,-4(r30) 1486 00002148 4be00000 jr r31 1487 0000214c 54000000 nop 1488 00002150 .endproc _FsUnixRead 1489 00002150 .align 2 1490 00002150 .proc _FsUnixWrite 1491 00002150 .global _FsUnixWrite 1492 00002150 _FsUnixWrite: 1493 ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. 1494 00002150 afbefffc sw -4(r29),r30; push fp 1495 00002154 001df020 add r30,r0,r29; fp = sp 1496 00002158 afbffff8 sw -8(r29),r31; push ret addr 1497 0000215c 2fbd0018 subui r29,r29,#24; alloc local storage 1498 00002160 afa20000 sw 0(r29),r2 1499 00002164 afa30004 sw 4(r29),r3 1500 00002168 afa40008 sw 8(r29),r4 1501 0000216c afa5000c sw 12(r29),r5 1502 00002170 8fc20000 lw r2,(r30) 1503 00002174 8fc30004 lw r3,4(r30) 1504 00002178 8fc40008 lw r4,8(r30) 1505 0000217c 23bdfff0 addi r29,r29,#-16 1506 00002180 50410004 slli r1,r2,#0x4 1507 00002184 00220820 add r1,r1,r2 1508 00002188 50210002 slli r1,r1,#0x2 1509 0000218c 00220822 sub r1,r1,r2 1510 00002190 50210002 slli r1,r1,#0x2 1511 00002194 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1512 00002198 24a5c110 addui r5,r5,(_openfiles_LF2)&0xffff 1513 0000219c 00250820 add r1,r1,r5 1514 000021a0 8c210108 lw r1,264(r1) 1515 000021a4 afa10000 sw (r29),r1 1516 000021a8 afa30004 sw 4(r29),r3 1517 000021ac afa40008 sw 8(r29),r4 1518 000021b0 0c008eb0 jal _write 1519 000021b4 54000000 nop; not filled. 1520 000021b8 23bd0010 addi r29,r29,#16 1521 000021bc 8fa20000 lw r2,0(r29) 1522 000021c0 8fa30004 lw r3,4(r29) 1523 000021c4 8fa40008 lw r4,8(r29) 1524 000021c8 8fa5000c lw r5,12(r29) 1525 000021cc 8fdffff8 lw r31,-8(r30) 1526 000021d0 001ee820 add r29,r0,r30 1527 000021d4 8fdefffc lw r30,-4(r30) 1528 000021d8 4be00000 jr r31 1529 000021dc 54000000 nop 1530 000021e0 .endproc _FsUnixWrite 1531 000021e0 .align 2 1532 000021e0 .proc _FsUnixSeek 1533 000021e0 .global _FsUnixSeek 1534 000021e0 _FsUnixSeek: 1535 ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. 1536 000021e0 afbefffc sw -4(r29),r30; push fp 1537 000021e4 001df020 add r30,r0,r29; fp = sp 1538 000021e8 afbffff8 sw -8(r29),r31; push ret addr 1539 000021ec 2fbd0018 subui r29,r29,#24; alloc local storage 1540 000021f0 afa20000 sw 0(r29),r2 1541 000021f4 afa30004 sw 4(r29),r3 1542 000021f8 afa40008 sw 8(r29),r4 1543 000021fc afa5000c sw 12(r29),r5 1544 00002200 8fc20000 lw r2,(r30) 1545 00002204 8fc30004 lw r3,4(r30) 1546 00002208 8fc40008 lw r4,8(r30) 1547 0000220c 23bdfff0 addi r29,r29,#-16 1548 00002210 50410004 slli r1,r2,#0x4 1549 00002214 00220820 add r1,r1,r2 1550 00002218 50210002 slli r1,r1,#0x2 1551 0000221c 00220822 sub r1,r1,r2 1552 00002220 50210002 slli r1,r1,#0x2 1553 00002224 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1554 00002228 24a5c110 addui r5,r5,(_openfiles_LF2)&0xffff 1555 0000222c 00250820 add r1,r1,r5 1556 00002230 8c210108 lw r1,264(r1) 1557 00002234 afa10000 sw (r29),r1 1558 00002238 afa30004 sw 4(r29),r3 1559 0000223c afa40008 sw 8(r29),r4 1560 00002240 0c008e2c jal _lseek 1561 00002244 54000000 nop; not filled. 1562 00002248 23bd0010 addi r29,r29,#16 1563 0000224c 8fa20000 lw r2,0(r29) 1564 00002250 8fa30004 lw r3,4(r29) 1565 00002254 8fa40008 lw r4,8(r29) 1566 00002258 8fa5000c lw r5,12(r29) 1567 0000225c 8fdffff8 lw r31,-8(r30) 1568 00002260 001ee820 add r29,r0,r30 1569 00002264 8fdefffc lw r30,-4(r30) 1570 00002268 4be00000 jr r31 1571 0000226c 54000000 nop 1572 00002270 .endproc _FsUnixSeek 1573 00002270 .align 2 1574 00002270 .proc _FsUnixClose 1575 00002270 .global _FsUnixClose 1576 00002270 _FsUnixClose: 1577 ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. 1578 00002270 afbefffc sw -4(r29),r30; push fp 1579 00002274 001df020 add r30,r0,r29; fp = sp 1580 00002278 afbffff8 sw -8(r29),r31; push ret addr 1581 0000227c 2fbd0010 subui r29,r29,#16; alloc local storage 1582 00002280 afa20000 sw 0(r29),r2 1583 00002284 afa30004 sw 4(r29),r3 1584 00002288 8fc20000 lw r2,(r30) 1585 0000228c 23bdfff8 addi r29,r29,#-8 1586 00002290 50410004 slli r1,r2,#0x4 1587 00002294 00220820 add r1,r1,r2 1588 00002298 50210002 slli r1,r1,#0x2 1589 0000229c 00220822 sub r1,r1,r2 1590 000022a0 50210002 slli r1,r1,#0x2 1591 000022a4 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1592 000022a8 2463c110 addui r3,r3,(_openfiles_LF2)&0xffff 1593 000022ac 00230820 add r1,r1,r3 1594 000022b0 8c210108 lw r1,264(r1) 1595 000022b4 afa10000 sw (r29),r1 1596 000022b8 0c008d90 jal _close 1597 000022bc 54000000 nop; not filled. 1598 000022c0 23bd0008 addi r29,r29,#8 1599 000022c4 8fa20000 lw r2,0(r29) 1600 000022c8 8fa30004 lw r3,4(r29) 1601 000022cc 8fdffff8 lw r31,-8(r30) 1602 000022d0 001ee820 add r29,r0,r30 1603 000022d4 8fdefffc lw r30,-4(r30) 1604 000022d8 4be00000 jr r31 1605 000022dc 54000000 nop 1606 000022e0 .endproc _FsUnixClose 1607 000022e0 .align 2 1608 000022e0 .proc _FsUnixDelete 1609 000022e0 .global _FsUnixDelete 1610 000022e0 _FsUnixDelete: 1611 ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. 1612 000022e0 afbefffc sw -4(r29),r30; push fp 1613 000022e4 001df020 add r30,r0,r29; fp = sp 1614 000022e8 afbffff8 sw -8(r29),r31; push ret addr 1615 000022ec 2fbd0008 subui r29,r29,#8; alloc local storage 1616 000022f0 2001ffff addi r1,r0,#-1 1617 000022f4 8fdffff8 lw r31,-8(r30) 1618 000022f8 001ee820 add r29,r0,r30 1619 000022fc 8fdefffc lw r30,-4(r30) 1620 00002300 4be00000 jr r31 1621 00002304 54000000 nop 1622 00002308 .endproc _FsUnixDelete 1623 00002308 .align 2 1624 00002308 .proc _FsDlxIo 1625 00002308 .global _FsDlxIo 1626 00002308 _FsDlxIo: 1627 ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. 1628 00002308 afbefffc sw -4(r29),r30; push fp 1629 0000230c 001df020 add r30,r0,r29; fp = sp 1630 00002310 afbffff8 sw -8(r29),r31; push ret addr 1631 00002314 2fbd0008 subui r29,r29,#8; alloc local storage 1632 00002318 20010001 addi r1,r0,#1 1633 0000231c 8fdffff8 lw r31,-8(r30) 1634 00002320 001ee820 add r29,r0,r30 1635 00002324 8fdefffc lw r30,-4(r30) 1636 00002328 4be00000 jr r31 1637 0000232c 54000000 nop 1638 00002330 .endproc _FsDlxIo 1639 00002330 .align 2 1640 00002330 .proc _FsDlxRead 1641 00002330 .global _FsDlxRead 1642 00002330 _FsDlxRead: 1643 ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. 1644 00002330 afbefffc sw -4(r29),r30; push fp 1645 00002334 001df020 add r30,r0,r29; fp = sp 1646 00002338 afbffff8 sw -8(r29),r31; push ret addr 1647 0000233c 2fbd0008 subui r29,r29,#8; alloc local storage 1648 00002340 20010001 addi r1,r0,#1 1649 00002344 8fdffff8 lw r31,-8(r30) 1650 00002348 001ee820 add r29,r0,r30 1651 0000234c 8fdefffc lw r30,-4(r30) 1652 00002350 4be00000 jr r31 1653 00002354 54000000 nop 1654 00002358 .endproc _FsDlxRead 1655 00002358 .align 2 1656 00002358 .proc _FsDlxWrite 1657 00002358 .global _FsDlxWrite 1658 00002358 _FsDlxWrite: 1659 ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. 1660 00002358 afbefffc sw -4(r29),r30; push fp 1661 0000235c 001df020 add r30,r0,r29; fp = sp 1662 00002360 afbffff8 sw -8(r29),r31; push ret addr 1663 00002364 2fbd0008 subui r29,r29,#8; alloc local storage 1664 00002368 20010001 addi r1,r0,#1 1665 0000236c 8fdffff8 lw r31,-8(r30) 1666 00002370 001ee820 add r29,r0,r30 1667 00002374 8fdefffc lw r30,-4(r30) 1668 00002378 4be00000 jr r31 1669 0000237c 54000000 nop 1670 00002380 .endproc _FsDlxWrite 1671 00002380 .align 2 1672 00002380 .proc _FsDlxOpen 1673 00002380 .global _FsDlxOpen 1674 00002380 _FsDlxOpen: 1675 ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. 1676 00002380 afbefffc sw -4(r29),r30; push fp 1677 00002384 001df020 add r30,r0,r29; fp = sp 1678 00002388 afbffff8 sw -8(r29),r31; push ret addr 1679 0000238c 2fbd0010 subui r29,r29,#16; alloc local storage 1680 00002390 afa20000 sw 0(r29),r2 1681 00002394 8fc10000 lw r1,(r30) 1682 00002398 50220004 slli r2,r1,#0x4 1683 0000239c 00411020 add r2,r2,r1 1684 000023a0 50420002 slli r2,r2,#0x2 1685 000023a4 00410822 sub r1,r2,r1 1686 000023a8 50210002 slli r1,r1,#0x2 1687 000023ac 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1688 000023b0 27ffc110 addui r31,r31,(_openfiles_LF2)&0xffff 1689 000023b4 003f0820 add r1,r1,r31 1690 000023b8 201f0000 addi r31,r0,#0 1691 000023bc ac3f0108 sw 264(r1),r31 1692 000023c0 20010001 addi r1,r0,#1 1693 000023c4 8fa20000 lw r2,0(r29) 1694 000023c8 8fdffff8 lw r31,-8(r30) 1695 000023cc 001ee820 add r29,r0,r30 1696 000023d0 8fdefffc lw r30,-4(r30) 1697 000023d4 4be00000 jr r31 1698 000023d8 54000000 nop 1699 000023dc .endproc _FsDlxOpen 1700 000023dc .align 2 1701 000023dc .proc _FsDlxSeek 1702 000023dc .global _FsDlxSeek 1703 000023dc _FsDlxSeek: 1704 ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. 1705 000023dc afbefffc sw -4(r29),r30; push fp 1706 000023e0 001df020 add r30,r0,r29; fp = sp 1707 000023e4 afbffff8 sw -8(r29),r31; push ret addr 1708 000023e8 2fbd0010 subui r29,r29,#16; alloc local storage 1709 000023ec afa20000 sw 0(r29),r2 1710 000023f0 8fc10000 lw r1,(r30) 1711 000023f4 50220004 slli r2,r1,#0x4 1712 000023f8 00411020 add r2,r2,r1 1713 000023fc 50420002 slli r2,r2,#0x2 1714 00002400 00410822 sub r1,r2,r1 1715 00002404 50210002 slli r1,r1,#0x2 1716 00002408 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1717 0000240c 27ffc110 addui r31,r31,(_openfiles_LF2)&0xffff 1718 00002410 003f0820 add r1,r1,r31 1719 00002414 8c210108 lw r1,264(r1) 1720 00002418 8fa20000 lw r2,0(r29) 1721 0000241c 8fdffff8 lw r31,-8(r30) 1722 00002420 001ee820 add r29,r0,r30 1723 00002424 8fdefffc lw r30,-4(r30) 1724 00002428 4be00000 jr r31 1725 0000242c 54000000 nop 1726 00002430 .endproc _FsDlxSeek 1727 00002430 .align 2 1728 00002430 .proc _FsDlxClose 1729 00002430 .global _FsDlxClose 1730 00002430 _FsDlxClose: 1731 ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. 1732 00002430 afbefffc sw -4(r29),r30; push fp 1733 00002434 001df020 add r30,r0,r29; fp = sp 1734 00002438 afbffff8 sw -8(r29),r31; push ret addr 1735 0000243c 2fbd0008 subui r29,r29,#8; alloc local storage 1736 00002440 20010001 addi r1,r0,#1 1737 00002444 8fdffff8 lw r31,-8(r30) 1738 00002448 001ee820 add r29,r0,r30 1739 0000244c 8fdefffc lw r30,-4(r30) 1740 00002450 4be00000 jr r31 1741 00002454 54000000 nop 1742 00002458 .endproc _FsDlxClose 1743 00002458 .align 2 1744 00002458 .proc _FsDlxDelete 1745 00002458 .global _FsDlxDelete 1746 00002458 _FsDlxDelete: 1747 ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. 1748 00002458 afbefffc sw -4(r29),r30; push fp 1749 0000245c 001df020 add r30,r0,r29; fp = sp 1750 00002460 afbffff8 sw -8(r29),r31; push ret addr 1751 00002464 2fbd0008 subui r29,r29,#8; alloc local storage 1752 00002468 20010001 addi r1,r0,#1 1753 0000246c 8fdffff8 lw r31,-8(r30) 1754 00002470 001ee820 add r29,r0,r30 1755 00002474 8fdefffc lw r30,-4(r30) 1756 00002478 4be00000 jr r31 1757 0000247c 54000000 nop 1758 00002480 .endproc _FsDlxDelete 1759 00002480 .align 2 1760 00002480 .proc _FsModuleInit 1761 00002480 .global _FsModuleInit 1762 00002480 _FsModuleInit: 1763 ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. 1764 00002480 afbefffc sw -4(r29),r30; push fp 1765 00002484 001df020 add r30,r0,r29; fp = sp 1766 00002488 afbffff8 sw -8(r29),r31; push ret addr 1767 0000248c 2fbd0010 subui r29,r29,#16; alloc local storage 1768 00002490 afa20000 sw 0(r29),r2 1769 00002494 afa30004 sw 4(r29),r3 1770 00002498 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1771 0000249c 27ffc110 addui r31,r31,(_openfiles_LF2)&0xffff 1772 000024a0 23e22074 addi r2,r31,#8308 1773 000024a4 L182_LF2: 1774 000024a4 20030000 addi r3,r0,#0 1775 000024a8 afe30004 sw 4(r31),r3 1776 000024ac 23ff010c addi r31,r31,#268 1777 000024b0 03e2082c sle r1,r31,r2 1778 000024b4 1420ffec bnez r1,L182_LF2 1779 000024b8 54000000 nop; not filled. 1780 000024bc 3c010000 lhi r1,((_fs_LF2)>>16)&0xffff 1781 000024c0 2421c0e0 addui r1,r1,(_fs_LF2)&0xffff 1782 000024c4 3c030000 lhi r3,((_FsUnixOpen)>>16)&0xffff 1783 000024c8 24631f94 addui r3,r3,(_FsUnixOpen)&0xffff 1784 000024cc ac230000 sw (r1),r3 1785 000024d0 3c030000 lhi r3,((_FsUnixClose)>>16)&0xffff 1786 000024d4 24632270 addui r3,r3,(_FsUnixClose)&0xffff 1787 000024d8 ac230010 sw 16(r1),r3 1788 000024dc 3c030000 lhi r3,((_FsUnixRead)>>16)&0xffff 1789 000024e0 246320c0 addui r3,r3,(_FsUnixRead)&0xffff 1790 000024e4 ac230004 sw 4(r1),r3 1791 000024e8 3c030000 lhi r3,((_FsUnixWrite)>>16)&0xffff 1792 000024ec 24632150 addui r3,r3,(_FsUnixWrite)&0xffff 1793 000024f0 ac230008 sw 8(r1),r3 1794 000024f4 3c030000 lhi r3,((_FsUnixSeek)>>16)&0xffff 1795 000024f8 246321e0 addui r3,r3,(_FsUnixSeek)&0xffff 1796 000024fc ac23000c sw 12(r1),r3 1797 00002500 3c030000 lhi r3,((_FsUnixDelete)>>16)&0xffff 1798 00002504 246322e0 addui r3,r3,(_FsUnixDelete)&0xffff 1799 00002508 ac230014 sw 20(r1),r3 1800 0000250c 3c030000 lhi r3,((_FsDlxOpen)>>16)&0xffff 1801 00002510 24632380 addui r3,r3,(_FsDlxOpen)&0xffff 1802 00002514 ac230018 sw 24(r1),r3 1803 00002518 3c030000 lhi r3,((_FsDlxClose)>>16)&0xffff 1804 0000251c 24632430 addui r3,r3,(_FsDlxClose)&0xffff 1805 00002520 ac230028 sw 40(r1),r3 1806 00002524 3c030000 lhi r3,((_FsDlxRead)>>16)&0xffff 1807 00002528 24632330 addui r3,r3,(_FsDlxRead)&0xffff 1808 0000252c ac23001c sw 28(r1),r3 1809 00002530 3c030000 lhi r3,((_FsDlxWrite)>>16)&0xffff 1810 00002534 24632358 addui r3,r3,(_FsDlxWrite)&0xffff 1811 00002538 ac230020 sw 32(r1),r3 1812 0000253c 3c030000 lhi r3,((_FsDlxSeek)>>16)&0xffff 1813 00002540 246323dc addui r3,r3,(_FsDlxSeek)&0xffff 1814 00002544 ac230024 sw 36(r1),r3 1815 00002548 3c030000 lhi r3,((_FsDlxDelete)>>16)&0xffff 1816 0000254c 24632458 addui r3,r3,(_FsDlxDelete)&0xffff 1817 00002550 ac23002c sw 44(r1),r3 1818 00002554 8fa20000 lw r2,0(r29) 1819 00002558 8fa30004 lw r3,4(r29) 1820 0000255c 8fdffff8 lw r31,-8(r30) 1821 00002560 001ee820 add r29,r0,r30 1822 00002564 8fdefffc lw r30,-4(r30) 1823 00002568 4be00000 jr r31 1824 0000256c 54000000 nop 1825 00002570 .endproc _FsModuleInit 1826 00002570 .data 1827 0000c0df .align 2 1828 0000c0e0 _fs_LF2: 1829 0000c0e0 .space 48 1830 0000c110 .align 2 1831 0000c110 _openfiles_LF2: 1832 0000c110 .space 8576 1833 ; Compiled by GCC 1835 0000e290 .align 2 1836 0000e290 _rcsid_LF3: 1837 0000e290 3a206d65 .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 1837 0000e294 6d6f7279 1837 0000e298 2e632c76 1837 0000e29c 20312e31 1837 0000e2a0 20323030 1837 0000e2a4 302f3039 1837 0000e2a8 2f323020 1837 0000e2ac 30313a35 1837 0000e2b0 303a3139 1837 0000e2b4 20656c6d 1837 0000e2b8 20457870 1837 0000e2bc 20656c6d 1837 0000e2c0 20303030 1838 0000e2c4 .text 1839 00002570 .align 2 1840 00002570 .proc _isspace 1841 00002570 .global _isspace 1842 00002570 _isspace: 1843 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 1844 00002570 afbefffc sw -4(r29),r30; push fp 1845 00002574 001df020 add r30,r0,r29; fp = sp 1846 00002578 afbffff8 sw -8(r29),r31; push ret addr 1847 0000257c 2fbd0010 subui r29,r29,#16; alloc local storage 1848 00002580 afa20000 sw 0(r29),r2 1849 00002584 83c20003 lb r2,3(r30) 1850 00002588 201f0000 addi r31,r0,#0 1851 0000258c 304100ff andi r1,r2,#0x00ff 1852 00002590 60210020 seqi r1,r1,#32 1853 00002594 14200018 bnez r1,L6_LF3 1854 00002598 54000000 nop; not filled. 1855 0000259c 2041fff7 addi r1,r2,#-9 1856 000025a0 302100ff andi r1,r1,#0x00ff 1857 000025a4 70210001 sleui r1,r1,#1 1858 000025a8 10200008 beqz r1,L5_LF3 1859 000025ac 54000000 nop; not filled. 1860 000025b0 L6_LF3: 1861 000025b0 201f0001 addi r31,r0,#1 1862 000025b4 L5_LF3: 1863 000025b4 001f0820 add r1,r0,r31 1864 000025b8 8fa20000 lw r2,0(r29) 1865 000025bc 8fdffff8 lw r31,-8(r30) 1866 000025c0 001ee820 add r29,r0,r30 1867 000025c4 8fdefffc lw r30,-4(r30) 1868 000025c8 4be00000 jr r31 1869 000025cc 54000000 nop 1870 000025d0 .endproc _isspace 1871 000025d0 .align 2 1872 000025d0 .proc _isxdigit 1873 000025d0 .global _isxdigit 1874 000025d0 _isxdigit: 1875 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 1876 000025d0 afbefffc sw -4(r29),r30; push fp 1877 000025d4 001df020 add r30,r0,r29; fp = sp 1878 000025d8 afbffff8 sw -8(r29),r31; push ret addr 1879 000025dc 2fbd0010 subui r29,r29,#16; alloc local storage 1880 000025e0 afa20000 sw 0(r29),r2 1881 000025e4 83df0003 lb r31,3(r30) 1882 000025e8 20020000 addi r2,r0,#0 1883 000025ec 23e1ffd0 addi r1,r31,#-48 1884 000025f0 302100ff andi r1,r1,#0x00ff 1885 000025f4 70210009 sleui r1,r1,#9 1886 000025f8 14200028 bnez r1,L12_LF3 1887 000025fc 54000000 nop; not filled. 1888 00002600 23e1ff9f addi r1,r31,#-97 1889 00002604 302100ff andi r1,r1,#0x00ff 1890 00002608 70210005 sleui r1,r1,#5 1891 0000260c 14200014 bnez r1,L12_LF3 1892 00002610 54000000 nop; not filled. 1893 00002614 33e100ff andi r1,r31,#0x00ff 1894 00002618 64210041 snei r1,r1,#65 1895 0000261c 14200008 bnez r1,L11_LF3 1896 00002620 54000000 nop; not filled. 1897 00002624 L12_LF3: 1898 00002624 20020001 addi r2,r0,#1 1899 00002628 L11_LF3: 1900 00002628 00020820 add r1,r0,r2 1901 0000262c 8fa20000 lw r2,0(r29) 1902 00002630 8fdffff8 lw r31,-8(r30) 1903 00002634 001ee820 add r29,r0,r30 1904 00002638 8fdefffc lw r30,-4(r30) 1905 0000263c 4be00000 jr r31 1906 00002640 54000000 nop 1907 00002644 .endproc _isxdigit 1908 00002644 .align 2 1909 00002644 .proc _DisableIntrs 1910 00002644 .global _DisableIntrs 1911 00002644 _DisableIntrs: 1912 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 1913 00002644 afbefffc sw -4(r29),r30; push fp 1914 00002648 001df020 add r30,r0,r29; fp = sp 1915 0000264c afbffff8 sw -8(r29),r31; push ret addr 1916 00002650 2fbd0010 subui r29,r29,#16; alloc local storage 1917 00002654 afa20000 sw 0(r29),r2 1918 00002658 23bdfff8 addi r29,r29,#-8 1919 0000265c 2002000f addi r2,r0,#15 1920 00002660 afa20000 sw (r29),r2 1921 00002664 0fffec20 jal _SetIntrs 1922 00002668 54000000 nop; not filled. 1923 0000266c 23bd0008 addi r29,r29,#8 1924 00002670 8fa20000 lw r2,0(r29) 1925 00002674 8fdffff8 lw r31,-8(r30) 1926 00002678 001ee820 add r29,r0,r30 1927 0000267c 8fdefffc lw r30,-4(r30) 1928 00002680 4be00000 jr r31 1929 00002684 54000000 nop 1930 00002688 .endproc _DisableIntrs 1931 00002688 .align 2 1932 00002688 .proc _EnableIntrs 1933 00002688 .global _EnableIntrs 1934 00002688 _EnableIntrs: 1935 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 1936 00002688 afbefffc sw -4(r29),r30; push fp 1937 0000268c 001df020 add r30,r0,r29; fp = sp 1938 00002690 afbffff8 sw -8(r29),r31; push ret addr 1939 00002694 2fbd0010 subui r29,r29,#16; alloc local storage 1940 00002698 afa20000 sw 0(r29),r2 1941 0000269c 23bdfff8 addi r29,r29,#-8 1942 000026a0 20020000 addi r2,r0,#0 1943 000026a4 afa20000 sw (r29),r2 1944 000026a8 0fffebdc jal _SetIntrs 1945 000026ac 54000000 nop; not filled. 1946 000026b0 23bd0008 addi r29,r29,#8 1947 000026b4 8fa20000 lw r2,0(r29) 1948 000026b8 8fdffff8 lw r31,-8(r30) 1949 000026bc 001ee820 add r29,r0,r30 1950 000026c0 8fdefffc lw r30,-4(r30) 1951 000026c4 4be00000 jr r31 1952 000026c8 54000000 nop 1953 000026cc .endproc _EnableIntrs 1954 000026cc .align 2 1955 000026cc .proc _RestoreIntrs 1956 000026cc .global _RestoreIntrs 1957 000026cc _RestoreIntrs: 1958 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 1959 000026cc afbefffc sw -4(r29),r30; push fp 1960 000026d0 001df020 add r30,r0,r29; fp = sp 1961 000026d4 afbffff8 sw -8(r29),r31; push ret addr 1962 000026d8 2fbd0010 subui r29,r29,#16; alloc local storage 1963 000026dc afa20000 sw 0(r29),r2 1964 000026e0 23bdfff8 addi r29,r29,#-8 1965 000026e4 8fc20000 lw r2,(r30) 1966 000026e8 afa20000 sw (r29),r2 1967 000026ec 0fffeb98 jal _SetIntrs 1968 000026f0 54000000 nop; not filled. 1969 000026f4 23bd0008 addi r29,r29,#8 1970 000026f8 8fa20000 lw r2,0(r29) 1971 000026fc 8fdffff8 lw r31,-8(r30) 1972 00002700 001ee820 add r29,r0,r30 1973 00002704 8fdefffc lw r30,-4(r30) 1974 00002708 4be00000 jr r31 1975 0000270c 54000000 nop 1976 00002710 .endproc _RestoreIntrs 1977 00002710 .align 2 1978 00002710 .proc _QueueLinkInit 1979 00002710 .global _QueueLinkInit 1980 00002710 _QueueLinkInit: 1981 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 1982 00002710 afbefffc sw -4(r29),r30; push fp 1983 00002714 001df020 add r30,r0,r29; fp = sp 1984 00002718 afbffff8 sw -8(r29),r31; push ret addr 1985 0000271c 2fbd0010 subui r29,r29,#16; alloc local storage 1986 00002720 afa20000 sw 0(r29),r2 1987 00002724 8fc10000 lw r1,(r30) 1988 00002728 8fc20004 lw r2,4(r30) 1989 0000272c 201f0000 addi r31,r0,#0 1990 00002730 ac3f0000 sw (r1),r31 1991 00002734 ac22000c sw 12(r1),r2 1992 00002738 8fa20000 lw r2,0(r29) 1993 0000273c 8fdffff8 lw r31,-8(r30) 1994 00002740 001ee820 add r29,r0,r30 1995 00002744 8fdefffc lw r30,-4(r30) 1996 00002748 4be00000 jr r31 1997 0000274c 54000000 nop 1998 00002750 .endproc _QueueLinkInit 1999 00002750 .align 2 2000 00002750 .proc _QueueNext 2001 00002750 .global _QueueNext 2002 00002750 _QueueNext: 2003 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 2004 00002750 afbefffc sw -4(r29),r30; push fp 2005 00002754 001df020 add r30,r0,r29; fp = sp 2006 00002758 afbffff8 sw -8(r29),r31; push ret addr 2007 0000275c 2fbd0008 subui r29,r29,#8; alloc local storage 2008 00002760 8fc10000 lw r1,(r30) 2009 00002764 8c210000 lw r1,(r1) 2010 00002768 8fdffff8 lw r31,-8(r30) 2011 0000276c 001ee820 add r29,r0,r30 2012 00002770 8fdefffc lw r30,-4(r30) 2013 00002774 4be00000 jr r31 2014 00002778 54000000 nop 2015 0000277c .endproc _QueueNext 2016 0000277c .align 2 2017 0000277c .proc _QueuePrev 2018 0000277c .global _QueuePrev 2019 0000277c _QueuePrev: 2020 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 2021 0000277c afbefffc sw -4(r29),r30; push fp 2022 00002780 001df020 add r30,r0,r29; fp = sp 2023 00002784 afbffff8 sw -8(r29),r31; push ret addr 2024 00002788 2fbd0008 subui r29,r29,#8; alloc local storage 2025 0000278c 8fc10000 lw r1,(r30) 2026 00002790 8c210004 lw r1,4(r1) 2027 00002794 8fdffff8 lw r31,-8(r30) 2028 00002798 001ee820 add r29,r0,r30 2029 0000279c 8fdefffc lw r30,-4(r30) 2030 000027a0 4be00000 jr r31 2031 000027a4 54000000 nop 2032 000027a8 .endproc _QueuePrev 2033 000027a8 .align 2 2034 000027a8 .proc _QueueFirst 2035 000027a8 .global _QueueFirst 2036 000027a8 _QueueFirst: 2037 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 2038 000027a8 afbefffc sw -4(r29),r30; push fp 2039 000027ac 001df020 add r30,r0,r29; fp = sp 2040 000027b0 afbffff8 sw -8(r29),r31; push ret addr 2041 000027b4 2fbd0008 subui r29,r29,#8; alloc local storage 2042 000027b8 8fc10000 lw r1,(r30) 2043 000027bc 8c210000 lw r1,(r1) 2044 000027c0 8fdffff8 lw r31,-8(r30) 2045 000027c4 001ee820 add r29,r0,r30 2046 000027c8 8fdefffc lw r30,-4(r30) 2047 000027cc 4be00000 jr r31 2048 000027d0 54000000 nop 2049 000027d4 .endproc _QueueFirst 2050 000027d4 .align 2 2051 000027d4 .proc _QueueLast 2052 000027d4 .global _QueueLast 2053 000027d4 _QueueLast: 2054 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 2055 000027d4 afbefffc sw -4(r29),r30; push fp 2056 000027d8 001df020 add r30,r0,r29; fp = sp 2057 000027dc afbffff8 sw -8(r29),r31; push ret addr 2058 000027e0 2fbd0008 subui r29,r29,#8; alloc local storage 2059 000027e4 8fc10000 lw r1,(r30) 2060 000027e8 8c210004 lw r1,4(r1) 2061 000027ec 8fdffff8 lw r31,-8(r30) 2062 000027f0 001ee820 add r29,r0,r30 2063 000027f4 8fdefffc lw r30,-4(r30) 2064 000027f8 4be00000 jr r31 2065 000027fc 54000000 nop 2066 00002800 .endproc _QueueLast 2067 00002800 .align 2 2068 00002800 .proc _QueueInsertAfter 2069 00002800 .global _QueueInsertAfter 2070 00002800 _QueueInsertAfter: 2071 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 2072 00002800 afbefffc sw -4(r29),r30; push fp 2073 00002804 001df020 add r30,r0,r29; fp = sp 2074 00002808 afbffff8 sw -8(r29),r31; push ret addr 2075 0000280c 2fbd0010 subui r29,r29,#16; alloc local storage 2076 00002810 afa20000 sw 0(r29),r2 2077 00002814 afa30004 sw 4(r29),r3 2078 00002818 8fc30000 lw r3,(r30) 2079 0000281c 8fc20004 lw r2,4(r30) 2080 00002820 8fc10008 lw r1,8(r30) 2081 00002824 ac230008 sw 8(r1),r3 2082 00002828 ac220004 sw 4(r1),r2 2083 0000282c 8c5f0000 lw r31,(r2) 2084 00002830 ac3f0000 sw (r1),r31 2085 00002834 ac410000 sw (r2),r1 2086 00002838 8c220000 lw r2,(r1) 2087 0000283c ac410004 sw 4(r2),r1 2088 00002840 8c610008 lw r1,8(r3) 2089 00002844 20210001 addi r1,r1,#1 2090 00002848 ac610008 sw 8(r3),r1 2091 0000284c 8fa20000 lw r2,0(r29) 2092 00002850 8fa30004 lw r3,4(r29) 2093 00002854 8fdffff8 lw r31,-8(r30) 2094 00002858 001ee820 add r29,r0,r30 2095 0000285c 8fdefffc lw r30,-4(r30) 2096 00002860 4be00000 jr r31 2097 00002864 54000000 nop 2098 00002868 .endproc _QueueInsertAfter 2099 00002868 .align 2 2100 00002868 .proc _QueueInsertFirst 2101 00002868 .global _QueueInsertFirst 2102 00002868 _QueueInsertFirst: 2103 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 2104 00002868 afbefffc sw -4(r29),r30; push fp 2105 0000286c 001df020 add r30,r0,r29; fp = sp 2106 00002870 afbffff8 sw -8(r29),r31; push ret addr 2107 00002874 2fbd0010 subui r29,r29,#16; alloc local storage 2108 00002878 afa20000 sw 0(r29),r2 2109 0000287c afa30004 sw 4(r29),r3 2110 00002880 8fc30000 lw r3,(r30) 2111 00002884 8fc10004 lw r1,4(r30) 2112 00002888 ac230008 sw 8(r1),r3 2113 0000288c ac230004 sw 4(r1),r3 2114 00002890 8c7f0000 lw r31,(r3) 2115 00002894 ac3f0000 sw (r1),r31 2116 00002898 ac610000 sw (r3),r1 2117 0000289c 8c220000 lw r2,(r1) 2118 000028a0 ac410004 sw 4(r2),r1 2119 000028a4 8c610008 lw r1,8(r3) 2120 000028a8 20210001 addi r1,r1,#1 2121 000028ac ac610008 sw 8(r3),r1 2122 000028b0 8fa20000 lw r2,0(r29) 2123 000028b4 8fa30004 lw r3,4(r29) 2124 000028b8 8fdffff8 lw r31,-8(r30) 2125 000028bc 001ee820 add r29,r0,r30 2126 000028c0 8fdefffc lw r30,-4(r30) 2127 000028c4 4be00000 jr r31 2128 000028c8 54000000 nop 2129 000028cc .endproc _QueueInsertFirst 2130 000028cc .align 2 2131 000028cc .proc _QueueInsertLast 2132 000028cc .global _QueueInsertLast 2133 000028cc _QueueInsertLast: 2134 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 2135 000028cc afbefffc sw -4(r29),r30; push fp 2136 000028d0 001df020 add r30,r0,r29; fp = sp 2137 000028d4 afbffff8 sw -8(r29),r31; push ret addr 2138 000028d8 2fbd0010 subui r29,r29,#16; alloc local storage 2139 000028dc afa20000 sw 0(r29),r2 2140 000028e0 afa30004 sw 4(r29),r3 2141 000028e4 8fc30000 lw r3,(r30) 2142 000028e8 8fc10004 lw r1,4(r30) 2143 000028ec 8c620004 lw r2,4(r3) 2144 000028f0 ac230008 sw 8(r1),r3 2145 000028f4 ac220004 sw 4(r1),r2 2146 000028f8 8c5f0000 lw r31,(r2) 2147 000028fc ac3f0000 sw (r1),r31 2148 00002900 ac410000 sw (r2),r1 2149 00002904 8c220000 lw r2,(r1) 2150 00002908 ac410004 sw 4(r2),r1 2151 0000290c 8c610008 lw r1,8(r3) 2152 00002910 20210001 addi r1,r1,#1 2153 00002914 ac610008 sw 8(r3),r1 2154 00002918 8fa20000 lw r2,0(r29) 2155 0000291c 8fa30004 lw r3,4(r29) 2156 00002920 8fdffff8 lw r31,-8(r30) 2157 00002924 001ee820 add r29,r0,r30 2158 00002928 8fdefffc lw r30,-4(r30) 2159 0000292c 4be00000 jr r31 2160 00002930 54000000 nop 2161 00002934 .endproc _QueueInsertLast 2162 00002934 .align 2 2163 00002934 .proc _QueueRemove 2164 00002934 .global _QueueRemove 2165 00002934 _QueueRemove: 2166 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 2167 00002934 afbefffc sw -4(r29),r30; push fp 2168 00002938 001df020 add r30,r0,r29; fp = sp 2169 0000293c afbffff8 sw -8(r29),r31; push ret addr 2170 00002940 2fbd0010 subui r29,r29,#16; alloc local storage 2171 00002944 afa20000 sw 0(r29),r2 2172 00002948 afa30004 sw 4(r29),r3 2173 0000294c 8fdf0000 lw r31,(r30) 2174 00002950 8fe10008 lw r1,8(r31) 2175 00002954 8c210008 lw r1,8(r1) 2176 00002958 6c210000 sgti r1,r1,#0 2177 0000295c 1020002c beqz r1,L44_LF3 2178 00002960 54000000 nop; not filled. 2179 00002964 8fe10004 lw r1,4(r31) 2180 00002968 8fe30000 lw r3,(r31) 2181 0000296c ac230000 sw (r1),r3 2182 00002970 8fe10000 lw r1,(r31) 2183 00002974 8fe30004 lw r3,4(r31) 2184 00002978 ac230004 sw 4(r1),r3 2185 0000297c 8fe20008 lw r2,8(r31) 2186 00002980 8c410008 lw r1,8(r2) 2187 00002984 2021ffff addi r1,r1,#-1 2188 00002988 ac410008 sw 8(r2),r1 2189 0000298c L44_LF3: 2190 0000298c 20030000 addi r3,r0,#0 2191 00002990 afe30000 sw (r31),r3 2192 00002994 8fa20000 lw r2,0(r29) 2193 00002998 8fa30004 lw r3,4(r29) 2194 0000299c 8fdffff8 lw r31,-8(r30) 2195 000029a0 001ee820 add r29,r0,r30 2196 000029a4 8fdefffc lw r30,-4(r30) 2197 000029a8 4be00000 jr r31 2198 000029ac 54000000 nop 2199 000029b0 .endproc _QueueRemove 2200 000029b0 .align 2 2201 000029b0 .proc _QueueLength 2202 000029b0 .global _QueueLength 2203 000029b0 _QueueLength: 2204 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 2205 000029b0 afbefffc sw -4(r29),r30; push fp 2206 000029b4 001df020 add r30,r0,r29; fp = sp 2207 000029b8 afbffff8 sw -8(r29),r31; push ret addr 2208 000029bc 2fbd0008 subui r29,r29,#8; alloc local storage 2209 000029c0 8fc10000 lw r1,(r30) 2210 000029c4 8c210008 lw r1,8(r1) 2211 000029c8 8fdffff8 lw r31,-8(r30) 2212 000029cc 001ee820 add r29,r0,r30 2213 000029d0 8fdefffc lw r30,-4(r30) 2214 000029d4 4be00000 jr r31 2215 000029d8 54000000 nop 2216 000029dc .endproc _QueueLength 2217 000029dc .align 2 2218 000029dc .proc _QueueEmpty 2219 000029dc .global _QueueEmpty 2220 000029dc _QueueEmpty: 2221 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 2222 000029dc afbefffc sw -4(r29),r30; push fp 2223 000029e0 001df020 add r30,r0,r29; fp = sp 2224 000029e4 afbffff8 sw -8(r29),r31; push ret addr 2225 000029e8 2fbd0008 subui r29,r29,#8; alloc local storage 2226 000029ec 8fc10000 lw r1,(r30) 2227 000029f0 8c210008 lw r1,8(r1) 2228 000029f4 60210000 seqi r1,r1,#0 2229 000029f8 8fdffff8 lw r31,-8(r30) 2230 000029fc 001ee820 add r29,r0,r30 2231 00002a00 8fdefffc lw r30,-4(r30) 2232 00002a04 4be00000 jr r31 2233 00002a08 54000000 nop 2234 00002a0c .endproc _QueueEmpty 2235 00002a0c .data 2236 0000e2c4 .align 2 2237 0000e2c4 _negativeone_LF3: 2238 0000e2c4 ffffffff .word -1 2239 0000e2c8 .text 2240 00002a0c .align 2 2241 00002a0c .proc _MemoryGetSize 2242 00002a0c .global _MemoryGetSize 2243 00002a0c _MemoryGetSize: 2244 ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. 2245 00002a0c afbefffc sw -4(r29),r30; push fp 2246 00002a10 001df020 add r30,r0,r29; fp = sp 2247 00002a14 afbffff8 sw -8(r29),r31; push ret addr 2248 00002a18 2fbd0008 subui r29,r29,#8; alloc local storage 2249 00002a1c 3c01ffff lhi r1,#-1 2250 00002a20 24210000 addui r1,r1,#0 2251 00002a24 8c210000 lw r1,(r1) 2252 00002a28 8fdffff8 lw r31,-8(r30) 2253 00002a2c 001ee820 add r29,r0,r30 2254 00002a30 8fdefffc lw r30,-4(r30) 2255 00002a34 4be00000 jr r31 2256 00002a38 54000000 nop 2257 00002a3c .endproc _MemoryGetSize 2258 00002a3c .data 2259 0000e2c8 .align 2 2260 0000e2c8 LC0_LF3: 2261 0000e2c8 53657420 .ascii "Set freemap entry %d to 0x%x.\n\000" 2261 0000e2cc 66726565 2261 0000e2d0 6d617020 2261 0000e2d4 656e7472 2261 0000e2d8 79202564 2261 0000e2dc 20746f20 2261 0000e2e0 30782578 2261 0000e2e4 2e0a00 2262 0000e2e7 .text 2263 00002a3c .align 2 2264 00002a3c .proc _MemorySetFreemap 2265 00002a3c .global _MemorySetFreemap 2266 00002a3c _MemorySetFreemap: 2267 ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. 2268 00002a3c afbefffc sw -4(r29),r30; push fp 2269 00002a40 001df020 add r30,r0,r29; fp = sp 2270 00002a44 afbffff8 sw -8(r29),r31; push ret addr 2271 00002a48 2fbd0020 subui r29,r29,#32; alloc local storage 2272 00002a4c afa20000 sw 0(r29),r2 2273 00002a50 afa30004 sw 4(r29),r3 2274 00002a54 afa40008 sw 8(r29),r4 2275 00002a58 afa5000c sw 12(r29),r5 2276 00002a5c afa60010 sw 16(r29),r6 2277 00002a60 8fc30000 lw r3,(r30) 2278 00002a64 8fdf0004 lw r31,4(r30) 2279 00002a68 00031020 add r2,r0,r3 2280 00002a6c 74610000 sgei r1,r3,#0 2281 00002a70 14200008 bnez r1,L61_LF3 2282 00002a74 54000000 nop; not filled. 2283 00002a78 2062001f addi r2,r3,#31 2284 00002a7c L61_LF3: 2285 00002a7c 5c450005 srai r5,r2,#0x5 2286 00002a80 50a10005 slli r1,r5,#0x5 2287 00002a84 00611822 sub r3,r3,r1 2288 00002a88 20010001 addi r1,r0,#1 2289 00002a8c 00231004 sll r2,r1,r3 2290 00002a90 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2291 00002a94 2421e2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2292 00002a98 8c210000 lw r1,(r1) 2293 00002a9c 00411026 xor r2,r2,r1 2294 00002aa0 50a10002 slli r1,r5,#0x2 2295 00002aa4 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2296 00002aa8 24c6e438 addui r6,r6,(_freepages_LF3)&0xffff 2297 00002aac 00262020 add r4,r1,r6 2298 00002ab0 8c810000 lw r1,(r4) 2299 00002ab4 00221024 and r2,r1,r2 2300 00002ab8 03e30804 sll r1,r31,r3 2301 00002abc 00410825 or r1,r2,r1 2302 00002ac0 ac810000 sw (r4),r1 2303 00002ac4 23bdfff8 addi r29,r29,#-8 2304 00002ac8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2305 00002acc 24420d78 addui r2,r2,(_debugstr)&0xffff 2306 00002ad0 afa20000 sw (r29),r2 2307 00002ad4 2006006d addi r6,r0,#109 2308 00002ad8 afa60004 sw 4(r29),r6 2309 00002adc 0c001354 jal _dindex 2310 00002ae0 54000000 nop; not filled. 2311 00002ae4 23bd0008 addi r29,r29,#8 2312 00002ae8 64210000 snei r1,r1,#0 2313 00002aec 1420002c bnez r1,L65_LF3 2314 00002af0 54000000 nop; not filled. 2315 00002af4 23bdfff8 addi r29,r29,#-8 2316 00002af8 afa20000 sw (r29),r2 2317 00002afc 2006002b addi r6,r0,#43 2318 00002b00 afa60004 sw 4(r29),r6 2319 00002b04 0c00132c jal _dindex 2320 00002b08 54000000 nop; not filled. 2321 00002b0c 23bd0008 addi r29,r29,#8 2322 00002b10 64210000 snei r1,r1,#0 2323 00002b14 1020002c beqz r1,L64_LF3 2324 00002b18 54000000 nop; not filled. 2325 00002b1c L65_LF3: 2326 00002b1c 23bdfff0 addi r29,r29,#-16 2327 00002b20 3c060000 lhi r6,((LC0_LF3)>>16)&0xffff 2328 00002b24 24c6e2c8 addui r6,r6,(LC0_LF3)&0xffff 2329 00002b28 afa60000 sw (r29),r6 2330 00002b2c afa50004 sw 4(r29),r5 2331 00002b30 8c840000 lw r4,(r4) 2332 00002b34 afa40008 sw 8(r29),r4 2333 00002b38 0c008594 jal _printf 2334 00002b3c 54000000 nop; not filled. 2335 00002b40 23bd0010 addi r29,r29,#16 2336 00002b44 L64_LF3: 2337 00002b44 8fa20000 lw r2,0(r29) 2338 00002b48 8fa30004 lw r3,4(r29) 2339 00002b4c 8fa40008 lw r4,8(r29) 2340 00002b50 8fa5000c lw r5,12(r29) 2341 00002b54 8fa60010 lw r6,16(r29) 2342 00002b58 8fdffff8 lw r31,-8(r30) 2343 00002b5c 001ee820 add r29,r0,r30 2344 00002b60 8fdefffc lw r30,-4(r30) 2345 00002b64 4be00000 jr r31 2346 00002b68 54000000 nop 2347 00002b6c .endproc _MemorySetFreemap 2348 00002b6c .data 2349 0000e2e7 .align 2 2350 0000e2e8 LC1_LF3: 2351 0000e2e8 4d617020 .ascii "Map has %d entries, memory size is 0x%x.\n\000" 2351 0000e2ec 68617320 2351 0000e2f0 25642065 2351 0000e2f4 6e747269 2351 0000e2f8 65732c20 2351 0000e2fc 6d656d6f 2351 0000e300 72792073 2351 0000e304 697a6520 2351 0000e308 69732030 2351 0000e30c 7825782e 2351 0000e310 0a00 2352 0000e312 .align 2 2353 0000e314 LC2_LF3: 2354 0000e314 46726565 .ascii "Free pages start with page # 0x%x.\n\000" 2354 0000e318 20706167 2354 0000e31c 65732073 2354 0000e320 74617274 2354 0000e324 20776974 2354 0000e328 68207061 2354 0000e32c 67652023 2354 0000e330 20307825 2354 0000e334 782e0a00 2355 0000e338 .align 2 2356 0000e338 LC3_LF3: 2357 0000e338 496e6974 .ascii "Initialized %d free pages.\n\000" 2357 0000e33c 69616c69 2357 0000e340 7a656420 2357 0000e344 25642066 2357 0000e348 72656520 2357 0000e34c 70616765 2357 0000e350 732e0a00 2358 0000e354 .text 2359 00002b6c .align 2 2360 00002b6c .proc _MemoryModuleInit 2361 00002b6c .global _MemoryModuleInit 2362 00002b6c _MemoryModuleInit: 2363 ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. 2364 00002b6c afbefffc sw -4(r29),r30; push fp 2365 00002b70 001df020 add r30,r0,r29; fp = sp 2366 00002b74 afbffff8 sw -8(r29),r31; push ret addr 2367 00002b78 2fbd0030 subui r29,r29,#48; alloc local storage 2368 00002b7c afa20000 sw 0(r29),r2 2369 00002b80 afa30004 sw 4(r29),r3 2370 00002b84 afa40008 sw 8(r29),r4 2371 00002b88 afa5000c sw 12(r29),r5 2372 00002b8c afa60010 sw 16(r29),r6 2373 00002b90 afa70014 sw 20(r29),r7 2374 00002b94 afa80018 sw 24(r29),r8 2375 00002b98 afa9001c sw 28(r29),r9 2376 00002b9c afaa0020 sw 32(r29),r10 2377 00002ba0 afab0024 sw 36(r29),r11 2378 00002ba4 3c01ffff lhi r1,#-1 2379 00002ba8 24210000 addui r1,r1,#0 2380 00002bac 8c220000 lw r2,(r1) 2381 00002bb0 74410000 sgei r1,r2,#0 2382 00002bb4 14200008 bnez r1,L68_LF3 2383 00002bb8 54000000 nop; not filled. 2384 00002bbc 2442ffff addui r2,r2,#65535 2385 00002bc0 L68_LF3: 2386 00002bc0 5c480010 srai r8,r2,#0x10 2387 00002bc4 3c030000 lhi r3,((_pagestart_LF3)>>16)&0xffff 2388 00002bc8 2463e42c addui r3,r3,(_pagestart_LF3)&0xffff 2389 00002bcc 3c010001 lhi r1,((_lastosaddress)>>16)&0xffff 2390 00002bd0 24213e6c addui r1,r1,(_lastosaddress)&0xffff 2391 00002bd4 8c210000 lw r1,(r1) 2392 00002bd8 2422fffc addui r2,r1,#65532 2393 00002bdc 74410000 sgei r1,r2,#0 2394 00002be0 14200008 bnez r1,L69_LF3 2395 00002be4 54000000 nop; not filled. 2396 00002be8 2442ffff addui r2,r2,#65535 2397 00002bec L69_LF3: 2398 00002bec 5c410010 srai r1,r2,#0x10 2399 00002bf0 ac610000 sw (r3),r1 2400 00002bf4 3c030000 lhi r3,((_freemapmax_LF3)>>16)&0xffff 2401 00002bf8 2463e430 addui r3,r3,(_freemapmax_LF3)&0xffff 2402 00002bfc 2102001f addi r2,r8,#31 2403 00002c00 74410000 sgei r1,r2,#0 2404 00002c04 14200008 bnez r1,L70_LF3 2405 00002c08 54000000 nop; not filled. 2406 00002c0c 2102003e addi r2,r8,#62 2407 00002c10 L70_LF3: 2408 00002c10 5c410005 srai r1,r2,#0x5 2409 00002c14 ac610000 sw (r3),r1 2410 00002c18 23bdfff8 addi r29,r29,#-8 2411 00002c1c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2412 00002c20 24420d78 addui r2,r2,(_debugstr)&0xffff 2413 00002c24 afa20000 sw (r29),r2 2414 00002c28 200b006d addi r11,r0,#109 2415 00002c2c afab0004 sw 4(r29),r11 2416 00002c30 0c001200 jal _dindex 2417 00002c34 54000000 nop; not filled. 2418 00002c38 23bd0008 addi r29,r29,#8 2419 00002c3c 64210000 snei r1,r1,#0 2420 00002c40 1420002c bnez r1,L72_LF3 2421 00002c44 54000000 nop; not filled. 2422 00002c48 23bdfff8 addi r29,r29,#-8 2423 00002c4c afa20000 sw (r29),r2 2424 00002c50 200b002b addi r11,r0,#43 2425 00002c54 afab0004 sw 4(r29),r11 2426 00002c58 0c0011d8 jal _dindex 2427 00002c5c 54000000 nop; not filled. 2428 00002c60 23bd0008 addi r29,r29,#8 2429 00002c64 64210000 snei r1,r1,#0 2430 00002c68 1020002c beqz r1,L71_LF3 2431 00002c6c 54000000 nop; not filled. 2432 00002c70 L72_LF3: 2433 00002c70 23bdfff0 addi r29,r29,#-16 2434 00002c74 3c0b0000 lhi r11,((LC1_LF3)>>16)&0xffff 2435 00002c78 256be2e8 addui r11,r11,(LC1_LF3)&0xffff 2436 00002c7c afab0000 sw (r29),r11 2437 00002c80 8c610000 lw r1,(r3) 2438 00002c84 afa10004 sw 4(r29),r1 2439 00002c88 afa80008 sw 8(r29),r8 2440 00002c8c 0c008440 jal _printf 2441 00002c90 54000000 nop; not filled. 2442 00002c94 23bd0010 addi r29,r29,#16 2443 00002c98 L71_LF3: 2444 00002c98 23bdfff8 addi r29,r29,#-8 2445 00002c9c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2446 00002ca0 24420d78 addui r2,r2,(_debugstr)&0xffff 2447 00002ca4 afa20000 sw (r29),r2 2448 00002ca8 200b006d addi r11,r0,#109 2449 00002cac afab0004 sw 4(r29),r11 2450 00002cb0 0c001180 jal _dindex 2451 00002cb4 54000000 nop; not filled. 2452 00002cb8 23bd0008 addi r29,r29,#8 2453 00002cbc 64210000 snei r1,r1,#0 2454 00002cc0 1420002c bnez r1,L74_LF3 2455 00002cc4 54000000 nop; not filled. 2456 00002cc8 23bdfff8 addi r29,r29,#-8 2457 00002ccc afa20000 sw (r29),r2 2458 00002cd0 200b002b addi r11,r0,#43 2459 00002cd4 afab0004 sw 4(r29),r11 2460 00002cd8 0c001158 jal _dindex 2461 00002cdc 54000000 nop; not filled. 2462 00002ce0 23bd0008 addi r29,r29,#8 2463 00002ce4 64210000 snei r1,r1,#0 2464 00002ce8 10200030 beqz r1,L73_LF3 2465 00002cec 54000000 nop; not filled. 2466 00002cf0 L74_LF3: 2467 00002cf0 23bdfff8 addi r29,r29,#-8 2468 00002cf4 3c0b0000 lhi r11,((LC2_LF3)>>16)&0xffff 2469 00002cf8 256be314 addui r11,r11,(LC2_LF3)&0xffff 2470 00002cfc afab0000 sw (r29),r11 2471 00002d00 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2472 00002d04 2421e42c addui r1,r1,(_pagestart_LF3)&0xffff 2473 00002d08 8c210000 lw r1,(r1) 2474 00002d0c afa10004 sw 4(r29),r1 2475 00002d10 0c0083bc jal _printf 2476 00002d14 54000000 nop; not filled. 2477 00002d18 23bd0008 addi r29,r29,#8 2478 00002d1c L73_LF3: 2479 00002d1c 20020000 addi r2,r0,#0 2480 00002d20 3c040000 lhi r4,((_freemapmax_LF3)>>16)&0xffff 2481 00002d24 2484e430 addui r4,r4,(_freemapmax_LF3)&0xffff 2482 00002d28 8c810000 lw r1,(r4) 2483 00002d2c 0041082a slt r1,r2,r1 2484 00002d30 1020002c beqz r1,L76_LF3 2485 00002d34 54000000 nop; not filled. 2486 00002d38 3c030000 lhi r3,((_freepages_LF3)>>16)&0xffff 2487 00002d3c 2463e438 addui r3,r3,(_freepages_LF3)&0xffff 2488 00002d40 L78_LF3: 2489 00002d40 200b0000 addi r11,r0,#0 2490 00002d44 ac6b0000 sw (r3),r11 2491 00002d48 20630004 addi r3,r3,#4 2492 00002d4c 20420001 addi r2,r2,#1 2493 00002d50 8c810000 lw r1,(r4) 2494 00002d54 0041082a slt r1,r2,r1 2495 00002d58 1420ffe4 bnez r1,L78_LF3 2496 00002d5c 54000000 nop; not filled. 2497 00002d60 L76_LF3: 2498 00002d60 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2499 00002d64 2442e434 addui r2,r2,(_nfreepages_LF3)&0xffff 2500 00002d68 200b0000 addi r11,r0,#0 2501 00002d6c ac4b0000 sw (r2),r11 2502 00002d70 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2503 00002d74 2421e42c addui r1,r1,(_pagestart_LF3)&0xffff 2504 00002d78 8c240000 lw r4,(r1) 2505 00002d7c 0088082a slt r1,r4,r8 2506 00002d80 10200104 beqz r1,L81_LF3 2507 00002d84 54000000 nop; not filled. 2508 00002d88 00023820 add r7,r0,r2 2509 00002d8c 200a0001 addi r10,r0,#1 2510 00002d90 3c090000 lhi r9,((_negativeone_LF3)>>16)&0xffff 2511 00002d94 2529e2c4 addui r9,r9,(_negativeone_LF3)&0xffff 2512 00002d98 L83_LF3: 2513 00002d98 8ce10000 lw r1,(r7) 2514 00002d9c 20210001 addi r1,r1,#1 2515 00002da0 ace10000 sw (r7),r1 2516 00002da4 00041020 add r2,r0,r4 2517 00002da8 74810000 sgei r1,r4,#0 2518 00002dac 14200008 bnez r1,L85_LF3 2519 00002db0 54000000 nop; not filled. 2520 00002db4 2082001f addi r2,r4,#31 2521 00002db8 L85_LF3: 2522 00002db8 5c460005 srai r6,r2,#0x5 2523 00002dbc 50c10005 slli r1,r6,#0x5 2524 00002dc0 00810822 sub r1,r4,r1 2525 00002dc4 01411804 sll r3,r10,r1 2526 00002dc8 8d210000 lw r1,(r9) 2527 00002dcc 00611026 xor r2,r3,r1 2528 00002dd0 50c10002 slli r1,r6,#0x2 2529 00002dd4 3c0b0000 lhi r11,((_freepages_LF3)>>16)&0xffff 2530 00002dd8 256be438 addui r11,r11,(_freepages_LF3)&0xffff 2531 00002ddc 002b2820 add r5,r1,r11 2532 00002de0 8ca10000 lw r1,(r5) 2533 00002de4 00220824 and r1,r1,r2 2534 00002de8 00230825 or r1,r1,r3 2535 00002dec aca10000 sw (r5),r1 2536 00002df0 23bdfff8 addi r29,r29,#-8 2537 00002df4 3c0b0001 lhi r11,((_debugstr)>>16)&0xffff 2538 00002df8 256b0d78 addui r11,r11,(_debugstr)&0xffff 2539 00002dfc afab0000 sw (r29),r11 2540 00002e00 200b006d addi r11,r0,#109 2541 00002e04 afab0004 sw 4(r29),r11 2542 00002e08 0c001028 jal _dindex 2543 00002e0c 54000000 nop; not filled. 2544 00002e10 23bd0008 addi r29,r29,#8 2545 00002e14 64210000 snei r1,r1,#0 2546 00002e18 14200034 bnez r1,L89_LF3 2547 00002e1c 54000000 nop; not filled. 2548 00002e20 23bdfff8 addi r29,r29,#-8 2549 00002e24 3c0b0001 lhi r11,((_debugstr)>>16)&0xffff 2550 00002e28 256b0d78 addui r11,r11,(_debugstr)&0xffff 2551 00002e2c afab0000 sw (r29),r11 2552 00002e30 200b002b addi r11,r0,#43 2553 00002e34 afab0004 sw 4(r29),r11 2554 00002e38 0c000ff8 jal _dindex 2555 00002e3c 54000000 nop; not filled. 2556 00002e40 23bd0008 addi r29,r29,#8 2557 00002e44 64210000 snei r1,r1,#0 2558 00002e48 1020002c beqz r1,L82_LF3 2559 00002e4c 54000000 nop; not filled. 2560 00002e50 L89_LF3: 2561 00002e50 23bdfff0 addi r29,r29,#-16 2562 00002e54 3c0b0000 lhi r11,((LC0_LF3)>>16)&0xffff 2563 00002e58 256be2c8 addui r11,r11,(LC0_LF3)&0xffff 2564 00002e5c afab0000 sw (r29),r11 2565 00002e60 afa60004 sw 4(r29),r6 2566 00002e64 8ca50000 lw r5,(r5) 2567 00002e68 afa50008 sw 8(r29),r5 2568 00002e6c 0c008260 jal _printf 2569 00002e70 54000000 nop; not filled. 2570 00002e74 23bd0010 addi r29,r29,#16 2571 00002e78 L82_LF3: 2572 00002e78 20840001 addi r4,r4,#1 2573 00002e7c 0088082a slt r1,r4,r8 2574 00002e80 1420ff14 bnez r1,L83_LF3 2575 00002e84 54000000 nop; not filled. 2576 00002e88 L81_LF3: 2577 00002e88 23bdfff8 addi r29,r29,#-8 2578 00002e8c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2579 00002e90 24420d78 addui r2,r2,(_debugstr)&0xffff 2580 00002e94 afa20000 sw (r29),r2 2581 00002e98 200b006d addi r11,r0,#109 2582 00002e9c afab0004 sw 4(r29),r11 2583 00002ea0 0c000f90 jal _dindex 2584 00002ea4 54000000 nop; not filled. 2585 00002ea8 23bd0008 addi r29,r29,#8 2586 00002eac 64210000 snei r1,r1,#0 2587 00002eb0 1420002c bnez r1,L92_LF3 2588 00002eb4 54000000 nop; not filled. 2589 00002eb8 23bdfff8 addi r29,r29,#-8 2590 00002ebc afa20000 sw (r29),r2 2591 00002ec0 200b002b addi r11,r0,#43 2592 00002ec4 afab0004 sw 4(r29),r11 2593 00002ec8 0c000f68 jal _dindex 2594 00002ecc 54000000 nop; not filled. 2595 00002ed0 23bd0008 addi r29,r29,#8 2596 00002ed4 64210000 snei r1,r1,#0 2597 00002ed8 10200030 beqz r1,L91_LF3 2598 00002edc 54000000 nop; not filled. 2599 00002ee0 L92_LF3: 2600 00002ee0 23bdfff8 addi r29,r29,#-8 2601 00002ee4 3c0b0000 lhi r11,((LC3_LF3)>>16)&0xffff 2602 00002ee8 256be338 addui r11,r11,(LC3_LF3)&0xffff 2603 00002eec afab0000 sw (r29),r11 2604 00002ef0 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2605 00002ef4 2421e434 addui r1,r1,(_nfreepages_LF3)&0xffff 2606 00002ef8 8c210000 lw r1,(r1) 2607 00002efc afa10004 sw 4(r29),r1 2608 00002f00 0c0081cc jal _printf 2609 00002f04 54000000 nop; not filled. 2610 00002f08 23bd0008 addi r29,r29,#8 2611 00002f0c L91_LF3: 2612 00002f0c 8fa20000 lw r2,0(r29) 2613 00002f10 8fa30004 lw r3,4(r29) 2614 00002f14 8fa40008 lw r4,8(r29) 2615 00002f18 8fa5000c lw r5,12(r29) 2616 00002f1c 8fa60010 lw r6,16(r29) 2617 00002f20 8fa70014 lw r7,20(r29) 2618 00002f24 8fa80018 lw r8,24(r29) 2619 00002f28 8fa9001c lw r9,28(r29) 2620 00002f2c 8faa0020 lw r10,32(r29) 2621 00002f30 8fab0024 lw r11,36(r29) 2622 00002f34 8fdffff8 lw r31,-8(r30) 2623 00002f38 001ee820 add r29,r0,r30 2624 00002f3c 8fdefffc lw r30,-4(r30) 2625 00002f40 4be00000 jr r31 2626 00002f44 54000000 nop 2627 00002f48 .endproc _MemoryModuleInit 2628 00002f48 .data 2629 0000e354 .align 2 2630 0000e354 _mapnum42_LF3: 2631 0000e354 00000000 .word 0 2632 0000e358 .align 2 2633 0000e358 LC4_LF3: 2634 0000e358 4552524f .ascii "ERROR AT THIS POINT\n\000" 2634 0000e35c 52204154 2634 0000e360 20544849 2634 0000e364 5320504f 2634 0000e368 494e540a 2634 0000e36c 00 2635 0000e36d .align 2 2636 0000e370 LC5_LF3: 2637 0000e370 416c6c6f .ascii "Allocating memory, starting with page %d\n\000" 2637 0000e374 63617469 2637 0000e378 6e67206d 2637 0000e37c 656d6f72 2637 0000e380 792c2073 2637 0000e384 74617274 2637 0000e388 696e6720 2637 0000e38c 77697468 2637 0000e390 20706167 2637 0000e394 65202564 2637 0000e398 0a00 2638 0000e39a .align 2 2639 0000e39c LC6_LF3: 2640 0000e39c 416c6c6f .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" 2640 0000e3a0 63617465 2640 0000e3a4 64206d65 2640 0000e3a8 6d6f7279 2640 0000e3ac 2c206672 2640 0000e3b0 6f6d206d 2640 0000e3b4 61702025 2640 0000e3b8 642c2070 2640 0000e3bc 61676520 2640 0000e3c0 25642c20 2640 0000e3c4 6d61703d 2640 0000e3c8 30782578 2640 0000e3cc 2e0a00 2641 0000e3cf .text 2642 00002f48 .align 2 2643 00002f48 .proc _MemoryAllocPage 2644 00002f48 .global _MemoryAllocPage 2645 00002f48 _MemoryAllocPage: 2646 ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. 2647 00002f48 afbefffc sw -4(r29),r30; push fp 2648 00002f4c 001df020 add r30,r0,r29; fp = sp 2649 00002f50 afbffff8 sw -8(r29),r31; push ret addr 2650 00002f54 2fbd0020 subui r29,r29,#32; alloc local storage 2651 00002f58 afa20000 sw 0(r29),r2 2652 00002f5c afa30004 sw 4(r29),r3 2653 00002f60 afa40008 sw 8(r29),r4 2654 00002f64 afa5000c sw 12(r29),r5 2655 00002f68 afa60010 sw 16(r29),r6 2656 00002f6c afa70014 sw 20(r29),r7 2657 00002f70 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2658 00002f74 2421e434 addui r1,r1,(_nfreepages_LF3)&0xffff 2659 00002f78 8c210000 lw r1,(r1) 2660 00002f7c 64210000 snei r1,r1,#0 2661 00002f80 1420002c bnez r1,L111_LF3 2662 00002f84 54000000 nop; not filled. 2663 00002f88 23bdfff8 addi r29,r29,#-8 2664 00002f8c 3c070000 lhi r7,((LC4_LF3)>>16)&0xffff 2665 00002f90 24e7e358 addui r7,r7,(LC4_LF3)&0xffff 2666 00002f94 afa70000 sw (r29),r7 2667 00002f98 0c008134 jal _printf 2668 00002f9c 54000000 nop; not filled. 2669 00002fa0 20010000 addi r1,r0,#0 2670 00002fa4 23bd0008 addi r29,r29,#8 2671 00002fa8 08000238 j L110_LF3 2672 00002fac 54000000 nop; not filled. 2673 00002fb0 L111_LF3: 2674 00002fb0 23bdfff8 addi r29,r29,#-8 2675 00002fb4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2676 00002fb8 24420d78 addui r2,r2,(_debugstr)&0xffff 2677 00002fbc afa20000 sw (r29),r2 2678 00002fc0 2007006d addi r7,r0,#109 2679 00002fc4 afa70004 sw 4(r29),r7 2680 00002fc8 0c000e68 jal _dindex 2681 00002fcc 54000000 nop; not filled. 2682 00002fd0 23bd0008 addi r29,r29,#8 2683 00002fd4 64210000 snei r1,r1,#0 2684 00002fd8 1420002c bnez r1,L113_LF3 2685 00002fdc 54000000 nop; not filled. 2686 00002fe0 23bdfff8 addi r29,r29,#-8 2687 00002fe4 afa20000 sw (r29),r2 2688 00002fe8 2007002b addi r7,r0,#43 2689 00002fec afa70004 sw 4(r29),r7 2690 00002ff0 0c000e40 jal _dindex 2691 00002ff4 54000000 nop; not filled. 2692 00002ff8 23bd0008 addi r29,r29,#8 2693 00002ffc 64210000 snei r1,r1,#0 2694 00003000 10200030 beqz r1,L112_LF3 2695 00003004 54000000 nop; not filled. 2696 00003008 L113_LF3: 2697 00003008 23bdfff8 addi r29,r29,#-8 2698 0000300c 3c070000 lhi r7,((LC5_LF3)>>16)&0xffff 2699 00003010 24e7e370 addui r7,r7,(LC5_LF3)&0xffff 2700 00003014 afa70000 sw (r29),r7 2701 00003018 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2702 0000301c 2421e354 addui r1,r1,(_mapnum42_LF3)&0xffff 2703 00003020 8c210000 lw r1,(r1) 2704 00003024 afa10004 sw 4(r29),r1 2705 00003028 0c0080a4 jal _printf 2706 0000302c 54000000 nop; not filled. 2707 00003030 23bd0008 addi r29,r29,#8 2708 00003034 L112_LF3: 2709 00003034 3c020000 lhi r2,((_mapnum42_LF3)>>16)&0xffff 2710 00003038 2442e354 addui r2,r2,(_mapnum42_LF3)&0xffff 2711 0000303c 8c410000 lw r1,(r2) 2712 00003040 3c040000 lhi r4,((_freepages_LF3)>>16)&0xffff 2713 00003044 2484e438 addui r4,r4,(_freepages_LF3)&0xffff 2714 00003048 50210002 slli r1,r1,#0x2 2715 0000304c 00240820 add r1,r1,r4 2716 00003050 8c210000 lw r1,(r1) 2717 00003054 64210000 snei r1,r1,#0 2718 00003058 1420004c bnez r1,L115_LF3 2719 0000305c 54000000 nop; not filled. 2720 00003060 3c010000 lhi r1,((_freemapmax_LF3)>>16)&0xffff 2721 00003064 2421e430 addui r1,r1,(_freemapmax_LF3)&0xffff 2722 00003068 8c230000 lw r3,(r1) 2723 0000306c L116_LF3: 2724 0000306c 8c410000 lw r1,(r2) 2725 00003070 20210001 addi r1,r1,#1 2726 00003074 ac410000 sw (r2),r1 2727 00003078 0023082d sge r1,r1,r3 2728 0000307c 1020000c beqz r1,L114_LF3 2729 00003080 54000000 nop; not filled. 2730 00003084 20070000 addi r7,r0,#0 2731 00003088 ac470000 sw (r2),r7 2732 0000308c L114_LF3: 2733 0000308c 8c410000 lw r1,(r2) 2734 00003090 50210002 slli r1,r1,#0x2 2735 00003094 00240820 add r1,r1,r4 2736 00003098 8c210000 lw r1,(r1) 2737 0000309c 64210000 snei r1,r1,#0 2738 000030a0 1020ffc8 beqz r1,L116_LF3 2739 000030a4 54000000 nop; not filled. 2740 000030a8 L115_LF3: 2741 000030a8 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2742 000030ac 2421e354 addui r1,r1,(_mapnum42_LF3)&0xffff 2743 000030b0 8c210000 lw r1,(r1) 2744 000030b4 50210002 slli r1,r1,#0x2 2745 000030b8 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2746 000030bc 24e7e438 addui r7,r7,(_freepages_LF3)&0xffff 2747 000030c0 00270820 add r1,r1,r7 2748 000030c4 8c230000 lw r3,(r1) 2749 000030c8 201f0000 addi r31,r0,#0 2750 000030cc 30610001 andi r1,r3,#1 2751 000030d0 14200020 bnez r1,L120_LF3 2752 000030d4 54000000 nop; not filled. 2753 000030d8 20020001 addi r2,r0,#1 2754 000030dc L121_LF3: 2755 000030dc 23ff0001 addi r31,r31,#1 2756 000030e0 005f0804 sll r1,r2,r31 2757 000030e4 00610824 and r1,r3,r1 2758 000030e8 64210000 snei r1,r1,#0 2759 000030ec 1020ffec beqz r1,L121_LF3 2760 000030f0 54000000 nop; not filled. 2761 000030f4 L120_LF3: 2762 000030f4 20010001 addi r1,r0,#1 2763 000030f8 003f1004 sll r2,r1,r31 2764 000030fc 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2765 00003100 2421e2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2766 00003104 8c210000 lw r1,(r1) 2767 00003108 00412026 xor r4,r2,r1 2768 0000310c 3c050000 lhi r5,((_mapnum42_LF3)>>16)&0xffff 2769 00003110 24a5e354 addui r5,r5,(_mapnum42_LF3)&0xffff 2770 00003114 8ca30000 lw r3,(r5) 2771 00003118 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2772 0000311c 24c6e438 addui r6,r6,(_freepages_LF3)&0xffff 2773 00003120 50610002 slli r1,r3,#0x2 2774 00003124 00261020 add r2,r1,r6 2775 00003128 8c410000 lw r1,(r2) 2776 0000312c 00240824 and r1,r1,r4 2777 00003130 ac410000 sw (r2),r1 2778 00003134 50610005 slli r1,r3,#0x5 2779 00003138 003f1820 add r3,r1,r31 2780 0000313c 23bdfff8 addi r29,r29,#-8 2781 00003140 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2782 00003144 24420d78 addui r2,r2,(_debugstr)&0xffff 2783 00003148 afa20000 sw (r29),r2 2784 0000314c 2007006d addi r7,r0,#109 2785 00003150 afa70004 sw 4(r29),r7 2786 00003154 0c000cdc jal _dindex 2787 00003158 54000000 nop; not filled. 2788 0000315c 23bd0008 addi r29,r29,#8 2789 00003160 64210000 snei r1,r1,#0 2790 00003164 1420002c bnez r1,L126_LF3 2791 00003168 54000000 nop; not filled. 2792 0000316c 23bdfff8 addi r29,r29,#-8 2793 00003170 afa20000 sw (r29),r2 2794 00003174 2007002b addi r7,r0,#43 2795 00003178 afa70004 sw 4(r29),r7 2796 0000317c 0c000cb4 jal _dindex 2797 00003180 54000000 nop; not filled. 2798 00003184 23bd0008 addi r29,r29,#8 2799 00003188 64210000 snei r1,r1,#0 2800 0000318c 1020003c beqz r1,L125_LF3 2801 00003190 54000000 nop; not filled. 2802 00003194 L126_LF3: 2803 00003194 23bdfff0 addi r29,r29,#-16 2804 00003198 3c070000 lhi r7,((LC6_LF3)>>16)&0xffff 2805 0000319c 24e7e39c addui r7,r7,(LC6_LF3)&0xffff 2806 000031a0 afa70000 sw (r29),r7 2807 000031a4 8ca10000 lw r1,(r5) 2808 000031a8 afa10004 sw 4(r29),r1 2809 000031ac afa30008 sw 8(r29),r3 2810 000031b0 50210002 slli r1,r1,#0x2 2811 000031b4 00260820 add r1,r1,r6 2812 000031b8 8c210000 lw r1,(r1) 2813 000031bc afa1000c sw 12(r29),r1 2814 000031c0 0c007f0c jal _printf 2815 000031c4 54000000 nop; not filled. 2816 000031c8 23bd0010 addi r29,r29,#16 2817 000031cc L125_LF3: 2818 000031cc 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2819 000031d0 2421e434 addui r1,r1,(_nfreepages_LF3)&0xffff 2820 000031d4 8c220000 lw r2,(r1) 2821 000031d8 2042ffff addi r2,r2,#-1 2822 000031dc ac220000 sw (r1),r2 2823 000031e0 00030820 add r1,r0,r3 2824 000031e4 L110_LF3: 2825 000031e4 8fa20000 lw r2,0(r29) 2826 000031e8 8fa30004 lw r3,4(r29) 2827 000031ec 8fa40008 lw r4,8(r29) 2828 000031f0 8fa5000c lw r5,12(r29) 2829 000031f4 8fa60010 lw r6,16(r29) 2830 000031f8 8fa70014 lw r7,20(r29) 2831 000031fc 8fdffff8 lw r31,-8(r30) 2832 00003200 001ee820 add r29,r0,r30 2833 00003204 8fdefffc lw r30,-4(r30) 2834 00003208 4be00000 jr r31 2835 0000320c 54000000 nop 2836 00003210 .endproc _MemoryAllocPage 2837 00003210 .data 2838 0000e3cf .align 2 2839 0000e3d0 LC7_LF3: 2840 0000e3d0 46726565 .ascii "Freed page 0x%x, %d remaining.\n\000" 2840 0000e3d4 64207061 2840 0000e3d8 67652030 2840 0000e3dc 7825782c 2840 0000e3e0 20256420 2840 0000e3e4 72656d61 2840 0000e3e8 696e696e 2840 0000e3ec 672e0a00 2841 0000e3f0 .text 2842 00003210 .align 2 2843 00003210 .proc _MemoryFreePage 2844 00003210 .global _MemoryFreePage 2845 00003210 _MemoryFreePage: 2846 ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. 2847 00003210 afbefffc sw -4(r29),r30; push fp 2848 00003214 001df020 add r30,r0,r29; fp = sp 2849 00003218 afbffff8 sw -8(r29),r31; push ret addr 2850 0000321c 2fbd0020 subui r29,r29,#32; alloc local storage 2851 00003220 afa20000 sw 0(r29),r2 2852 00003224 afa30004 sw 4(r29),r3 2853 00003228 afa40008 sw 8(r29),r4 2854 0000322c afa5000c sw 12(r29),r5 2855 00003230 afa60010 sw 16(r29),r6 2856 00003234 afa70014 sw 20(r29),r7 2857 00003238 8fc60000 lw r6,(r30) 2858 0000323c 20030001 addi r3,r0,#1 2859 00003240 00061020 add r2,r0,r6 2860 00003244 74c10000 sgei r1,r6,#0 2861 00003248 14200008 bnez r1,L129_LF3 2862 0000324c 54000000 nop; not filled. 2863 00003250 20c2001f addi r2,r6,#31 2864 00003254 L129_LF3: 2865 00003254 5c450005 srai r5,r2,#0x5 2866 00003258 50a10005 slli r1,r5,#0x5 2867 0000325c 00c10822 sub r1,r6,r1 2868 00003260 00611804 sll r3,r3,r1 2869 00003264 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2870 00003268 2421e2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2871 0000326c 8c210000 lw r1,(r1) 2872 00003270 00611026 xor r2,r3,r1 2873 00003274 50a10002 slli r1,r5,#0x2 2874 00003278 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2875 0000327c 24e7e438 addui r7,r7,(_freepages_LF3)&0xffff 2876 00003280 00272020 add r4,r1,r7 2877 00003284 8c810000 lw r1,(r4) 2878 00003288 00220824 and r1,r1,r2 2879 0000328c 00230825 or r1,r1,r3 2880 00003290 ac810000 sw (r4),r1 2881 00003294 23bdfff8 addi r29,r29,#-8 2882 00003298 3c070001 lhi r7,((_debugstr)>>16)&0xffff 2883 0000329c 24e70d78 addui r7,r7,(_debugstr)&0xffff 2884 000032a0 afa70000 sw (r29),r7 2885 000032a4 2007006d addi r7,r0,#109 2886 000032a8 afa70004 sw 4(r29),r7 2887 000032ac 0c000b84 jal _dindex 2888 000032b0 54000000 nop; not filled. 2889 000032b4 23bd0008 addi r29,r29,#8 2890 000032b8 64210000 snei r1,r1,#0 2891 000032bc 14200034 bnez r1,L133_LF3 2892 000032c0 54000000 nop; not filled. 2893 000032c4 23bdfff8 addi r29,r29,#-8 2894 000032c8 3c070001 lhi r7,((_debugstr)>>16)&0xffff 2895 000032cc 24e70d78 addui r7,r7,(_debugstr)&0xffff 2896 000032d0 afa70000 sw (r29),r7 2897 000032d4 2007002b addi r7,r0,#43 2898 000032d8 afa70004 sw 4(r29),r7 2899 000032dc 0c000b54 jal _dindex 2900 000032e0 54000000 nop; not filled. 2901 000032e4 23bd0008 addi r29,r29,#8 2902 000032e8 64210000 snei r1,r1,#0 2903 000032ec 1020002c beqz r1,L128_LF3 2904 000032f0 54000000 nop; not filled. 2905 000032f4 L133_LF3: 2906 000032f4 23bdfff0 addi r29,r29,#-16 2907 000032f8 3c070000 lhi r7,((LC0_LF3)>>16)&0xffff 2908 000032fc 24e7e2c8 addui r7,r7,(LC0_LF3)&0xffff 2909 00003300 afa70000 sw (r29),r7 2910 00003304 afa50004 sw 4(r29),r5 2911 00003308 8c840000 lw r4,(r4) 2912 0000330c afa40008 sw 8(r29),r4 2913 00003310 0c007dbc jal _printf 2914 00003314 54000000 nop; not filled. 2915 00003318 23bd0010 addi r29,r29,#16 2916 0000331c L128_LF3: 2917 0000331c 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2918 00003320 2442e434 addui r2,r2,(_nfreepages_LF3)&0xffff 2919 00003324 8c410000 lw r1,(r2) 2920 00003328 20210001 addi r1,r1,#1 2921 0000332c ac410000 sw (r2),r1 2922 00003330 23bdfff8 addi r29,r29,#-8 2923 00003334 3c030001 lhi r3,((_debugstr)>>16)&0xffff 2924 00003338 24630d78 addui r3,r3,(_debugstr)&0xffff 2925 0000333c afa30000 sw (r29),r3 2926 00003340 2007006d addi r7,r0,#109 2927 00003344 afa70004 sw 4(r29),r7 2928 00003348 0c000ae8 jal _dindex 2929 0000334c 54000000 nop; not filled. 2930 00003350 23bd0008 addi r29,r29,#8 2931 00003354 64210000 snei r1,r1,#0 2932 00003358 1420002c bnez r1,L135_LF3 2933 0000335c 54000000 nop; not filled. 2934 00003360 23bdfff8 addi r29,r29,#-8 2935 00003364 afa30000 sw (r29),r3 2936 00003368 2007002b addi r7,r0,#43 2937 0000336c afa70004 sw 4(r29),r7 2938 00003370 0c000ac0 jal _dindex 2939 00003374 54000000 nop; not filled. 2940 00003378 23bd0008 addi r29,r29,#8 2941 0000337c 64210000 snei r1,r1,#0 2942 00003380 1020002c beqz r1,L134_LF3 2943 00003384 54000000 nop; not filled. 2944 00003388 L135_LF3: 2945 00003388 23bdfff0 addi r29,r29,#-16 2946 0000338c 3c070000 lhi r7,((LC7_LF3)>>16)&0xffff 2947 00003390 24e7e3d0 addui r7,r7,(LC7_LF3)&0xffff 2948 00003394 afa70000 sw (r29),r7 2949 00003398 afa60004 sw 4(r29),r6 2950 0000339c 8c420000 lw r2,(r2) 2951 000033a0 afa20008 sw 8(r29),r2 2952 000033a4 0c007d28 jal _printf 2953 000033a8 54000000 nop; not filled. 2954 000033ac 23bd0010 addi r29,r29,#16 2955 000033b0 L134_LF3: 2956 000033b0 8fa20000 lw r2,0(r29) 2957 000033b4 8fa30004 lw r3,4(r29) 2958 000033b8 8fa40008 lw r4,8(r29) 2959 000033bc 8fa5000c lw r5,12(r29) 2960 000033c0 8fa60010 lw r6,16(r29) 2961 000033c4 8fa70014 lw r7,20(r29) 2962 000033c8 8fdffff8 lw r31,-8(r30) 2963 000033cc 001ee820 add r29,r0,r30 2964 000033d0 8fdefffc lw r30,-4(r30) 2965 000033d4 4be00000 jr r31 2966 000033d8 54000000 nop 2967 000033dc .endproc _MemoryFreePage 2968 000033dc .align 2 2969 000033dc .proc _MemoryTranslateUserToSystem 2970 000033dc .global _MemoryTranslateUserToSystem 2971 000033dc _MemoryTranslateUserToSystem: 2972 ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. 2973 000033dc afbefffc sw -4(r29),r30; push fp 2974 000033e0 001df020 add r30,r0,r29; fp = sp 2975 000033e4 afbffff8 sw -8(r29),r31; push ret addr 2976 000033e8 2fbd0018 subui r29,r29,#24; alloc local storage 2977 000033ec afa20000 sw 0(r29),r2 2978 000033f0 afa30004 sw 4(r29),r3 2979 000033f4 afa40008 sw 8(r29),r4 2980 000033f8 8fc30000 lw r3,(r30) 2981 000033fc 8fc10004 lw r1,4(r30) 2982 00003400 583f0010 srli r31,r1,#0x10 2983 00003404 3022ffff andi r2,r1,#0xffff 2984 00003408 8c610064 lw r1,100(r3) 2985 0000340c 03e1082b sgt r1,r31,r1 2986 00003410 14200024 bnez r1,L139_LF3 2987 00003414 54000000 nop; not filled. 2988 00003418 53e10002 slli r1,r31,#0x2 2989 0000341c 00230820 add r1,r1,r3 2990 00003420 8c210060 lw r1,96(r1) 2991 00003424 2004fff8 addi r4,r0,#-8 2992 00003428 00240824 and r1,r1,r4 2993 0000342c 00220820 add r1,r1,r2 2994 00003430 08000008 j L140_LF3 2995 00003434 54000000 nop; not filled. 2996 00003438 L139_LF3: 2997 00003438 20010000 addi r1,r0,#0 2998 0000343c L140_LF3: 2999 0000343c 8fa20000 lw r2,0(r29) 3000 00003440 8fa30004 lw r3,4(r29) 3001 00003444 8fa40008 lw r4,8(r29) 3002 00003448 8fdffff8 lw r31,-8(r30) 3003 0000344c 001ee820 add r29,r0,r30 3004 00003450 8fdefffc lw r30,-4(r30) 3005 00003454 4be00000 jr r31 3006 00003458 54000000 nop 3007 0000345c .endproc _MemoryTranslateUserToSystem 3008 0000345c .align 2 3009 0000345c .proc _MemoryCopySystemToUser 3010 0000345c .global _MemoryCopySystemToUser 3011 0000345c _MemoryCopySystemToUser: 3012 ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. 3013 0000345c afbefffc sw -4(r29),r30; push fp 3014 00003460 001df020 add r30,r0,r29; fp = sp 3015 00003464 afbffff8 sw -8(r29),r31; push ret addr 3016 00003468 2fbd0028 subui r29,r29,#40; alloc local storage 3017 0000346c afa20000 sw 0(r29),r2 3018 00003470 afa30004 sw 4(r29),r3 3019 00003474 afa40008 sw 8(r29),r4 3020 00003478 afa5000c sw 12(r29),r5 3021 0000347c afa60010 sw 16(r29),r6 3022 00003480 afa70014 sw 20(r29),r7 3023 00003484 afa80018 sw 24(r29),r8 3024 00003488 afa9001c sw 28(r29),r9 3025 0000348c 8fc70000 lw r7,(r30) 3026 00003490 8fc50004 lw r5,4(r30) 3027 00003494 8fc40008 lw r4,8(r30) 3028 00003498 8fc3000c lw r3,12(r30) 3029 0000349c 20060000 addi r6,r0,#0 3030 000034a0 6c610000 sgti r1,r3,#0 3031 000034a4 102000a4 beqz r1,L167_LF3 3032 000034a8 54000000 nop; not filled. 3033 000034ac 3c080001 lhi r8,#1 3034 000034b0 25080000 addui r8,r8,#0 3035 000034b4 L168_LF3: 3036 000034b4 58820010 srli r2,r4,#0x10 3037 000034b8 309fffff andi r31,r4,#0xffff 3038 000034bc 8ce10064 lw r1,100(r7) 3039 000034c0 0041082b sgt r1,r2,r1 3040 000034c4 10200010 beqz r1,L170_LF3 3041 000034c8 54000000 nop; not filled. 3042 000034cc 201f0000 addi r31,r0,#0 3043 000034d0 0800001c j L169_LF3 3044 000034d4 54000000 nop; not filled. 3045 000034d8 L170_LF3: 3046 000034d8 50410002 slli r1,r2,#0x2 3047 000034dc 00270820 add r1,r1,r7 3048 000034e0 8c210060 lw r1,96(r1) 3049 000034e4 2009fff8 addi r9,r0,#-8 3050 000034e8 00290824 and r1,r1,r9 3051 000034ec 003ff820 add r31,r1,r31 3052 000034f0 L169_LF3: 3053 000034f0 67e10000 snei r1,r31,#0 3054 000034f4 10200054 beqz r1,L167_LF3 3055 000034f8 54000000 nop; not filled. 3056 000034fc 33e1ffff andi r1,r31,#65535 3057 00003500 01011022 sub r2,r8,r1 3058 00003504 0043082b sgt r1,r2,r3 3059 00003508 10200008 beqz r1,L172_LF3 3060 0000350c 54000000 nop; not filled. 3061 00003510 00031020 add r2,r0,r3 3062 00003514 L172_LF3: 3063 00003514 23bdfff0 addi r29,r29,#-16 3064 00003518 afa50000 sw (r29),r5 3065 0000351c afbf0004 sw 4(r29),r31 3066 00003520 afa20008 sw 8(r29),r2 3067 00003524 0c000c9c jal _bcopy 3068 00003528 54000000 nop; not filled. 3069 0000352c 23bd0010 addi r29,r29,#16 3070 00003530 00621822 sub r3,r3,r2 3071 00003534 00c23020 add r6,r6,r2 3072 00003538 00a22820 add r5,r5,r2 3073 0000353c 00822020 add r4,r4,r2 3074 00003540 6c610000 sgti r1,r3,#0 3075 00003544 1420ff6c bnez r1,L168_LF3 3076 00003548 54000000 nop; not filled. 3077 0000354c L167_LF3: 3078 0000354c 00060820 add r1,r0,r6 3079 00003550 8fa20000 lw r2,0(r29) 3080 00003554 8fa30004 lw r3,4(r29) 3081 00003558 8fa40008 lw r4,8(r29) 3082 0000355c 8fa5000c lw r5,12(r29) 3083 00003560 8fa60010 lw r6,16(r29) 3084 00003564 8fa70014 lw r7,20(r29) 3085 00003568 8fa80018 lw r8,24(r29) 3086 0000356c 8fa9001c lw r9,28(r29) 3087 00003570 8fdffff8 lw r31,-8(r30) 3088 00003574 001ee820 add r29,r0,r30 3089 00003578 8fdefffc lw r30,-4(r30) 3090 0000357c 4be00000 jr r31 3091 00003580 54000000 nop 3092 00003584 .endproc _MemoryCopySystemToUser 3093 00003584 .align 2 3094 00003584 .proc _MemoryCopyUserToSystem 3095 00003584 .global _MemoryCopyUserToSystem 3096 00003584 _MemoryCopyUserToSystem: 3097 ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. 3098 00003584 afbefffc sw -4(r29),r30; push fp 3099 00003588 001df020 add r30,r0,r29; fp = sp 3100 0000358c afbffff8 sw -8(r29),r31; push ret addr 3101 00003590 2fbd0028 subui r29,r29,#40; alloc local storage 3102 00003594 afa20000 sw 0(r29),r2 3103 00003598 afa30004 sw 4(r29),r3 3104 0000359c afa40008 sw 8(r29),r4 3105 000035a0 afa5000c sw 12(r29),r5 3106 000035a4 afa60010 sw 16(r29),r6 3107 000035a8 afa70014 sw 20(r29),r7 3108 000035ac afa80018 sw 24(r29),r8 3109 000035b0 afa9001c sw 28(r29),r9 3110 000035b4 8fc70000 lw r7,(r30) 3111 000035b8 8fc50008 lw r5,8(r30) 3112 000035bc 8fc40004 lw r4,4(r30) 3113 000035c0 8fc3000c lw r3,12(r30) 3114 000035c4 20060000 addi r6,r0,#0 3115 000035c8 6c610000 sgti r1,r3,#0 3116 000035cc 102000a4 beqz r1,L191_LF3 3117 000035d0 54000000 nop; not filled. 3118 000035d4 3c080001 lhi r8,#1 3119 000035d8 25080000 addui r8,r8,#0 3120 000035dc L192_LF3: 3121 000035dc 58820010 srli r2,r4,#0x10 3122 000035e0 309fffff andi r31,r4,#0xffff 3123 000035e4 8ce10064 lw r1,100(r7) 3124 000035e8 0041082b sgt r1,r2,r1 3125 000035ec 10200010 beqz r1,L194_LF3 3126 000035f0 54000000 nop; not filled. 3127 000035f4 201f0000 addi r31,r0,#0 3128 000035f8 0800001c j L193_LF3 3129 000035fc 54000000 nop; not filled. 3130 00003600 L194_LF3: 3131 00003600 50410002 slli r1,r2,#0x2 3132 00003604 00270820 add r1,r1,r7 3133 00003608 8c210060 lw r1,96(r1) 3134 0000360c 2009fff8 addi r9,r0,#-8 3135 00003610 00290824 and r1,r1,r9 3136 00003614 003ff820 add r31,r1,r31 3137 00003618 L193_LF3: 3138 00003618 67e10000 snei r1,r31,#0 3139 0000361c 10200054 beqz r1,L191_LF3 3140 00003620 54000000 nop; not filled. 3141 00003624 33e1ffff andi r1,r31,#65535 3142 00003628 01011022 sub r2,r8,r1 3143 0000362c 0043082b sgt r1,r2,r3 3144 00003630 10200008 beqz r1,L197_LF3 3145 00003634 54000000 nop; not filled. 3146 00003638 00031020 add r2,r0,r3 3147 0000363c L197_LF3: 3148 0000363c 23bdfff0 addi r29,r29,#-16 3149 00003640 afbf0000 sw (r29),r31 3150 00003644 afa50004 sw 4(r29),r5 3151 00003648 afa20008 sw 8(r29),r2 3152 0000364c 0c000b74 jal _bcopy 3153 00003650 54000000 nop; not filled. 3154 00003654 23bd0010 addi r29,r29,#16 3155 00003658 00621822 sub r3,r3,r2 3156 0000365c 00c23020 add r6,r6,r2 3157 00003660 00a22820 add r5,r5,r2 3158 00003664 00822020 add r4,r4,r2 3159 00003668 6c610000 sgti r1,r3,#0 3160 0000366c 1420ff6c bnez r1,L192_LF3 3161 00003670 54000000 nop; not filled. 3162 00003674 L191_LF3: 3163 00003674 00060820 add r1,r0,r6 3164 00003678 8fa20000 lw r2,0(r29) 3165 0000367c 8fa30004 lw r3,4(r29) 3166 00003680 8fa40008 lw r4,8(r29) 3167 00003684 8fa5000c lw r5,12(r29) 3168 00003688 8fa60010 lw r6,16(r29) 3169 0000368c 8fa70014 lw r7,20(r29) 3170 00003690 8fa80018 lw r8,24(r29) 3171 00003694 8fa9001c lw r9,28(r29) 3172 00003698 8fdffff8 lw r31,-8(r30) 3173 0000369c 001ee820 add r29,r0,r30 3174 000036a0 8fdefffc lw r30,-4(r30) 3175 000036a4 4be00000 jr r31 3176 000036a8 54000000 nop 3177 000036ac .endproc _MemoryCopyUserToSystem 3178 000036ac .align 2 3179 000036ac .proc _MemorySetupPte 3180 000036ac .global _MemorySetupPte 3181 000036ac _MemorySetupPte: 3182 ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. 3183 000036ac afbefffc sw -4(r29),r30; push fp 3184 000036b0 001df020 add r30,r0,r29; fp = sp 3185 000036b4 afbffff8 sw -8(r29),r31; push ret addr 3186 000036b8 2fbd0008 subui r29,r29,#8; alloc local storage 3187 000036bc 8fc10000 lw r1,(r30) 3188 000036c0 50210010 slli r1,r1,#0x10 3189 000036c4 34210001 ori r1,r1,#1 3190 000036c8 8fdffff8 lw r31,-8(r30) 3191 000036cc 001ee820 add r29,r0,r30 3192 000036d0 8fdefffc lw r30,-4(r30) 3193 000036d4 4be00000 jr r31 3194 000036d8 54000000 nop 3195 000036dc .endproc _MemorySetupPte 3196 000036dc .align 2 3197 000036dc .proc _MemoryFreePte 3198 000036dc .global _MemoryFreePte 3199 000036dc _MemoryFreePte: 3200 ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. 3201 000036dc afbefffc sw -4(r29),r30; push fp 3202 000036e0 001df020 add r30,r0,r29; fp = sp 3203 000036e4 afbffff8 sw -8(r29),r31; push ret addr 3204 000036e8 2fbd0008 subui r29,r29,#8; alloc local storage 3205 000036ec 23bdfff8 addi r29,r29,#-8 3206 000036f0 97c10000 lhu r1,(r30) 3207 000036f4 afa10000 sw (r29),r1 3208 000036f8 0ffffb14 jal _MemoryFreePage 3209 000036fc 54000000 nop; not filled. 3210 00003700 23bd0008 addi r29,r29,#8 3211 00003704 8fdffff8 lw r31,-8(r30) 3212 00003708 001ee820 add r29,r0,r30 3213 0000370c 8fdefffc lw r30,-4(r30) 3214 00003710 4be00000 jr r31 3215 00003714 54000000 nop 3216 00003718 .endproc _MemoryFreePte 3217 00003718 .align 2 3218 00003718 .proc _MemoryPteToPage 3219 00003718 .global _MemoryPteToPage 3220 00003718 _MemoryPteToPage: 3221 ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. 3222 00003718 afbefffc sw -4(r29),r30; push fp 3223 0000371c 001df020 add r30,r0,r29; fp = sp 3224 00003720 afbffff8 sw -8(r29),r31; push ret addr 3225 00003724 2fbd0008 subui r29,r29,#8; alloc local storage 3226 00003728 8fc10000 lw r1,(r30) 3227 0000372c 201ffff8 addi r31,r0,#-8 3228 00003730 003f0824 and r1,r1,r31 3229 00003734 8fdffff8 lw r31,-8(r30) 3230 00003738 001ee820 add r29,r0,r30 3231 0000373c 8fdefffc lw r30,-4(r30) 3232 00003740 4be00000 jr r31 3233 00003744 54000000 nop 3234 00003748 .endproc _MemoryPteToPage 3235 00003748 .data 3236 0000e3f0 .align 2 3237 0000e3f0 _invalidOps61_LF3: 3238 0000e3f0 00003404 .word 13316 3239 0000e3f4 .align 2 3240 0000e3f4 LC8_LF3: 3241 0000e3f4 4f706572 .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" 3241 0000e3f8 616e6420 3241 0000e3fc 666f7220 3241 0000e400 696e7374 3241 0000e404 72756374 3241 0000e408 696f6e20 3241 0000e40c 25303878 3241 0000e410 20697320 3241 0000e414 30782578 3241 0000e418 20287265 3241 0000e41c 673d3c25 3241 0000e420 642c3078 3241 0000e424 25783e29 3241 0000e428 0a00 3242 0000e42a .text 3243 00003748 .align 2 3244 00003748 .proc _MemoryGetOperandAddress 3245 00003748 .global _MemoryGetOperandAddress 3246 00003748 _MemoryGetOperandAddress: 3247 ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. 3248 00003748 afbefffc sw -4(r29),r30; push fp 3249 0000374c 001df020 add r30,r0,r29; fp = sp 3250 00003750 afbffff8 sw -8(r29),r31; push ret addr 3251 00003754 2fbd0020 subui r29,r29,#32; alloc local storage 3252 00003758 afa20000 sw 0(r29),r2 3253 0000375c afa30004 sw 4(r29),r3 3254 00003760 afa40008 sw 8(r29),r4 3255 00003764 afa5000c sw 12(r29),r5 3256 00003768 afa60010 sw 16(r29),r6 3257 0000376c afa70014 sw 20(r29),r7 3258 00003770 8fc20000 lw r2,(r30) 3259 00003774 8fc50004 lw r5,4(r30) 3260 00003778 58a1001a srli r1,r5,#0x1a 3261 0000377c 203fffe0 addi r31,r1,#-32 3262 00003780 6fe1000f sgtui r1,r31,#15 3263 00003784 14200020 bnez r1,L214_LF3 3264 00003788 54000000 nop; not filled. 3265 0000378c 3c010000 lhi r1,((_invalidOps61_LF3)>>16)&0xffff 3266 00003790 2421e3f0 addui r1,r1,(_invalidOps61_LF3)&0xffff 3267 00003794 8c210000 lw r1,(r1) 3268 00003798 003f0806 srl r1,r1,r31 3269 0000379c 30210001 andi r1,r1,#1 3270 000037a0 10200010 beqz r1,L213_LF3 3271 000037a4 54000000 nop; not filled. 3272 000037a8 L214_LF3: 3273 000037a8 2001ffff addi r1,r0,#-1 3274 000037ac 080000c4 j L218_LF3 3275 000037b0 54000000 nop; not filled. 3276 000037b4 L213_LF3: 3277 000037b4 58a10015 srli r1,r5,#0x15 3278 000037b8 3026001f andi r6,r1,#31 3279 000037bc 30bfffff andi r31,r5,#0xffff 3280 000037c0 5be1000f srli r1,r31,#0xf 3281 000037c4 10200010 beqz r1,L215_LF3 3282 000037c8 54000000 nop; not filled. 3283 000037cc 3c07ffff lhi r7,#-1 3284 000037d0 24e70000 addui r7,r7,#0 3285 000037d4 03e7f825 or r31,r31,r7 3286 000037d8 L215_LF3: 3287 000037d8 8c420000 lw r2,(r2) 3288 000037dc 50c10002 slli r1,r6,#0x2 3289 000037e0 00220820 add r1,r1,r2 3290 000037e4 8c230028 lw r3,40(r1) 3291 000037e8 007f2020 add r4,r3,r31 3292 000037ec 23bdfff8 addi r29,r29,#-8 3293 000037f0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3294 000037f4 24420d78 addui r2,r2,(_debugstr)&0xffff 3295 000037f8 afa20000 sw (r29),r2 3296 000037fc 2007006d addi r7,r0,#109 3297 00003800 afa70004 sw 4(r29),r7 3298 00003804 0c00062c jal _dindex 3299 00003808 54000000 nop; not filled. 3300 0000380c 23bd0008 addi r29,r29,#8 3301 00003810 64210000 snei r1,r1,#0 3302 00003814 1420002c bnez r1,L217_LF3 3303 00003818 54000000 nop; not filled. 3304 0000381c 23bdfff8 addi r29,r29,#-8 3305 00003820 afa20000 sw (r29),r2 3306 00003824 2007002b addi r7,r0,#43 3307 00003828 afa70004 sw 4(r29),r7 3308 0000382c 0c000604 jal _dindex 3309 00003830 54000000 nop; not filled. 3310 00003834 23bd0008 addi r29,r29,#8 3311 00003838 64210000 snei r1,r1,#0 3312 0000383c 10200030 beqz r1,L216_LF3 3313 00003840 54000000 nop; not filled. 3314 00003844 L217_LF3: 3315 00003844 23bdffe8 addi r29,r29,#-24 3316 00003848 3c070000 lhi r7,((LC8_LF3)>>16)&0xffff 3317 0000384c 24e7e3f4 addui r7,r7,(LC8_LF3)&0xffff 3318 00003850 afa70000 sw (r29),r7 3319 00003854 afa50004 sw 4(r29),r5 3320 00003858 afa40008 sw 8(r29),r4 3321 0000385c afa6000c sw 12(r29),r6 3322 00003860 afa30010 sw 16(r29),r3 3323 00003864 0c007868 jal _printf 3324 00003868 54000000 nop; not filled. 3325 0000386c 23bd0018 addi r29,r29,#24 3326 00003870 L216_LF3: 3327 00003870 00040820 add r1,r0,r4 3328 00003874 L218_LF3: 3329 00003874 8fa20000 lw r2,0(r29) 3330 00003878 8fa30004 lw r3,4(r29) 3331 0000387c 8fa40008 lw r4,8(r29) 3332 00003880 8fa5000c lw r5,12(r29) 3333 00003884 8fa60010 lw r6,16(r29) 3334 00003888 8fa70014 lw r7,20(r29) 3335 0000388c 8fdffff8 lw r31,-8(r30) 3336 00003890 001ee820 add r29,r0,r30 3337 00003894 8fdefffc lw r30,-4(r30) 3338 00003898 4be00000 jr r31 3339 0000389c 54000000 nop 3340 000038a0 .endproc _MemoryGetOperandAddress 3341 000038a0 .data 3342 0000e42a .align 2 3343 0000e42c _pagestart_LF3: 3344 0000e42c .space 4 3345 0000e430 .align 2 3346 0000e430 _freemapmax_LF3: 3347 0000e430 .space 4 3348 0000e434 .align 2 3349 0000e434 _nfreepages_LF3: 3350 0000e434 .space 4 3351 0000e438 .align 2 3352 0000e438 _freepages_LF3: 3353 0000e438 .space 8192 3354 ; Compiled by GCC 3355 00010438 .text 3356 000038a0 .align 2 3357 000038a0 .proc _isspace 3358 000038a0 .global _isspace 3359 000038a0 _isspace: 3360 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 3361 000038a0 afbefffc sw -4(r29),r30; push fp 3362 000038a4 001df020 add r30,r0,r29; fp = sp 3363 000038a8 afbffff8 sw -8(r29),r31; push ret addr 3364 000038ac 2fbd0010 subui r29,r29,#16; alloc local storage 3365 000038b0 afa20000 sw 0(r29),r2 3366 000038b4 83c20003 lb r2,3(r30) 3367 000038b8 201f0000 addi r31,r0,#0 3368 000038bc 304100ff andi r1,r2,#0x00ff 3369 000038c0 60210020 seqi r1,r1,#32 3370 000038c4 14200018 bnez r1,L6_LF4 3371 000038c8 54000000 nop; not filled. 3372 000038cc 2041fff7 addi r1,r2,#-9 3373 000038d0 302100ff andi r1,r1,#0x00ff 3374 000038d4 70210001 sleui r1,r1,#1 3375 000038d8 10200008 beqz r1,L5_LF4 3376 000038dc 54000000 nop; not filled. 3377 000038e0 L6_LF4: 3378 000038e0 201f0001 addi r31,r0,#1 3379 000038e4 L5_LF4: 3380 000038e4 001f0820 add r1,r0,r31 3381 000038e8 8fa20000 lw r2,0(r29) 3382 000038ec 8fdffff8 lw r31,-8(r30) 3383 000038f0 001ee820 add r29,r0,r30 3384 000038f4 8fdefffc lw r30,-4(r30) 3385 000038f8 4be00000 jr r31 3386 000038fc 54000000 nop 3387 00003900 .endproc _isspace 3388 00003900 .align 2 3389 00003900 .proc _isxdigit 3390 00003900 .global _isxdigit 3391 00003900 _isxdigit: 3392 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 3393 00003900 afbefffc sw -4(r29),r30; push fp 3394 00003904 001df020 add r30,r0,r29; fp = sp 3395 00003908 afbffff8 sw -8(r29),r31; push ret addr 3396 0000390c 2fbd0010 subui r29,r29,#16; alloc local storage 3397 00003910 afa20000 sw 0(r29),r2 3398 00003914 83df0003 lb r31,3(r30) 3399 00003918 20020000 addi r2,r0,#0 3400 0000391c 23e1ffd0 addi r1,r31,#-48 3401 00003920 302100ff andi r1,r1,#0x00ff 3402 00003924 70210009 sleui r1,r1,#9 3403 00003928 14200028 bnez r1,L12_LF4 3404 0000392c 54000000 nop; not filled. 3405 00003930 23e1ff9f addi r1,r31,#-97 3406 00003934 302100ff andi r1,r1,#0x00ff 3407 00003938 70210005 sleui r1,r1,#5 3408 0000393c 14200014 bnez r1,L12_LF4 3409 00003940 54000000 nop; not filled. 3410 00003944 33e100ff andi r1,r31,#0x00ff 3411 00003948 64210041 snei r1,r1,#65 3412 0000394c 14200008 bnez r1,L11_LF4 3413 00003950 54000000 nop; not filled. 3414 00003954 L12_LF4: 3415 00003954 20020001 addi r2,r0,#1 3416 00003958 L11_LF4: 3417 00003958 00020820 add r1,r0,r2 3418 0000395c 8fa20000 lw r2,0(r29) 3419 00003960 8fdffff8 lw r31,-8(r30) 3420 00003964 001ee820 add r29,r0,r30 3421 00003968 8fdefffc lw r30,-4(r30) 3422 0000396c 4be00000 jr r31 3423 00003970 54000000 nop 3424 00003974 .endproc _isxdigit 3425 00003974 .align 2 3426 00003974 .proc _dstrcpy 3427 00003974 .global _dstrcpy 3428 00003974 _dstrcpy: 3429 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 3430 00003974 afbefffc sw -4(r29),r30; push fp 3431 00003978 001df020 add r30,r0,r29; fp = sp 3432 0000397c afbffff8 sw -8(r29),r31; push ret addr 3433 00003980 2fbd0010 subui r29,r29,#16; alloc local storage 3434 00003984 afa20000 sw 0(r29),r2 3435 00003988 afa30004 sw 4(r29),r3 3436 0000398c 8fdf0000 lw r31,(r30) 3437 00003990 8fc20004 lw r2,4(r30) 3438 00003994 001f1820 add r3,r0,r31 3439 00003998 L19_LF4: 3440 00003998 80410000 lb r1,(r2) 3441 0000399c a3e10000 sb (r31),r1 3442 000039a0 20420001 addi r2,r2,#1 3443 000039a4 23ff0001 addi r31,r31,#1 3444 000039a8 302100ff andi r1,r1,#0x00ff 3445 000039ac 64210000 snei r1,r1,#0 3446 000039b0 1420ffe4 bnez r1,L19_LF4 3447 000039b4 54000000 nop; not filled. 3448 000039b8 00030820 add r1,r0,r3 3449 000039bc 8fa20000 lw r2,0(r29) 3450 000039c0 8fa30004 lw r3,4(r29) 3451 000039c4 8fdffff8 lw r31,-8(r30) 3452 000039c8 001ee820 add r29,r0,r30 3453 000039cc 8fdefffc lw r30,-4(r30) 3454 000039d0 4be00000 jr r31 3455 000039d4 54000000 nop 3456 000039d8 .endproc _dstrcpy 3457 000039d8 .align 2 3458 000039d8 .proc _dstrncpy 3459 000039d8 .global _dstrncpy 3460 000039d8 _dstrncpy: 3461 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 3462 000039d8 afbefffc sw -4(r29),r30; push fp 3463 000039dc 001df020 add r30,r0,r29; fp = sp 3464 000039e0 afbffff8 sw -8(r29),r31; push ret addr 3465 000039e4 2fbd0018 subui r29,r29,#24; alloc local storage 3466 000039e8 afa20000 sw 0(r29),r2 3467 000039ec afa30004 sw 4(r29),r3 3468 000039f0 afa40008 sw 8(r29),r4 3469 000039f4 8fc20000 lw r2,(r30) 3470 000039f8 8fc30004 lw r3,4(r30) 3471 000039fc 8fdf0008 lw r31,8(r30) 3472 00003a00 00022020 add r4,r0,r2 3473 00003a04 08000024 j L37_LF4 3474 00003a08 54000000 nop; not filled. 3475 00003a0c L34_LF4: 3476 00003a0c 80610000 lb r1,(r3) 3477 00003a10 a0410000 sb (r2),r1 3478 00003a14 20630001 addi r3,r3,#1 3479 00003a18 20420001 addi r2,r2,#1 3480 00003a1c 302100ff andi r1,r1,#0x00ff 3481 00003a20 64210000 snei r1,r1,#0 3482 00003a24 10200018 beqz r1,L32_LF4 3483 00003a28 54000000 nop; not filled. 3484 00003a2c L37_LF4: 3485 00003a2c 001f0820 add r1,r0,r31 3486 00003a30 23ffffff addi r31,r31,#-1 3487 00003a34 70210000 slei r1,r1,#0 3488 00003a38 1020ffd0 beqz r1,L34_LF4 3489 00003a3c 54000000 nop; not filled. 3490 00003a40 L32_LF4: 3491 00003a40 00040820 add r1,r0,r4 3492 00003a44 8fa20000 lw r2,0(r29) 3493 00003a48 8fa30004 lw r3,4(r29) 3494 00003a4c 8fa40008 lw r4,8(r29) 3495 00003a50 8fdffff8 lw r31,-8(r30) 3496 00003a54 001ee820 add r29,r0,r30 3497 00003a58 8fdefffc lw r30,-4(r30) 3498 00003a5c 4be00000 jr r31 3499 00003a60 54000000 nop 3500 00003a64 .endproc _dstrncpy 3501 00003a64 .align 2 3502 00003a64 .proc _dstrcat 3503 00003a64 .global _dstrcat 3504 00003a64 _dstrcat: 3505 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 3506 00003a64 afbefffc sw -4(r29),r30; push fp 3507 00003a68 001df020 add r30,r0,r29; fp = sp 3508 00003a6c afbffff8 sw -8(r29),r31; push ret addr 3509 00003a70 2fbd0010 subui r29,r29,#16; alloc local storage 3510 00003a74 afa20000 sw 0(r29),r2 3511 00003a78 afa30004 sw 4(r29),r3 3512 00003a7c 8fdf0000 lw r31,(r30) 3513 00003a80 001f1820 add r3,r0,r31 3514 00003a84 90610000 lbu r1,(r3) 3515 00003a88 64210000 snei r1,r1,#0 3516 00003a8c 10200018 beqz r1,L50_LF4 3517 00003a90 54000000 nop; not filled. 3518 00003a94 L51_LF4: 3519 00003a94 23ff0001 addi r31,r31,#1 3520 00003a98 93e10000 lbu r1,(r31) 3521 00003a9c 64210000 snei r1,r1,#0 3522 00003aa0 1420fff0 bnez r1,L51_LF4 3523 00003aa4 54000000 nop; not filled. 3524 00003aa8 L50_LF4: 3525 00003aa8 001f1020 add r2,r0,r31 3526 00003aac 8fdf0004 lw r31,4(r30) 3527 00003ab0 L54_LF4: 3528 00003ab0 83e10000 lb r1,(r31) 3529 00003ab4 a0410000 sb (r2),r1 3530 00003ab8 23ff0001 addi r31,r31,#1 3531 00003abc 20420001 addi r2,r2,#1 3532 00003ac0 302100ff andi r1,r1,#0x00ff 3533 00003ac4 64210000 snei r1,r1,#0 3534 00003ac8 1420ffe4 bnez r1,L54_LF4 3535 00003acc 54000000 nop; not filled. 3536 00003ad0 00030820 add r1,r0,r3 3537 00003ad4 8fa20000 lw r2,0(r29) 3538 00003ad8 8fa30004 lw r3,4(r29) 3539 00003adc 8fdffff8 lw r31,-8(r30) 3540 00003ae0 001ee820 add r29,r0,r30 3541 00003ae4 8fdefffc lw r30,-4(r30) 3542 00003ae8 4be00000 jr r31 3543 00003aec 54000000 nop 3544 00003af0 .endproc _dstrcat 3545 00003af0 .align 2 3546 00003af0 .proc _dstrncmp 3547 00003af0 .global _dstrncmp 3548 00003af0 _dstrncmp: 3549 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 3550 00003af0 afbefffc sw -4(r29),r30; push fp 3551 00003af4 001df020 add r30,r0,r29; fp = sp 3552 00003af8 afbffff8 sw -8(r29),r31; push ret addr 3553 00003afc 2fbd0018 subui r29,r29,#24; alloc local storage 3554 00003b00 afa20000 sw 0(r29),r2 3555 00003b04 afa30004 sw 4(r29),r3 3556 00003b08 afa40008 sw 8(r29),r4 3557 00003b0c afa5000c sw 12(r29),r5 3558 00003b10 8fc30000 lw r3,(r30) 3559 00003b14 8fc40004 lw r4,4(r30) 3560 00003b18 8fc50008 lw r5,8(r30) 3561 00003b1c 20020000 addi r2,r0,#0 3562 00003b20 0045082a slt r1,r2,r5 3563 00003b24 1020003c beqz r1,L73_LF4 3564 00003b28 54000000 nop; not filled. 3565 00003b2c L75_LF4: 3566 00003b2c 909f0000 lbu r31,(r4) 3567 00003b30 67e10000 snei r1,r31,#0 3568 00003b34 10200038 beqz r1,L86_LF4 3569 00003b38 54000000 nop; not filled. 3570 00003b3c 90610000 lbu r1,(r3) 3571 00003b40 003f0829 sne r1,r1,r31 3572 00003b44 1420001c bnez r1,L73_LF4 3573 00003b48 54000000 nop; not filled. 3574 00003b4c 20630001 addi r3,r3,#1 3575 00003b50 20840001 addi r4,r4,#1 3576 00003b54 20420001 addi r2,r2,#1 3577 00003b58 0045082a slt r1,r2,r5 3578 00003b5c 1420ffcc bnez r1,L75_LF4 3579 00003b60 54000000 nop; not filled. 3580 00003b64 L73_LF4: 3581 00003b64 00450828 seq r1,r2,r5 3582 00003b68 10200010 beqz r1,L80_LF4 3583 00003b6c 54000000 nop; not filled. 3584 00003b70 L86_LF4: 3585 00003b70 20010000 addi r1,r0,#0 3586 00003b74 08000028 j L84_LF4 3587 00003b78 54000000 nop; not filled. 3588 00003b7c L80_LF4: 3589 00003b7c 907f0000 lbu r31,(r3) 3590 00003b80 90830000 lbu r3,(r4) 3591 00003b84 03e30822 sub r1,r31,r3 3592 00003b88 74210000 sgei r1,r1,#0 3593 00003b8c 2002ffff addi r2,r0,#-1 3594 00003b90 10200008 beqz r1,L82_LF4 3595 00003b94 54000000 nop; not filled. 3596 00003b98 03e31029 sne r2,r31,r3 3597 00003b9c L82_LF4: 3598 00003b9c 00020820 add r1,r0,r2 3599 00003ba0 L84_LF4: 3600 00003ba0 8fa20000 lw r2,0(r29) 3601 00003ba4 8fa30004 lw r3,4(r29) 3602 00003ba8 8fa40008 lw r4,8(r29) 3603 00003bac 8fa5000c lw r5,12(r29) 3604 00003bb0 8fdffff8 lw r31,-8(r30) 3605 00003bb4 001ee820 add r29,r0,r30 3606 00003bb8 8fdefffc lw r30,-4(r30) 3607 00003bbc 4be00000 jr r31 3608 00003bc0 54000000 nop 3609 00003bc4 .endproc _dstrncmp 3610 00003bc4 .align 2 3611 00003bc4 .proc _dstrlen 3612 00003bc4 .global _dstrlen 3613 00003bc4 _dstrlen: 3614 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 3615 00003bc4 afbefffc sw -4(r29),r30; push fp 3616 00003bc8 001df020 add r30,r0,r29; fp = sp 3617 00003bcc afbffff8 sw -8(r29),r31; push ret addr 3618 00003bd0 2fbd0010 subui r29,r29,#16; alloc local storage 3619 00003bd4 afa20000 sw 0(r29),r2 3620 00003bd8 8fdf0000 lw r31,(r30) 3621 00003bdc 20020000 addi r2,r0,#0 3622 00003be0 08000008 j L97_LF4 3623 00003be4 54000000 nop; not filled. 3624 00003be8 L95_LF4: 3625 00003be8 20420001 addi r2,r2,#1 3626 00003bec L97_LF4: 3627 00003bec 93e10000 lbu r1,(r31) 3628 00003bf0 23ff0001 addi r31,r31,#1 3629 00003bf4 64210000 snei r1,r1,#0 3630 00003bf8 1420ffec bnez r1,L95_LF4 3631 00003bfc 54000000 nop; not filled. 3632 00003c00 00020820 add r1,r0,r2 3633 00003c04 8fa20000 lw r2,0(r29) 3634 00003c08 8fdffff8 lw r31,-8(r30) 3635 00003c0c 001ee820 add r29,r0,r30 3636 00003c10 8fdefffc lw r30,-4(r30) 3637 00003c14 4be00000 jr r31 3638 00003c18 54000000 nop 3639 00003c1c .endproc _dstrlen 3640 00003c1c .align 2 3641 00003c1c .proc _dstrstr 3642 00003c1c .global _dstrstr 3643 00003c1c _dstrstr: 3644 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 3645 00003c1c afbefffc sw -4(r29),r30; push fp 3646 00003c20 001df020 add r30,r0,r29; fp = sp 3647 00003c24 afbffff8 sw -8(r29),r31; push ret addr 3648 00003c28 2fbd0020 subui r29,r29,#32; alloc local storage 3649 00003c2c afa20000 sw 0(r29),r2 3650 00003c30 afa30004 sw 4(r29),r3 3651 00003c34 afa40008 sw 8(r29),r4 3652 00003c38 afa5000c sw 12(r29),r5 3653 00003c3c afa60010 sw 16(r29),r6 3654 00003c40 afa70014 sw 20(r29),r7 3655 00003c44 8fc50000 lw r5,(r30) 3656 00003c48 8fc70004 lw r7,4(r30) 3657 00003c4c 20030000 addi r3,r0,#0 3658 00003c50 90e10000 lbu r1,(r7) 3659 00003c54 20e20001 addi r2,r7,#1 3660 00003c58 64210000 snei r1,r1,#0 3661 00003c5c 1020001c beqz r1,L125_LF4 3662 00003c60 54000000 nop; not filled. 3663 00003c64 L126_LF4: 3664 00003c64 20630001 addi r3,r3,#1 3665 00003c68 90410000 lbu r1,(r2) 3666 00003c6c 20420001 addi r2,r2,#1 3667 00003c70 64210000 snei r1,r1,#0 3668 00003c74 1420ffec bnez r1,L126_LF4 3669 00003c78 54000000 nop; not filled. 3670 00003c7c L125_LF4: 3671 00003c7c 00033020 add r6,r0,r3 3672 00003c80 080000ac j L149_LF4 3673 00003c84 54000000 nop; not filled. 3674 00003c88 L130_LF4: 3675 00003c88 00051820 add r3,r0,r5 3676 00003c8c 00072020 add r4,r0,r7 3677 00003c90 20020000 addi r2,r0,#0 3678 00003c94 0046082a slt r1,r2,r6 3679 00003c98 1020003c beqz r1,L134_LF4 3680 00003c9c 54000000 nop; not filled. 3681 00003ca0 L136_LF4: 3682 00003ca0 909f0000 lbu r31,(r4) 3683 00003ca4 67e10000 snei r1,r31,#0 3684 00003ca8 10200038 beqz r1,L150_LF4 3685 00003cac 54000000 nop; not filled. 3686 00003cb0 90610000 lbu r1,(r3) 3687 00003cb4 003f0829 sne r1,r1,r31 3688 00003cb8 1420001c bnez r1,L134_LF4 3689 00003cbc 54000000 nop; not filled. 3690 00003cc0 20630001 addi r3,r3,#1 3691 00003cc4 20840001 addi r4,r4,#1 3692 00003cc8 20420001 addi r2,r2,#1 3693 00003ccc 0046082a slt r1,r2,r6 3694 00003cd0 1420ffcc bnez r1,L136_LF4 3695 00003cd4 54000000 nop; not filled. 3696 00003cd8 L134_LF4: 3697 00003cd8 00460828 seq r1,r2,r6 3698 00003cdc 10200010 beqz r1,L141_LF4 3699 00003ce0 54000000 nop; not filled. 3700 00003ce4 L150_LF4: 3701 00003ce4 20010000 addi r1,r0,#0 3702 00003ce8 08000028 j L132_LF4 3703 00003cec 54000000 nop; not filled. 3704 00003cf0 L141_LF4: 3705 00003cf0 90630000 lbu r3,(r3) 3706 00003cf4 90820000 lbu r2,(r4) 3707 00003cf8 00620822 sub r1,r3,r2 3708 00003cfc 74210000 sgei r1,r1,#0 3709 00003d00 201fffff addi r31,r0,#-1 3710 00003d04 10200008 beqz r1,L143_LF4 3711 00003d08 54000000 nop; not filled. 3712 00003d0c 0062f829 sne r31,r3,r2 3713 00003d10 L143_LF4: 3714 00003d10 001f0820 add r1,r0,r31 3715 00003d14 L132_LF4: 3716 00003d14 64210000 snei r1,r1,#0 3717 00003d18 14200010 bnez r1,L131_LF4 3718 00003d1c 54000000 nop; not filled. 3719 00003d20 00050820 add r1,r0,r5 3720 00003d24 0800001c j L146_LF4 3721 00003d28 54000000 nop; not filled. 3722 00003d2c L131_LF4: 3723 00003d2c 20a50001 addi r5,r5,#1 3724 00003d30 L149_LF4: 3725 00003d30 90a10000 lbu r1,(r5) 3726 00003d34 64210000 snei r1,r1,#0 3727 00003d38 1420ff4c bnez r1,L130_LF4 3728 00003d3c 54000000 nop; not filled. 3729 00003d40 20010000 addi r1,r0,#0 3730 00003d44 L146_LF4: 3731 00003d44 8fa20000 lw r2,0(r29) 3732 00003d48 8fa30004 lw r3,4(r29) 3733 00003d4c 8fa40008 lw r4,8(r29) 3734 00003d50 8fa5000c lw r5,12(r29) 3735 00003d54 8fa60010 lw r6,16(r29) 3736 00003d58 8fa70014 lw r7,20(r29) 3737 00003d5c 8fdffff8 lw r31,-8(r30) 3738 00003d60 001ee820 add r29,r0,r30 3739 00003d64 8fdefffc lw r30,-4(r30) 3740 00003d68 4be00000 jr r31 3741 00003d6c 54000000 nop 3742 00003d70 .endproc _dstrstr 3743 00003d70 .align 2 3744 00003d70 .proc _dmindex 3745 00003d70 .global _dmindex 3746 00003d70 _dmindex: 3747 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 3748 00003d70 afbefffc sw -4(r29),r30; push fp 3749 00003d74 001df020 add r30,r0,r29; fp = sp 3750 00003d78 afbffff8 sw -8(r29),r31; push ret addr 3751 00003d7c 2fbd0020 subui r29,r29,#32; alloc local storage 3752 00003d80 afa20000 sw 0(r29),r2 3753 00003d84 afa30004 sw 4(r29),r3 3754 00003d88 afa40008 sw 8(r29),r4 3755 00003d8c afa5000c sw 12(r29),r5 3756 00003d90 afa60010 sw 16(r29),r6 3757 00003d94 8fc40000 lw r4,(r30) 3758 00003d98 8fc60004 lw r6,4(r30) 3759 00003d9c 90810000 lbu r1,(r4) 3760 00003da0 64210000 snei r1,r1,#0 3761 00003da4 10200060 beqz r1,L164_LF4 3762 00003da8 54000000 nop; not filled. 3763 00003dac 00012820 add r5,r0,r1 3764 00003db0 L165_LF4: 3765 00003db0 00061020 add r2,r0,r6 3766 00003db4 80df0000 lb r31,(r6) 3767 00003db8 33e100ff andi r1,r31,#0x00ff 3768 00003dbc 64210000 snei r1,r1,#0 3769 00003dc0 1020003c beqz r1,L163_LF4 3770 00003dc4 54000000 nop; not filled. 3771 00003dc8 90830000 lbu r3,(r4) 3772 00003dcc L169_LF4: 3773 00003dcc 33e100ff andi r1,r31,#0x00ff 3774 00003dd0 00610828 seq r1,r3,r1 3775 00003dd4 10200010 beqz r1,L168_LF4 3776 00003dd8 54000000 nop; not filled. 3777 00003ddc 00040820 add r1,r0,r4 3778 00003de0 08000028 j L173_LF4 3779 00003de4 54000000 nop; not filled. 3780 00003de8 L168_LF4: 3781 00003de8 20420001 addi r2,r2,#1 3782 00003dec 805f0000 lb r31,(r2) 3783 00003df0 33e100ff andi r1,r31,#0x00ff 3784 00003df4 64210000 snei r1,r1,#0 3785 00003df8 1420ffd0 bnez r1,L169_LF4 3786 00003dfc 54000000 nop; not filled. 3787 00003e00 L163_LF4: 3788 00003e00 14a0ffac bnez r5,L165_LF4 3789 00003e04 54000000 nop; not filled. 3790 00003e08 L164_LF4: 3791 00003e08 20010000 addi r1,r0,#0 3792 00003e0c L173_LF4: 3793 00003e0c 8fa20000 lw r2,0(r29) 3794 00003e10 8fa30004 lw r3,4(r29) 3795 00003e14 8fa40008 lw r4,8(r29) 3796 00003e18 8fa5000c lw r5,12(r29) 3797 00003e1c 8fa60010 lw r6,16(r29) 3798 00003e20 8fdffff8 lw r31,-8(r30) 3799 00003e24 001ee820 add r29,r0,r30 3800 00003e28 8fdefffc lw r30,-4(r30) 3801 00003e2c 4be00000 jr r31 3802 00003e30 54000000 nop 3803 00003e34 .endproc _dmindex 3804 00003e34 .align 2 3805 00003e34 .proc _dindex 3806 00003e34 .global _dindex 3807 00003e34 _dindex: 3808 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 3809 00003e34 afbefffc sw -4(r29),r30; push fp 3810 00003e38 001df020 add r30,r0,r29; fp = sp 3811 00003e3c afbffff8 sw -8(r29),r31; push ret addr 3812 00003e40 2fbd0010 subui r29,r29,#16; alloc local storage 3813 00003e44 afa20000 sw 0(r29),r2 3814 00003e48 afa30004 sw 4(r29),r3 3815 00003e4c 8fc20000 lw r2,(r30) 3816 00003e50 8fc30004 lw r3,4(r30) 3817 00003e54 08000024 j L187_LF4 3818 00003e58 54000000 nop; not filled. 3819 00003e5c L183_LF4: 3820 00003e5c 33e100ff andi r1,r31,#0x00ff 3821 00003e60 00230828 seq r1,r1,r3 3822 00003e64 10200010 beqz r1,L184_LF4 3823 00003e68 54000000 nop; not filled. 3824 00003e6c 00020820 add r1,r0,r2 3825 00003e70 08000020 j L186_LF4 3826 00003e74 54000000 nop; not filled. 3827 00003e78 L184_LF4: 3828 00003e78 20420001 addi r2,r2,#1 3829 00003e7c L187_LF4: 3830 00003e7c 805f0000 lb r31,(r2) 3831 00003e80 33e100ff andi r1,r31,#0x00ff 3832 00003e84 64210000 snei r1,r1,#0 3833 00003e88 1420ffd0 bnez r1,L183_LF4 3834 00003e8c 54000000 nop; not filled. 3835 00003e90 20010000 addi r1,r0,#0 3836 00003e94 L186_LF4: 3837 00003e94 8fa20000 lw r2,0(r29) 3838 00003e98 8fa30004 lw r3,4(r29) 3839 00003e9c 8fdffff8 lw r31,-8(r30) 3840 00003ea0 001ee820 add r29,r0,r30 3841 00003ea4 8fdefffc lw r30,-4(r30) 3842 00003ea8 4be00000 jr r31 3843 00003eac 54000000 nop 3844 00003eb0 .endproc _dindex 3845 00003eb0 .align 2 3846 00003eb0 .proc _ditoa 3847 00003eb0 .global _ditoa 3848 00003eb0 _ditoa: 3849 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 3850 00003eb0 afbefffc sw -4(r29),r30; push fp 3851 00003eb4 001df020 add r30,r0,r29; fp = sp 3852 00003eb8 afbffff8 sw -8(r29),r31; push ret addr 3853 00003ebc 2fbd0020 subui r29,r29,#32; alloc local storage 3854 00003ec0 afa20000 sw 0(r29),r2 3855 00003ec4 afa30004 sw 4(r29),r3 3856 00003ec8 afa40008 sw 8(r29),r4 3857 00003ecc afa5000c sw 12(r29),r5 3858 00003ed0 afa60010 sw 16(r29),r6 3859 00003ed4 8fc30000 lw r3,(r30) 3860 00003ed8 8fc40004 lw r4,4(r30) 3861 00003edc 68610000 slti r1,r3,#0 3862 00003ee0 10200010 beqz r1,L203_LF4 3863 00003ee4 54000000 nop; not filled. 3864 00003ee8 2006002d addi r6,r0,(#0x2d)&0xff 3865 00003eec 08000014 j L216_LF4 3866 00003ef0 54000000 nop; not filled. 3867 00003ef4 L203_LF4: 3868 00003ef4 64610000 snei r1,r3,#0 3869 00003ef8 14200018 bnez r1,L205_LF4 3870 00003efc 54000000 nop; not filled. 3871 00003f00 20060030 addi r6,r0,(#0x30)&0xff 3872 00003f04 L216_LF4: 3873 00003f04 a0860000 sb (r4),r6 3874 00003f08 20840001 addi r4,r4,#1 3875 00003f0c 0800007c j L204_LF4 3876 00003f10 54000000 nop; not filled. 3877 00003f14 L205_LF4: 3878 00003f14 201f0001 addi r31,r0,#1 3879 00003f18 03e3082c sle r1,r31,r3 3880 00003f1c 1020001c beqz r1,L208_LF4 3881 00003f20 54000000 nop; not filled. 3882 00003f24 L209_LF4: 3883 00003f24 53e10002 slli r1,r31,#0x2 3884 00003f28 003f0820 add r1,r1,r31 3885 00003f2c 503f0001 slli r31,r1,#0x1 3886 00003f30 03e3082c sle r1,r31,r3 3887 00003f34 1420ffec bnez r1,L209_LF4 3888 00003f38 54000000 nop; not filled. 3889 00003f3c L208_LF4: 3890 00003f3c 2005000a addi r5,r0,#10 3891 00003f40 L212_LF4: 3892 00003f40 03e00035 movi2fp f0,r31 3893 00003f44 00a00835 movi2fp f1,r5 3894 00003f48 0401000f div f0,f0,f1 3895 00003f4c 0000f834 movfp2i r31,f0 3896 00003f50 00600035 movi2fp f0,r3 3897 00003f54 03e00835 movi2fp f1,r31 3898 00003f58 0401000f div f0,f0,f1 3899 00003f5c 00001034 movfp2i r2,f0 3900 00003f60 20410030 addi r1,r2,#48 3901 00003f64 a0810000 sb (r4),r1 3902 00003f68 20840001 addi r4,r4,#1 3903 00003f6c 00400035 movi2fp f0,r2 3904 00003f70 03e00835 movi2fp f1,r31 3905 00003f74 0401000e mult f0,f0,f1 3906 00003f78 00000834 movfp2i r1,f0 3907 00003f7c 00611822 sub r3,r3,r1 3908 00003f80 6fe10001 sgti r1,r31,#1 3909 00003f84 1420ffb8 bnez r1,L212_LF4 3910 00003f88 54000000 nop; not filled. 3911 00003f8c L204_LF4: 3912 00003f8c 20060000 addi r6,r0,(#0x0)&0xff 3913 00003f90 a0860000 sb (r4),r6 3914 00003f94 8fa20000 lw r2,0(r29) 3915 00003f98 8fa30004 lw r3,4(r29) 3916 00003f9c 8fa40008 lw r4,8(r29) 3917 00003fa0 8fa5000c lw r5,12(r29) 3918 00003fa4 8fa60010 lw r6,16(r29) 3919 00003fa8 8fdffff8 lw r31,-8(r30) 3920 00003fac 001ee820 add r29,r0,r30 3921 00003fb0 8fdefffc lw r30,-4(r30) 3922 00003fb4 4be00000 jr r31 3923 00003fb8 54000000 nop 3924 00003fbc .endproc _ditoa 3925 00003fbc .align 2 3926 00003fbc .proc _dstrtol 3927 00003fbc .global _dstrtol 3928 00003fbc _dstrtol: 3929 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 3930 00003fbc afbefffc sw -4(r29),r30; push fp 3931 00003fc0 001df020 add r30,r0,r29; fp = sp 3932 00003fc4 afbffff8 sw -8(r29),r31; push ret addr 3933 00003fc8 2fbd0020 subui r29,r29,#32; alloc local storage 3934 00003fcc afa20000 sw 0(r29),r2 3935 00003fd0 afa30004 sw 4(r29),r3 3936 00003fd4 afa40008 sw 8(r29),r4 3937 00003fd8 afa5000c sw 12(r29),r5 3938 00003fdc afa60010 sw 16(r29),r6 3939 00003fe0 8fc20000 lw r2,(r30) 3940 00003fe4 8fc50004 lw r5,4(r30) 3941 00003fe8 8fc40008 lw r4,8(r30) 3942 00003fec 20030000 addi r3,r0,#0 3943 00003ff0 08000008 j L247_LF4 3944 00003ff4 54000000 nop; not filled. 3945 00003ff8 L220_LF4: 3946 00003ff8 20420001 addi r2,r2,#1 3947 00003ffc L247_LF4: 3948 00003ffc 805f0000 lb r31,(r2) 3949 00004000 33e100ff andi r1,r31,#0x00ff 3950 00004004 60210020 seqi r1,r1,#32 3951 00004008 1420ffec bnez r1,L220_LF4 3952 0000400c 54000000 nop; not filled. 3953 00004010 23e1fff7 addi r1,r31,#-9 3954 00004014 302100ff andi r1,r1,#0x00ff 3955 00004018 70210001 sleui r1,r1,#1 3956 0000401c 1420ffd8 bnez r1,L220_LF4 3957 00004020 54000000 nop; not filled. 3958 00004024 64a10000 snei r1,r5,#0 3959 00004028 10200008 beqz r1,L222_LF4 3960 0000402c 54000000 nop; not filled. 3961 00004030 aca20000 sw (r5),r2 3962 00004034 L222_LF4: 3963 00004034 905f0000 lbu r31,(r2) 3964 00004038 67e10000 snei r1,r31,#0 3965 0000403c 10200090 beqz r1,L248_LF4 3966 00004040 54000000 nop; not filled. 3967 00004044 63e1002d seqi r1,r31,#45 3968 00004048 10200014 beqz r1,L224_LF4 3969 0000404c 54000000 nop; not filled. 3970 00004050 2006ffff addi r6,r0,#-1 3971 00004054 20420001 addi r2,r2,#1 3972 00004058 08000008 j L225_LF4 3973 0000405c 54000000 nop; not filled. 3974 00004060 L224_LF4: 3975 00004060 20060001 addi r6,r0,#1 3976 00004064 L225_LF4: 3977 00004064 64810000 snei r1,r4,#0 3978 00004068 14200054 bnez r1,L226_LF4 3979 0000406c 54000000 nop; not filled. 3980 00004070 90410000 lbu r1,(r2) 3981 00004074 60210030 seqi r1,r1,#48 3982 00004078 10200040 beqz r1,L227_LF4 3983 0000407c 54000000 nop; not filled. 3984 00004080 20420001 addi r2,r2,#1 3985 00004084 905f0000 lbu r31,(r2) 3986 00004088 63e10078 seqi r1,r31,#120 3987 0000408c 14200010 bnez r1,L229_LF4 3988 00004090 54000000 nop; not filled. 3989 00004094 63e10058 seqi r1,r31,#88 3990 00004098 10200014 beqz r1,L228_LF4 3991 0000409c 54000000 nop; not filled. 3992 000040a0 L229_LF4: 3993 000040a0 20040010 addi r4,r0,#16 3994 000040a4 20420001 addi r2,r2,#1 3995 000040a8 08000014 j L226_LF4 3996 000040ac 54000000 nop; not filled. 3997 000040b0 L228_LF4: 3998 000040b0 20040008 addi r4,r0,#8 3999 000040b4 08000008 j L226_LF4 4000 000040b8 54000000 nop; not filled. 4001 000040bc L227_LF4: 4002 000040bc 2004000a addi r4,r0,#10 4003 000040c0 L226_LF4: 4004 000040c0 2081ffff addi r1,r4,#-1 4005 000040c4 6c21000f sgtui r1,r1,#15 4006 000040c8 10200010 beqz r1,L233_LF4 4007 000040cc 54000000 nop; not filled. 4008 000040d0 L248_LF4: 4009 000040d0 00030820 add r1,r0,r3 4010 000040d4 080000c4 j L245_LF4 4011 000040d8 54000000 nop; not filled. 4012 000040dc L233_LF4: 4013 000040dc 805f0000 lb r31,(r2) 4014 000040e0 23e1ffd0 addi r1,r31,#-48 4015 000040e4 302100ff andi r1,r1,#0x00ff 4016 000040e8 70210009 sleui r1,r1,#9 4017 000040ec 10200014 beqz r1,L236_LF4 4018 000040f0 54000000 nop; not filled. 4019 000040f4 33e100ff andi r1,r31,#0x00ff 4020 000040f8 2021ffd0 addi r1,r1,#-48 4021 000040fc 08000050 j L237_LF4 4022 00004100 54000000 nop; not filled. 4023 00004104 L236_LF4: 4024 00004104 23e1ff9f addi r1,r31,#-97 4025 00004108 302100ff andi r1,r1,#0x00ff 4026 0000410c 70210019 sleui r1,r1,#25 4027 00004110 10200014 beqz r1,L238_LF4 4028 00004114 54000000 nop; not filled. 4029 00004118 33e100ff andi r1,r31,#0x00ff 4030 0000411c 2021ffa9 addi r1,r1,#-87 4031 00004120 0800002c j L237_LF4 4032 00004124 54000000 nop; not filled. 4033 00004128 L238_LF4: 4034 00004128 23e1ffbf addi r1,r31,#-65 4035 0000412c 302100ff andi r1,r1,#0x00ff 4036 00004130 70210019 sleui r1,r1,#25 4037 00004134 10200014 beqz r1,L240_LF4 4038 00004138 54000000 nop; not filled. 4039 0000413c 33e100ff andi r1,r31,#0x00ff 4040 00004140 2021ffc9 addi r1,r1,#-55 4041 00004144 08000008 j L237_LF4 4042 00004148 54000000 nop; not filled. 4043 0000414c L240_LF4: 4044 0000414c 200103e8 addi r1,r0,#1000 4045 00004150 L237_LF4: 4046 00004150 0024f82a slt r31,r1,r4 4047 00004154 13e00024 beqz r31,L246_LF4 4048 00004158 54000000 nop; not filled. 4049 0000415c 00600035 movi2fp f0,r3 4050 00004160 00800835 movi2fp f1,r4 4051 00004164 0401000e mult f0,f0,f1 4052 00004168 00001834 movfp2i r3,f0 4053 0000416c 00611820 add r3,r3,r1 4054 00004170 20420001 addi r2,r2,#1 4055 00004174 17e0ff64 bnez r31,L233_LF4 4056 00004178 54000000 nop; not filled. 4057 0000417c L246_LF4: 4058 0000417c 64a10000 snei r1,r5,#0 4059 00004180 10200008 beqz r1,L244_LF4 4060 00004184 54000000 nop; not filled. 4061 00004188 aca20000 sw (r5),r2 4062 0000418c L244_LF4: 4063 0000418c 00600035 movi2fp f0,r3 4064 00004190 00c00835 movi2fp f1,r6 4065 00004194 0401000e mult f0,f0,f1 4066 00004198 00000834 movfp2i r1,f0 4067 0000419c L245_LF4: 4068 0000419c 8fa20000 lw r2,0(r29) 4069 000041a0 8fa30004 lw r3,4(r29) 4070 000041a4 8fa40008 lw r4,8(r29) 4071 000041a8 8fa5000c lw r5,12(r29) 4072 000041ac 8fa60010 lw r6,16(r29) 4073 000041b0 8fdffff8 lw r31,-8(r30) 4074 000041b4 001ee820 add r29,r0,r30 4075 000041b8 8fdefffc lw r30,-4(r30) 4076 000041bc 4be00000 jr r31 4077 000041c0 54000000 nop 4078 000041c4 .endproc _dstrtol 4079 000041c4 .align 2 4080 000041c4 .proc _bcopy 4081 000041c4 .global _bcopy 4082 000041c4 _bcopy: 4083 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 4084 000041c4 afbefffc sw -4(r29),r30; push fp 4085 000041c8 001df020 add r30,r0,r29; fp = sp 4086 000041cc afbffff8 sw -8(r29),r31; push ret addr 4087 000041d0 2fbd0018 subui r29,r29,#24; alloc local storage 4088 000041d4 afa20000 sw 0(r29),r2 4089 000041d8 afa30004 sw 4(r29),r3 4090 000041dc afa40008 sw 8(r29),r4 4091 000041e0 8fc30000 lw r3,(r30) 4092 000041e4 8fc20004 lw r2,4(r30) 4093 000041e8 8fdf0008 lw r31,8(r30) 4094 000041ec 08000014 j L259_LF4 4095 000041f0 54000000 nop; not filled. 4096 000041f4 L257_LF4: 4097 000041f4 80640000 lb r4,(r3) 4098 000041f8 a0440000 sb (r2),r4 4099 000041fc 20630001 addi r3,r3,#1 4100 00004200 20420001 addi r2,r2,#1 4101 00004204 L259_LF4: 4102 00004204 001f0820 add r1,r0,r31 4103 00004208 23ffffff addi r31,r31,#-1 4104 0000420c 6c210000 sgti r1,r1,#0 4105 00004210 1420ffe0 bnez r1,L257_LF4 4106 00004214 54000000 nop; not filled. 4107 00004218 8fa20000 lw r2,0(r29) 4108 0000421c 8fa30004 lw r3,4(r29) 4109 00004220 8fa40008 lw r4,8(r29) 4110 00004224 8fdffff8 lw r31,-8(r30) 4111 00004228 001ee820 add r29,r0,r30 4112 0000422c 8fdefffc lw r30,-4(r30) 4113 00004230 4be00000 jr r31 4114 00004234 54000000 nop 4115 00004238 .endproc _bcopy 4116 00004238 .align 2 4117 00004238 .proc _bzero 4118 00004238 .global _bzero 4119 00004238 _bzero: 4120 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 4121 00004238 afbefffc sw -4(r29),r30; push fp 4122 0000423c 001df020 add r30,r0,r29; fp = sp 4123 00004240 afbffff8 sw -8(r29),r31; push ret addr 4124 00004244 2fbd0010 subui r29,r29,#16; alloc local storage 4125 00004248 afa20000 sw 0(r29),r2 4126 0000424c afa30004 sw 4(r29),r3 4127 00004250 8fc20000 lw r2,(r30) 4128 00004254 8fdf0004 lw r31,4(r30) 4129 00004258 08000010 j L270_LF4 4130 0000425c 54000000 nop; not filled. 4131 00004260 L268_LF4: 4132 00004260 20030000 addi r3,r0,(#0x0)&0xff 4133 00004264 a0430000 sb (r2),r3 4134 00004268 20420001 addi r2,r2,#1 4135 0000426c L270_LF4: 4136 0000426c 001f0820 add r1,r0,r31 4137 00004270 23ffffff addi r31,r31,#-1 4138 00004274 6c210000 sgti r1,r1,#0 4139 00004278 1420ffe4 bnez r1,L268_LF4 4140 0000427c 54000000 nop; not filled. 4141 00004280 8fa20000 lw r2,0(r29) 4142 00004284 8fa30004 lw r3,4(r29) 4143 00004288 8fdffff8 lw r31,-8(r30) 4144 0000428c 001ee820 add r29,r0,r30 4145 00004290 8fdefffc lw r30,-4(r30) 4146 00004294 4be00000 jr r31 4147 00004298 54000000 nop 4148 0000429c .endproc _bzero 4149 ; Compiled by GCC 4151 0000429c .align 2 4152 0000429c .proc _isspace 4153 0000429c .global _isspace 4154 0000429c _isspace: 4155 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 4156 0000429c afbefffc sw -4(r29),r30; push fp 4157 000042a0 001df020 add r30,r0,r29; fp = sp 4158 000042a4 afbffff8 sw -8(r29),r31; push ret addr 4159 000042a8 2fbd0010 subui r29,r29,#16; alloc local storage 4160 000042ac afa20000 sw 0(r29),r2 4161 000042b0 83c20003 lb r2,3(r30) 4162 000042b4 201f0000 addi r31,r0,#0 4163 000042b8 304100ff andi r1,r2,#0x00ff 4164 000042bc 60210020 seqi r1,r1,#32 4165 000042c0 14200018 bnez r1,L6_LF5 4166 000042c4 54000000 nop; not filled. 4167 000042c8 2041fff7 addi r1,r2,#-9 4168 000042cc 302100ff andi r1,r1,#0x00ff 4169 000042d0 70210001 sleui r1,r1,#1 4170 000042d4 10200008 beqz r1,L5_LF5 4171 000042d8 54000000 nop; not filled. 4172 000042dc L6_LF5: 4173 000042dc 201f0001 addi r31,r0,#1 4174 000042e0 L5_LF5: 4175 000042e0 001f0820 add r1,r0,r31 4176 000042e4 8fa20000 lw r2,0(r29) 4177 000042e8 8fdffff8 lw r31,-8(r30) 4178 000042ec 001ee820 add r29,r0,r30 4179 000042f0 8fdefffc lw r30,-4(r30) 4180 000042f4 4be00000 jr r31 4181 000042f8 54000000 nop 4182 000042fc .endproc _isspace 4183 000042fc .align 2 4184 000042fc .proc _isxdigit 4185 000042fc .global _isxdigit 4186 000042fc _isxdigit: 4187 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 4188 000042fc afbefffc sw -4(r29),r30; push fp 4189 00004300 001df020 add r30,r0,r29; fp = sp 4190 00004304 afbffff8 sw -8(r29),r31; push ret addr 4191 00004308 2fbd0010 subui r29,r29,#16; alloc local storage 4192 0000430c afa20000 sw 0(r29),r2 4193 00004310 83df0003 lb r31,3(r30) 4194 00004314 20020000 addi r2,r0,#0 4195 00004318 23e1ffd0 addi r1,r31,#-48 4196 0000431c 302100ff andi r1,r1,#0x00ff 4197 00004320 70210009 sleui r1,r1,#9 4198 00004324 14200028 bnez r1,L12_LF5 4199 00004328 54000000 nop; not filled. 4200 0000432c 23e1ff9f addi r1,r31,#-97 4201 00004330 302100ff andi r1,r1,#0x00ff 4202 00004334 70210005 sleui r1,r1,#5 4203 00004338 14200014 bnez r1,L12_LF5 4204 0000433c 54000000 nop; not filled. 4205 00004340 33e100ff andi r1,r31,#0x00ff 4206 00004344 64210041 snei r1,r1,#65 4207 00004348 14200008 bnez r1,L11_LF5 4208 0000434c 54000000 nop; not filled. 4209 00004350 L12_LF5: 4210 00004350 20020001 addi r2,r0,#1 4211 00004354 L11_LF5: 4212 00004354 00020820 add r1,r0,r2 4213 00004358 8fa20000 lw r2,0(r29) 4214 0000435c 8fdffff8 lw r31,-8(r30) 4215 00004360 001ee820 add r29,r0,r30 4216 00004364 8fdefffc lw r30,-4(r30) 4217 00004368 4be00000 jr r31 4218 0000436c 54000000 nop 4219 00004370 .endproc _isxdigit 4220 00004370 .align 2 4221 00004370 .proc _DisableIntrs 4222 00004370 .global _DisableIntrs 4223 00004370 _DisableIntrs: 4224 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 4225 00004370 afbefffc sw -4(r29),r30; push fp 4226 00004374 001df020 add r30,r0,r29; fp = sp 4227 00004378 afbffff8 sw -8(r29),r31; push ret addr 4228 0000437c 2fbd0010 subui r29,r29,#16; alloc local storage 4229 00004380 afa20000 sw 0(r29),r2 4230 00004384 23bdfff8 addi r29,r29,#-8 4231 00004388 2002000f addi r2,r0,#15 4232 0000438c afa20000 sw (r29),r2 4233 00004390 0fffcef4 jal _SetIntrs 4234 00004394 54000000 nop; not filled. 4235 00004398 23bd0008 addi r29,r29,#8 4236 0000439c 8fa20000 lw r2,0(r29) 4237 000043a0 8fdffff8 lw r31,-8(r30) 4238 000043a4 001ee820 add r29,r0,r30 4239 000043a8 8fdefffc lw r30,-4(r30) 4240 000043ac 4be00000 jr r31 4241 000043b0 54000000 nop 4242 000043b4 .endproc _DisableIntrs 4243 000043b4 .align 2 4244 000043b4 .proc _EnableIntrs 4245 000043b4 .global _EnableIntrs 4246 000043b4 _EnableIntrs: 4247 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 4248 000043b4 afbefffc sw -4(r29),r30; push fp 4249 000043b8 001df020 add r30,r0,r29; fp = sp 4250 000043bc afbffff8 sw -8(r29),r31; push ret addr 4251 000043c0 2fbd0010 subui r29,r29,#16; alloc local storage 4252 000043c4 afa20000 sw 0(r29),r2 4253 000043c8 23bdfff8 addi r29,r29,#-8 4254 000043cc 20020000 addi r2,r0,#0 4255 000043d0 afa20000 sw (r29),r2 4256 000043d4 0fffceb0 jal _SetIntrs 4257 000043d8 54000000 nop; not filled. 4258 000043dc 23bd0008 addi r29,r29,#8 4259 000043e0 8fa20000 lw r2,0(r29) 4260 000043e4 8fdffff8 lw r31,-8(r30) 4261 000043e8 001ee820 add r29,r0,r30 4262 000043ec 8fdefffc lw r30,-4(r30) 4263 000043f0 4be00000 jr r31 4264 000043f4 54000000 nop 4265 000043f8 .endproc _EnableIntrs 4266 000043f8 .align 2 4267 000043f8 .proc _RestoreIntrs 4268 000043f8 .global _RestoreIntrs 4269 000043f8 _RestoreIntrs: 4270 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 4271 000043f8 afbefffc sw -4(r29),r30; push fp 4272 000043fc 001df020 add r30,r0,r29; fp = sp 4273 00004400 afbffff8 sw -8(r29),r31; push ret addr 4274 00004404 2fbd0010 subui r29,r29,#16; alloc local storage 4275 00004408 afa20000 sw 0(r29),r2 4276 0000440c 23bdfff8 addi r29,r29,#-8 4277 00004410 8fc20000 lw r2,(r30) 4278 00004414 afa20000 sw (r29),r2 4279 00004418 0fffce6c jal _SetIntrs 4280 0000441c 54000000 nop; not filled. 4281 00004420 23bd0008 addi r29,r29,#8 4282 00004424 8fa20000 lw r2,0(r29) 4283 00004428 8fdffff8 lw r31,-8(r30) 4284 0000442c 001ee820 add r29,r0,r30 4285 00004430 8fdefffc lw r30,-4(r30) 4286 00004434 4be00000 jr r31 4287 00004438 54000000 nop 4288 0000443c .endproc _RestoreIntrs 4289 0000443c .align 2 4290 0000443c .proc _QueueLinkInit 4291 0000443c .global _QueueLinkInit 4292 0000443c _QueueLinkInit: 4293 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 4294 0000443c afbefffc sw -4(r29),r30; push fp 4295 00004440 001df020 add r30,r0,r29; fp = sp 4296 00004444 afbffff8 sw -8(r29),r31; push ret addr 4297 00004448 2fbd0010 subui r29,r29,#16; alloc local storage 4298 0000444c afa20000 sw 0(r29),r2 4299 00004450 8fc10000 lw r1,(r30) 4300 00004454 8fc20004 lw r2,4(r30) 4301 00004458 201f0000 addi r31,r0,#0 4302 0000445c ac3f0000 sw (r1),r31 4303 00004460 ac22000c sw 12(r1),r2 4304 00004464 8fa20000 lw r2,0(r29) 4305 00004468 8fdffff8 lw r31,-8(r30) 4306 0000446c 001ee820 add r29,r0,r30 4307 00004470 8fdefffc lw r30,-4(r30) 4308 00004474 4be00000 jr r31 4309 00004478 54000000 nop 4310 0000447c .endproc _QueueLinkInit 4311 0000447c .align 2 4312 0000447c .proc _QueueNext 4313 0000447c .global _QueueNext 4314 0000447c _QueueNext: 4315 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 4316 0000447c afbefffc sw -4(r29),r30; push fp 4317 00004480 001df020 add r30,r0,r29; fp = sp 4318 00004484 afbffff8 sw -8(r29),r31; push ret addr 4319 00004488 2fbd0008 subui r29,r29,#8; alloc local storage 4320 0000448c 8fc10000 lw r1,(r30) 4321 00004490 8c210000 lw r1,(r1) 4322 00004494 8fdffff8 lw r31,-8(r30) 4323 00004498 001ee820 add r29,r0,r30 4324 0000449c 8fdefffc lw r30,-4(r30) 4325 000044a0 4be00000 jr r31 4326 000044a4 54000000 nop 4327 000044a8 .endproc _QueueNext 4328 000044a8 .align 2 4329 000044a8 .proc _QueuePrev 4330 000044a8 .global _QueuePrev 4331 000044a8 _QueuePrev: 4332 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 4333 000044a8 afbefffc sw -4(r29),r30; push fp 4334 000044ac 001df020 add r30,r0,r29; fp = sp 4335 000044b0 afbffff8 sw -8(r29),r31; push ret addr 4336 000044b4 2fbd0008 subui r29,r29,#8; alloc local storage 4337 000044b8 8fc10000 lw r1,(r30) 4338 000044bc 8c210004 lw r1,4(r1) 4339 000044c0 8fdffff8 lw r31,-8(r30) 4340 000044c4 001ee820 add r29,r0,r30 4341 000044c8 8fdefffc lw r30,-4(r30) 4342 000044cc 4be00000 jr r31 4343 000044d0 54000000 nop 4344 000044d4 .endproc _QueuePrev 4345 000044d4 .align 2 4346 000044d4 .proc _QueueFirst 4347 000044d4 .global _QueueFirst 4348 000044d4 _QueueFirst: 4349 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 4350 000044d4 afbefffc sw -4(r29),r30; push fp 4351 000044d8 001df020 add r30,r0,r29; fp = sp 4352 000044dc afbffff8 sw -8(r29),r31; push ret addr 4353 000044e0 2fbd0008 subui r29,r29,#8; alloc local storage 4354 000044e4 8fc10000 lw r1,(r30) 4355 000044e8 8c210000 lw r1,(r1) 4356 000044ec 8fdffff8 lw r31,-8(r30) 4357 000044f0 001ee820 add r29,r0,r30 4358 000044f4 8fdefffc lw r30,-4(r30) 4359 000044f8 4be00000 jr r31 4360 000044fc 54000000 nop 4361 00004500 .endproc _QueueFirst 4362 00004500 .align 2 4363 00004500 .proc _QueueLast 4364 00004500 .global _QueueLast 4365 00004500 _QueueLast: 4366 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 4367 00004500 afbefffc sw -4(r29),r30; push fp 4368 00004504 001df020 add r30,r0,r29; fp = sp 4369 00004508 afbffff8 sw -8(r29),r31; push ret addr 4370 0000450c 2fbd0008 subui r29,r29,#8; alloc local storage 4371 00004510 8fc10000 lw r1,(r30) 4372 00004514 8c210004 lw r1,4(r1) 4373 00004518 8fdffff8 lw r31,-8(r30) 4374 0000451c 001ee820 add r29,r0,r30 4375 00004520 8fdefffc lw r30,-4(r30) 4376 00004524 4be00000 jr r31 4377 00004528 54000000 nop 4378 0000452c .endproc _QueueLast 4379 0000452c .align 2 4380 0000452c .proc _QueueInsertAfter 4381 0000452c .global _QueueInsertAfter 4382 0000452c _QueueInsertAfter: 4383 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 4384 0000452c afbefffc sw -4(r29),r30; push fp 4385 00004530 001df020 add r30,r0,r29; fp = sp 4386 00004534 afbffff8 sw -8(r29),r31; push ret addr 4387 00004538 2fbd0010 subui r29,r29,#16; alloc local storage 4388 0000453c afa20000 sw 0(r29),r2 4389 00004540 afa30004 sw 4(r29),r3 4390 00004544 8fc30000 lw r3,(r30) 4391 00004548 8fc20004 lw r2,4(r30) 4392 0000454c 8fc10008 lw r1,8(r30) 4393 00004550 ac230008 sw 8(r1),r3 4394 00004554 ac220004 sw 4(r1),r2 4395 00004558 8c5f0000 lw r31,(r2) 4396 0000455c ac3f0000 sw (r1),r31 4397 00004560 ac410000 sw (r2),r1 4398 00004564 8c220000 lw r2,(r1) 4399 00004568 ac410004 sw 4(r2),r1 4400 0000456c 8c610008 lw r1,8(r3) 4401 00004570 20210001 addi r1,r1,#1 4402 00004574 ac610008 sw 8(r3),r1 4403 00004578 8fa20000 lw r2,0(r29) 4404 0000457c 8fa30004 lw r3,4(r29) 4405 00004580 8fdffff8 lw r31,-8(r30) 4406 00004584 001ee820 add r29,r0,r30 4407 00004588 8fdefffc lw r30,-4(r30) 4408 0000458c 4be00000 jr r31 4409 00004590 54000000 nop 4410 00004594 .endproc _QueueInsertAfter 4411 00004594 .align 2 4412 00004594 .proc _QueueInsertFirst 4413 00004594 .global _QueueInsertFirst 4414 00004594 _QueueInsertFirst: 4415 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 4416 00004594 afbefffc sw -4(r29),r30; push fp 4417 00004598 001df020 add r30,r0,r29; fp = sp 4418 0000459c afbffff8 sw -8(r29),r31; push ret addr 4419 000045a0 2fbd0010 subui r29,r29,#16; alloc local storage 4420 000045a4 afa20000 sw 0(r29),r2 4421 000045a8 afa30004 sw 4(r29),r3 4422 000045ac 8fc30000 lw r3,(r30) 4423 000045b0 8fc10004 lw r1,4(r30) 4424 000045b4 ac230008 sw 8(r1),r3 4425 000045b8 ac230004 sw 4(r1),r3 4426 000045bc 8c7f0000 lw r31,(r3) 4427 000045c0 ac3f0000 sw (r1),r31 4428 000045c4 ac610000 sw (r3),r1 4429 000045c8 8c220000 lw r2,(r1) 4430 000045cc ac410004 sw 4(r2),r1 4431 000045d0 8c610008 lw r1,8(r3) 4432 000045d4 20210001 addi r1,r1,#1 4433 000045d8 ac610008 sw 8(r3),r1 4434 000045dc 8fa20000 lw r2,0(r29) 4435 000045e0 8fa30004 lw r3,4(r29) 4436 000045e4 8fdffff8 lw r31,-8(r30) 4437 000045e8 001ee820 add r29,r0,r30 4438 000045ec 8fdefffc lw r30,-4(r30) 4439 000045f0 4be00000 jr r31 4440 000045f4 54000000 nop 4441 000045f8 .endproc _QueueInsertFirst 4442 000045f8 .align 2 4443 000045f8 .proc _QueueInsertLast 4444 000045f8 .global _QueueInsertLast 4445 000045f8 _QueueInsertLast: 4446 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 4447 000045f8 afbefffc sw -4(r29),r30; push fp 4448 000045fc 001df020 add r30,r0,r29; fp = sp 4449 00004600 afbffff8 sw -8(r29),r31; push ret addr 4450 00004604 2fbd0010 subui r29,r29,#16; alloc local storage 4451 00004608 afa20000 sw 0(r29),r2 4452 0000460c afa30004 sw 4(r29),r3 4453 00004610 8fc30000 lw r3,(r30) 4454 00004614 8fc10004 lw r1,4(r30) 4455 00004618 8c620004 lw r2,4(r3) 4456 0000461c ac230008 sw 8(r1),r3 4457 00004620 ac220004 sw 4(r1),r2 4458 00004624 8c5f0000 lw r31,(r2) 4459 00004628 ac3f0000 sw (r1),r31 4460 0000462c ac410000 sw (r2),r1 4461 00004630 8c220000 lw r2,(r1) 4462 00004634 ac410004 sw 4(r2),r1 4463 00004638 8c610008 lw r1,8(r3) 4464 0000463c 20210001 addi r1,r1,#1 4465 00004640 ac610008 sw 8(r3),r1 4466 00004644 8fa20000 lw r2,0(r29) 4467 00004648 8fa30004 lw r3,4(r29) 4468 0000464c 8fdffff8 lw r31,-8(r30) 4469 00004650 001ee820 add r29,r0,r30 4470 00004654 8fdefffc lw r30,-4(r30) 4471 00004658 4be00000 jr r31 4472 0000465c 54000000 nop 4473 00004660 .endproc _QueueInsertLast 4474 00004660 .align 2 4475 00004660 .proc _QueueRemove 4476 00004660 .global _QueueRemove 4477 00004660 _QueueRemove: 4478 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 4479 00004660 afbefffc sw -4(r29),r30; push fp 4480 00004664 001df020 add r30,r0,r29; fp = sp 4481 00004668 afbffff8 sw -8(r29),r31; push ret addr 4482 0000466c 2fbd0010 subui r29,r29,#16; alloc local storage 4483 00004670 afa20000 sw 0(r29),r2 4484 00004674 afa30004 sw 4(r29),r3 4485 00004678 8fdf0000 lw r31,(r30) 4486 0000467c 8fe10008 lw r1,8(r31) 4487 00004680 8c210008 lw r1,8(r1) 4488 00004684 6c210000 sgti r1,r1,#0 4489 00004688 1020002c beqz r1,L44_LF5 4490 0000468c 54000000 nop; not filled. 4491 00004690 8fe10004 lw r1,4(r31) 4492 00004694 8fe30000 lw r3,(r31) 4493 00004698 ac230000 sw (r1),r3 4494 0000469c 8fe10000 lw r1,(r31) 4495 000046a0 8fe30004 lw r3,4(r31) 4496 000046a4 ac230004 sw 4(r1),r3 4497 000046a8 8fe20008 lw r2,8(r31) 4498 000046ac 8c410008 lw r1,8(r2) 4499 000046b0 2021ffff addi r1,r1,#-1 4500 000046b4 ac410008 sw 8(r2),r1 4501 000046b8 L44_LF5: 4502 000046b8 20030000 addi r3,r0,#0 4503 000046bc afe30000 sw (r31),r3 4504 000046c0 8fa20000 lw r2,0(r29) 4505 000046c4 8fa30004 lw r3,4(r29) 4506 000046c8 8fdffff8 lw r31,-8(r30) 4507 000046cc 001ee820 add r29,r0,r30 4508 000046d0 8fdefffc lw r30,-4(r30) 4509 000046d4 4be00000 jr r31 4510 000046d8 54000000 nop 4511 000046dc .endproc _QueueRemove 4512 000046dc .align 2 4513 000046dc .proc _QueueLength 4514 000046dc .global _QueueLength 4515 000046dc _QueueLength: 4516 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 4517 000046dc afbefffc sw -4(r29),r30; push fp 4518 000046e0 001df020 add r30,r0,r29; fp = sp 4519 000046e4 afbffff8 sw -8(r29),r31; push ret addr 4520 000046e8 2fbd0008 subui r29,r29,#8; alloc local storage 4521 000046ec 8fc10000 lw r1,(r30) 4522 000046f0 8c210008 lw r1,8(r1) 4523 000046f4 8fdffff8 lw r31,-8(r30) 4524 000046f8 001ee820 add r29,r0,r30 4525 000046fc 8fdefffc lw r30,-4(r30) 4526 00004700 4be00000 jr r31 4527 00004704 54000000 nop 4528 00004708 .endproc _QueueLength 4529 00004708 .align 2 4530 00004708 .proc _QueueEmpty 4531 00004708 .global _QueueEmpty 4532 00004708 _QueueEmpty: 4533 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 4534 00004708 afbefffc sw -4(r29),r30; push fp 4535 0000470c 001df020 add r30,r0,r29; fp = sp 4536 00004710 afbffff8 sw -8(r29),r31; push ret addr 4537 00004714 2fbd0008 subui r29,r29,#8; alloc local storage 4538 00004718 8fc10000 lw r1,(r30) 4539 0000471c 8c210008 lw r1,8(r1) 4540 00004720 60210000 seqi r1,r1,#0 4541 00004724 8fdffff8 lw r31,-8(r30) 4542 00004728 001ee820 add r29,r0,r30 4543 0000472c 8fdefffc lw r30,-4(r30) 4544 00004730 4be00000 jr r31 4545 00004734 54000000 nop 4546 00004738 .endproc _QueueEmpty 4547 00004738 .data 4548 00010438 .align 2 4549 00010438 _processQuantum_LF5: 4550 00010438 00002710 .word 10000 4551 0001043c .align 2 4552 0001043c LC0_LF5: 4553 0001043c 456e7465 .ascii "Entering ProcessModuleInit\n\000" 4553 00010440 72696e67 4553 00010444 2050726f 4553 00010448 63657373 4553 0001044c 4d6f6475 4553 00010450 6c65496e 4553 00010454 69740a00 4554 00010458 .align 2 4555 00010458 LC1_LF5: 4556 00010458 496e6974 .ascii "Initializing PCB %d @ 0x%x.\n\000" 4556 0001045c 69616c69 4556 00010460 7a696e67 4556 00010464 20504342 4556 00010468 20256420 4556 0001046c 40203078 4556 00010470 25782e0a 4556 00010474 00 4557 00010475 .align 2 4558 00010478 LC2_LF5: 4559 00010478 4c656176 .ascii "Leaving ProcessModuleInit\n\000" 4559 0001047c 696e6720 4559 00010480 50726f63 4559 00010484 6573734d 4559 00010488 6f64756c 4559 0001048c 65496e69 4559 00010490 740a00 4560 00010493 .text 4561 00004738 .align 2 4562 00004738 .proc _ProcessModuleInit 4563 00004738 .global _ProcessModuleInit 4564 00004738 _ProcessModuleInit: 4565 ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. 4566 00004738 afbefffc sw -4(r29),r30; push fp 4567 0000473c 001df020 add r30,r0,r29; fp = sp 4568 00004740 afbffff8 sw -8(r29),r31; push ret addr 4569 00004744 2fbd0028 subui r29,r29,#40; alloc local storage 4570 00004748 afa20000 sw 0(r29),r2 4571 0000474c afa30004 sw 4(r29),r3 4572 00004750 afa40008 sw 8(r29),r4 4573 00004754 afa5000c sw 12(r29),r5 4574 00004758 afa60010 sw 16(r29),r6 4575 0000475c afa70014 sw 20(r29),r7 4576 00004760 afa80018 sw 24(r29),r8 4577 00004764 23bdfff8 addi r29,r29,#-8 4578 00004768 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4579 0000476c 24420d78 addui r2,r2,(_debugstr)&0xffff 4580 00004770 afa20000 sw (r29),r2 4581 00004774 20080070 addi r8,r0,#112 4582 00004778 afa80004 sw 4(r29),r8 4583 0000477c 0ffff6b4 jal _dindex 4584 00004780 54000000 nop; not filled. 4585 00004784 23bd0008 addi r29,r29,#8 4586 00004788 64210000 snei r1,r1,#0 4587 0000478c 1420002c bnez r1,L53_LF5 4588 00004790 54000000 nop; not filled. 4589 00004794 23bdfff8 addi r29,r29,#-8 4590 00004798 afa20000 sw (r29),r2 4591 0000479c 2008002b addi r8,r0,#43 4592 000047a0 afa80004 sw 4(r29),r8 4593 000047a4 0ffff68c jal _dindex 4594 000047a8 54000000 nop; not filled. 4595 000047ac 23bd0008 addi r29,r29,#8 4596 000047b0 64210000 snei r1,r1,#0 4597 000047b4 10200020 beqz r1,L52_LF5 4598 000047b8 54000000 nop; not filled. 4599 000047bc L53_LF5: 4600 000047bc 23bdfff8 addi r29,r29,#-8 4601 000047c0 3c080001 lhi r8,((LC0_LF5)>>16)&0xffff 4602 000047c4 2508043c addui r8,r8,(LC0_LF5)&0xffff 4603 000047c8 afa80000 sw (r29),r8 4604 000047cc 0c006900 jal _printf 4605 000047d0 54000000 nop; not filled. 4606 000047d4 23bd0008 addi r29,r29,#8 4607 000047d8 L52_LF5: 4608 000047d8 23bdfff8 addi r29,r29,#-8 4609 000047dc 3c020001 lhi r2,((_freepcbs_LF5)>>16)&0xffff 4610 000047e0 24420e44 addui r2,r2,(_freepcbs_LF5)&0xffff 4611 000047e4 afa20000 sw (r29),r2 4612 000047e8 0c0038d8 jal _QueueInit 4613 000047ec 54000000 nop; not filled. 4614 000047f0 3c080001 lhi r8,((_runQueue_LF5)>>16)&0xffff 4615 000047f4 25080e50 addui r8,r8,(_runQueue_LF5)&0xffff 4616 000047f8 afa80000 sw (r29),r8 4617 000047fc 0c0038c4 jal _QueueInit 4618 00004800 54000000 nop; not filled. 4619 00004804 3c080001 lhi r8,((_waitQueue_LF5)>>16)&0xffff 4620 00004808 25080e5c addui r8,r8,(_waitQueue_LF5)&0xffff 4621 0000480c afa80000 sw (r29),r8 4622 00004810 0c0038b0 jal _QueueInit 4623 00004814 54000000 nop; not filled. 4624 00004818 3c080001 lhi r8,((_zombieQueue_LF5)>>16)&0xffff 4625 0000481c 25080e68 addui r8,r8,(_zombieQueue_LF5)&0xffff 4626 00004820 afa80000 sw (r29),r8 4627 00004824 0c00389c jal _QueueInit 4628 00004828 54000000 nop; not filled. 4629 0000482c 20040000 addi r4,r0,#0 4630 00004830 23bd0008 addi r29,r29,#8 4631 00004834 3c070001 lhi r7,((_debugstr)>>16)&0xffff 4632 00004838 24e70d78 addui r7,r7,(_debugstr)&0xffff 4633 0000483c 3c010001 lhi r1,((_pcbs_LF5)>>16)&0xffff 4634 00004840 24210e74 addui r1,r1,(_pcbs_LF5)&0xffff 4635 00004844 00022820 add r5,r0,r2 4636 00004848 20220068 addi r2,r1,#104 4637 0000484c 00011820 add r3,r0,r1 4638 00004850 00033020 add r6,r0,r3 4639 00004854 L57_LF5: 4640 00004854 23bdfff8 addi r29,r29,#-8 4641 00004858 afa70000 sw (r29),r7 4642 0000485c 20080070 addi r8,r0,#112 4643 00004860 afa80004 sw 4(r29),r8 4644 00004864 0ffff5cc jal _dindex 4645 00004868 54000000 nop; not filled. 4646 0000486c 23bd0008 addi r29,r29,#8 4647 00004870 64210000 snei r1,r1,#0 4648 00004874 1420002c bnez r1,L59_LF5 4649 00004878 54000000 nop; not filled. 4650 0000487c 23bdfff8 addi r29,r29,#-8 4651 00004880 afa70000 sw (r29),r7 4652 00004884 2008002b addi r8,r0,#43 4653 00004888 afa80004 sw 4(r29),r8 4654 0000488c 0ffff5a4 jal _dindex 4655 00004890 54000000 nop; not filled. 4656 00004894 23bd0008 addi r29,r29,#8 4657 00004898 64210000 snei r1,r1,#0 4658 0000489c 10200028 beqz r1,L58_LF5 4659 000048a0 54000000 nop; not filled. 4660 000048a4 L59_LF5: 4661 000048a4 23bdfff0 addi r29,r29,#-16 4662 000048a8 3c080001 lhi r8,((LC1_LF5)>>16)&0xffff 4663 000048ac 25080458 addui r8,r8,(LC1_LF5)&0xffff 4664 000048b0 afa80000 sw (r29),r8 4665 000048b4 afa40004 sw 4(r29),r4 4666 000048b8 afa60008 sw 8(r29),r6 4667 000048bc 0c006810 jal _printf 4668 000048c0 54000000 nop; not filled. 4669 000048c4 23bd0010 addi r29,r29,#16 4670 000048c8 L58_LF5: 4671 000048c8 20080001 addi r8,r0,#1 4672 000048cc ac68000c sw 12(r3),r8 4673 000048d0 20080000 addi r8,r0,#0 4674 000048d4 ac480000 sw (r2),r8 4675 000048d8 ac43000c sw 12(r2),r3 4676 000048dc ac450008 sw 8(r2),r5 4677 000048e0 ac450004 sw 4(r2),r5 4678 000048e4 8ca80000 lw r8,(r5) 4679 000048e8 ac480000 sw (r2),r8 4680 000048ec aca20000 sw (r5),r2 4681 000048f0 8c410000 lw r1,(r2) 4682 000048f4 ac220004 sw 4(r1),r2 4683 000048f8 8ca10008 lw r1,8(r5) 4684 000048fc 20210001 addi r1,r1,#1 4685 00004900 aca10008 sw 8(r5),r1 4686 00004904 20420078 addi r2,r2,#120 4687 00004908 20630078 addi r3,r3,#120 4688 0000490c 20c60078 addi r6,r6,#120 4689 00004910 20840001 addi r4,r4,#1 4690 00004914 7081001f slei r1,r4,#31 4691 00004918 1420ff38 bnez r1,L57_LF5 4692 0000491c 54000000 nop; not filled. 4693 00004920 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4694 00004924 24210e40 addui r1,r1,(_currentPCB)&0xffff 4695 00004928 20080000 addi r8,r0,#0 4696 0000492c ac280000 sw (r1),r8 4697 00004930 23bdfff8 addi r29,r29,#-8 4698 00004934 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4699 00004938 24420d78 addui r2,r2,(_debugstr)&0xffff 4700 0000493c afa20000 sw (r29),r2 4701 00004940 20080070 addi r8,r0,#112 4702 00004944 afa80004 sw 4(r29),r8 4703 00004948 0ffff4e8 jal _dindex 4704 0000494c 54000000 nop; not filled. 4705 00004950 23bd0008 addi r29,r29,#8 4706 00004954 64210000 snei r1,r1,#0 4707 00004958 1420002c bnez r1,L65_LF5 4708 0000495c 54000000 nop; not filled. 4709 00004960 23bdfff8 addi r29,r29,#-8 4710 00004964 afa20000 sw (r29),r2 4711 00004968 2008002b addi r8,r0,#43 4712 0000496c afa80004 sw 4(r29),r8 4713 00004970 0ffff4c0 jal _dindex 4714 00004974 54000000 nop; not filled. 4715 00004978 23bd0008 addi r29,r29,#8 4716 0000497c 64210000 snei r1,r1,#0 4717 00004980 10200020 beqz r1,L64_LF5 4718 00004984 54000000 nop; not filled. 4719 00004988 L65_LF5: 4720 00004988 23bdfff8 addi r29,r29,#-8 4721 0000498c 3c080001 lhi r8,((LC2_LF5)>>16)&0xffff 4722 00004990 25080478 addui r8,r8,(LC2_LF5)&0xffff 4723 00004994 afa80000 sw (r29),r8 4724 00004998 0c006734 jal _printf 4725 0000499c 54000000 nop; not filled. 4726 000049a0 23bd0008 addi r29,r29,#8 4727 000049a4 L64_LF5: 4728 000049a4 8fa20000 lw r2,0(r29) 4729 000049a8 8fa30004 lw r3,4(r29) 4730 000049ac 8fa40008 lw r4,8(r29) 4731 000049b0 8fa5000c lw r5,12(r29) 4732 000049b4 8fa60010 lw r6,16(r29) 4733 000049b8 8fa70014 lw r7,20(r29) 4734 000049bc 8fa80018 lw r8,24(r29) 4735 000049c0 8fdffff8 lw r31,-8(r30) 4736 000049c4 001ee820 add r29,r0,r30 4737 000049c8 8fdefffc lw r30,-4(r30) 4738 000049cc 4be00000 jr r31 4739 000049d0 54000000 nop 4740 000049d4 .endproc _ProcessModuleInit 4741 000049d4 .align 2 4742 000049d4 .proc _ProcessSetStatus 4743 000049d4 .global _ProcessSetStatus 4744 000049d4 _ProcessSetStatus: 4745 ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. 4746 000049d4 afbefffc sw -4(r29),r30; push fp 4747 000049d8 001df020 add r30,r0,r29; fp = sp 4748 000049dc afbffff8 sw -8(r29),r31; push ret addr 4749 000049e0 2fbd0010 subui r29,r29,#16; alloc local storage 4750 000049e4 afa20000 sw 0(r29),r2 4751 000049e8 afa30004 sw 4(r29),r3 4752 000049ec 8fc30000 lw r3,(r30) 4753 000049f0 8fc20004 lw r2,4(r30) 4754 000049f4 8c61000c lw r1,12(r3) 4755 000049f8 201fffc0 addi r31,r0,#-64 4756 000049fc 003f0824 and r1,r1,r31 4757 00004a00 00220825 or r1,r1,r2 4758 00004a04 ac61000c sw 12(r3),r1 4759 00004a08 8fa20000 lw r2,0(r29) 4760 00004a0c 8fa30004 lw r3,4(r29) 4761 00004a10 8fdffff8 lw r31,-8(r30) 4762 00004a14 001ee820 add r29,r0,r30 4763 00004a18 8fdefffc lw r30,-4(r30) 4764 00004a1c 4be00000 jr r31 4765 00004a20 54000000 nop 4766 00004a24 .endproc _ProcessSetStatus 4767 00004a24 .align 2 4768 00004a24 .proc _ProcessFreeResources 4769 00004a24 .global _ProcessFreeResources 4770 00004a24 _ProcessFreeResources: 4771 ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. 4772 00004a24 afbefffc sw -4(r29),r30; push fp 4773 00004a28 001df020 add r30,r0,r29; fp = sp 4774 00004a2c afbffff8 sw -8(r29),r31; push ret addr 4775 00004a30 2fbd0018 subui r29,r29,#24; alloc local storage 4776 00004a34 afa20000 sw 0(r29),r2 4777 00004a38 afa30004 sw 4(r29),r3 4778 00004a3c afa40008 sw 8(r29),r4 4779 00004a40 afa5000c sw 12(r29),r5 4780 00004a44 8fc40000 lw r4,(r30) 4781 00004a48 3c030001 lhi r3,((_freepcbs_LF5)>>16)&0xffff 4782 00004a4c 24630e44 addui r3,r3,(_freepcbs_LF5)&0xffff 4783 00004a50 20820068 addi r2,r4,#104 4784 00004a54 8c610004 lw r1,4(r3) 4785 00004a58 ac830070 sw 112(r4),r3 4786 00004a5c ac81006c sw 108(r4),r1 4787 00004a60 8c250000 lw r5,(r1) 4788 00004a64 ac450000 sw (r2),r5 4789 00004a68 ac220000 sw (r1),r2 4790 00004a6c 8c410000 lw r1,(r2) 4791 00004a70 ac220004 sw 4(r1),r2 4792 00004a74 8c610008 lw r1,8(r3) 4793 00004a78 20210001 addi r1,r1,#1 4794 00004a7c ac610008 sw 8(r3),r1 4795 00004a80 20020000 addi r2,r0,#0 4796 00004a84 8c810064 lw r1,100(r4) 4797 00004a88 0041082a slt r1,r2,r1 4798 00004a8c 10200038 beqz r1,L83_LF5 4799 00004a90 54000000 nop; not filled. 4800 00004a94 00041820 add r3,r0,r4 4801 00004a98 L85_LF5: 4802 00004a98 23bdfff8 addi r29,r29,#-8 4803 00004a9c 8c650060 lw r5,96(r3) 4804 00004aa0 afa50000 sw (r29),r5 4805 00004aa4 0fffec34 jal _MemoryFreePte 4806 00004aa8 54000000 nop; not filled. 4807 00004aac 23bd0008 addi r29,r29,#8 4808 00004ab0 20630004 addi r3,r3,#4 4809 00004ab4 20420001 addi r2,r2,#1 4810 00004ab8 8c810064 lw r1,100(r4) 4811 00004abc 0041082a slt r1,r2,r1 4812 00004ac0 1420ffd4 bnez r1,L85_LF5 4813 00004ac4 54000000 nop; not filled. 4814 00004ac8 L83_LF5: 4815 00004ac8 23bdfff8 addi r29,r29,#-8 4816 00004acc 94810008 lhu r1,8(r4) 4817 00004ad0 afa10000 sw (r29),r1 4818 00004ad4 0fffe738 jal _MemoryFreePage 4819 00004ad8 54000000 nop; not filled. 4820 00004adc 23bd0008 addi r29,r29,#8 4821 00004ae0 8c81000c lw r1,12(r4) 4822 00004ae4 2005ffc0 addi r5,r0,#-64 4823 00004ae8 00250824 and r1,r1,r5 4824 00004aec 34210001 ori r1,r1,#1 4825 00004af0 ac81000c sw 12(r4),r1 4826 00004af4 8fa20000 lw r2,0(r29) 4827 00004af8 8fa30004 lw r3,4(r29) 4828 00004afc 8fa40008 lw r4,8(r29) 4829 00004b00 8fa5000c lw r5,12(r29) 4830 00004b04 8fdffff8 lw r31,-8(r30) 4831 00004b08 001ee820 add r29,r0,r30 4832 00004b0c 8fdefffc lw r30,-4(r30) 4833 00004b10 4be00000 jr r31 4834 00004b14 54000000 nop 4835 00004b18 .endproc _ProcessFreeResources 4836 00004b18 .align 2 4837 00004b18 .proc _ProcessSetResult 4838 00004b18 .global _ProcessSetResult 4839 00004b18 _ProcessSetResult: 4840 ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. 4841 00004b18 afbefffc sw -4(r29),r30; push fp 4842 00004b1c 001df020 add r30,r0,r29; fp = sp 4843 00004b20 afbffff8 sw -8(r29),r31; push ret addr 4844 00004b24 2fbd0008 subui r29,r29,#8; alloc local storage 4845 00004b28 8fc10000 lw r1,(r30) 4846 00004b2c 8c210000 lw r1,(r1) 4847 00004b30 8fdf0004 lw r31,4(r30) 4848 00004b34 ac3f002c sw 44(r1),r31 4849 00004b38 8fdffff8 lw r31,-8(r30) 4850 00004b3c 001ee820 add r29,r0,r30 4851 00004b40 8fdefffc lw r30,-4(r30) 4852 00004b44 4be00000 jr r31 4853 00004b48 54000000 nop 4854 00004b4c .endproc _ProcessSetResult 4855 00004b4c .data 4856 00010493 .align 2 4857 00010494 LC3_LF5: 4858 00010494 4e6f7720 .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" 4858 00010498 656e7465 4858 0001049c 72696e67 4858 000104a0 2050726f 4858 000104a4 63657373 4858 000104a8 53636865 4858 000104ac 64756c65 4858 000104b0 20286375 4858 000104b4 723d3078 4858 000104b8 25782c20 4858 000104bc 25642072 4858 000104c0 65616479 4858 000104c4 290a00 4859 000104c7 .align 2 4860 000104c8 LC4_LF5: 4861 000104c8 4e6f2072 .ascii "No runnable processes - exiting!\n\000" 4861 000104cc 756e6e61 4861 000104d0 626c6520 4861 000104d4 70726f63 4861 000104d8 65737365 4861 000104dc 73202d20 4861 000104e0 65786974 4861 000104e4 696e6721 4861 000104e8 0a00 4862 000104ea .align 2 4863 000104ec LC5_LF5: 4864 000104ec 41626f75 .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" 4864 000104f0 7420746f 4864 000104f4 20737769 4864 000104f8 74636820 4864 000104fc 746f2050 4864 00010500 43422030 4864 00010504 7825782c 4864 00010508 666c6167 4864 0001050c 733d3078 4864 00010510 25782040 4864 00010514 20307825 4864 00010518 780a00 4865 0001051b .align 2 4866 0001051c LC6_LF5: 4867 0001051c 46726565 .ascii "Freeing zombie PCB 0x%x.\n\000" 4867 00010520 696e6720 4867 00010524 7a6f6d62 4867 00010528 69652050 4867 0001052c 43422030 4867 00010530 7825782e 4867 00010534 0a00 4868 00010536 .align 2 4869 00010538 LC7_LF5: 4870 00010538 4c656176 .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" 4870 0001053c 696e6720 4870 00010540 50726f63 4870 00010544 65737353 4870 00010548 63686564 4870 0001054c 756c6520 4870 00010550 28637572 4870 00010554 3d307825 4870 00010558 78290a00 4871 0001055c .text 4872 00004b4c .align 2 4873 00004b4c .proc _ProcessSchedule 4874 00004b4c .global _ProcessSchedule 4875 00004b4c _ProcessSchedule: 4876 ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. 4877 00004b4c afbefffc sw -4(r29),r30; push fp 4878 00004b50 001df020 add r30,r0,r29; fp = sp 4879 00004b54 afbffff8 sw -8(r29),r31; push ret addr 4880 00004b58 2fbd0028 subui r29,r29,#40; alloc local storage 4881 00004b5c afa20000 sw 0(r29),r2 4882 00004b60 afa30004 sw 4(r29),r3 4883 00004b64 afa40008 sw 8(r29),r4 4884 00004b68 afa5000c sw 12(r29),r5 4885 00004b6c afa60010 sw 16(r29),r6 4886 00004b70 afa70014 sw 20(r29),r7 4887 00004b74 afa80018 sw 24(r29),r8 4888 00004b78 23bdfff8 addi r29,r29,#-8 4889 00004b7c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4890 00004b80 24420d78 addui r2,r2,(_debugstr)&0xffff 4891 00004b84 afa20000 sw (r29),r2 4892 00004b88 20080070 addi r8,r0,#112 4893 00004b8c afa80004 sw 4(r29),r8 4894 00004b90 0ffff2a0 jal _dindex 4895 00004b94 54000000 nop; not filled. 4896 00004b98 23bd0008 addi r29,r29,#8 4897 00004b9c 64210000 snei r1,r1,#0 4898 00004ba0 1420002c bnez r1,L92_LF5 4899 00004ba4 54000000 nop; not filled. 4900 00004ba8 23bdfff8 addi r29,r29,#-8 4901 00004bac afa20000 sw (r29),r2 4902 00004bb0 2008002b addi r8,r0,#43 4903 00004bb4 afa80004 sw 4(r29),r8 4904 00004bb8 0ffff278 jal _dindex 4905 00004bbc 54000000 nop; not filled. 4906 00004bc0 23bd0008 addi r29,r29,#8 4907 00004bc4 64210000 snei r1,r1,#0 4908 00004bc8 10200040 beqz r1,L91_LF5 4909 00004bcc 54000000 nop; not filled. 4910 00004bd0 L92_LF5: 4911 00004bd0 3c010001 lhi r1,((_runQueue_LF5)>>16)&0xffff 4912 00004bd4 24210e50 addui r1,r1,(_runQueue_LF5)&0xffff 4913 00004bd8 8c220008 lw r2,8(r1) 4914 00004bdc 23bdfff0 addi r29,r29,#-16 4915 00004be0 3c080001 lhi r8,((LC3_LF5)>>16)&0xffff 4916 00004be4 25080494 addui r8,r8,(LC3_LF5)&0xffff 4917 00004be8 afa80000 sw (r29),r8 4918 00004bec 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4919 00004bf0 24210e40 addui r1,r1,(_currentPCB)&0xffff 4920 00004bf4 8c210000 lw r1,(r1) 4921 00004bf8 afa10004 sw 4(r29),r1 4922 00004bfc afa20008 sw 8(r29),r2 4923 00004c00 0c0064cc jal _printf 4924 00004c04 54000000 nop; not filled. 4925 00004c08 23bd0010 addi r29,r29,#16 4926 00004c0c L91_LF5: 4927 00004c0c 3c050001 lhi r5,((_runQueue_LF5)>>16)&0xffff 4928 00004c10 24a50e50 addui r5,r5,(_runQueue_LF5)&0xffff 4929 00004c14 8ca10008 lw r1,8(r5) 4930 00004c18 60210000 seqi r1,r1,#0 4931 00004c1c 10200028 beqz r1,L94_LF5 4932 00004c20 54000000 nop; not filled. 4933 00004c24 23bdfff8 addi r29,r29,#-8 4934 00004c28 3c080001 lhi r8,((LC4_LF5)>>16)&0xffff 4935 00004c2c 250804c8 addui r8,r8,(LC4_LF5)&0xffff 4936 00004c30 afa80000 sw (r29),r8 4937 00004c34 0c006498 jal _printf 4938 00004c38 54000000 nop; not filled. 4939 00004c3c 0c006478 jal _exitsim 4940 00004c40 54000000 nop; not filled. 4941 00004c44 23bd0008 addi r29,r29,#8 4942 00004c48 L94_LF5: 4943 00004c48 8ca10000 lw r1,(r5) 4944 00004c4c 8c24000c lw r4,12(r1) 4945 00004c50 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4946 00004c54 24210e40 addui r1,r1,(_currentPCB)&0xffff 4947 00004c58 8c210000 lw r1,(r1) 4948 00004c5c 00810828 seq r1,r4,r1 4949 00004c60 10200078 beqz r1,L98_LF5 4950 00004c64 54000000 nop; not filled. 4951 00004c68 20830068 addi r3,r4,#104 4952 00004c6c 8c810070 lw r1,112(r4) 4953 00004c70 8c210008 lw r1,8(r1) 4954 00004c74 6c210000 sgti r1,r1,#0 4955 00004c78 1020002c beqz r1,L100_LF5 4956 00004c7c 54000000 nop; not filled. 4957 00004c80 8c81006c lw r1,108(r4) 4958 00004c84 8c680000 lw r8,(r3) 4959 00004c88 ac280000 sw (r1),r8 4960 00004c8c 8c610000 lw r1,(r3) 4961 00004c90 8c88006c lw r8,108(r4) 4962 00004c94 ac280004 sw 4(r1),r8 4963 00004c98 8c820070 lw r2,112(r4) 4964 00004c9c 8c410008 lw r1,8(r2) 4965 00004ca0 2021ffff addi r1,r1,#-1 4966 00004ca4 ac410008 sw 8(r2),r1 4967 00004ca8 L100_LF5: 4968 00004ca8 20080000 addi r8,r0,#0 4969 00004cac ac680000 sw (r3),r8 4970 00004cb0 8ca10004 lw r1,4(r5) 4971 00004cb4 ac850070 sw 112(r4),r5 4972 00004cb8 ac81006c sw 108(r4),r1 4973 00004cbc 8c280000 lw r8,(r1) 4974 00004cc0 ac680000 sw (r3),r8 4975 00004cc4 ac230000 sw (r1),r3 4976 00004cc8 8c610000 lw r1,(r3) 4977 00004ccc ac230004 sw 4(r1),r3 4978 00004cd0 8ca10008 lw r1,8(r5) 4979 00004cd4 20210001 addi r1,r1,#1 4980 00004cd8 aca10008 sw 8(r5),r1 4981 00004cdc L98_LF5: 4982 00004cdc 3c010001 lhi r1,((_runQueue_LF5)>>16)&0xffff 4983 00004ce0 24210e50 addui r1,r1,(_runQueue_LF5)&0xffff 4984 00004ce4 8c210000 lw r1,(r1) 4985 00004ce8 8c24000c lw r4,12(r1) 4986 00004cec 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 4987 00004cf0 24210e40 addui r1,r1,(_currentPCB)&0xffff 4988 00004cf4 ac240000 sw (r1),r4 4989 00004cf8 23bdfff8 addi r29,r29,#-8 4990 00004cfc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4991 00004d00 24420d78 addui r2,r2,(_debugstr)&0xffff 4992 00004d04 afa20000 sw (r29),r2 4993 00004d08 20080070 addi r8,r0,#112 4994 00004d0c afa80004 sw 4(r29),r8 4995 00004d10 0ffff120 jal _dindex 4996 00004d14 54000000 nop; not filled. 4997 00004d18 23bd0008 addi r29,r29,#8 4998 00004d1c 64210000 snei r1,r1,#0 4999 00004d20 1420002c bnez r1,L106_LF5 5000 00004d24 54000000 nop; not filled. 5001 00004d28 23bdfff8 addi r29,r29,#-8 5002 00004d2c afa20000 sw (r29),r2 5003 00004d30 2008002b addi r8,r0,#43 5004 00004d34 afa80004 sw 4(r29),r8 5005 00004d38 0ffff0f8 jal _dindex 5006 00004d3c 54000000 nop; not filled. 5007 00004d40 23bd0008 addi r29,r29,#8 5008 00004d44 64210000 snei r1,r1,#0 5009 00004d48 10200038 beqz r1,L105_LF5 5010 00004d4c 54000000 nop; not filled. 5011 00004d50 L106_LF5: 5012 00004d50 23bdfff0 addi r29,r29,#-16 5013 00004d54 3c080001 lhi r8,((LC5_LF5)>>16)&0xffff 5014 00004d58 250804ec addui r8,r8,(LC5_LF5)&0xffff 5015 00004d5c afa80000 sw (r29),r8 5016 00004d60 afa40004 sw 4(r29),r4 5017 00004d64 8c88000c lw r8,12(r4) 5018 00004d68 afa80008 sw 8(r29),r8 5019 00004d6c 8c810004 lw r1,4(r4) 5020 00004d70 8c210128 lw r1,296(r1) 5021 00004d74 afa1000c sw 12(r29),r1 5022 00004d78 0c006354 jal _printf 5023 00004d7c 54000000 nop; not filled. 5024 00004d80 23bd0010 addi r29,r29,#16 5025 00004d84 L105_LF5: 5026 00004d84 3c070001 lhi r7,((_zombieQueue_LF5)>>16)&0xffff 5027 00004d88 24e70e68 addui r7,r7,(_zombieQueue_LF5)&0xffff 5028 00004d8c 3c060001 lhi r6,((_debugstr)>>16)&0xffff 5029 00004d90 24c60d78 addui r6,r6,(_debugstr)&0xffff 5030 00004d94 3c050001 lhi r5,((_freepcbs_LF5)>>16)&0xffff 5031 00004d98 24a50e44 addui r5,r5,(_freepcbs_LF5)&0xffff 5032 00004d9c L107_LF5: 5033 00004d9c 8ce10008 lw r1,8(r7) 5034 00004da0 60210000 seqi r1,r1,#0 5035 00004da4 1420016c bnez r1,L108_LF5 5036 00004da8 54000000 nop; not filled. 5037 00004dac 8ce10000 lw r1,(r7) 5038 00004db0 8c24000c lw r4,12(r1) 5039 00004db4 23bdfff8 addi r29,r29,#-8 5040 00004db8 afa60000 sw (r29),r6 5041 00004dbc 20080070 addi r8,r0,#112 5042 00004dc0 afa80004 sw 4(r29),r8 5043 00004dc4 0ffff06c jal _dindex 5044 00004dc8 54000000 nop; not filled. 5045 00004dcc 23bd0008 addi r29,r29,#8 5046 00004dd0 64210000 snei r1,r1,#0 5047 00004dd4 1420002c bnez r1,L114_LF5 5048 00004dd8 54000000 nop; not filled. 5049 00004ddc 23bdfff8 addi r29,r29,#-8 5050 00004de0 afa60000 sw (r29),r6 5051 00004de4 2008002b addi r8,r0,#43 5052 00004de8 afa80004 sw 4(r29),r8 5053 00004dec 0ffff044 jal _dindex 5054 00004df0 54000000 nop; not filled. 5055 00004df4 23bd0008 addi r29,r29,#8 5056 00004df8 64210000 snei r1,r1,#0 5057 00004dfc 10200024 beqz r1,L113_LF5 5058 00004e00 54000000 nop; not filled. 5059 00004e04 L114_LF5: 5060 00004e04 23bdfff8 addi r29,r29,#-8 5061 00004e08 3c080001 lhi r8,((LC6_LF5)>>16)&0xffff 5062 00004e0c 2508051c addui r8,r8,(LC6_LF5)&0xffff 5063 00004e10 afa80000 sw (r29),r8 5064 00004e14 afa40004 sw 4(r29),r4 5065 00004e18 0c0062b4 jal _printf 5066 00004e1c 54000000 nop; not filled. 5067 00004e20 23bd0008 addi r29,r29,#8 5068 00004e24 L113_LF5: 5069 00004e24 209f0068 addi r31,r4,#104 5070 00004e28 8c810070 lw r1,112(r4) 5071 00004e2c 8c210008 lw r1,8(r1) 5072 00004e30 6c210000 sgti r1,r1,#0 5073 00004e34 1020002c beqz r1,L116_LF5 5074 00004e38 54000000 nop; not filled. 5075 00004e3c 8c81006c lw r1,108(r4) 5076 00004e40 8fe80000 lw r8,(r31) 5077 00004e44 ac280000 sw (r1),r8 5078 00004e48 8fe10000 lw r1,(r31) 5079 00004e4c 8c88006c lw r8,108(r4) 5080 00004e50 ac280004 sw 4(r1),r8 5081 00004e54 8c820070 lw r2,112(r4) 5082 00004e58 8c410008 lw r1,8(r2) 5083 00004e5c 2021ffff addi r1,r1,#-1 5084 00004e60 ac410008 sw 8(r2),r1 5085 00004e64 L116_LF5: 5086 00004e64 20080000 addi r8,r0,#0 5087 00004e68 afe80000 sw (r31),r8 5088 00004e6c 8ca10004 lw r1,4(r5) 5089 00004e70 ac850070 sw 112(r4),r5 5090 00004e74 ac81006c sw 108(r4),r1 5091 00004e78 8c280000 lw r8,(r1) 5092 00004e7c afe80000 sw (r31),r8 5093 00004e80 ac3f0000 sw (r1),r31 5094 00004e84 8fe10000 lw r1,(r31) 5095 00004e88 ac3f0004 sw 4(r1),r31 5096 00004e8c 8ca10008 lw r1,8(r5) 5097 00004e90 20210001 addi r1,r1,#1 5098 00004e94 aca10008 sw 8(r5),r1 5099 00004e98 20030000 addi r3,r0,#0 5100 00004e9c 8c810064 lw r1,100(r4) 5101 00004ea0 0061082a slt r1,r3,r1 5102 00004ea4 10200038 beqz r1,L122_LF5 5103 00004ea8 54000000 nop; not filled. 5104 00004eac 00041020 add r2,r0,r4 5105 00004eb0 L124_LF5: 5106 00004eb0 23bdfff8 addi r29,r29,#-8 5107 00004eb4 8c480060 lw r8,96(r2) 5108 00004eb8 afa80000 sw (r29),r8 5109 00004ebc 0fffe81c jal _MemoryFreePte 5110 00004ec0 54000000 nop; not filled. 5111 00004ec4 23bd0008 addi r29,r29,#8 5112 00004ec8 20420004 addi r2,r2,#4 5113 00004ecc 20630001 addi r3,r3,#1 5114 00004ed0 8c810064 lw r1,100(r4) 5115 00004ed4 0061082a slt r1,r3,r1 5116 00004ed8 1420ffd4 bnez r1,L124_LF5 5117 00004edc 54000000 nop; not filled. 5118 00004ee0 L122_LF5: 5119 00004ee0 23bdfff8 addi r29,r29,#-8 5120 00004ee4 94810008 lhu r1,8(r4) 5121 00004ee8 afa10000 sw (r29),r1 5122 00004eec 0fffe320 jal _MemoryFreePage 5123 00004ef0 54000000 nop; not filled. 5124 00004ef4 23bd0008 addi r29,r29,#8 5125 00004ef8 8c81000c lw r1,12(r4) 5126 00004efc 2008ffc0 addi r8,r0,#-64 5127 00004f00 00280824 and r1,r1,r8 5128 00004f04 34210001 ori r1,r1,#1 5129 00004f08 ac81000c sw 12(r4),r1 5130 00004f0c 0bfffe8c j L107_LF5 5131 00004f10 54000000 nop; not filled. 5132 00004f14 L108_LF5: 5133 00004f14 23bdfff8 addi r29,r29,#-8 5134 00004f18 3c010001 lhi r1,((_processQuantum_LF5)>>16)&0xffff 5135 00004f1c 24210438 addui r1,r1,(_processQuantum_LF5)&0xffff 5136 00004f20 8c210000 lw r1,(r1) 5137 00004f24 afa10000 sw (r29),r1 5138 00004f28 0c0044e4 jal _TimerSet 5139 00004f2c 54000000 nop; not filled. 5140 00004f30 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5141 00004f34 24420d78 addui r2,r2,(_debugstr)&0xffff 5142 00004f38 afa20000 sw (r29),r2 5143 00004f3c 20080070 addi r8,r0,#112 5144 00004f40 afa80004 sw 4(r29),r8 5145 00004f44 0fffeeec jal _dindex 5146 00004f48 54000000 nop; not filled. 5147 00004f4c 23bd0008 addi r29,r29,#8 5148 00004f50 64210000 snei r1,r1,#0 5149 00004f54 1420002c bnez r1,L128_LF5 5150 00004f58 54000000 nop; not filled. 5151 00004f5c 23bdfff8 addi r29,r29,#-8 5152 00004f60 afa20000 sw (r29),r2 5153 00004f64 2008002b addi r8,r0,#43 5154 00004f68 afa80004 sw 4(r29),r8 5155 00004f6c 0fffeec4 jal _dindex 5156 00004f70 54000000 nop; not filled. 5157 00004f74 23bd0008 addi r29,r29,#8 5158 00004f78 64210000 snei r1,r1,#0 5159 00004f7c 10200030 beqz r1,L127_LF5 5160 00004f80 54000000 nop; not filled. 5161 00004f84 L128_LF5: 5162 00004f84 23bdfff8 addi r29,r29,#-8 5163 00004f88 3c080001 lhi r8,((LC7_LF5)>>16)&0xffff 5164 00004f8c 25080538 addui r8,r8,(LC7_LF5)&0xffff 5165 00004f90 afa80000 sw (r29),r8 5166 00004f94 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 5167 00004f98 24210e40 addui r1,r1,(_currentPCB)&0xffff 5168 00004f9c 8c210000 lw r1,(r1) 5169 00004fa0 afa10004 sw 4(r29),r1 5170 00004fa4 0c006128 jal _printf 5171 00004fa8 54000000 nop; not filled. 5172 00004fac 23bd0008 addi r29,r29,#8 5173 00004fb0 L127_LF5: 5174 00004fb0 8fa20000 lw r2,0(r29) 5175 00004fb4 8fa30004 lw r3,4(r29) 5176 00004fb8 8fa40008 lw r4,8(r29) 5177 00004fbc 8fa5000c lw r5,12(r29) 5178 00004fc0 8fa60010 lw r6,16(r29) 5179 00004fc4 8fa70014 lw r7,20(r29) 5180 00004fc8 8fa80018 lw r8,24(r29) 5181 00004fcc 8fdffff8 lw r31,-8(r30) 5182 00004fd0 001ee820 add r29,r0,r30 5183 00004fd4 8fdefffc lw r30,-4(r30) 5184 00004fd8 4be00000 jr r31 5185 00004fdc 54000000 nop 5186 00004fe0 .endproc _ProcessSchedule 5187 00004fe0 .data 5188 0001055c .align 2 5189 0001055c LC8_LF5: 5190 0001055c 53757370 .ascii "Suspending PCB 0x%x (%s).\n\000" 5190 00010560 656e6469 5190 00010564 6e672050 5190 00010568 43422030 5190 0001056c 78257820 5190 00010570 28257329 5190 00010574 2e0a00 5191 00010577 .align 2 5192 00010578 LC9_LF5: 5193 00010578 25733a20 .ascii "%s: %s\n\000" 5193 0001057c 25730a00 5194 00010580 .align 2 5195 00010580 LC10_LF5: 5196 00010580 50726f63 .ascii "ProcessSuspend\000" 5196 00010584 65737353 5196 00010588 75737065 5196 0001058c 6e6400 5197 0001058f .align 2 5198 00010590 LC11_LF5: 5199 00010590 54727969 .ascii "Trying to suspend a non-running process!\n\000" 5199 00010594 6e672074 5199 00010598 6f207375 5199 0001059c 7370656e 5199 000105a0 64206120 5199 000105a4 6e6f6e2d 5199 000105a8 72756e6e 5199 000105ac 696e6720 5199 000105b0 70726f63 5199 000105b4 65737321 5199 000105b8 0a00 5200 000105ba .text 5201 00004fe0 .align 2 5202 00004fe0 .proc _ProcessSuspend 5203 00004fe0 .global _ProcessSuspend 5204 00004fe0 _ProcessSuspend: 5205 ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. 5206 00004fe0 afbefffc sw -4(r29),r30; push fp 5207 00004fe4 001df020 add r30,r0,r29; fp = sp 5208 00004fe8 afbffff8 sw -8(r29),r31; push ret addr 5209 00004fec 2fbd0018 subui r29,r29,#24; alloc local storage 5210 00004ff0 afa20000 sw 0(r29),r2 5211 00004ff4 afa30004 sw 4(r29),r3 5212 00004ff8 afa40008 sw 8(r29),r4 5213 00004ffc 8fc30000 lw r3,(r30) 5214 00005000 23bdfff8 addi r29,r29,#-8 5215 00005004 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5216 00005008 24420d78 addui r2,r2,(_debugstr)&0xffff 5217 0000500c afa20000 sw (r29),r2 5218 00005010 20040070 addi r4,r0,#112 5219 00005014 afa40004 sw 4(r29),r4 5220 00005018 0fffee18 jal _dindex 5221 0000501c 54000000 nop; not filled. 5222 00005020 23bd0008 addi r29,r29,#8 5223 00005024 64210000 snei r1,r1,#0 5224 00005028 1420002c bnez r1,L131_LF5 5225 0000502c 54000000 nop; not filled. 5226 00005030 23bdfff8 addi r29,r29,#-8 5227 00005034 afa20000 sw (r29),r2 5228 00005038 2004002b addi r4,r0,#43 5229 0000503c afa40004 sw 4(r29),r4 5230 00005040 0fffedf0 jal _dindex 5231 00005044 54000000 nop; not filled. 5232 00005048 23bd0008 addi r29,r29,#8 5233 0000504c 64210000 snei r1,r1,#0 5234 00005050 1020002c beqz r1,L130_LF5 5235 00005054 54000000 nop; not filled. 5236 00005058 L131_LF5: 5237 00005058 23bdfff0 addi r29,r29,#-16 5238 0000505c 3c040001 lhi r4,((LC8_LF5)>>16)&0xffff 5239 00005060 2484055c addui r4,r4,(LC8_LF5)&0xffff 5240 00005064 afa40000 sw (r29),r4 5241 00005068 afa30004 sw 4(r29),r3 5242 0000506c 20610010 addi r1,r3,#16 5243 00005070 afa10008 sw 8(r29),r1 5244 00005074 0c006058 jal _printf 5245 00005078 54000000 nop; not filled. 5246 0000507c 23bd0010 addi r29,r29,#16 5247 00005080 L130_LF5: 5248 00005080 8064000f lb r4,15(r3) 5249 00005084 58810001 srli r1,r4,#0x1 5250 00005088 30210001 andi r1,r1,#1 5251 0000508c 14200038 bnez r1,L133_LF5 5252 00005090 54000000 nop; not filled. 5253 00005094 23bdfff0 addi r29,r29,#-16 5254 00005098 3c040001 lhi r4,((LC9_LF5)>>16)&0xffff 5255 0000509c 24840578 addui r4,r4,(LC9_LF5)&0xffff 5256 000050a0 afa40000 sw (r29),r4 5257 000050a4 3c010001 lhi r1,((LC10_LF5)>>16)&0xffff 5258 000050a8 24210580 addui r1,r1,(LC10_LF5)&0xffff 5259 000050ac afa10004 sw 4(r29),r1 5260 000050b0 3c040001 lhi r4,((LC11_LF5)>>16)&0xffff 5261 000050b4 24840590 addui r4,r4,(LC11_LF5)&0xffff 5262 000050b8 afa40008 sw 8(r29),r4 5263 000050bc 0c006010 jal _printf 5264 000050c0 54000000 nop; not filled. 5265 000050c4 23bd0010 addi r29,r29,#16 5266 000050c8 L133_LF5: 5267 000050c8 8c61000c lw r1,12(r3) 5268 000050cc 2004ffc0 addi r4,r0,#-64 5269 000050d0 00240824 and r1,r1,r4 5270 000050d4 34210004 ori r1,r1,#4 5271 000050d8 ac61000c sw 12(r3),r1 5272 000050dc 207f0068 addi r31,r3,#104 5273 000050e0 8c610070 lw r1,112(r3) 5274 000050e4 8c210008 lw r1,8(r1) 5275 000050e8 6c210000 sgti r1,r1,#0 5276 000050ec 1020002c beqz r1,L136_LF5 5277 000050f0 54000000 nop; not filled. 5278 000050f4 8c61006c lw r1,108(r3) 5279 000050f8 8fe40000 lw r4,(r31) 5280 000050fc ac240000 sw (r1),r4 5281 00005100 8fe10000 lw r1,(r31) 5282 00005104 8c64006c lw r4,108(r3) 5283 00005108 ac240004 sw 4(r1),r4 5284 0000510c 8c620070 lw r2,112(r3) 5285 00005110 8c410008 lw r1,8(r2) 5286 00005114 2021ffff addi r1,r1,#-1 5287 00005118 ac410008 sw 8(r2),r1 5288 0000511c L136_LF5: 5289 0000511c 20040000 addi r4,r0,#0 5290 00005120 afe40000 sw (r31),r4 5291 00005124 3c020001 lhi r2,((_waitQueue_LF5)>>16)&0xffff 5292 00005128 24420e5c addui r2,r2,(_waitQueue_LF5)&0xffff 5293 0000512c 8c410004 lw r1,4(r2) 5294 00005130 ac620070 sw 112(r3),r2 5295 00005134 ac61006c sw 108(r3),r1 5296 00005138 8c240000 lw r4,(r1) 5297 0000513c afe40000 sw (r31),r4 5298 00005140 ac3f0000 sw (r1),r31 5299 00005144 8fe10000 lw r1,(r31) 5300 00005148 ac3f0004 sw 4(r1),r31 5301 0000514c 8c410008 lw r1,8(r2) 5302 00005150 20210001 addi r1,r1,#1 5303 00005154 ac410008 sw 8(r2),r1 5304 00005158 8fa20000 lw r2,0(r29) 5305 0000515c 8fa30004 lw r3,4(r29) 5306 00005160 8fa40008 lw r4,8(r29) 5307 00005164 8fdffff8 lw r31,-8(r30) 5308 00005168 001ee820 add r29,r0,r30 5309 0000516c 8fdefffc lw r30,-4(r30) 5310 00005170 4be00000 jr r31 5311 00005174 54000000 nop 5312 00005178 .endproc _ProcessSuspend 5313 00005178 .data 5314 000105ba .align 2 5315 000105bc LC12_LF5: 5316 000105bc 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 5316 000105c0 6e672075 5316 000105c4 70205043 5316 000105c8 42203078 5316 000105cc 25782e0a 5316 000105d0 00 5317 000105d1 .align 2 5318 000105d4 LC13_LF5: 5319 000105d4 50726f63 .ascii "ProcessWakeup\000" 5319 000105d8 65737357 5319 000105dc 616b6575 5319 000105e0 7000 5320 000105e2 .align 2 5321 000105e4 LC14_LF5: 5322 000105e4 54727969 .ascii "Trying to wake up a non-sleeping process!\n\000" 5322 000105e8 6e672074 5322 000105ec 6f207761 5322 000105f0 6b652075 5322 000105f4 70206120 5322 000105f8 6e6f6e2d 5322 000105fc 736c6565 5322 00010600 70696e67 5322 00010604 2070726f 5322 00010608 63657373 5322 0001060c 210a00 5323 0001060f .text 5324 00005178 .align 2 5325 00005178 .proc _ProcessWakeup 5326 00005178 .global _ProcessWakeup 5327 00005178 _ProcessWakeup: 5328 ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. 5329 00005178 afbefffc sw -4(r29),r30; push fp 5330 0000517c 001df020 add r30,r0,r29; fp = sp 5331 00005180 afbffff8 sw -8(r29),r31; push ret addr 5332 00005184 2fbd0018 subui r29,r29,#24; alloc local storage 5333 00005188 afa20000 sw 0(r29),r2 5334 0000518c afa30004 sw 4(r29),r3 5335 00005190 afa40008 sw 8(r29),r4 5336 00005194 8fc30000 lw r3,(r30) 5337 00005198 23bdfff8 addi r29,r29,#-8 5338 0000519c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5339 000051a0 24420d78 addui r2,r2,(_debugstr)&0xffff 5340 000051a4 afa20000 sw (r29),r2 5341 000051a8 20040070 addi r4,r0,#112 5342 000051ac afa40004 sw 4(r29),r4 5343 000051b0 0fffec80 jal _dindex 5344 000051b4 54000000 nop; not filled. 5345 000051b8 23bd0008 addi r29,r29,#8 5346 000051bc 64210000 snei r1,r1,#0 5347 000051c0 1420002c bnez r1,L142_LF5 5348 000051c4 54000000 nop; not filled. 5349 000051c8 23bdfff8 addi r29,r29,#-8 5350 000051cc afa20000 sw (r29),r2 5351 000051d0 2004002b addi r4,r0,#43 5352 000051d4 afa40004 sw 4(r29),r4 5353 000051d8 0fffec58 jal _dindex 5354 000051dc 54000000 nop; not filled. 5355 000051e0 23bd0008 addi r29,r29,#8 5356 000051e4 64210000 snei r1,r1,#0 5357 000051e8 10200024 beqz r1,L141_LF5 5358 000051ec 54000000 nop; not filled. 5359 000051f0 L142_LF5: 5360 000051f0 23bdfff8 addi r29,r29,#-8 5361 000051f4 3c040001 lhi r4,((LC12_LF5)>>16)&0xffff 5362 000051f8 248405bc addui r4,r4,(LC12_LF5)&0xffff 5363 000051fc afa40000 sw (r29),r4 5364 00005200 afa30004 sw 4(r29),r3 5365 00005204 0c005ec8 jal _printf 5366 00005208 54000000 nop; not filled. 5367 0000520c 23bd0008 addi r29,r29,#8 5368 00005210 L141_LF5: 5369 00005210 8064000f lb r4,15(r3) 5370 00005214 58810002 srli r1,r4,#0x2 5371 00005218 30210001 andi r1,r1,#1 5372 0000521c 14200038 bnez r1,L144_LF5 5373 00005220 54000000 nop; not filled. 5374 00005224 23bdfff0 addi r29,r29,#-16 5375 00005228 3c040001 lhi r4,((LC9_LF5)>>16)&0xffff 5376 0000522c 24840578 addui r4,r4,(LC9_LF5)&0xffff 5377 00005230 afa40000 sw (r29),r4 5378 00005234 3c010001 lhi r1,((LC13_LF5)>>16)&0xffff 5379 00005238 242105d4 addui r1,r1,(LC13_LF5)&0xffff 5380 0000523c afa10004 sw 4(r29),r1 5381 00005240 3c040001 lhi r4,((LC14_LF5)>>16)&0xffff 5382 00005244 248405e4 addui r4,r4,(LC14_LF5)&0xffff 5383 00005248 afa40008 sw 8(r29),r4 5384 0000524c 0c005e80 jal _printf 5385 00005250 54000000 nop; not filled. 5386 00005254 23bd0010 addi r29,r29,#16 5387 00005258 L144_LF5: 5388 00005258 8c61000c lw r1,12(r3) 5389 0000525c 2004ffc0 addi r4,r0,#-64 5390 00005260 00240824 and r1,r1,r4 5391 00005264 34210002 ori r1,r1,#2 5392 00005268 ac61000c sw 12(r3),r1 5393 0000526c 207f0068 addi r31,r3,#104 5394 00005270 8c610070 lw r1,112(r3) 5395 00005274 8c210008 lw r1,8(r1) 5396 00005278 6c210000 sgti r1,r1,#0 5397 0000527c 1020002c beqz r1,L147_LF5 5398 00005280 54000000 nop; not filled. 5399 00005284 8c61006c lw r1,108(r3) 5400 00005288 8fe40000 lw r4,(r31) 5401 0000528c ac240000 sw (r1),r4 5402 00005290 8fe10000 lw r1,(r31) 5403 00005294 8c64006c lw r4,108(r3) 5404 00005298 ac240004 sw 4(r1),r4 5405 0000529c 8c620070 lw r2,112(r3) 5406 000052a0 8c410008 lw r1,8(r2) 5407 000052a4 2021ffff addi r1,r1,#-1 5408 000052a8 ac410008 sw 8(r2),r1 5409 000052ac L147_LF5: 5410 000052ac 20040000 addi r4,r0,#0 5411 000052b0 afe40000 sw (r31),r4 5412 000052b4 3c020001 lhi r2,((_runQueue_LF5)>>16)&0xffff 5413 000052b8 24420e50 addui r2,r2,(_runQueue_LF5)&0xffff 5414 000052bc 8c410004 lw r1,4(r2) 5415 000052c0 ac620070 sw 112(r3),r2 5416 000052c4 ac61006c sw 108(r3),r1 5417 000052c8 8c240000 lw r4,(r1) 5418 000052cc afe40000 sw (r31),r4 5419 000052d0 ac3f0000 sw (r1),r31 5420 000052d4 8fe10000 lw r1,(r31) 5421 000052d8 ac3f0004 sw 4(r1),r31 5422 000052dc 8c410008 lw r1,8(r2) 5423 000052e0 20210001 addi r1,r1,#1 5424 000052e4 ac410008 sw 8(r2),r1 5425 000052e8 8fa20000 lw r2,0(r29) 5426 000052ec 8fa30004 lw r3,4(r29) 5427 000052f0 8fa40008 lw r4,8(r29) 5428 000052f4 8fdffff8 lw r31,-8(r30) 5429 000052f8 001ee820 add r29,r0,r30 5430 000052fc 8fdefffc lw r30,-4(r30) 5431 00005300 4be00000 jr r31 5432 00005304 54000000 nop 5433 00005308 .endproc _ProcessWakeup 5434 00005308 .data 5435 0001060f .align 2 5436 00010610 LC15_LF5: 5437 00010610 456e7465 .ascii "Entering ProcessDestroy for 0x%x.\n\000" 5437 00010614 72696e67 5437 00010618 2050726f 5437 0001061c 63657373 5437 00010620 44657374 5437 00010624 726f7920 5437 00010628 666f7220 5437 0001062c 30782578 5437 00010630 2e0a00 5438 00010633 .align 2 5439 00010634 LC16_LF5: 5440 00010634 4c656176 .ascii "Leaving ProcessDestroy for 0x%x.\n\000" 5440 00010638 696e6720 5440 0001063c 50726f63 5440 00010640 65737344 5440 00010644 65737472 5440 00010648 6f792066 5440 0001064c 6f722030 5440 00010650 7825782e 5440 00010654 0a00 5441 00010656 .text 5442 00005308 .align 2 5443 00005308 .proc _ProcessDestroy 5444 00005308 .global _ProcessDestroy 5445 00005308 _ProcessDestroy: 5446 ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. 5447 00005308 afbefffc sw -4(r29),r30; push fp 5448 0000530c 001df020 add r30,r0,r29; fp = sp 5449 00005310 afbffff8 sw -8(r29),r31; push ret addr 5450 00005314 2fbd0018 subui r29,r29,#24; alloc local storage 5451 00005318 afa20000 sw 0(r29),r2 5452 0000531c afa30004 sw 4(r29),r3 5453 00005320 afa40008 sw 8(r29),r4 5454 00005324 8fc30000 lw r3,(r30) 5455 00005328 23bdfff8 addi r29,r29,#-8 5456 0000532c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5457 00005330 24420d78 addui r2,r2,(_debugstr)&0xffff 5458 00005334 afa20000 sw (r29),r2 5459 00005338 20040070 addi r4,r0,#112 5460 0000533c afa40004 sw 4(r29),r4 5461 00005340 0fffeaf0 jal _dindex 5462 00005344 54000000 nop; not filled. 5463 00005348 23bd0008 addi r29,r29,#8 5464 0000534c 64210000 snei r1,r1,#0 5465 00005350 1420002c bnez r1,L153_LF5 5466 00005354 54000000 nop; not filled. 5467 00005358 23bdfff8 addi r29,r29,#-8 5468 0000535c afa20000 sw (r29),r2 5469 00005360 2004002b addi r4,r0,#43 5470 00005364 afa40004 sw 4(r29),r4 5471 00005368 0fffeac8 jal _dindex 5472 0000536c 54000000 nop; not filled. 5473 00005370 23bd0008 addi r29,r29,#8 5474 00005374 64210000 snei r1,r1,#0 5475 00005378 10200024 beqz r1,L152_LF5 5476 0000537c 54000000 nop; not filled. 5477 00005380 L153_LF5: 5478 00005380 23bdfff8 addi r29,r29,#-8 5479 00005384 3c040001 lhi r4,((LC15_LF5)>>16)&0xffff 5480 00005388 24840610 addui r4,r4,(LC15_LF5)&0xffff 5481 0000538c afa40000 sw (r29),r4 5482 00005390 afa30004 sw 4(r29),r3 5483 00005394 0c005d38 jal _printf 5484 00005398 54000000 nop; not filled. 5485 0000539c 23bd0008 addi r29,r29,#8 5486 000053a0 L152_LF5: 5487 000053a0 8c61000c lw r1,12(r3) 5488 000053a4 2004ffc0 addi r4,r0,#-64 5489 000053a8 00240824 and r1,r1,r4 5490 000053ac 34210010 ori r1,r1,#16 5491 000053b0 ac61000c sw 12(r3),r1 5492 000053b4 207f0068 addi r31,r3,#104 5493 000053b8 8c610070 lw r1,112(r3) 5494 000053bc 8c210008 lw r1,8(r1) 5495 000053c0 6c210000 sgti r1,r1,#0 5496 000053c4 1020002c beqz r1,L156_LF5 5497 000053c8 54000000 nop; not filled. 5498 000053cc 8c61006c lw r1,108(r3) 5499 000053d0 8fe40000 lw r4,(r31) 5500 000053d4 ac240000 sw (r1),r4 5501 000053d8 8fe10000 lw r1,(r31) 5502 000053dc 8c64006c lw r4,108(r3) 5503 000053e0 ac240004 sw 4(r1),r4 5504 000053e4 8c620070 lw r2,112(r3) 5505 000053e8 8c410008 lw r1,8(r2) 5506 000053ec 2021ffff addi r1,r1,#-1 5507 000053f0 ac410008 sw 8(r2),r1 5508 000053f4 L156_LF5: 5509 000053f4 20040000 addi r4,r0,#0 5510 000053f8 afe40000 sw (r31),r4 5511 000053fc 3c020001 lhi r2,((_zombieQueue_LF5)>>16)&0xffff 5512 00005400 24420e68 addui r2,r2,(_zombieQueue_LF5)&0xffff 5513 00005404 ac620070 sw 112(r3),r2 5514 00005408 ac62006c sw 108(r3),r2 5515 0000540c 8c440000 lw r4,(r2) 5516 00005410 afe40000 sw (r31),r4 5517 00005414 ac5f0000 sw (r2),r31 5518 00005418 8fe10000 lw r1,(r31) 5519 0000541c ac3f0004 sw 4(r1),r31 5520 00005420 8c410008 lw r1,8(r2) 5521 00005424 20210001 addi r1,r1,#1 5522 00005428 ac410008 sw 8(r2),r1 5523 0000542c 23bdfff8 addi r29,r29,#-8 5524 00005430 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5525 00005434 24420d78 addui r2,r2,(_debugstr)&0xffff 5526 00005438 afa20000 sw (r29),r2 5527 0000543c 20040070 addi r4,r0,#112 5528 00005440 afa40004 sw 4(r29),r4 5529 00005444 0fffe9ec jal _dindex 5530 00005448 54000000 nop; not filled. 5531 0000544c 23bd0008 addi r29,r29,#8 5532 00005450 64210000 snei r1,r1,#0 5533 00005454 1420002c bnez r1,L160_LF5 5534 00005458 54000000 nop; not filled. 5535 0000545c 23bdfff8 addi r29,r29,#-8 5536 00005460 afa20000 sw (r29),r2 5537 00005464 2004002b addi r4,r0,#43 5538 00005468 afa40004 sw 4(r29),r4 5539 0000546c 0fffe9c4 jal _dindex 5540 00005470 54000000 nop; not filled. 5541 00005474 23bd0008 addi r29,r29,#8 5542 00005478 64210000 snei r1,r1,#0 5543 0000547c 10200024 beqz r1,L159_LF5 5544 00005480 54000000 nop; not filled. 5545 00005484 L160_LF5: 5546 00005484 23bdfff8 addi r29,r29,#-8 5547 00005488 3c040001 lhi r4,((LC16_LF5)>>16)&0xffff 5548 0000548c 24840634 addui r4,r4,(LC16_LF5)&0xffff 5549 00005490 afa40000 sw (r29),r4 5550 00005494 afa30004 sw 4(r29),r3 5551 00005498 0c005c34 jal _printf 5552 0000549c 54000000 nop; not filled. 5553 000054a0 23bd0008 addi r29,r29,#8 5554 000054a4 L159_LF5: 5555 000054a4 8fa20000 lw r2,0(r29) 5556 000054a8 8fa30004 lw r3,4(r29) 5557 000054ac 8fa40008 lw r4,8(r29) 5558 000054b0 8fdffff8 lw r31,-8(r30) 5559 000054b4 001ee820 add r29,r0,r30 5560 000054b8 8fdefffc lw r30,-4(r30) 5561 000054bc 4be00000 jr r31 5562 000054c0 54000000 nop 5563 000054c4 .endproc _ProcessDestroy 5564 000054c4 .data 5565 00010656 .align 2 5566 00010658 _str52_LF5: 5567 00010658 .space 4 5568 0001065c .align 2 5569 0001065c _location53_LF5: 5570 0001065c 00000000 .word 0 5571 00010660 .text 5572 000054c4 .align 2 5573 000054c4 .proc _get_argument 5574 000054c4 .global _get_argument 5575 000054c4 _get_argument: 5576 ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. 5577 000054c4 afbefffc sw -4(r29),r30; push fp 5578 000054c8 001df020 add r30,r0,r29; fp = sp 5579 000054cc afbffff8 sw -8(r29),r31; push ret addr 5580 000054d0 2fbd0018 subui r29,r29,#24; alloc local storage 5581 000054d4 afa20000 sw 0(r29),r2 5582 000054d8 afa30004 sw 4(r29),r3 5583 000054dc afa40008 sw 8(r29),r4 5584 000054e0 afa5000c sw 12(r29),r5 5585 000054e4 8fc20000 lw r2,(r30) 5586 000054e8 64410000 snei r1,r2,#0 5587 000054ec 10200020 beqz r1,L173_LF5 5588 000054f0 54000000 nop; not filled. 5589 000054f4 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 5590 000054f8 24210658 addui r1,r1,(_str52_LF5)&0xffff 5591 000054fc ac220000 sw (r1),r2 5592 00005500 3c010001 lhi r1,((_location53_LF5)>>16)&0xffff 5593 00005504 2421065c addui r1,r1,(_location53_LF5)&0xffff 5594 00005508 20050000 addi r5,r0,#0 5595 0000550c ac250000 sw (r1),r5 5596 00005510 L173_LF5: 5597 00005510 3c1f0001 lhi r31,((_location53_LF5)>>16)&0xffff 5598 00005514 27ff065c addui r31,r31,(_location53_LF5)&0xffff 5599 00005518 8fe30000 lw r3,(r31) 5600 0000551c 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 5601 00005520 24210658 addui r1,r1,(_str52_LF5)&0xffff 5602 00005524 8c220000 lw r2,(r1) 5603 00005528 00430820 add r1,r2,r3 5604 0000552c 90210000 lbu r1,(r1) 5605 00005530 64210000 snei r1,r1,#0 5606 00005534 10200010 beqz r1,L175_LF5 5607 00005538 54000000 nop; not filled. 5608 0000553c 6c610062 sgti r1,r3,#98 5609 00005540 10200020 beqz r1,L174_LF5 5610 00005544 54000000 nop; not filled. 5611 00005548 L175_LF5: 5612 00005548 20010000 addi r1,r0,#0 5613 0000554c 08000058 j L182_LF5 5614 00005550 54000000 nop; not filled. 5615 00005554 L183_LF5: 5616 00005554 23e10001 addi r1,r31,#1 5617 00005558 ac410000 sw (r2),r1 5618 0000555c 08000044 j L177_LF5 5619 00005560 54000000 nop; not filled. 5620 00005564 L174_LF5: 5621 00005564 70610063 slei r1,r3,#99 5622 00005568 10200038 beqz r1,L177_LF5 5623 0000556c 54000000 nop; not filled. 5624 00005570 00022020 add r4,r0,r2 5625 00005574 001f1020 add r2,r0,r31 5626 00005578 L179_LF5: 5627 00005578 8c5f0000 lw r31,(r2) 5628 0000557c 009f0820 add r1,r4,r31 5629 00005580 90210000 lbu r1,(r1) 5630 00005584 64210000 snei r1,r1,#0 5631 00005588 1020ffc8 beqz r1,L183_LF5 5632 0000558c 54000000 nop; not filled. 5633 00005590 23e10001 addi r1,r31,#1 5634 00005594 ac410000 sw (r2),r1 5635 00005598 70210063 slei r1,r1,#99 5636 0000559c 1420ffd8 bnez r1,L179_LF5 5637 000055a0 54000000 nop; not filled. 5638 000055a4 L177_LF5: 5639 000055a4 00030820 add r1,r0,r3 5640 000055a8 L182_LF5: 5641 000055a8 8fa20000 lw r2,0(r29) 5642 000055ac 8fa30004 lw r3,4(r29) 5643 000055b0 8fa40008 lw r4,8(r29) 5644 000055b4 8fa5000c lw r5,12(r29) 5645 000055b8 8fdffff8 lw r31,-8(r30) 5646 000055bc 001ee820 add r29,r0,r30 5647 000055c0 8fdefffc lw r30,-4(r30) 5648 000055c4 4be00000 jr r31 5649 000055c8 54000000 nop 5650 000055cc .endproc _get_argument 5651 000055cc .data 5652 00010660 .align 2 5653 00010660 LC17_LF5: 5654 00010660 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 5654 00010664 696e7465 5654 00010668 72727570 5654 0001066c 74207661 5654 00010670 6c756520 5654 00010674 77617320 5654 00010678 30782578 5654 0001067c 2e0a00 5655 0001067f .align 2 5656 00010680 LC18_LF5: 5657 00010680 456e7465 .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" 5657 00010684 72696e67 5657 00010688 2050726f 5657 0001068c 63657373 5657 00010690 466f726b 5657 00010694 20617267 5657 00010698 733d3078 5657 0001069c 25782030 5657 000106a0 78257820 5657 000106a4 25732025 5657 000106a8 640a00 5658 000106ab .align 2 5659 000106ac LC19_LF5: 5660 000106ac 46415441 .ascii "FATAL error: no free processes!\n\000" 5660 000106b0 4c206572 5660 000106b4 726f723a 5660 000106b8 206e6f20 5660 000106bc 66726565 5660 000106c0 2070726f 5660 000106c4 63657373 5660 000106c8 6573210a 5660 000106cc 00 5661 000106cd .align 2 5662 000106d0 LC20_LF5: 5663 000106d0 476f7420 .ascii "Got a link @ 0x%x\n\000" 5663 000106d4 61206c69 5663 000106d8 6e6b2040 5663 000106dc 20307825 5663 000106e0 780a00 5664 000106e3 .align 2 5665 000106e4 LC21_LF5: 5666 000106e4 4265666f .ascii "Before restore interrupt value is 0x%x.\n\000" 5666 000106e8 72652072 5666 000106ec 6573746f 5666 000106f0 72652069 5666 000106f4 6e746572 5666 000106f8 72757074 5666 000106fc 2076616c 5666 00010700 75652069 5666 00010704 73203078 5666 00010708 25782e0a 5666 0001070c 00 5667 0001070d .align 2 5668 00010710 LC22_LF5: 5669 00010710 4e657720 .ascii "New interrupt value is 0x%x.\n\000" 5669 00010714 696e7465 5669 00010718 72727570 5669 0001071c 74207661 5669 00010720 6c756520 5669 00010724 69732030 5669 00010728 7825782e 5669 0001072c 0a00 5670 0001072e .align 2 5671 00010730 LC23_LF5: 5672 00010730 61464154 .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" 5672 00010734 414c3a20 5672 00010738 636f756c 5672 0001073c 646e2774 5672 00010740 20616c6c 5672 00010744 6f636174 5672 00010748 65206d65 5672 0001074c 6d6f7279 5672 00010750 202d206e 5672 00010754 6f206672 5672 00010758 65652070 5672 0001075c 61676573 5672 00010760 210a00 5673 00010763 .align 2 5674 00010764 LC24_LF5: 5675 00010764 62464154 .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" 5675 00010768 414c3a20 5675 0001076c 636f756c 5675 00010770 646e2774 5675 00010774 20616c6c 5675 00010778 6f636174 5675 0001077c 65207379 5675 00010780 7374656d 5675 00010784 20737461 5675 00010788 636b202d 5675 0001078c 206e6f20 5675 00010790 66726565 5675 00010794 20706167 5675 00010798 6573210a 5675 0001079c 00 5676 0001079d .align 2 5677 000107a0 LC25_LF5: 5678 000107a0 53657474 .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" 5678 000107a4 696e6720 5678 000107a8 75702050 5678 000107ac 43422040 5678 000107b0 20307825 5678 000107b4 78202873 5678 000107b8 79732073 5678 000107bc 7461636b 5678 000107c0 3d307825 5678 000107c4 782c206d 5678 000107c8 656d3d30 5678 000107cc 7825782c 5678 000107d0 2073697a 5678 000107d4 653d3078 5678 000107d8 2578290a 5678 000107dc 00 5679 000107dd .align 2 5680 000107e0 LC26_LF5: 5681 000107e0 41626f75 .ascii "About to load %s\n\000" 5681 000107e4 7420746f 5681 000107e8 206c6f61 5681 000107ec 64202573 5681 000107f0 0a00 5682 000107f2 .align 2 5683 000107f4 LC27_LF5: 5684 000107f4 46696c65 .ascii "File %s -> start=0x%08x\n\000" 5684 000107f8 20257320 5684 000107fc 2d3e2073 5684 00010800 74617274 5684 00010804 3d307825 5684 00010808 3038780a 5684 0001080c 00 5685 0001080d .align 2 5686 00010810 LC28_LF5: 5687 00010810 46696c65 .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" 5687 00010814 20257320 5687 00010818 2d3e2063 5687 0001081c 6f646520 5687 00010820 40203078 5687 00010824 25303878 5687 00010828 20287369 5687 0001082c 7a653d30 5687 00010830 78253038 5687 00010834 78290a00 5688 00010838 .align 2 5689 00010838 LC29_LF5: 5690 00010838 46696c65 .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" 5690 0001083c 20257320 5690 00010840 2d3e2064 5690 00010844 61746120 5690 00010848 40203078 5690 0001084c 25303878 5690 00010850 20287369 5690 00010854 7a653d30 5690 00010858 78253038 5690 0001085c 78290a00 5691 00010860 .align 2 5692 00010860 LC30_LF5: 5693 00010860 506c6163 .ascii "Placing %d bytes at vaddr %08x.\n\000" 5693 00010864 696e6720 5693 00010868 25642062 5693 0001086c 79746573 5693 00010870 20617420 5693 00010874 76616464 5693 00010878 72202530 5693 0001087c 38782e0a 5693 00010880 00 5694 00010881 .align 2 5695 00010884 LC31_LF5: 5696 00010884 53657474 .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" 5696 00010888 696e6720 5696 0001088c 63757272 5696 00010890 656e7450 5696 00010894 43423d30 5696 00010898 7825782c 5696 0001089c 20737461 5696 000108a0 636b6672 5696 000108a4 616d653d 5696 000108a8 30782578 5696 000108ac 0a00 5697 000108ae .align 2 5698 000108b0 LC32_LF5: 5699 000108b0 4c656176 .ascii "Leaving ProcessFork (%s)\n\000" 5699 000108b4 696e6720 5699 000108b8 50726f63 5699 000108bc 65737346 5699 000108c0 6f726b20 5699 000108c4 28257329 5699 000108c8 0a00 5700 000108ca .text 5701 000055cc .align 2 5702 000055cc .proc _ProcessFork 5703 000055cc .global _ProcessFork 5704 000055cc _ProcessFork: 5705 ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. 5706 000055cc afbefffc sw -4(r29),r30; push fp 5707 000055d0 001df020 add r30,r0,r29; fp = sp 5708 000055d4 afbffff8 sw -8(r29),r31; push ret addr 5709 000055d8 2fbd02d8 subui r29,r29,#728; alloc local storage 5710 000055dc afa20000 sw 0(r29),r2 5711 000055e0 afa30004 sw 4(r29),r3 5712 000055e4 afa40008 sw 8(r29),r4 5713 000055e8 afa5000c sw 12(r29),r5 5714 000055ec afa60010 sw 16(r29),r6 5715 000055f0 afa70014 sw 20(r29),r7 5716 000055f4 afa80018 sw 24(r29),r8 5717 000055f8 afa9001c sw 28(r29),r9 5718 000055fc afaa0020 sw 32(r29),r10 5719 00005600 afab0024 sw 36(r29),r11 5720 00005604 afac0028 sw 40(r29),r12 5721 00005608 afad002c sw 44(r29),r13 5722 0000560c 8fc50000 lw r5,(r30) 5723 00005610 8fca0004 lw r10,4(r30) 5724 00005614 8fcc0008 lw r12,8(r30) 5725 00005618 8fc4000c lw r4,12(r30) 5726 0000561c 200d0000 addi r13,r0,#0 5727 00005620 afcdfd58 sw -680(r30),r13 5728 00005624 23bdfff8 addi r29,r29,#-8 5729 00005628 200d000f addi r13,r0,#15 5730 0000562c afad0000 sw (r29),r13 5731 00005630 0fffbc54 jal _SetIntrs 5732 00005634 54000000 nop; not filled. 5733 00005638 00011820 add r3,r0,r1 5734 0000563c 23bd0008 addi r29,r29,#8 5735 00005640 23bdfff8 addi r29,r29,#-8 5736 00005644 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5737 00005648 24420d78 addui r2,r2,(_debugstr)&0xffff 5738 0000564c afa20000 sw (r29),r2 5739 00005650 200d0049 addi r13,r0,#73 5740 00005654 afad0004 sw 4(r29),r13 5741 00005658 0fffe7d8 jal _dindex 5742 0000565c 54000000 nop; not filled. 5743 00005660 23bd0008 addi r29,r29,#8 5744 00005664 64210000 snei r1,r1,#0 5745 00005668 1420002c bnez r1,L187_LF5 5746 0000566c 54000000 nop; not filled. 5747 00005670 23bdfff8 addi r29,r29,#-8 5748 00005674 afa20000 sw (r29),r2 5749 00005678 200d002b addi r13,r0,#43 5750 0000567c afad0004 sw 4(r29),r13 5751 00005680 0fffe7b0 jal _dindex 5752 00005684 54000000 nop; not filled. 5753 00005688 23bd0008 addi r29,r29,#8 5754 0000568c 64210000 snei r1,r1,#0 5755 00005690 10200024 beqz r1,L186_LF5 5756 00005694 54000000 nop; not filled. 5757 00005698 L187_LF5: 5758 00005698 23bdfff8 addi r29,r29,#-8 5759 0000569c 3c0d0001 lhi r13,((LC17_LF5)>>16)&0xffff 5760 000056a0 25ad0660 addui r13,r13,(LC17_LF5)&0xffff 5761 000056a4 afad0000 sw (r29),r13 5762 000056a8 afa30004 sw 4(r29),r3 5763 000056ac 0c005a20 jal _printf 5764 000056b0 54000000 nop; not filled. 5765 000056b4 23bd0008 addi r29,r29,#8 5766 000056b8 L186_LF5: 5767 000056b8 23bdfff8 addi r29,r29,#-8 5768 000056bc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5769 000056c0 24420d78 addui r2,r2,(_debugstr)&0xffff 5770 000056c4 afa20000 sw (r29),r2 5771 000056c8 200d0070 addi r13,r0,#112 5772 000056cc afad0004 sw 4(r29),r13 5773 000056d0 0fffe760 jal _dindex 5774 000056d4 54000000 nop; not filled. 5775 000056d8 23bd0008 addi r29,r29,#8 5776 000056dc 64210000 snei r1,r1,#0 5777 000056e0 1420002c bnez r1,L189_LF5 5778 000056e4 54000000 nop; not filled. 5779 000056e8 23bdfff8 addi r29,r29,#-8 5780 000056ec afa20000 sw (r29),r2 5781 000056f0 200d002b addi r13,r0,#43 5782 000056f4 afad0004 sw 4(r29),r13 5783 000056f8 0fffe738 jal _dindex 5784 000056fc 54000000 nop; not filled. 5785 00005700 23bd0008 addi r29,r29,#8 5786 00005704 64210000 snei r1,r1,#0 5787 00005708 10200030 beqz r1,L188_LF5 5788 0000570c 54000000 nop; not filled. 5789 00005710 L189_LF5: 5790 00005710 23bdffe8 addi r29,r29,#-24 5791 00005714 3c0d0001 lhi r13,((LC18_LF5)>>16)&0xffff 5792 00005718 25ad0680 addui r13,r13,(LC18_LF5)&0xffff 5793 0000571c afad0000 sw (r29),r13 5794 00005720 afa50004 sw 4(r29),r5 5795 00005724 afaa0008 sw 8(r29),r10 5796 00005728 afac000c sw 12(r29),r12 5797 0000572c afa40010 sw 16(r29),r4 5798 00005730 0c00599c jal _printf 5799 00005734 54000000 nop; not filled. 5800 00005738 23bd0018 addi r29,r29,#24 5801 0000573c L188_LF5: 5802 0000573c 3c020001 lhi r2,((_freepcbs_LF5)>>16)&0xffff 5803 00005740 24420e44 addui r2,r2,(_freepcbs_LF5)&0xffff 5804 00005744 8c410008 lw r1,8(r2) 5805 00005748 60210000 seqi r1,r1,#0 5806 0000574c 10200028 beqz r1,L190_LF5 5807 00005750 54000000 nop; not filled. 5808 00005754 23bdfff8 addi r29,r29,#-8 5809 00005758 3c0d0001 lhi r13,((LC19_LF5)>>16)&0xffff 5810 0000575c 25ad06ac addui r13,r13,(LC19_LF5)&0xffff 5811 00005760 afad0000 sw (r29),r13 5812 00005764 0c005968 jal _printf 5813 00005768 54000000 nop; not filled. 5814 0000576c 0c005948 jal _exitsim 5815 00005770 54000000 nop; not filled. 5816 00005774 23bd0008 addi r29,r29,#8 5817 00005778 L190_LF5: 5818 00005778 8c490000 lw r9,(r2) 5819 0000577c 23bdfff8 addi r29,r29,#-8 5820 00005780 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5821 00005784 24420d78 addui r2,r2,(_debugstr)&0xffff 5822 00005788 afa20000 sw (r29),r2 5823 0000578c 200d0070 addi r13,r0,#112 5824 00005790 afad0004 sw 4(r29),r13 5825 00005794 0fffe69c jal _dindex 5826 00005798 54000000 nop; not filled. 5827 0000579c 23bd0008 addi r29,r29,#8 5828 000057a0 64210000 snei r1,r1,#0 5829 000057a4 1420002c bnez r1,L195_LF5 5830 000057a8 54000000 nop; not filled. 5831 000057ac 23bdfff8 addi r29,r29,#-8 5832 000057b0 afa20000 sw (r29),r2 5833 000057b4 200d002b addi r13,r0,#43 5834 000057b8 afad0004 sw 4(r29),r13 5835 000057bc 0fffe674 jal _dindex 5836 000057c0 54000000 nop; not filled. 5837 000057c4 23bd0008 addi r29,r29,#8 5838 000057c8 64210000 snei r1,r1,#0 5839 000057cc 10200024 beqz r1,L194_LF5 5840 000057d0 54000000 nop; not filled. 5841 000057d4 L195_LF5: 5842 000057d4 23bdfff8 addi r29,r29,#-8 5843 000057d8 3c0d0001 lhi r13,((LC20_LF5)>>16)&0xffff 5844 000057dc 25ad06d0 addui r13,r13,(LC20_LF5)&0xffff 5845 000057e0 afad0000 sw (r29),r13 5846 000057e4 afa90004 sw 4(r29),r9 5847 000057e8 0c0058e4 jal _printf 5848 000057ec 54000000 nop; not filled. 5849 000057f0 23bd0008 addi r29,r29,#8 5850 000057f4 L194_LF5: 5851 000057f4 8d210008 lw r1,8(r9) 5852 000057f8 8c210008 lw r1,8(r1) 5853 000057fc 6c210000 sgti r1,r1,#0 5854 00005800 1020002c beqz r1,L197_LF5 5855 00005804 54000000 nop; not filled. 5856 00005808 8d210004 lw r1,4(r9) 5857 0000580c 8d2d0000 lw r13,(r9) 5858 00005810 ac2d0000 sw (r1),r13 5859 00005814 8d210000 lw r1,(r9) 5860 00005818 8d2d0004 lw r13,4(r9) 5861 0000581c ac2d0004 sw 4(r1),r13 5862 00005820 8d220008 lw r2,8(r9) 5863 00005824 8c410008 lw r1,8(r2) 5864 00005828 2021ffff addi r1,r1,#-1 5865 0000582c ac410008 sw 8(r2),r1 5866 00005830 L197_LF5: 5867 00005830 200d0000 addi r13,r0,#0 5868 00005834 ad2d0000 sw (r9),r13 5869 00005838 8d26000c lw r6,12(r9) 5870 0000583c 8cc1000c lw r1,12(r6) 5871 00005840 200dffc0 addi r13,r0,#-64 5872 00005844 002d0824 and r1,r1,r13 5873 00005848 34210002 ori r1,r1,#2 5874 0000584c acc1000c sw 12(r6),r1 5875 00005850 23bdfff8 addi r29,r29,#-8 5876 00005854 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5877 00005858 24420d78 addui r2,r2,(_debugstr)&0xffff 5878 0000585c afa20000 sw (r29),r2 5879 00005860 200d0049 addi r13,r0,#73 5880 00005864 afad0004 sw 4(r29),r13 5881 00005868 0fffe5c8 jal _dindex 5882 0000586c 54000000 nop; not filled. 5883 00005870 23bd0008 addi r29,r29,#8 5884 00005874 64210000 snei r1,r1,#0 5885 00005878 1420002c bnez r1,L200_LF5 5886 0000587c 54000000 nop; not filled. 5887 00005880 23bdfff8 addi r29,r29,#-8 5888 00005884 afa20000 sw (r29),r2 5889 00005888 200d002b addi r13,r0,#43 5890 0000588c afad0004 sw 4(r29),r13 5891 00005890 0fffe5a0 jal _dindex 5892 00005894 54000000 nop; not filled. 5893 00005898 23bd0008 addi r29,r29,#8 5894 0000589c 64210000 snei r1,r1,#0 5895 000058a0 1020002c beqz r1,L199_LF5 5896 000058a4 54000000 nop; not filled. 5897 000058a8 L200_LF5: 5898 000058a8 0fffba18 jal _CurrentIntrs 5899 000058ac 54000000 nop; not filled. 5900 000058b0 23bdfff8 addi r29,r29,#-8 5901 000058b4 3c0d0001 lhi r13,((LC21_LF5)>>16)&0xffff 5902 000058b8 25ad06e4 addui r13,r13,(LC21_LF5)&0xffff 5903 000058bc afad0000 sw (r29),r13 5904 000058c0 afa10004 sw 4(r29),r1 5905 000058c4 0c005808 jal _printf 5906 000058c8 54000000 nop; not filled. 5907 000058cc 23bd0008 addi r29,r29,#8 5908 000058d0 L199_LF5: 5909 000058d0 23bdfff8 addi r29,r29,#-8 5910 000058d4 afa30000 sw (r29),r3 5911 000058d8 0fffb9ac jal _SetIntrs 5912 000058dc 54000000 nop; not filled. 5913 000058e0 23bd0008 addi r29,r29,#8 5914 000058e4 23bdfff8 addi r29,r29,#-8 5915 000058e8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5916 000058ec 24420d78 addui r2,r2,(_debugstr)&0xffff 5917 000058f0 afa20000 sw (r29),r2 5918 000058f4 200d0049 addi r13,r0,#73 5919 000058f8 afad0004 sw 4(r29),r13 5920 000058fc 0fffe534 jal _dindex 5921 00005900 54000000 nop; not filled. 5922 00005904 23bd0008 addi r29,r29,#8 5923 00005908 64210000 snei r1,r1,#0 5924 0000590c 1420002c bnez r1,L203_LF5 5925 00005910 54000000 nop; not filled. 5926 00005914 23bdfff8 addi r29,r29,#-8 5927 00005918 afa20000 sw (r29),r2 5928 0000591c 200d002b addi r13,r0,#43 5929 00005920 afad0004 sw 4(r29),r13 5930 00005924 0fffe50c jal _dindex 5931 00005928 54000000 nop; not filled. 5932 0000592c 23bd0008 addi r29,r29,#8 5933 00005930 64210000 snei r1,r1,#0 5934 00005934 1020002c beqz r1,L202_LF5 5935 00005938 54000000 nop; not filled. 5936 0000593c L203_LF5: 5937 0000593c 0fffb984 jal _CurrentIntrs 5938 00005940 54000000 nop; not filled. 5939 00005944 23bdfff8 addi r29,r29,#-8 5940 00005948 3c0d0001 lhi r13,((LC22_LF5)>>16)&0xffff 5941 0000594c 25ad0710 addui r13,r13,(LC22_LF5)&0xffff 5942 00005950 afad0000 sw (r29),r13 5943 00005954 afa10004 sw 4(r29),r1 5944 00005958 0c005774 jal _printf 5945 0000595c 54000000 nop; not filled. 5946 00005960 23bd0008 addi r29,r29,#8 5947 00005964 L202_LF5: 5948 00005964 23bdfff8 addi r29,r29,#-8 5949 00005968 20c10010 addi r1,r6,#16 5950 0000596c afa10000 sw (r29),r1 5951 00005970 afac0004 sw 4(r29),r12 5952 00005974 0fffdffc jal _dstrcpy 5953 00005978 54000000 nop; not filled. 5954 0000597c 200d0001 addi r13,r0,#1 5955 00005980 accd0064 sw 100(r6),r13 5956 00005984 0fffd5c0 jal _MemoryAllocPage 5957 00005988 54000000 nop; not filled. 5958 0000598c 00011020 add r2,r0,r1 5959 00005990 23bd0008 addi r29,r29,#8 5960 00005994 64410000 snei r1,r2,#0 5961 00005998 14200028 bnez r1,L204_LF5 5962 0000599c 54000000 nop; not filled. 5963 000059a0 23bdfff8 addi r29,r29,#-8 5964 000059a4 3c0d0001 lhi r13,((LC23_LF5)>>16)&0xffff 5965 000059a8 25ad0730 addui r13,r13,(LC23_LF5)&0xffff 5966 000059ac afad0000 sw (r29),r13 5967 000059b0 0c00571c jal _printf 5968 000059b4 54000000 nop; not filled. 5969 000059b8 0c0056fc jal _exitsim 5970 000059bc 54000000 nop; not filled. 5971 000059c0 23bd0008 addi r29,r29,#8 5972 000059c4 L204_LF5: 5973 000059c4 23bdfff8 addi r29,r29,#-8 5974 000059c8 afa20000 sw (r29),r2 5975 000059cc 0fffdcdc jal _MemorySetupPte 5976 000059d0 54000000 nop; not filled. 5977 000059d4 acc10060 sw 96(r6),r1 5978 000059d8 0fffd56c jal _MemoryAllocPage 5979 000059dc 54000000 nop; not filled. 5980 000059e0 00011020 add r2,r0,r1 5981 000059e4 23bd0008 addi r29,r29,#8 5982 000059e8 64410000 snei r1,r2,#0 5983 000059ec 14200028 bnez r1,L205_LF5 5984 000059f0 54000000 nop; not filled. 5985 000059f4 23bdfff8 addi r29,r29,#-8 5986 000059f8 3c0d0001 lhi r13,((LC24_LF5)>>16)&0xffff 5987 000059fc 25ad0764 addui r13,r13,(LC24_LF5)&0xffff 5988 00005a00 afad0000 sw (r29),r13 5989 00005a04 0c0056c8 jal _printf 5990 00005a08 54000000 nop; not filled. 5991 00005a0c 0c0056a8 jal _exitsim 5992 00005a10 54000000 nop; not filled. 5993 00005a14 23bd0008 addi r29,r29,#8 5994 00005a18 L205_LF5: 5995 00005a18 50410010 slli r1,r2,#0x10 5996 00005a1c acc10008 sw 8(r6),r1 5997 00005a20 3428fe8c ori r8,r1,#65164 5998 00005a24 acc80004 sw 4(r6),r8 5999 00005a28 acc80000 sw (r6),r8 6000 00005a2c 23bdfff8 addi r29,r29,#-8 6001 00005a30 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6002 00005a34 24420d78 addui r2,r2,(_debugstr)&0xffff 6003 00005a38 afa20000 sw (r29),r2 6004 00005a3c 200d0070 addi r13,r0,#112 6005 00005a40 afad0004 sw 4(r29),r13 6006 00005a44 0fffe3ec jal _dindex 6007 00005a48 54000000 nop; not filled. 6008 00005a4c 23bd0008 addi r29,r29,#8 6009 00005a50 64210000 snei r1,r1,#0 6010 00005a54 1420002c bnez r1,L207_LF5 6011 00005a58 54000000 nop; not filled. 6012 00005a5c 23bdfff8 addi r29,r29,#-8 6013 00005a60 afa20000 sw (r29),r2 6014 00005a64 200d002b addi r13,r0,#43 6015 00005a68 afad0004 sw 4(r29),r13 6016 00005a6c 0fffe3c4 jal _dindex 6017 00005a70 54000000 nop; not filled. 6018 00005a74 23bd0008 addi r29,r29,#8 6019 00005a78 64210000 snei r1,r1,#0 6020 00005a7c 10200040 beqz r1,L206_LF5 6021 00005a80 54000000 nop; not filled. 6022 00005a84 L207_LF5: 6023 00005a84 23bdffe8 addi r29,r29,#-24 6024 00005a88 3c0d0001 lhi r13,((LC25_LF5)>>16)&0xffff 6025 00005a8c 25ad07a0 addui r13,r13,(LC25_LF5)&0xffff 6026 00005a90 afad0000 sw (r29),r13 6027 00005a94 afa60004 sw 4(r29),r6 6028 00005a98 8ccd0008 lw r13,8(r6) 6029 00005a9c afad0008 sw 8(r29),r13 6030 00005aa0 8ccd0060 lw r13,96(r6) 6031 00005aa4 afad000c sw 12(r29),r13 6032 00005aa8 8cc10064 lw r1,100(r6) 6033 00005aac 50210010 slli r1,r1,#0x10 6034 00005ab0 afa10010 sw 16(r29),r1 6035 00005ab4 0c005618 jal _printf 6036 00005ab8 54000000 nop; not filled. 6037 00005abc 23bd0018 addi r29,r29,#24 6038 00005ac0 L206_LF5: 6039 00005ac0 200d0000 addi r13,r0,#0 6040 00005ac4 ad0d0028 sw 40(r8),r13 6041 00005ac8 20c10060 addi r1,r6,#96 6042 00005acc ad010138 sw 312(r8),r1 6043 00005ad0 8ccd0064 lw r13,100(r6) 6044 00005ad4 ad0d013c sw 316(r8),r13 6045 00005ad8 3c010010 lhi r1,#16 6046 00005adc 24210010 addui r1,r1,#16 6047 00005ae0 ad010140 sw 320(r8),r1 6048 00005ae4 64810000 snei r1,r4,#0 6049 00005ae8 10200640 beqz r1,L208_LF5 6050 00005aec 54000000 nop; not filled. 6051 00005af0 23bdfff8 addi r29,r29,#-8 6052 00005af4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6053 00005af8 24420d78 addui r2,r2,(_debugstr)&0xffff 6054 00005afc afa20000 sw (r29),r2 6055 00005b00 200d0070 addi r13,r0,#112 6056 00005b04 afad0004 sw 4(r29),r13 6057 00005b08 0fffe328 jal _dindex 6058 00005b0c 54000000 nop; not filled. 6059 00005b10 23bd0008 addi r29,r29,#8 6060 00005b14 64210000 snei r1,r1,#0 6061 00005b18 1420002c bnez r1,L210_LF5 6062 00005b1c 54000000 nop; not filled. 6063 00005b20 23bdfff8 addi r29,r29,#-8 6064 00005b24 afa20000 sw (r29),r2 6065 00005b28 200d002b addi r13,r0,#43 6066 00005b2c afad0004 sw 4(r29),r13 6067 00005b30 0fffe300 jal _dindex 6068 00005b34 54000000 nop; not filled. 6069 00005b38 23bd0008 addi r29,r29,#8 6070 00005b3c 64210000 snei r1,r1,#0 6071 00005b40 10200024 beqz r1,L209_LF5 6072 00005b44 54000000 nop; not filled. 6073 00005b48 L210_LF5: 6074 00005b48 23bdfff8 addi r29,r29,#-8 6075 00005b4c 3c0d0001 lhi r13,((LC26_LF5)>>16)&0xffff 6076 00005b50 25ad07e0 addui r13,r13,(LC26_LF5)&0xffff 6077 00005b54 afad0000 sw (r29),r13 6078 00005b58 afac0004 sw 4(r29),r12 6079 00005b5c 0c005570 jal _printf 6080 00005b60 54000000 nop; not filled. 6081 00005b64 23bd0008 addi r29,r29,#8 6082 00005b68 L209_LF5: 6083 00005b68 23bdffe8 addi r29,r29,#-24 6084 00005b6c afac0000 sw (r29),r12 6085 00005b70 23c1fd6c addi r1,r30,#-660 6086 00005b74 afa10004 sw 4(r29),r1 6087 00005b78 23c1fd68 addi r1,r30,#-664 6088 00005b7c afa10008 sw 8(r29),r1 6089 00005b80 23c1fd64 addi r1,r30,#-668 6090 00005b84 afa1000c sw 12(r29),r1 6091 00005b88 23c1fd60 addi r1,r30,#-672 6092 00005b8c afa10010 sw 16(r29),r1 6093 00005b90 23c1fd5c addi r1,r30,#-676 6094 00005b94 afa10014 sw 20(r29),r1 6095 00005b98 0c0007b0 jal _ProcessGetCodeInfo 6096 00005b9c 54000000 nop; not filled. 6097 00005ba0 00012820 add r5,r0,r1 6098 00005ba4 23bd0018 addi r29,r29,#24 6099 00005ba8 68a10000 slti r1,r5,#0 6100 00005bac 102000bc beqz r1,L211_LF5 6101 00005bb0 54000000 nop; not filled. 6102 00005bb4 3c030001 lhi r3,((_freepcbs_LF5)>>16)&0xffff 6103 00005bb8 24630e44 addui r3,r3,(_freepcbs_LF5)&0xffff 6104 00005bbc 20c20068 addi r2,r6,#104 6105 00005bc0 8c610004 lw r1,4(r3) 6106 00005bc4 acc30070 sw 112(r6),r3 6107 00005bc8 acc1006c sw 108(r6),r1 6108 00005bcc 8c2d0000 lw r13,(r1) 6109 00005bd0 ac4d0000 sw (r2),r13 6110 00005bd4 ac220000 sw (r1),r2 6111 00005bd8 8c410000 lw r1,(r2) 6112 00005bdc ac220004 sw 4(r1),r2 6113 00005be0 8c610008 lw r1,8(r3) 6114 00005be4 20210001 addi r1,r1,#1 6115 00005be8 ac610008 sw 8(r3),r1 6116 00005bec 20020000 addi r2,r0,#0 6117 00005bf0 8cc10064 lw r1,100(r6) 6118 00005bf4 0041082a slt r1,r2,r1 6119 00005bf8 10200038 beqz r1,L217_LF5 6120 00005bfc 54000000 nop; not filled. 6121 00005c00 00061820 add r3,r0,r6 6122 00005c04 L219_LF5: 6123 00005c04 23bdfff8 addi r29,r29,#-8 6124 00005c08 8c6d0060 lw r13,96(r3) 6125 00005c0c afad0000 sw (r29),r13 6126 00005c10 0fffdac8 jal _MemoryFreePte 6127 00005c14 54000000 nop; not filled. 6128 00005c18 23bd0008 addi r29,r29,#8 6129 00005c1c 20630004 addi r3,r3,#4 6130 00005c20 20420001 addi r2,r2,#1 6131 00005c24 8cc10064 lw r1,100(r6) 6132 00005c28 0041082a slt r1,r2,r1 6133 00005c2c 1420ffd4 bnez r1,L219_LF5 6134 00005c30 54000000 nop; not filled. 6135 00005c34 L217_LF5: 6136 00005c34 23bdfff8 addi r29,r29,#-8 6137 00005c38 94c10008 lhu r1,8(r6) 6138 00005c3c afa10000 sw (r29),r1 6139 00005c40 0fffd5cc jal _MemoryFreePage 6140 00005c44 54000000 nop; not filled. 6141 00005c48 23bd0008 addi r29,r29,#8 6142 00005c4c 8cc1000c lw r1,12(r6) 6143 00005c50 200dffc0 addi r13,r0,#-64 6144 00005c54 002d0824 and r1,r1,r13 6145 00005c58 34210001 ori r1,r1,#1 6146 00005c5c acc1000c sw 12(r6),r1 6147 00005c60 2001ffff addi r1,r0,#-1 6148 00005c64 080006a0 j L268_LF5 6149 00005c68 54000000 nop; not filled. 6150 00005c6c L211_LF5: 6151 00005c6c 23bdfff8 addi r29,r29,#-8 6152 00005c70 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6153 00005c74 24420d78 addui r2,r2,(_debugstr)&0xffff 6154 00005c78 afa20000 sw (r29),r2 6155 00005c7c 200d0070 addi r13,r0,#112 6156 00005c80 afad0004 sw 4(r29),r13 6157 00005c84 0fffe1ac jal _dindex 6158 00005c88 54000000 nop; not filled. 6159 00005c8c 23bd0008 addi r29,r29,#8 6160 00005c90 64210000 snei r1,r1,#0 6161 00005c94 1420002c bnez r1,L223_LF5 6162 00005c98 54000000 nop; not filled. 6163 00005c9c 23bdfff8 addi r29,r29,#-8 6164 00005ca0 afa20000 sw (r29),r2 6165 00005ca4 200d002b addi r13,r0,#43 6166 00005ca8 afad0004 sw 4(r29),r13 6167 00005cac 0fffe184 jal _dindex 6168 00005cb0 54000000 nop; not filled. 6169 00005cb4 23bd0008 addi r29,r29,#8 6170 00005cb8 64210000 snei r1,r1,#0 6171 00005cbc 1020002c beqz r1,L222_LF5 6172 00005cc0 54000000 nop; not filled. 6173 00005cc4 L223_LF5: 6174 00005cc4 23bdfff0 addi r29,r29,#-16 6175 00005cc8 3c0d0001 lhi r13,((LC27_LF5)>>16)&0xffff 6176 00005ccc 25ad07f4 addui r13,r13,(LC27_LF5)&0xffff 6177 00005cd0 afad0000 sw (r29),r13 6178 00005cd4 afac0004 sw 4(r29),r12 6179 00005cd8 8fcdfd6c lw r13,-660(r30) 6180 00005cdc afad0008 sw 8(r29),r13 6181 00005ce0 0c0053ec jal _printf 6182 00005ce4 54000000 nop; not filled. 6183 00005ce8 23bd0010 addi r29,r29,#16 6184 00005cec L222_LF5: 6185 00005cec 23bdfff8 addi r29,r29,#-8 6186 00005cf0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6187 00005cf4 24420d78 addui r2,r2,(_debugstr)&0xffff 6188 00005cf8 afa20000 sw (r29),r2 6189 00005cfc 200d0070 addi r13,r0,#112 6190 00005d00 afad0004 sw 4(r29),r13 6191 00005d04 0fffe12c jal _dindex 6192 00005d08 54000000 nop; not filled. 6193 00005d0c 23bd0008 addi r29,r29,#8 6194 00005d10 64210000 snei r1,r1,#0 6195 00005d14 1420002c bnez r1,L225_LF5 6196 00005d18 54000000 nop; not filled. 6197 00005d1c 23bdfff8 addi r29,r29,#-8 6198 00005d20 afa20000 sw (r29),r2 6199 00005d24 200d002b addi r13,r0,#43 6200 00005d28 afad0004 sw 4(r29),r13 6201 00005d2c 0fffe104 jal _dindex 6202 00005d30 54000000 nop; not filled. 6203 00005d34 23bd0008 addi r29,r29,#8 6204 00005d38 64210000 snei r1,r1,#0 6205 00005d3c 10200034 beqz r1,L224_LF5 6206 00005d40 54000000 nop; not filled. 6207 00005d44 L225_LF5: 6208 00005d44 23bdfff0 addi r29,r29,#-16 6209 00005d48 3c0d0001 lhi r13,((LC28_LF5)>>16)&0xffff 6210 00005d4c 25ad0810 addui r13,r13,(LC28_LF5)&0xffff 6211 00005d50 afad0000 sw (r29),r13 6212 00005d54 afac0004 sw 4(r29),r12 6213 00005d58 8fcdfd68 lw r13,-664(r30) 6214 00005d5c afad0008 sw 8(r29),r13 6215 00005d60 8fcdfd64 lw r13,-668(r30) 6216 00005d64 afad000c sw 12(r29),r13 6217 00005d68 0c005364 jal _printf 6218 00005d6c 54000000 nop; not filled. 6219 00005d70 23bd0010 addi r29,r29,#16 6220 00005d74 L224_LF5: 6221 00005d74 23bdfff8 addi r29,r29,#-8 6222 00005d78 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6223 00005d7c 24420d78 addui r2,r2,(_debugstr)&0xffff 6224 00005d80 afa20000 sw (r29),r2 6225 00005d84 200d0070 addi r13,r0,#112 6226 00005d88 afad0004 sw 4(r29),r13 6227 00005d8c 0fffe0a4 jal _dindex 6228 00005d90 54000000 nop; not filled. 6229 00005d94 23bd0008 addi r29,r29,#8 6230 00005d98 64210000 snei r1,r1,#0 6231 00005d9c 1420002c bnez r1,L227_LF5 6232 00005da0 54000000 nop; not filled. 6233 00005da4 23bdfff8 addi r29,r29,#-8 6234 00005da8 afa20000 sw (r29),r2 6235 00005dac 200d002b addi r13,r0,#43 6236 00005db0 afad0004 sw 4(r29),r13 6237 00005db4 0fffe07c jal _dindex 6238 00005db8 54000000 nop; not filled. 6239 00005dbc 23bd0008 addi r29,r29,#8 6240 00005dc0 64210000 snei r1,r1,#0 6241 00005dc4 10200034 beqz r1,L226_LF5 6242 00005dc8 54000000 nop; not filled. 6243 00005dcc L227_LF5: 6244 00005dcc 23bdfff0 addi r29,r29,#-16 6245 00005dd0 3c0d0001 lhi r13,((LC29_LF5)>>16)&0xffff 6246 00005dd4 25ad0838 addui r13,r13,(LC29_LF5)&0xffff 6247 00005dd8 afad0000 sw (r29),r13 6248 00005ddc afac0004 sw 4(r29),r12 6249 00005de0 8fcdfd60 lw r13,-672(r30) 6250 00005de4 afad0008 sw 8(r29),r13 6251 00005de8 8fcdfd5c lw r13,-676(r30) 6252 00005dec afad000c sw 12(r29),r13 6253 00005df0 0c0052dc jal _printf 6254 00005df4 54000000 nop; not filled. 6255 00005df8 23bd0010 addi r29,r29,#16 6256 00005dfc L226_LF5: 6257 00005dfc 23c3ff90 addi r3,r30,#-112 6258 00005e00 23c7fd58 addi r7,r30,#-680 6259 00005e04 3c040001 lhi r4,((_debugstr)>>16)&0xffff 6260 00005e08 24840d78 addui r4,r4,(_debugstr)&0xffff 6261 00005e0c L228_LF5: 6262 00005e0c 23bdfff0 addi r29,r29,#-16 6263 00005e10 afa50000 sw (r29),r5 6264 00005e14 afa30004 sw 4(r29),r3 6265 00005e18 afa70008 sw 8(r29),r7 6266 00005e1c 200d0064 addi r13,r0,#100 6267 00005e20 afad000c sw 12(r29),r13 6268 00005e24 0c000984 jal _ProcessGetFromFile 6269 00005e28 54000000 nop; not filled. 6270 00005e2c 00011020 add r2,r0,r1 6271 00005e30 23bd0010 addi r29,r29,#16 6272 00005e34 6c410000 sgti r1,r2,#0 6273 00005e38 102000b0 beqz r1,L229_LF5 6274 00005e3c 54000000 nop; not filled. 6275 00005e40 23bdfff8 addi r29,r29,#-8 6276 00005e44 afa40000 sw (r29),r4 6277 00005e48 200d0070 addi r13,r0,#112 6278 00005e4c afad0004 sw 4(r29),r13 6279 00005e50 0fffdfe0 jal _dindex 6280 00005e54 54000000 nop; not filled. 6281 00005e58 23bd0008 addi r29,r29,#8 6282 00005e5c 64210000 snei r1,r1,#0 6283 00005e60 1420002c bnez r1,L232_LF5 6284 00005e64 54000000 nop; not filled. 6285 00005e68 23bdfff8 addi r29,r29,#-8 6286 00005e6c afa40000 sw (r29),r4 6287 00005e70 200d002b addi r13,r0,#43 6288 00005e74 afad0004 sw 4(r29),r13 6289 00005e78 0fffdfb8 jal _dindex 6290 00005e7c 54000000 nop; not filled. 6291 00005e80 23bd0008 addi r29,r29,#8 6292 00005e84 64210000 snei r1,r1,#0 6293 00005e88 10200030 beqz r1,L231_LF5 6294 00005e8c 54000000 nop; not filled. 6295 00005e90 L232_LF5: 6296 00005e90 23bdfff0 addi r29,r29,#-16 6297 00005e94 3c0d0001 lhi r13,((LC30_LF5)>>16)&0xffff 6298 00005e98 25ad0860 addui r13,r13,(LC30_LF5)&0xffff 6299 00005e9c afad0000 sw (r29),r13 6300 00005ea0 afa20004 sw 4(r29),r2 6301 00005ea4 8fc1fd58 lw r1,-680(r30) 6302 00005ea8 00220822 sub r1,r1,r2 6303 00005eac afa10008 sw 8(r29),r1 6304 00005eb0 0c00521c jal _printf 6305 00005eb4 54000000 nop; not filled. 6306 00005eb8 23bd0010 addi r29,r29,#16 6307 00005ebc L231_LF5: 6308 00005ebc 23bdfff0 addi r29,r29,#-16 6309 00005ec0 afa60000 sw (r29),r6 6310 00005ec4 afa30004 sw 4(r29),r3 6311 00005ec8 8fc1fd58 lw r1,-680(r30) 6312 00005ecc 00220822 sub r1,r1,r2 6313 00005ed0 afa10008 sw 8(r29),r1 6314 00005ed4 afa2000c sw 12(r29),r2 6315 00005ed8 0fffd580 jal _MemoryCopySystemToUser 6316 00005edc 54000000 nop; not filled. 6317 00005ee0 23bd0010 addi r29,r29,#16 6318 00005ee4 0bffff24 j L228_LF5 6319 00005ee8 54000000 nop; not filled. 6320 00005eec L229_LF5: 6321 00005eec 23bdfff8 addi r29,r29,#-8 6322 00005ef0 afa50000 sw (r29),r5 6323 00005ef4 0fffbbfc jal _FsClose 6324 00005ef8 54000000 nop; not filled. 6325 00005efc 200d0100 addi r13,r0,#256 6326 00005f00 ad0d012c sw 300(r8),r13 6327 00005f04 240dfc00 addui r13,r0,#64512 6328 00005f08 ad0d009c sw 156(r8),r13 6329 00005f0c 23bdfff8 addi r29,r29,#-8 6330 00005f10 afa60000 sw (r29),r6 6331 00005f14 afaa0004 sw 4(r29),r10 6332 00005f18 8d0d009c lw r13,156(r8) 6333 00005f1c afad0008 sw 8(r29),r13 6334 00005f20 200d03e0 addi r13,r0,#992 6335 00005f24 afad000c sw 12(r29),r13 6336 00005f28 0fffd530 jal _MemoryCopySystemToUser 6337 00005f2c 54000000 nop; not filled. 6338 00005f30 23bd0010 addi r29,r29,#16 6339 00005f34 65410000 snei r1,r10,#0 6340 00005f38 10200020 beqz r1,L234_LF5 6341 00005f3c 54000000 nop; not filled. 6342 00005f40 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 6343 00005f44 24210658 addui r1,r1,(_str52_LF5)&0xffff 6344 00005f48 ac2a0000 sw (r1),r10 6345 00005f4c 3c010001 lhi r1,((_location53_LF5)>>16)&0xffff 6346 00005f50 2421065c addui r1,r1,(_location53_LF5)&0xffff 6347 00005f54 200d0000 addi r13,r0,#0 6348 00005f58 ac2d0000 sw (r1),r13 6349 00005f5c L234_LF5: 6350 00005f5c 3c030001 lhi r3,((_location53_LF5)>>16)&0xffff 6351 00005f60 2463065c addui r3,r3,(_location53_LF5)&0xffff 6352 00005f64 8c640000 lw r4,(r3) 6353 00005f68 3c010001 lhi r1,((_str52_LF5)>>16)&0xffff 6354 00005f6c 24210658 addui r1,r1,(_str52_LF5)&0xffff 6355 00005f70 8c220000 lw r2,(r1) 6356 00005f74 00440820 add r1,r2,r4 6357 00005f78 90210000 lbu r1,(r1) 6358 00005f7c 64210000 snei r1,r1,#0 6359 00005f80 10200010 beqz r1,L236_LF5 6360 00005f84 54000000 nop; not filled. 6361 00005f88 6c810062 sgti r1,r4,#98 6362 00005f8c 10200020 beqz r1,L235_LF5 6363 00005f90 54000000 nop; not filled. 6364 00005f94 L236_LF5: 6365 00005f94 20030000 addi r3,r0,#0 6366 00005f98 08000054 j L233_LF5 6367 00005f9c 54000000 nop; not filled. 6368 00005fa0 L269_LF5: 6369 00005fa0 20410001 addi r1,r2,#1 6370 00005fa4 ac610000 sw (r3),r1 6371 00005fa8 08000040 j L238_LF5 6372 00005fac 54000000 nop; not filled. 6373 00005fb0 L235_LF5: 6374 00005fb0 70810063 slei r1,r4,#99 6375 00005fb4 10200034 beqz r1,L238_LF5 6376 00005fb8 54000000 nop; not filled. 6377 00005fbc 00022820 add r5,r0,r2 6378 00005fc0 L240_LF5: 6379 00005fc0 8c620000 lw r2,(r3) 6380 00005fc4 00a20820 add r1,r5,r2 6381 00005fc8 90210000 lbu r1,(r1) 6382 00005fcc 64210000 snei r1,r1,#0 6383 00005fd0 1020ffcc beqz r1,L269_LF5 6384 00005fd4 54000000 nop; not filled. 6385 00005fd8 20410001 addi r1,r2,#1 6386 00005fdc ac610000 sw (r3),r1 6387 00005fe0 70210063 slei r1,r1,#99 6388 00005fe4 1420ffd8 bnez r1,L240_LF5 6389 00005fe8 54000000 nop; not filled. 6390 00005fec L238_LF5: 6391 00005fec 00041820 add r3,r0,r4 6392 00005ff0 L233_LF5: 6393 00005ff0 2402fc00 addui r2,r0,#64512 6394 00005ff4 00620820 add r1,r3,r2 6395 00005ff8 afc1fd78 sw -648(r30),r1 6396 00005ffc 20070003 addi r7,r0,#3 6397 00006000 3c040001 lhi r4,((_location53_LF5)>>16)&0xffff 6398 00006004 2484065c addui r4,r4,(_location53_LF5)&0xffff 6399 00006008 3c0b0001 lhi r11,((_str52_LF5)>>16)&0xffff 6400 0000600c 256b0658 addui r11,r11,(_str52_LF5)&0xffff 6401 00006010 00025020 add r10,r0,r2 6402 00006014 23c50004 addi r5,r30,#4 6403 00006018 L243_LF5: 6404 00006018 8c9f0000 lw r31,(r4) 6405 0000601c 8d630000 lw r3,(r11) 6406 00006020 007f0820 add r1,r3,r31 6407 00006024 90210000 lbu r1,(r1) 6408 00006028 64210000 snei r1,r1,#0 6409 0000602c 10200010 beqz r1,L249_LF5 6410 00006030 54000000 nop; not filled. 6411 00006034 6fe10062 sgti r1,r31,#98 6412 00006038 10200020 beqz r1,L248_LF5 6413 0000603c 54000000 nop; not filled. 6414 00006040 L249_LF5: 6415 00006040 20030000 addi r3,r0,#0 6416 00006044 08000054 j L246_LF5 6417 00006048 54000000 nop; not filled. 6418 0000604c L270_LF5: 6419 0000604c 20610001 addi r1,r3,#1 6420 00006050 ac810000 sw (r4),r1 6421 00006054 08000040 j L251_LF5 6422 00006058 54000000 nop; not filled. 6423 0000605c L248_LF5: 6424 0000605c 73e10063 slei r1,r31,#99 6425 00006060 10200034 beqz r1,L251_LF5 6426 00006064 54000000 nop; not filled. 6427 00006068 00031020 add r2,r0,r3 6428 0000606c L253_LF5: 6429 0000606c 8c830000 lw r3,(r4) 6430 00006070 00430820 add r1,r2,r3 6431 00006074 90210000 lbu r1,(r1) 6432 00006078 64210000 snei r1,r1,#0 6433 0000607c 1020ffcc beqz r1,L270_LF5 6434 00006080 54000000 nop; not filled. 6435 00006084 20610001 addi r1,r3,#1 6436 00006088 ac810000 sw (r4),r1 6437 0000608c 70210063 slei r1,r1,#99 6438 00006090 1420ffd8 bnez r1,L253_LF5 6439 00006094 54000000 nop; not filled. 6440 00006098 L251_LF5: 6441 00006098 001f1820 add r3,r0,r31 6442 0000609c L246_LF5: 6443 0000609c 006a0820 add r1,r3,r10 6444 000060a0 aca1fd78 sw -648(r5),r1 6445 000060a4 64610000 snei r1,r3,#0 6446 000060a8 10200014 beqz r1,L244_LF5 6447 000060ac 54000000 nop; not filled. 6448 000060b0 20a50004 addi r5,r5,#4 6449 000060b4 20e70001 addi r7,r7,#1 6450 000060b8 0bffff5c j L243_LF5 6451 000060bc 54000000 nop; not filled. 6452 000060c0 L244_LF5: 6453 000060c0 20e1fffe addi r1,r7,#-2 6454 000060c4 afc1fd70 sw -656(r30),r1 6455 000060c8 50210002 slli r1,r1,#0x2 6456 000060cc 01410822 sub r1,r10,r1 6457 000060d0 afc1fd74 sw -652(r30),r1 6458 000060d4 23bdfff0 addi r29,r29,#-16 6459 000060d8 afa60000 sw (r29),r6 6460 000060dc 23c1fd70 addi r1,r30,#-656 6461 000060e0 afa10004 sw 4(r29),r1 6462 000060e4 50e20002 slli r2,r7,#0x2 6463 000060e8 8d01009c lw r1,156(r8) 6464 000060ec 00220822 sub r1,r1,r2 6465 000060f0 afa10008 sw 8(r29),r1 6466 000060f4 afa2000c sw 12(r29),r2 6467 000060f8 0fffd360 jal _MemoryCopySystemToUser 6468 000060fc 54000000 nop; not filled. 6469 00006100 8d01009c lw r1,156(r8) 6470 00006104 00220822 sub r1,r1,r2 6471 00006108 ad01009c sw 156(r8),r1 6472 0000610c 8fcdfd6c lw r13,-660(r30) 6473 00006110 ad0d0128 sw 296(r8),r13 6474 00006114 8cc1000c lw r1,12(r6) 6475 00006118 34210200 ori r1,r1,#512 6476 0000611c acc1000c sw 12(r6),r1 6477 00006120 23bd0010 addi r29,r29,#16 6478 00006124 08000038 j L257_LF5 6479 00006128 54000000 nop; not filled. 6480 0000612c L208_LF5: 6481 0000612c 3c0d0000 lhi r13,((_ProcessExit_LF5)>>16)&0xffff 6482 00006130 25ad7ae8 addui r13,r13,(_ProcessExit_LF5)&0xffff 6483 00006134 ad0d00a4 sw 164(r8),r13 6484 00006138 8cc10008 lw r1,8(r6) 6485 0000613c 2421ffe0 addui r1,r1,#65504 6486 00006140 ad01009c sw 156(r8),r1 6487 00006144 ac2a0000 sw (r1),r10 6488 00006148 ad050128 sw 296(r8),r5 6489 0000614c 200d0140 addi r13,r0,#320 6490 00006150 ad0d012c sw 300(r8),r13 6491 00006154 8cc1000c lw r1,12(r6) 6492 00006158 34210100 ori r1,r1,#256 6493 0000615c acc1000c sw 12(r6),r1 6494 00006160 L257_LF5: 6495 00006160 23bdfff8 addi r29,r29,#-8 6496 00006164 200d000f addi r13,r0,#15 6497 00006168 afad0000 sw (r29),r13 6498 0000616c 0fffb118 jal _SetIntrs 6499 00006170 54000000 nop; not filled. 6500 00006174 23bd0008 addi r29,r29,#8 6501 00006178 3c030001 lhi r3,((_runQueue_LF5)>>16)&0xffff 6502 0000617c 24630e50 addui r3,r3,(_runQueue_LF5)&0xffff 6503 00006180 8c620004 lw r2,4(r3) 6504 00006184 ad230008 sw 8(r9),r3 6505 00006188 ad220004 sw 4(r9),r2 6506 0000618c 8c4d0000 lw r13,(r2) 6507 00006190 ad2d0000 sw (r9),r13 6508 00006194 ac490000 sw (r2),r9 6509 00006198 8d220000 lw r2,(r9) 6510 0000619c ac490004 sw 4(r2),r9 6511 000061a0 8c620008 lw r2,8(r3) 6512 000061a4 20420001 addi r2,r2,#1 6513 000061a8 ac620008 sw 8(r3),r2 6514 000061ac 23bdfff8 addi r29,r29,#-8 6515 000061b0 afa10000 sw (r29),r1 6516 000061b4 0fffb0d0 jal _SetIntrs 6517 000061b8 54000000 nop; not filled. 6518 000061bc 23bd0008 addi r29,r29,#8 6519 000061c0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 6520 000061c4 24210e40 addui r1,r1,(_currentPCB)&0xffff 6521 000061c8 8c210000 lw r1,(r1) 6522 000061cc 64210000 snei r1,r1,#0 6523 000061d0 14200090 bnez r1,L263_LF5 6524 000061d4 54000000 nop; not filled. 6525 000061d8 23bdfff8 addi r29,r29,#-8 6526 000061dc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6527 000061e0 24420d78 addui r2,r2,(_debugstr)&0xffff 6528 000061e4 afa20000 sw (r29),r2 6529 000061e8 200d0070 addi r13,r0,#112 6530 000061ec afad0004 sw 4(r29),r13 6531 000061f0 0fffdc40 jal _dindex 6532 000061f4 54000000 nop; not filled. 6533 000061f8 23bd0008 addi r29,r29,#8 6534 000061fc 64210000 snei r1,r1,#0 6535 00006200 1420002c bnez r1,L265_LF5 6536 00006204 54000000 nop; not filled. 6537 00006208 23bdfff8 addi r29,r29,#-8 6538 0000620c afa20000 sw (r29),r2 6539 00006210 200d002b addi r13,r0,#43 6540 00006214 afad0004 sw 4(r29),r13 6541 00006218 0fffdc18 jal _dindex 6542 0000621c 54000000 nop; not filled. 6543 00006220 23bd0008 addi r29,r29,#8 6544 00006224 64210000 snei r1,r1,#0 6545 00006228 1020002c beqz r1,L264_LF5 6546 0000622c 54000000 nop; not filled. 6547 00006230 L265_LF5: 6548 00006230 23bdfff0 addi r29,r29,#-16 6549 00006234 3c0d0001 lhi r13,((LC31_LF5)>>16)&0xffff 6550 00006238 25ad0884 addui r13,r13,(LC31_LF5)&0xffff 6551 0000623c afad0000 sw (r29),r13 6552 00006240 afa60004 sw 4(r29),r6 6553 00006244 8ccd0000 lw r13,(r6) 6554 00006248 afad0008 sw 8(r29),r13 6555 0000624c 0c004e80 jal _printf 6556 00006250 54000000 nop; not filled. 6557 00006254 23bd0010 addi r29,r29,#16 6558 00006258 L264_LF5: 6559 00006258 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 6560 0000625c 24210e40 addui r1,r1,(_currentPCB)&0xffff 6561 00006260 ac260000 sw (r1),r6 6562 00006264 L263_LF5: 6563 00006264 23bdfff8 addi r29,r29,#-8 6564 00006268 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6565 0000626c 24420d78 addui r2,r2,(_debugstr)&0xffff 6566 00006270 afa20000 sw (r29),r2 6567 00006274 200d0070 addi r13,r0,#112 6568 00006278 afad0004 sw 4(r29),r13 6569 0000627c 0fffdbb4 jal _dindex 6570 00006280 54000000 nop; not filled. 6571 00006284 23bd0008 addi r29,r29,#8 6572 00006288 64210000 snei r1,r1,#0 6573 0000628c 1420002c bnez r1,L267_LF5 6574 00006290 54000000 nop; not filled. 6575 00006294 23bdfff8 addi r29,r29,#-8 6576 00006298 afa20000 sw (r29),r2 6577 0000629c 200d002b addi r13,r0,#43 6578 000062a0 afad0004 sw 4(r29),r13 6579 000062a4 0fffdb8c jal _dindex 6580 000062a8 54000000 nop; not filled. 6581 000062ac 23bd0008 addi r29,r29,#8 6582 000062b0 64210000 snei r1,r1,#0 6583 000062b4 10200024 beqz r1,L266_LF5 6584 000062b8 54000000 nop; not filled. 6585 000062bc L267_LF5: 6586 000062bc 23bdfff8 addi r29,r29,#-8 6587 000062c0 3c0d0001 lhi r13,((LC32_LF5)>>16)&0xffff 6588 000062c4 25ad08b0 addui r13,r13,(LC32_LF5)&0xffff 6589 000062c8 afad0000 sw (r29),r13 6590 000062cc afac0004 sw 4(r29),r12 6591 000062d0 0c004dfc jal _printf 6592 000062d4 54000000 nop; not filled. 6593 000062d8 23bd0008 addi r29,r29,#8 6594 000062dc L266_LF5: 6595 000062dc 3c0d0001 lhi r13,((_pcbs_LF5)>>16)&0xffff 6596 000062e0 25ad0e74 addui r13,r13,(_pcbs_LF5)&0xffff 6597 000062e4 00cd1022 sub r2,r6,r13 6598 000062e8 50410004 slli r1,r2,#0x4 6599 000062ec 00221020 add r2,r1,r2 6600 000062f0 50410008 slli r1,r2,#0x8 6601 000062f4 00411020 add r2,r2,r1 6602 000062f8 50410010 slli r1,r2,#0x10 6603 000062fc 00410820 add r1,r2,r1 6604 00006300 00010822 sub r1,r0,r1 6605 00006304 5c210003 srai r1,r1,#0x3 6606 00006308 L268_LF5: 6607 00006308 8fa20000 lw r2,0(r29) 6608 0000630c 8fa30004 lw r3,4(r29) 6609 00006310 8fa40008 lw r4,8(r29) 6610 00006314 8fa5000c lw r5,12(r29) 6611 00006318 8fa60010 lw r6,16(r29) 6612 0000631c 8fa70014 lw r7,20(r29) 6613 00006320 8fa80018 lw r8,24(r29) 6614 00006324 8fa9001c lw r9,28(r29) 6615 00006328 8faa0020 lw r10,32(r29) 6616 0000632c 8fab0024 lw r11,36(r29) 6617 00006330 8fac0028 lw r12,40(r29) 6618 00006334 8fad002c lw r13,44(r29) 6619 00006338 8fdffff8 lw r31,-8(r30) 6620 0000633c 001ee820 add r29,r0,r30 6621 00006340 8fdefffc lw r30,-4(r30) 6622 00006344 4be00000 jr r31 6623 00006348 54000000 nop 6624 0000634c .endproc _ProcessFork 6625 0000634c .data 6626 000108ca .align 2 6627 000108cc LC33_LF5: 6628 000108cc 50726f63 .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" 6628 000108d0 65737347 6628 000108d4 6574436f 6628 000108d8 6465496e 6628 000108dc 666f3a20 6628 000108e0 6f70656e 6628 000108e4 206f6620 6628 000108e8 25732066 6628 000108ec 61696c65 6628 000108f0 64202825 6628 000108f4 64292e0a 6628 000108f8 00 6629 000108f9 .align 2 6630 000108fc LC34_LF5: 6631 000108fc 46696c65 .ascii "File descriptor is now %d.\n\000" 6631 00010900 20646573 6631 00010904 63726970 6631 00010908 746f7220 6631 0001090c 6973206e 6631 00010910 6f772025 6631 00010914 642e0a00 6632 00010918 .align 2 6633 00010918 LC35_LF5: 6634 00010918 50726f63 .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" 6634 0001091c 65737347 6634 00010920 6574436f 6634 00010924 6465496e 6634 00010928 666f3a20 6634 0001092c 72656164 6634 00010930 20676f74 6634 00010934 20256420 6634 00010938 286e6f74 6634 0001093c 20256429 6634 00010940 20627974 6634 00010944 65732066 6634 00010948 726f6d20 6634 0001094c 25730a00 6635 00010950 .align 2 6636 00010950 LC36_LF5: 6637 00010950 73746172 .ascii "start:\000" 6637 00010954 743a00 6638 00010957 .align 2 6639 00010958 LC37_LF5: 6640 00010958 50726f63 .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" 6640 0001095c 65737347 6640 00010960 6574436f 6640 00010964 6465496e 6640 00010968 666f3a20 6640 0001096c 2573206d 6640 00010970 69737369 6640 00010974 6e672073 6640 00010978 74617274 6640 0001097c 206c696e 6640 00010980 6520286e 6640 00010984 6f742061 6640 00010988 20444c58 6640 0001098c 20657865 6640 00010990 63757461 6640 00010994 626c653f 6640 00010998 290a00 6641 0001099b .text 6642 0000634c .align 2 6643 0000634c .proc _ProcessGetCodeInfo 6644 0000634c .global _ProcessGetCodeInfo 6645 0000634c _ProcessGetCodeInfo: 6646 ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. 6647 0000634c afbefffc sw -4(r29),r30; push fp 6648 00006350 001df020 add r30,r0,r29; fp = sp 6649 00006354 afbffff8 sw -8(r29),r31; push ret addr 6650 00006358 2fbd00a8 subui r29,r29,#168; alloc local storage 6651 0000635c afa20000 sw 0(r29),r2 6652 00006360 afa30004 sw 4(r29),r3 6653 00006364 afa40008 sw 8(r29),r4 6654 00006368 afa5000c sw 12(r29),r5 6655 0000636c afa60010 sw 16(r29),r6 6656 00006370 afa70014 sw 20(r29),r7 6657 00006374 afa80018 sw 24(r29),r8 6658 00006378 afa9001c sw 28(r29),r9 6659 0000637c afaa0020 sw 32(r29),r10 6660 00006380 afab0024 sw 36(r29),r11 6661 00006384 afac0028 sw 40(r29),r12 6662 00006388 8fc60000 lw r6,(r30) 6663 0000638c 8fc70004 lw r7,4(r30) 6664 00006390 8fc80008 lw r8,8(r30) 6665 00006394 8fc9000c lw r9,12(r30) 6666 00006398 8fca0010 lw r10,16(r30) 6667 0000639c 8fcb0014 lw r11,20(r30) 6668 000063a0 23bdfff8 addi r29,r29,#-8 6669 000063a4 afa60000 sw (r29),r6 6670 000063a8 200c0001 addi r12,r0,#1 6671 000063ac afac0004 sw 4(r29),r12 6672 000063b0 0fffb3e4 jal _FsOpen 6673 000063b4 54000000 nop; not filled. 6674 000063b8 00011820 add r3,r0,r1 6675 000063bc 23bd0008 addi r29,r29,#8 6676 000063c0 68610000 slti r1,r3,#0 6677 000063c4 10200088 beqz r1,L279_LF5 6678 000063c8 54000000 nop; not filled. 6679 000063cc 23bdfff8 addi r29,r29,#-8 6680 000063d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6681 000063d4 24420d78 addui r2,r2,(_debugstr)&0xffff 6682 000063d8 afa20000 sw (r29),r2 6683 000063dc 200c0066 addi r12,r0,#102 6684 000063e0 afac0004 sw 4(r29),r12 6685 000063e4 0fffda4c jal _dindex 6686 000063e8 54000000 nop; not filled. 6687 000063ec 23bd0008 addi r29,r29,#8 6688 000063f0 64210000 snei r1,r1,#0 6689 000063f4 1420002c bnez r1,L281_LF5 6690 000063f8 54000000 nop; not filled. 6691 000063fc 23bdfff8 addi r29,r29,#-8 6692 00006400 afa20000 sw (r29),r2 6693 00006404 200c002b addi r12,r0,#43 6694 00006408 afac0004 sw 4(r29),r12 6695 0000640c 0fffda24 jal _dindex 6696 00006410 54000000 nop; not filled. 6697 00006414 23bd0008 addi r29,r29,#8 6698 00006418 64210000 snei r1,r1,#0 6699 0000641c 10200224 beqz r1,L288_LF5 6700 00006420 54000000 nop; not filled. 6701 00006424 L281_LF5: 6702 00006424 23bdfff0 addi r29,r29,#-16 6703 00006428 3c0c0001 lhi r12,((LC33_LF5)>>16)&0xffff 6704 0000642c 258c08cc addui r12,r12,(LC33_LF5)&0xffff 6705 00006430 afac0000 sw (r29),r12 6706 00006434 afa60004 sw 4(r29),r6 6707 00006438 afa30008 sw 8(r29),r3 6708 0000643c 0c004c90 jal _printf 6709 00006440 54000000 nop; not filled. 6710 00006444 23bd0010 addi r29,r29,#16 6711 00006448 080001f8 j L288_LF5 6712 0000644c 54000000 nop; not filled. 6713 00006450 L279_LF5: 6714 00006450 23bdfff8 addi r29,r29,#-8 6715 00006454 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6716 00006458 24420d78 addui r2,r2,(_debugstr)&0xffff 6717 0000645c afa20000 sw (r29),r2 6718 00006460 200c0066 addi r12,r0,#102 6719 00006464 afac0004 sw 4(r29),r12 6720 00006468 0fffd9c8 jal _dindex 6721 0000646c 54000000 nop; not filled. 6722 00006470 23bd0008 addi r29,r29,#8 6723 00006474 64210000 snei r1,r1,#0 6724 00006478 1420002c bnez r1,L283_LF5 6725 0000647c 54000000 nop; not filled. 6726 00006480 23bdfff8 addi r29,r29,#-8 6727 00006484 afa20000 sw (r29),r2 6728 00006488 200c002b addi r12,r0,#43 6729 0000648c afac0004 sw 4(r29),r12 6730 00006490 0fffd9a0 jal _dindex 6731 00006494 54000000 nop; not filled. 6732 00006498 23bd0008 addi r29,r29,#8 6733 0000649c 64210000 snei r1,r1,#0 6734 000064a0 10200024 beqz r1,L282_LF5 6735 000064a4 54000000 nop; not filled. 6736 000064a8 L283_LF5: 6737 000064a8 23bdfff8 addi r29,r29,#-8 6738 000064ac 3c0c0001 lhi r12,((LC34_LF5)>>16)&0xffff 6739 000064b0 258c08fc addui r12,r12,(LC34_LF5)&0xffff 6740 000064b4 afac0000 sw (r29),r12 6741 000064b8 afa30004 sw 4(r29),r3 6742 000064bc 0c004c10 jal _printf 6743 000064c0 54000000 nop; not filled. 6744 000064c4 23bd0008 addi r29,r29,#8 6745 000064c8 L282_LF5: 6746 000064c8 23bdfff0 addi r29,r29,#-16 6747 000064cc afa30000 sw (r29),r3 6748 000064d0 23c4ff90 addi r4,r30,#-112 6749 000064d4 afa40004 sw 4(r29),r4 6750 000064d8 200c0064 addi r12,r0,#100 6751 000064dc afac0008 sw 8(r29),r12 6752 000064e0 0fffb718 jal _FsRead 6753 000064e4 54000000 nop; not filled. 6754 000064e8 00012820 add r5,r0,r1 6755 000064ec 23bd0010 addi r29,r29,#16 6756 000064f0 64a10064 snei r1,r5,#100 6757 000064f4 102000a8 beqz r1,L284_LF5 6758 000064f8 54000000 nop; not filled. 6759 000064fc 23bdfff8 addi r29,r29,#-8 6760 00006500 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6761 00006504 24420d78 addui r2,r2,(_debugstr)&0xffff 6762 00006508 afa20000 sw (r29),r2 6763 0000650c 200c0066 addi r12,r0,#102 6764 00006510 afac0004 sw 4(r29),r12 6765 00006514 0fffd91c jal _dindex 6766 00006518 54000000 nop; not filled. 6767 0000651c 23bd0008 addi r29,r29,#8 6768 00006520 64210000 snei r1,r1,#0 6769 00006524 1420002c bnez r1,L286_LF5 6770 00006528 54000000 nop; not filled. 6771 0000652c 23bdfff8 addi r29,r29,#-8 6772 00006530 afa20000 sw (r29),r2 6773 00006534 200c002b addi r12,r0,#43 6774 00006538 afac0004 sw 4(r29),r12 6775 0000653c 0fffd8f4 jal _dindex 6776 00006540 54000000 nop; not filled. 6777 00006544 23bd0008 addi r29,r29,#8 6778 00006548 64210000 snei r1,r1,#0 6779 0000654c 10200030 beqz r1,L285_LF5 6780 00006550 54000000 nop; not filled. 6781 00006554 L286_LF5: 6782 00006554 23bdfff0 addi r29,r29,#-16 6783 00006558 3c0c0001 lhi r12,((LC35_LF5)>>16)&0xffff 6784 0000655c 258c0918 addui r12,r12,(LC35_LF5)&0xffff 6785 00006560 afac0000 sw (r29),r12 6786 00006564 afa50004 sw 4(r29),r5 6787 00006568 200c0064 addi r12,r0,#100 6788 0000656c afac0008 sw 8(r29),r12 6789 00006570 afa6000c sw 12(r29),r6 6790 00006574 0c004b58 jal _printf 6791 00006578 54000000 nop; not filled. 6792 0000657c 23bd0010 addi r29,r29,#16 6793 00006580 L285_LF5: 6794 00006580 23bdfff8 addi r29,r29,#-8 6795 00006584 afa30000 sw (r29),r3 6796 00006588 0fffb568 jal _FsClose 6797 0000658c 54000000 nop; not filled. 6798 00006590 2001ffff addi r1,r0,#-1 6799 00006594 23bd0008 addi r29,r29,#8 6800 00006598 080001d0 j L278_LF5 6801 0000659c 54000000 nop; not filled. 6802 000065a0 L284_LF5: 6803 000065a0 23bdfff8 addi r29,r29,#-8 6804 000065a4 afa40000 sw (r29),r4 6805 000065a8 3c010001 lhi r1,((LC36_LF5)>>16)&0xffff 6806 000065ac 24210950 addui r1,r1,(LC36_LF5)&0xffff 6807 000065b0 afa10004 sw 4(r29),r1 6808 000065b4 0fffd664 jal _dstrstr 6809 000065b8 54000000 nop; not filled. 6810 000065bc 23bd0008 addi r29,r29,#8 6811 000065c0 64210000 snei r1,r1,#0 6812 000065c4 14200088 bnez r1,L287_LF5 6813 000065c8 54000000 nop; not filled. 6814 000065cc 23bdfff8 addi r29,r29,#-8 6815 000065d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6816 000065d4 24420d78 addui r2,r2,(_debugstr)&0xffff 6817 000065d8 afa20000 sw (r29),r2 6818 000065dc 200c0066 addi r12,r0,#102 6819 000065e0 afac0004 sw 4(r29),r12 6820 000065e4 0fffd84c jal _dindex 6821 000065e8 54000000 nop; not filled. 6822 000065ec 23bd0008 addi r29,r29,#8 6823 000065f0 64210000 snei r1,r1,#0 6824 000065f4 1420002c bnez r1,L289_LF5 6825 000065f8 54000000 nop; not filled. 6826 000065fc 23bdfff8 addi r29,r29,#-8 6827 00006600 afa20000 sw (r29),r2 6828 00006604 200c002b addi r12,r0,#43 6829 00006608 afac0004 sw 4(r29),r12 6830 0000660c 0fffd824 jal _dindex 6831 00006610 54000000 nop; not filled. 6832 00006614 23bd0008 addi r29,r29,#8 6833 00006618 64210000 snei r1,r1,#0 6834 0000661c 10200024 beqz r1,L288_LF5 6835 00006620 54000000 nop; not filled. 6836 00006624 L289_LF5: 6837 00006624 23bdfff8 addi r29,r29,#-8 6838 00006628 3c0c0001 lhi r12,((LC37_LF5)>>16)&0xffff 6839 0000662c 258c0958 addui r12,r12,(LC37_LF5)&0xffff 6840 00006630 afac0000 sw (r29),r12 6841 00006634 afa60004 sw 4(r29),r6 6842 00006638 0c004a94 jal _printf 6843 0000663c 54000000 nop; not filled. 6844 00006640 23bd0008 addi r29,r29,#8 6845 00006644 L288_LF5: 6846 00006644 2001ffff addi r1,r0,#-1 6847 00006648 08000120 j L278_LF5 6848 0000664c 54000000 nop; not filled. 6849 00006650 L287_LF5: 6850 00006650 23bdfff8 addi r29,r29,#-8 6851 00006654 afa40000 sw (r29),r4 6852 00006658 200c003a addi r12,r0,#58 6853 0000665c afac0004 sw 4(r29),r12 6854 00006660 0fffd7d0 jal _dindex 6855 00006664 54000000 nop; not filled. 6856 00006668 20210001 addi r1,r1,#1 6857 0000666c afc1ff8c sw -116(r30),r1 6858 00006670 23bdfff8 addi r29,r29,#-8 6859 00006674 afa10000 sw (r29),r1 6860 00006678 23c2ff8c addi r2,r30,#-116 6861 0000667c afa20004 sw 4(r29),r2 6862 00006680 200c0010 addi r12,r0,#16 6863 00006684 afac0008 sw 8(r29),r12 6864 00006688 0fffd930 jal _dstrtol 6865 0000668c 54000000 nop; not filled. 6866 00006690 ace10000 sw (r7),r1 6867 00006694 8fccff8c lw r12,-116(r30) 6868 00006698 afac0000 sw (r29),r12 6869 0000669c afa20004 sw 4(r29),r2 6870 000066a0 200c0010 addi r12,r0,#16 6871 000066a4 afac0008 sw 8(r29),r12 6872 000066a8 0fffd910 jal _dstrtol 6873 000066ac 54000000 nop; not filled. 6874 000066b0 8fccff8c lw r12,-116(r30) 6875 000066b4 afac0000 sw (r29),r12 6876 000066b8 afa20004 sw 4(r29),r2 6877 000066bc 200c0010 addi r12,r0,#16 6878 000066c0 afac0008 sw 8(r29),r12 6879 000066c4 0fffd8f4 jal _dstrtol 6880 000066c8 54000000 nop; not filled. 6881 000066cc ad010000 sw (r8),r1 6882 000066d0 8fccff8c lw r12,-116(r30) 6883 000066d4 afac0000 sw (r29),r12 6884 000066d8 afa20004 sw 4(r29),r2 6885 000066dc 200c0010 addi r12,r0,#16 6886 000066e0 afac0008 sw 8(r29),r12 6887 000066e4 0fffd8d4 jal _dstrtol 6888 000066e8 54000000 nop; not filled. 6889 000066ec ad210000 sw (r9),r1 6890 000066f0 8fccff8c lw r12,-116(r30) 6891 000066f4 afac0000 sw (r29),r12 6892 000066f8 afa20004 sw 4(r29),r2 6893 000066fc 200c0010 addi r12,r0,#16 6894 00006700 afac0008 sw 8(r29),r12 6895 00006704 0fffd8b4 jal _dstrtol 6896 00006708 54000000 nop; not filled. 6897 0000670c ad410000 sw (r10),r1 6898 00006710 8fccff8c lw r12,-116(r30) 6899 00006714 afac0000 sw (r29),r12 6900 00006718 afa20004 sw 4(r29),r2 6901 0000671c 200c0010 addi r12,r0,#16 6902 00006720 afac0008 sw 8(r29),r12 6903 00006724 0fffd894 jal _dstrtol 6904 00006728 54000000 nop; not filled. 6905 0000672c ad610000 sw (r11),r1 6906 00006730 afa40000 sw (r29),r4 6907 00006734 200c000a addi r12,r0,#10 6908 00006738 afac0004 sw 4(r29),r12 6909 0000673c 0fffd6f4 jal _dindex 6910 00006740 54000000 nop; not filled. 6911 00006744 23c2ff8f addi r2,r30,#-113 6912 00006748 00220822 sub r1,r1,r2 6913 0000674c afa30000 sw (r29),r3 6914 00006750 afa10004 sw 4(r29),r1 6915 00006754 200c0000 addi r12,r0,#0 6916 00006758 afac0008 sw 8(r29),r12 6917 0000675c 0fffb694 jal _FsSeek 6918 00006760 54000000 nop; not filled. 6919 00006764 00030820 add r1,r0,r3 6920 00006768 23bd0010 addi r29,r29,#16 6921 0000676c L278_LF5: 6922 0000676c 8fa20000 lw r2,0(r29) 6923 00006770 8fa30004 lw r3,4(r29) 6924 00006774 8fa40008 lw r4,8(r29) 6925 00006778 8fa5000c lw r5,12(r29) 6926 0000677c 8fa60010 lw r6,16(r29) 6927 00006780 8fa70014 lw r7,20(r29) 6928 00006784 8fa80018 lw r8,24(r29) 6929 00006788 8fa9001c lw r9,28(r29) 6930 0000678c 8faa0020 lw r10,32(r29) 6931 00006790 8fab0024 lw r11,36(r29) 6932 00006794 8fac0028 lw r12,40(r29) 6933 00006798 8fdffff8 lw r31,-8(r30) 6934 0000679c 001ee820 add r29,r0,r30 6935 000067a0 8fdefffc lw r30,-4(r30) 6936 000067a4 4be00000 jr r31 6937 000067a8 54000000 nop 6938 000067ac .endproc _ProcessGetCodeInfo 6939 000067ac .data 6940 0001099b .align 2 6941 0001099c LC38_LF5: 6942 0001099c 476f7420 .ascii "Got %d bytes at offset %d ...\000" 6942 000109a0 25642062 6942 000109a4 79746573 6942 000109a8 20617420 6942 000109ac 6f666673 6942 000109b0 65742025 6942 000109b4 64202e2e 6942 000109b8 2e00 6943 000109ba .align 2 6944 000109bc LC39_LF5: 6945 000109bc 20746572 .ascii " terminated at %d.\n\000" 6945 000109c0 6d696e61 6945 000109c4 74656420 6945 000109c8 61742025 6945 000109cc 642e0a00 6946 000109d0 .align 2 6947 000109d0 LC40_LF5: 6948 000109d0 42756666 .ascii "Buffer is \'%s\'\n\000" 6948 000109d4 65722069 6948 000109d8 73202725 6948 000109dc 73270a00 6949 000109e0 .align 2 6950 000109e0 LC41_LF5: 6951 000109e0 4e657720 .ascii "New address is 0x%x.\n\000" 6951 000109e4 61646472 6951 000109e8 65737320 6951 000109ec 69732030 6951 000109f0 7825782e 6951 000109f4 0a00 6952 000109f6 .align 2 6953 000109f8 LC42_LF5: 6954 000109f8 5365656b .ascii "Seeking to %d and returning %d bytes!\n\000" 6954 000109fc 696e6720 6954 00010a00 746f2025 6954 00010a04 6420616e 6954 00010a08 64207265 6954 00010a0c 7475726e 6954 00010a10 696e6720 6954 00010a14 25642062 6954 00010a18 79746573 6954 00010a1c 210a00 6955 00010a1f .text 6956 000067ac .align 2 6957 000067ac .proc _ProcessGetFromFile 6958 000067ac .global _ProcessGetFromFile 6959 000067ac _ProcessGetFromFile: 6960 ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. 6961 000067ac afbefffc sw -4(r29),r30; push fp 6962 000067b0 001df020 add r30,r0,r29; fp = sp 6963 000067b4 afbffff8 sw -8(r29),r31; push ret addr 6964 000067b8 2fbd0110 subui r29,r29,#272; alloc local storage 6965 000067bc afa20000 sw 0(r29),r2 6966 000067c0 afa30004 sw 4(r29),r3 6967 000067c4 afa40008 sw 8(r29),r4 6968 000067c8 afa5000c sw 12(r29),r5 6969 000067cc afa60010 sw 16(r29),r6 6970 000067d0 afa70014 sw 20(r29),r7 6971 000067d4 afa80018 sw 24(r29),r8 6972 000067d8 afa9001c sw 28(r29),r9 6973 000067dc afaa0020 sw 32(r29),r10 6974 000067e0 afab0024 sw 36(r29),r11 6975 000067e4 afac0028 sw 40(r29),r12 6976 000067e8 8fca0000 lw r10,(r30) 6977 000067ec 8fc70008 lw r7,8(r30) 6978 000067f0 8fc2000c lw r2,12(r30) 6979 000067f4 8fcb0004 lw r11,4(r30) 6980 000067f8 23c3ff28 addi r3,r30,#-216 6981 000067fc afc3ff24 sw -220(r30),r3 6982 00006800 23bdfff0 addi r29,r29,#-16 6983 00006804 afaa0000 sw (r29),r10 6984 00006808 200c0000 addi r12,r0,#0 6985 0000680c afac0004 sw 4(r29),r12 6986 00006810 200c0001 addi r12,r0,#1 6987 00006814 afac0008 sw 8(r29),r12 6988 00006818 0fffb5d8 jal _FsSeek 6989 0000681c 54000000 nop; not filled. 6990 00006820 00014820 add r9,r0,r1 6991 00006824 50420001 slli r2,r2,#0x1 6992 00006828 23bd0010 addi r29,r29,#16 6993 0000682c 6c4100c8 sgtui r1,r2,#200 6994 00006830 10200008 beqz r1,L292_LF5 6995 00006834 54000000 nop; not filled. 6996 00006838 200200c8 addi r2,r0,#200 6997 0000683c L292_LF5: 6998 0000683c 23bdfff0 addi r29,r29,#-16 6999 00006840 afaa0000 sw (r29),r10 7000 00006844 afa30004 sw 4(r29),r3 7001 00006848 afa20008 sw 8(r29),r2 7002 0000684c 0fffb3ac jal _FsRead 7003 00006850 54000000 nop; not filled. 7004 00006854 00012820 add r5,r0,r1 7005 00006858 23bd0010 addi r29,r29,#16 7006 0000685c 70a10000 slei r1,r5,#0 7007 00006860 10200010 beqz r1,L293_LF5 7008 00006864 54000000 nop; not filled. 7009 00006868 20010000 addi r1,r0,#0 7010 0000686c 08000594 j L347_LF5 7011 00006870 54000000 nop; not filled. 7012 00006874 L293_LF5: 7013 00006874 23bdfff8 addi r29,r29,#-8 7014 00006878 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7015 0000687c 24420d78 addui r2,r2,(_debugstr)&0xffff 7016 00006880 afa20000 sw (r29),r2 7017 00006884 200c0066 addi r12,r0,#102 7018 00006888 afac0004 sw 4(r29),r12 7019 0000688c 0fffd5a4 jal _dindex 7020 00006890 54000000 nop; not filled. 7021 00006894 23bd0008 addi r29,r29,#8 7022 00006898 64210000 snei r1,r1,#0 7023 0000689c 1420002c bnez r1,L295_LF5 7024 000068a0 54000000 nop; not filled. 7025 000068a4 23bdfff8 addi r29,r29,#-8 7026 000068a8 afa20000 sw (r29),r2 7027 000068ac 200c002b addi r12,r0,#43 7028 000068b0 afac0004 sw 4(r29),r12 7029 000068b4 0fffd57c jal _dindex 7030 000068b8 54000000 nop; not filled. 7031 000068bc 23bd0008 addi r29,r29,#8 7032 000068c0 64210000 snei r1,r1,#0 7033 000068c4 10200028 beqz r1,L294_LF5 7034 000068c8 54000000 nop; not filled. 7035 000068cc L295_LF5: 7036 000068cc 23bdfff0 addi r29,r29,#-16 7037 000068d0 3c0c0001 lhi r12,((LC38_LF5)>>16)&0xffff 7038 000068d4 258c099c addui r12,r12,(LC38_LF5)&0xffff 7039 000068d8 afac0000 sw (r29),r12 7040 000068dc afa50004 sw 4(r29),r5 7041 000068e0 afa90008 sw 8(r29),r9 7042 000068e4 0c0047e8 jal _printf 7043 000068e8 54000000 nop; not filled. 7044 000068ec 23bd0010 addi r29,r29,#16 7045 000068f0 L294_LF5: 7046 000068f0 20a5ffff addi r5,r5,#-1 7047 000068f4 23c1ff28 addi r1,r30,#-216 7048 000068f8 00251020 add r2,r1,r5 7049 000068fc 0800000c j L350_LF5 7050 00006900 54000000 nop; not filled. 7051 00006904 L296_LF5: 7052 00006904 2042ffff addi r2,r2,#-1 7053 00006908 20a5ffff addi r5,r5,#-1 7054 0000690c L350_LF5: 7055 0000690c 90410000 lbu r1,(r2) 7056 00006910 6421000a snei r1,r1,#10 7057 00006914 1420ffec bnez r1,L296_LF5 7058 00006918 54000000 nop; not filled. 7059 0000691c 23c1ff29 addi r1,r30,#-215 7060 00006920 00250820 add r1,r1,r5 7061 00006924 200c005a addi r12,r0,(#0x5a)&0xff 7062 00006928 a02c0000 sb (r1),r12 7063 0000692c 23c1ff2a addi r1,r30,#-214 7064 00006930 00250820 add r1,r1,r5 7065 00006934 200c0000 addi r12,r0,(#0x0)&0xff 7066 00006938 a02c0000 sb (r1),r12 7067 0000693c 23bdfff8 addi r29,r29,#-8 7068 00006940 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7069 00006944 24420d78 addui r2,r2,(_debugstr)&0xffff 7070 00006948 afa20000 sw (r29),r2 7071 0000694c 200c0066 addi r12,r0,#102 7072 00006950 afac0004 sw 4(r29),r12 7073 00006954 0fffd4dc jal _dindex 7074 00006958 54000000 nop; not filled. 7075 0000695c 23bd0008 addi r29,r29,#8 7076 00006960 64210000 snei r1,r1,#0 7077 00006964 1420002c bnez r1,L301_LF5 7078 00006968 54000000 nop; not filled. 7079 0000696c 23bdfff8 addi r29,r29,#-8 7080 00006970 afa20000 sw (r29),r2 7081 00006974 200c002b addi r12,r0,#43 7082 00006978 afac0004 sw 4(r29),r12 7083 0000697c 0fffd4b4 jal _dindex 7084 00006980 54000000 nop; not filled. 7085 00006984 23bd0008 addi r29,r29,#8 7086 00006988 64210000 snei r1,r1,#0 7087 0000698c 10200024 beqz r1,L300_LF5 7088 00006990 54000000 nop; not filled. 7089 00006994 L301_LF5: 7090 00006994 23bdfff8 addi r29,r29,#-8 7091 00006998 3c0c0001 lhi r12,((LC39_LF5)>>16)&0xffff 7092 0000699c 258c09bc addui r12,r12,(LC39_LF5)&0xffff 7093 000069a0 afac0000 sw (r29),r12 7094 000069a4 afa50004 sw 4(r29),r5 7095 000069a8 0c004724 jal _printf 7096 000069ac 54000000 nop; not filled. 7097 000069b0 23bd0008 addi r29,r29,#8 7098 000069b4 L300_LF5: 7099 000069b4 23bdfff8 addi r29,r29,#-8 7100 000069b8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7101 000069bc 24420d78 addui r2,r2,(_debugstr)&0xffff 7102 000069c0 afa20000 sw (r29),r2 7103 000069c4 200c0066 addi r12,r0,#102 7104 000069c8 afac0004 sw 4(r29),r12 7105 000069cc 0fffd464 jal _dindex 7106 000069d0 54000000 nop; not filled. 7107 000069d4 23bd0008 addi r29,r29,#8 7108 000069d8 64210000 snei r1,r1,#0 7109 000069dc 1420002c bnez r1,L303_LF5 7110 000069e0 54000000 nop; not filled. 7111 000069e4 23bdfff8 addi r29,r29,#-8 7112 000069e8 afa20000 sw (r29),r2 7113 000069ec 200c002b addi r12,r0,#43 7114 000069f0 afac0004 sw 4(r29),r12 7115 000069f4 0fffd43c jal _dindex 7116 000069f8 54000000 nop; not filled. 7117 000069fc 23bd0008 addi r29,r29,#8 7118 00006a00 64210000 snei r1,r1,#0 7119 00006a04 10200028 beqz r1,L302_LF5 7120 00006a08 54000000 nop; not filled. 7121 00006a0c L303_LF5: 7122 00006a0c 23bdfff8 addi r29,r29,#-8 7123 00006a10 3c0c0001 lhi r12,((LC40_LF5)>>16)&0xffff 7124 00006a14 258c09d0 addui r12,r12,(LC40_LF5)&0xffff 7125 00006a18 afac0000 sw (r29),r12 7126 00006a1c 23c1ff28 addi r1,r30,#-216 7127 00006a20 afa10004 sw 4(r29),r1 7128 00006a24 0c0046a8 jal _printf 7129 00006a28 54000000 nop; not filled. 7130 00006a2c 23bd0008 addi r29,r29,#8 7131 00006a30 L302_LF5: 7132 00006a30 20050000 addi r5,r0,#0 7133 00006a34 3c080001 lhi r8,((_debugstr)>>16)&0xffff 7134 00006a38 25080d78 addui r8,r8,(_debugstr)&0xffff 7135 00006a3c L304_LF5: 7136 00006a3c 23bdfff8 addi r29,r29,#-8 7137 00006a40 8fccff24 lw r12,-220(r30) 7138 00006a44 afac0000 sw (r29),r12 7139 00006a48 200c005a addi r12,r0,#90 7140 00006a4c afac0004 sw 4(r29),r12 7141 00006a50 0fffd3e0 jal _dindex 7142 00006a54 54000000 nop; not filled. 7143 00006a58 23bd0008 addi r29,r29,#8 7144 00006a5c 64210000 snei r1,r1,#0 7145 00006a60 102002ec beqz r1,L305_LF5 7146 00006a64 54000000 nop; not filled. 7147 00006a68 23bdfff8 addi r29,r29,#-8 7148 00006a6c 8fccff24 lw r12,-220(r30) 7149 00006a70 afac0000 sw (r29),r12 7150 00006a74 200c003a addi r12,r0,#58 7151 00006a78 afac0004 sw 4(r29),r12 7152 00006a7c 0fffd3b4 jal _dindex 7153 00006a80 54000000 nop; not filled. 7154 00006a84 23bd0008 addi r29,r29,#8 7155 00006a88 64210000 snei r1,r1,#0 7156 00006a8c 102002c0 beqz r1,L305_LF5 7157 00006a90 54000000 nop; not filled. 7158 00006a94 8fc2ff24 lw r2,-220(r30) 7159 00006a98 90410000 lbu r1,(r2) 7160 00006a9c 6421003a snei r1,r1,#58 7161 00006aa0 102000b8 beqz r1,L349_LF5 7162 00006aa4 54000000 nop; not filled. 7163 00006aa8 6ca10000 sgti r1,r5,#0 7164 00006aac 142002a0 bnez r1,L305_LF5 7165 00006ab0 54000000 nop; not filled. 7166 00006ab4 23bdfff0 addi r29,r29,#-16 7167 00006ab8 afa20000 sw (r29),r2 7168 00006abc 23c1ff24 addi r1,r30,#-220 7169 00006ac0 afa10004 sw 4(r29),r1 7170 00006ac4 200c0010 addi r12,r0,#16 7171 00006ac8 afac0008 sw 8(r29),r12 7172 00006acc 0fffd4ec jal _dstrtol 7173 00006ad0 54000000 nop; not filled. 7174 00006ad4 ace10000 sw (r7),r1 7175 00006ad8 afa80000 sw (r29),r8 7176 00006adc 200c0066 addi r12,r0,#102 7177 00006ae0 afac0004 sw 4(r29),r12 7178 00006ae4 0fffd34c jal _dindex 7179 00006ae8 54000000 nop; not filled. 7180 00006aec 23bd0010 addi r29,r29,#16 7181 00006af0 64210000 snei r1,r1,#0 7182 00006af4 1420002c bnez r1,L311_LF5 7183 00006af8 54000000 nop; not filled. 7184 00006afc 23bdfff8 addi r29,r29,#-8 7185 00006b00 afa80000 sw (r29),r8 7186 00006b04 200c002b addi r12,r0,#43 7187 00006b08 afac0004 sw 4(r29),r12 7188 00006b0c 0fffd324 jal _dindex 7189 00006b10 54000000 nop; not filled. 7190 00006b14 23bd0008 addi r29,r29,#8 7191 00006b18 64210000 snei r1,r1,#0 7192 00006b1c 10200028 beqz r1,L308_LF5 7193 00006b20 54000000 nop; not filled. 7194 00006b24 L311_LF5: 7195 00006b24 23bdfff8 addi r29,r29,#-8 7196 00006b28 3c0c0001 lhi r12,((LC41_LF5)>>16)&0xffff 7197 00006b2c 258c09e0 addui r12,r12,(LC41_LF5)&0xffff 7198 00006b30 afac0000 sw (r29),r12 7199 00006b34 8ce10000 lw r1,(r7) 7200 00006b38 afa10004 sw 4(r29),r1 7201 00006b3c 0c004590 jal _printf 7202 00006b40 54000000 nop; not filled. 7203 00006b44 23bd0008 addi r29,r29,#8 7204 00006b48 L308_LF5: 7205 00006b48 8fc1ff24 lw r1,-220(r30) 7206 00006b4c 90210000 lbu r1,(r1) 7207 00006b50 6421003a snei r1,r1,#58 7208 00006b54 142001f8 bnez r1,L305_LF5 7209 00006b58 54000000 nop; not filled. 7210 00006b5c L349_LF5: 7211 00006b5c 8fc1ff24 lw r1,-220(r30) 7212 00006b60 20210001 addi r1,r1,#1 7213 00006b64 afc1ff24 sw -220(r30),r1 7214 00006b68 00ab3020 add r6,r5,r11 7215 00006b6c L315_LF5: 7216 00006b6c 8fc1ff24 lw r1,-220(r30) 7217 00006b70 08000010 j L351_LF5 7218 00006b74 54000000 nop; not filled. 7219 00006b78 L318_LF5: 7220 00006b78 8fc1ff24 lw r1,-220(r30) 7221 00006b7c 20210001 addi r1,r1,#1 7222 00006b80 afc1ff24 sw -220(r30),r1 7223 00006b84 L351_LF5: 7224 00006b84 903f0000 lbu r31,(r1) 7225 00006b88 63e10020 seqi r1,r31,#32 7226 00006b8c 1420ffe8 bnez r1,L318_LF5 7227 00006b90 54000000 nop; not filled. 7228 00006b94 63e10009 seqi r1,r31,#9 7229 00006b98 1420ffdc bnez r1,L318_LF5 7230 00006b9c 54000000 nop; not filled. 7231 00006ba0 8fc2ff24 lw r2,-220(r30) 7232 00006ba4 805f0000 lb r31,(r2) 7233 00006ba8 33e300ff andi r3,r31,#0x00ff 7234 00006bac 6061000a seqi r1,r3,#10 7235 00006bb0 10200014 beqz r1,L320_LF5 7236 00006bb4 54000000 nop; not filled. 7237 00006bb8 20410001 addi r1,r2,#1 7238 00006bbc afc1ff24 sw -220(r30),r1 7239 00006bc0 0bfffe78 j L304_LF5 7240 00006bc4 54000000 nop; not filled. 7241 00006bc8 L320_LF5: 7242 00006bc8 20020000 addi r2,r0,#0 7243 00006bcc 23e1ffd0 addi r1,r31,#-48 7244 00006bd0 302100ff andi r1,r1,#0x00ff 7245 00006bd4 70210009 sleui r1,r1,#9 7246 00006bd8 14200024 bnez r1,L326_LF5 7247 00006bdc 54000000 nop; not filled. 7248 00006be0 23e1ff9f addi r1,r31,#-97 7249 00006be4 302100ff andi r1,r1,#0x00ff 7250 00006be8 70210005 sleui r1,r1,#5 7251 00006bec 14200010 bnez r1,L326_LF5 7252 00006bf0 54000000 nop; not filled. 7253 00006bf4 64610041 snei r1,r3,#65 7254 00006bf8 14200008 bnez r1,L325_LF5 7255 00006bfc 54000000 nop; not filled. 7256 00006c00 L326_LF5: 7257 00006c00 20020001 addi r2,r0,#1 7258 00006c04 L325_LF5: 7259 00006c04 64410000 snei r1,r2,#0 7260 00006c08 1020fe30 beqz r1,L304_LF5 7261 00006c0c 54000000 nop; not filled. 7262 00006c10 8fc1ff24 lw r1,-220(r30) 7263 00006c14 80220001 lb r2,1(r1) 7264 00006c18 20030000 addi r3,r0,#0 7265 00006c1c 2041ffd0 addi r1,r2,#-48 7266 00006c20 302100ff andi r1,r1,#0x00ff 7267 00006c24 70210009 sleui r1,r1,#9 7268 00006c28 14200028 bnez r1,L329_LF5 7269 00006c2c 54000000 nop; not filled. 7270 00006c30 2041ff9f addi r1,r2,#-97 7271 00006c34 302100ff andi r1,r1,#0x00ff 7272 00006c38 70210005 sleui r1,r1,#5 7273 00006c3c 14200014 bnez r1,L329_LF5 7274 00006c40 54000000 nop; not filled. 7275 00006c44 304100ff andi r1,r2,#0x00ff 7276 00006c48 64210041 snei r1,r1,#65 7277 00006c4c 14200008 bnez r1,L328_LF5 7278 00006c50 54000000 nop; not filled. 7279 00006c54 L329_LF5: 7280 00006c54 20030001 addi r3,r0,#1 7281 00006c58 L328_LF5: 7282 00006c58 64610000 snei r1,r3,#0 7283 00006c5c 1020fddc beqz r1,L304_LF5 7284 00006c60 54000000 nop; not filled. 7285 00006c64 8fc1ff24 lw r1,-220(r30) 7286 00006c68 90220000 lbu r2,(r1) 7287 00006c6c 00021820 add r3,r0,r2 7288 00006c70 205fffd0 addi r31,r2,#-48 7289 00006c74 73e10009 sleui r1,r31,#9 7290 00006c78 10200010 beqz r1,L331_LF5 7291 00006c7c 54000000 nop; not filled. 7292 00006c80 001f2020 add r4,r0,r31 7293 00006c84 08000038 j L330_LF5 7294 00006c88 54000000 nop; not filled. 7295 00006c8c L331_LF5: 7296 00006c8c 2041ff9f addi r1,r2,#-97 7297 00006c90 70210005 sleui r1,r1,#5 7298 00006c94 10200010 beqz r1,L333_LF5 7299 00006c98 54000000 nop; not filled. 7300 00006c9c 2044ffa9 addi r4,r2,#-87 7301 00006ca0 0800001c j L330_LF5 7302 00006ca4 54000000 nop; not filled. 7303 00006ca8 L333_LF5: 7304 00006ca8 2061ffbf addi r1,r3,#-65 7305 00006cac 70210005 sleui r1,r1,#5 7306 00006cb0 20040000 addi r4,r0,#0 7307 00006cb4 10200008 beqz r1,L330_LF5 7308 00006cb8 54000000 nop; not filled. 7309 00006cbc 2064ffc9 addi r4,r3,#-55 7310 00006cc0 L330_LF5: 7311 00006cc0 8fc1ff24 lw r1,-220(r30) 7312 00006cc4 90220001 lbu r2,1(r1) 7313 00006cc8 00021820 add r3,r0,r2 7314 00006ccc 205fffd0 addi r31,r2,#-48 7315 00006cd0 73e10009 sleui r1,r31,#9 7316 00006cd4 10200010 beqz r1,L338_LF5 7317 00006cd8 54000000 nop; not filled. 7318 00006cdc 001f1020 add r2,r0,r31 7319 00006ce0 08000038 j L337_LF5 7320 00006ce4 54000000 nop; not filled. 7321 00006ce8 L338_LF5: 7322 00006ce8 2041ff9f addi r1,r2,#-97 7323 00006cec 70210005 sleui r1,r1,#5 7324 00006cf0 10200010 beqz r1,L340_LF5 7325 00006cf4 54000000 nop; not filled. 7326 00006cf8 2042ffa9 addi r2,r2,#-87 7327 00006cfc 0800001c j L337_LF5 7328 00006d00 54000000 nop; not filled. 7329 00006d04 L340_LF5: 7330 00006d04 2061ffbf addi r1,r3,#-65 7331 00006d08 70210005 sleui r1,r1,#5 7332 00006d0c 20020000 addi r2,r0,#0 7333 00006d10 10200008 beqz r1,L337_LF5 7334 00006d14 54000000 nop; not filled. 7335 00006d18 2062ffc9 addi r2,r3,#-55 7336 00006d1c L337_LF5: 7337 00006d1c 50810004 slli r1,r4,#0x4 7338 00006d20 00220820 add r1,r1,r2 7339 00006d24 a0c10000 sb (r6),r1 7340 00006d28 20c60001 addi r6,r6,#1 7341 00006d2c 20a50001 addi r5,r5,#1 7342 00006d30 8fc1ff24 lw r1,-220(r30) 7343 00006d34 20210002 addi r1,r1,#2 7344 00006d38 afc1ff24 sw -220(r30),r1 7345 00006d3c 8ce10000 lw r1,(r7) 7346 00006d40 20210001 addi r1,r1,#1 7347 00006d44 ace10000 sw (r7),r1 7348 00006d48 0bfffe20 j L315_LF5 7349 00006d4c 54000000 nop; not filled. 7350 00006d50 L305_LF5: 7351 00006d50 23bdfff0 addi r29,r29,#-16 7352 00006d54 afaa0000 sw (r29),r10 7353 00006d58 8fc1ff24 lw r1,-220(r30) 7354 00006d5c 00290820 add r1,r1,r9 7355 00006d60 23c3ff28 addi r3,r30,#-216 7356 00006d64 00230822 sub r1,r1,r3 7357 00006d68 afa10004 sw 4(r29),r1 7358 00006d6c 200c0000 addi r12,r0,#0 7359 00006d70 afac0008 sw 8(r29),r12 7360 00006d74 0fffb07c jal _FsSeek 7361 00006d78 54000000 nop; not filled. 7362 00006d7c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7363 00006d80 24420d78 addui r2,r2,(_debugstr)&0xffff 7364 00006d84 afa20000 sw (r29),r2 7365 00006d88 200c0066 addi r12,r0,#102 7366 00006d8c afac0004 sw 4(r29),r12 7367 00006d90 0fffd0a0 jal _dindex 7368 00006d94 54000000 nop; not filled. 7369 00006d98 23bd0010 addi r29,r29,#16 7370 00006d9c 64210000 snei r1,r1,#0 7371 00006da0 1420002c bnez r1,L346_LF5 7372 00006da4 54000000 nop; not filled. 7373 00006da8 23bdfff8 addi r29,r29,#-8 7374 00006dac afa20000 sw (r29),r2 7375 00006db0 200c002b addi r12,r0,#43 7376 00006db4 afac0004 sw 4(r29),r12 7377 00006db8 0fffd078 jal _dindex 7378 00006dbc 54000000 nop; not filled. 7379 00006dc0 23bd0008 addi r29,r29,#8 7380 00006dc4 64210000 snei r1,r1,#0 7381 00006dc8 10200034 beqz r1,L345_LF5 7382 00006dcc 54000000 nop; not filled. 7383 00006dd0 L346_LF5: 7384 00006dd0 23bdfff0 addi r29,r29,#-16 7385 00006dd4 3c0c0001 lhi r12,((LC42_LF5)>>16)&0xffff 7386 00006dd8 258c09f8 addui r12,r12,(LC42_LF5)&0xffff 7387 00006ddc afac0000 sw (r29),r12 7388 00006de0 8fc1ff24 lw r1,-220(r30) 7389 00006de4 00290820 add r1,r1,r9 7390 00006de8 00230822 sub r1,r1,r3 7391 00006dec afa10004 sw 4(r29),r1 7392 00006df0 afa50008 sw 8(r29),r5 7393 00006df4 0c0042d8 jal _printf 7394 00006df8 54000000 nop; not filled. 7395 00006dfc 23bd0010 addi r29,r29,#16 7396 00006e00 L345_LF5: 7397 00006e00 00050820 add r1,r0,r5 7398 00006e04 L347_LF5: 7399 00006e04 8fa20000 lw r2,0(r29) 7400 00006e08 8fa30004 lw r3,4(r29) 7401 00006e0c 8fa40008 lw r4,8(r29) 7402 00006e10 8fa5000c lw r5,12(r29) 7403 00006e14 8fa60010 lw r6,16(r29) 7404 00006e18 8fa70014 lw r7,20(r29) 7405 00006e1c 8fa80018 lw r8,24(r29) 7406 00006e20 8fa9001c lw r9,28(r29) 7407 00006e24 8faa0020 lw r10,32(r29) 7408 00006e28 8fab0024 lw r11,36(r29) 7409 00006e2c 8fac0028 lw r12,40(r29) 7410 00006e30 8fdffff8 lw r31,-8(r30) 7411 00006e34 001ee820 add r29,r0,r30 7412 00006e38 8fdefffc lw r30,-4(r30) 7413 00006e3c 4be00000 jr r31 7414 00006e40 54000000 nop 7415 00006e44 .endproc _ProcessGetFromFile 7416 00006e44 .data 7417 00010a1f .align 2 7418 00010a20 _temppcb64_LF5: 7419 00010a20 .space 120 7420 00010a98 .align 2 7421 00010a98 LC43_LF5: 7422 00010a98 48692055 .ascii "Hi Uday, How are you?\n\000" 7422 00010a9c 6461792c 7422 00010aa0 20486f77 7422 00010aa4 20617265 7422 00010aa8 20796f75 7422 00010aac 3f0a00 7423 00010aaf .align 2 7424 00010ab0 LC44_LF5: 7425 00010ab0 476f7420 .ascii "Got %d arguments.\n\000" 7425 00010ab4 25642061 7425 00010ab8 7267756d 7425 00010abc 656e7473 7425 00010ac0 2e0a00 7426 00010ac3 .align 2 7427 00010ac4 LC45_LF5: 7428 00010ac4 41766169 .ascii "Available memory: 0x%x -> 0x%x.\n\000" 7428 00010ac8 6c61626c 7428 00010acc 65206d65 7428 00010ad0 6d6f7279 7428 00010ad4 3a203078 7428 00010ad8 2578202d 7428 00010adc 3e203078 7428 00010ae0 25782e0a 7428 00010ae4 00 7429 00010ae5 .align 2 7430 00010ae8 LC46_LF5: 7431 00010ae8 41726775 .ascii "Argument count is %d.\n\000" 7431 00010aec 6d656e74 7431 00010af0 20636f75 7431 00010af4 6e742069 7431 00010af8 73202564 7431 00010afc 2e0a00 7432 00010aff .align 2 7433 00010b00 LC47_LF5: 7434 00010b00 41726775 .ascii "Argument %d is %s.\n\000" 7434 00010b04 6d656e74 7434 00010b08 20256420 7434 00010b0c 69732025 7434 00010b10 732e0a00 7435 00010b14 .align 2 7436 00010b14 LC48_LF5: 7437 00010b14 436f6e76 .ascii "Converted %s to %d=%s\n\000" 7437 00010b18 65727465 7437 00010b1c 64202573 7437 00010b20 20746f20 7437 00010b24 25643d25 7437 00010b28 730a00 7438 00010b2b _buf65_LF5: 7439 00010b2b .space 200 7440 00010bf3 .align 2 7441 00010bf4 LC49_LF5: 7442 00010bf4 25303878 .ascii "%08x: %02x%02x%02x%02x\n\000" 7442 00010bf8 3a202530 7442 00010bfc 32782530 7442 00010c00 32782530 7442 00010c04 32782530 7442 00010c08 32780a00 7443 00010c0c .align 2 7444 00010c0c LC50_LF5: 7445 00010c0c 4f707469 .ascii "Option %s not recognized.\n\000" 7445 00010c10 6f6e2025 7445 00010c14 73206e6f 7445 00010c18 74207265 7445 00010c1c 636f676e 7445 00010c20 697a6564 7445 00010c24 2e0a00 7446 00010c27 .align 2 7447 00010c28 LC51_LF5: 7448 00010c28 41626f75 .ascii "About to initialize queues.\n\000" 7448 00010c2c 7420746f 7448 00010c30 20696e69 7448 00010c34 7469616c 7448 00010c38 697a6520 7448 00010c3c 71756575 7448 00010c40 65732e0a 7448 00010c44 00 7449 00010c45 .align 2 7450 00010c48 LC52_LF5: 7451 00010c48 41667465 .ascii "After initializing queues.\n\000" 7451 00010c4c 7220696e 7451 00010c50 69746961 7451 00010c54 6c697a69 7451 00010c58 6e672071 7451 00010c5c 75657565 7451 00010c60 732e0a00 7452 00010c64 .align 2 7453 00010c64 LC53_LF5: 7454 00010c64 41667465 .ascii "After initializing memory.\n\000" 7454 00010c68 7220696e 7454 00010c6c 69746961 7454 00010c70 6c697a69 7454 00010c74 6e67206d 7454 00010c78 656d6f72 7454 00010c7c 792e0a00 7455 00010c80 .align 2 7456 00010c80 LC54_LF5: 7457 00010c80 41667465 .ascii "After initializing processes.\n\000" 7457 00010c84 7220696e 7457 00010c88 69746961 7457 00010c8c 6c697a69 7457 00010c90 6e672070 7457 00010c94 726f6365 7457 00010c98 73736573 7457 00010c9c 2e0a00 7458 00010c9f .align 2 7459 00010ca0 LC55_LF5: 7460 00010ca0 41667465 .ascii "After initializing synchronization tools.\n\000" 7460 00010ca4 7220696e 7460 00010ca8 69746961 7460 00010cac 6c697a69 7460 00010cb0 6e672073 7460 00010cb4 796e6368 7460 00010cb8 726f6e69 7460 00010cbc 7a617469 7460 00010cc0 6f6e2074 7460 00010cc4 6f6f6c73 7460 00010cc8 2e0a00 7461 00010ccb .align 2 7462 00010ccc LC56_LF5: 7463 00010ccc 41667465 .ascii "After initializing keyboard.\n\000" 7463 00010cd0 7220696e 7463 00010cd4 69746961 7463 00010cd8 6c697a69 7463 00010cdc 6e67206b 7463 00010ce0 6579626f 7463 00010ce4 6172642e 7463 00010ce8 0a00 7464 00010cea .align 2 7465 00010cec LC57_LF5: 7466 00010cec 766d00 .ascii "vm\000" 7467 00010cef .align 2 7468 00010cf0 LC58_LF5: 7469 00010cf0 564d2044 .ascii "VM Descriptor is %d\n\000" 7469 00010cf4 65736372 7469 00010cf8 6970746f 7469 00010cfc 72206973 7469 00010d00 2025640a 7469 00010d04 00 7470 00010d05 .align 2 7471 00010d08 LC59_LF5: 7472 00010d08 43726561 .ascii "Created processes - about to set timer quantum.\n\000" 7472 00010d0c 74656420 7472 00010d10 70726f63 7472 00010d14 65737365 7472 00010d18 73202d20 7472 00010d1c 61626f75 7472 00010d20 7420746f 7472 00010d24 20736574 7472 00010d28 2074696d 7472 00010d2c 65722071 7472 00010d30 75616e74 7472 00010d34 756d2e0a 7472 00010d38 00 7473 00010d39 .align 2 7474 00010d3c LC60_LF5: 7475 00010d3c 53657420 .ascii "Set timer quantum to %d, about to run first process.\n\000" 7475 00010d40 74696d65 7475 00010d44 72207175 7475 00010d48 616e7475 7475 00010d4c 6d20746f 7475 00010d50 2025642c 7475 00010d54 2061626f 7475 00010d58 75742074 7475 00010d5c 6f207275 7475 00010d60 6e206669 7475 00010d64 72737420 7475 00010d68 70726f63 7475 00010d6c 6573732e 7475 00010d70 0a00 7476 00010d72 .text 7477 00006e44 .align 2 7478 00006e44 .proc _main 7479 00006e44 .global _main 7480 00006e44 _main: 7481 ; Function 'main'; 192 bytes of locals, 0 regs to save. 7482 00006e44 afbefffc sw -4(r29),r30; push fp 7483 00006e48 001df020 add r30,r0,r29; fp = sp 7484 00006e4c afbffff8 sw -8(r29),r31; push ret addr 7485 00006e50 2fbd00c8 subui r29,r29,#200; alloc local storage 7486 00006e54 8fce0000 lw r14,(r30) 7487 00006e58 8fd40004 lw r20,4(r30) 7488 00006e5c 0c0041d8 jal ___main 7489 00006e60 54000000 nop; not filled. 7490 00006e64 20100000 addi r16,r0,#0 7491 00006e68 20150000 addi r21,r0,#0 7492 00006e6c afd5ff50 sw -176(r30),r21 7493 00006e70 afd5ff54 sw -172(r30),r21 7494 00006e74 afd5ff58 sw -168(r30),r21 7495 00006e78 afd5ff5c sw -164(r30),r21 7496 00006e7c afd5ff60 sw -160(r30),r21 7497 00006e80 afd5ff64 sw -156(r30),r21 7498 00006e84 afd5ff68 sw -152(r30),r21 7499 00006e88 afd5ff6c sw -148(r30),r21 7500 00006e8c afd5ff70 sw -144(r30),r21 7501 00006e90 afd5ff74 sw -140(r30),r21 7502 00006e94 afd5ff78 sw -136(r30),r21 7503 00006e98 afd5ff7c sw -132(r30),r21 7504 00006e9c 3c010001 lhi r1,((_debugstr)>>16)&0xffff 7505 00006ea0 24210d78 addui r1,r1,(_debugstr)&0xffff 7506 00006ea4 20150000 addi r21,r0,(#0x0)&0xff 7507 00006ea8 a0350000 sb (r1),r21 7508 00006eac 23bdfff8 addi r29,r29,#-8 7509 00006eb0 3c150001 lhi r21,((LC43_LF5)>>16)&0xffff 7510 00006eb4 26b50a98 addui r21,r21,(LC43_LF5)&0xffff 7511 00006eb8 afb50000 sw (r29),r21 7512 00006ebc 0c004210 jal _printf 7513 00006ec0 54000000 nop; not filled. 7514 00006ec4 0c0009e0 jal _MyFuncRetZero 7515 00006ec8 54000000 nop; not filled. 7516 00006ecc 3c150001 lhi r21,((LC44_LF5)>>16)&0xffff 7517 00006ed0 26b50ab0 addui r21,r21,(LC44_LF5)&0xffff 7518 00006ed4 afb50000 sw (r29),r21 7519 00006ed8 afae0004 sw 4(r29),r14 7520 00006edc 0c0041f0 jal _printf 7521 00006ee0 54000000 nop; not filled. 7522 00006ee4 0fffbb24 jal _MemoryGetSize 7523 00006ee8 54000000 nop; not filled. 7524 00006eec 23bdfff8 addi r29,r29,#-8 7525 00006ef0 3c150001 lhi r21,((LC45_LF5)>>16)&0xffff 7526 00006ef4 26b50ac4 addui r21,r21,(LC45_LF5)&0xffff 7527 00006ef8 afb50000 sw (r29),r21 7528 00006efc 3c020001 lhi r2,((_lastosaddress)>>16)&0xffff 7529 00006f00 24423e6c addui r2,r2,(_lastosaddress)&0xffff 7530 00006f04 8c420000 lw r2,(r2) 7531 00006f08 afa20004 sw 4(r29),r2 7532 00006f0c afa10008 sw 8(r29),r1 7533 00006f10 0c0041bc jal _printf 7534 00006f14 54000000 nop; not filled. 7535 00006f18 3c150001 lhi r21,((LC46_LF5)>>16)&0xffff 7536 00006f1c 26b50ae8 addui r21,r21,(LC46_LF5)&0xffff 7537 00006f20 afb50000 sw (r29),r21 7538 00006f24 afae0004 sw 4(r29),r14 7539 00006f28 0c0041a4 jal _printf 7540 00006f2c 54000000 nop; not filled. 7541 00006f30 20090000 addi r9,r0,#0 7542 00006f34 23bd0010 addi r29,r29,#16 7543 00006f38 012e082a slt r1,r9,r14 7544 00006f3c 10200044 beqz r1,L354_LF5 7545 00006f40 54000000 nop; not filled. 7546 00006f44 00141020 add r2,r0,r20 7547 00006f48 L356_LF5: 7548 00006f48 23bdfff0 addi r29,r29,#-16 7549 00006f4c 3c150001 lhi r21,((LC47_LF5)>>16)&0xffff 7550 00006f50 26b50b00 addui r21,r21,(LC47_LF5)&0xffff 7551 00006f54 afb50000 sw (r29),r21 7552 00006f58 afa90004 sw 4(r29),r9 7553 00006f5c 8c550000 lw r21,(r2) 7554 00006f60 afb50008 sw 8(r29),r21 7555 00006f64 0c004168 jal _printf 7556 00006f68 54000000 nop; not filled. 7557 00006f6c 23bd0010 addi r29,r29,#16 7558 00006f70 20420004 addi r2,r2,#4 7559 00006f74 21290001 addi r9,r9,#1 7560 00006f78 012e082a slt r1,r9,r14 7561 00006f7c 1420ffc8 bnez r1,L356_LF5 7562 00006f80 54000000 nop; not filled. 7563 00006f84 L354_LF5: 7564 00006f84 0fffb4f8 jal _FsModuleInit 7565 00006f88 54000000 nop; not filled. 7566 00006f8c 20090000 addi r9,r0,#0 7567 00006f90 012e082a slt r1,r9,r14 7568 00006f94 1020033c beqz r1,L359_LF5 7569 00006f98 54000000 nop; not filled. 7570 00006f9c 23ccff80 addi r12,r30,#-128 7571 00006fa0 23cdff38 addi r13,r30,#-200 7572 00006fa4 3c0f0001 lhi r15,((_buf65_LF5)>>16)&0xffff 7573 00006fa8 25ef0b2b addui r15,r15,(_buf65_LF5)&0xffff 7574 00006fac 21f20001 addi r18,r15,#1 7575 00006fb0 21f10002 addi r17,r15,#2 7576 00006fb4 00144020 add r8,r0,r20 7577 00006fb8 L361_LF5: 7578 00006fb8 8d020000 lw r2,(r8) 7579 00006fbc 90410000 lbu r1,(r2) 7580 00006fc0 6021002d seqi r1,r1,#45 7581 00006fc4 102002f8 beqz r1,L360_LF5 7582 00006fc8 54000000 nop; not filled. 7583 00006fcc 90420001 lbu r2,1(r2) 7584 00006fd0 60410066 seqi r1,r2,#102 7585 00006fd4 142000e0 bnez r1,L366_LF5 7586 00006fd8 54000000 nop; not filled. 7587 00006fdc 6c410066 sgti r1,r2,#102 7588 00006fe0 14200018 bnez r1,L378_LF5 7589 00006fe4 54000000 nop; not filled. 7590 00006fe8 60410044 seqi r1,r2,#68 7591 00006fec 102002a0 beqz r1,L376_LF5 7592 00006ff0 54000000 nop; not filled. 7593 00006ff4 08000024 j L364_LF5 7594 00006ff8 54000000 nop; not filled. 7595 00006ffc L378_LF5: 7596 00006ffc 60410069 seqi r1,r2,#105 7597 00007000 14200048 bnez r1,L365_LF5 7598 00007004 54000000 nop; not filled. 7599 00007008 60410075 seqi r1,r2,#117 7600 0000700c 10200280 beqz r1,L376_LF5 7601 00007010 54000000 nop; not filled. 7602 00007014 08000260 j L375_LF5 7603 00007018 54000000 nop; not filled. 7604 0000701c L364_LF5: 7605 0000701c 23bdfff8 addi r29,r29,#-8 7606 00007020 3c150001 lhi r21,((_debugstr)>>16)&0xffff 7607 00007024 26b50d78 addui r21,r21,(_debugstr)&0xffff 7608 00007028 afb50000 sw (r29),r21 7609 0000702c 21080004 addi r8,r8,#4 7610 00007030 21290001 addi r9,r9,#1 7611 00007034 8d010000 lw r1,(r8) 7612 00007038 afa10004 sw 4(r29),r1 7613 0000703c 0fffc934 jal _dstrcpy 7614 00007040 54000000 nop; not filled. 7615 00007044 08000268 j L411_LF5 7616 00007048 54000000 nop; not filled. 7617 0000704c L365_LF5: 7618 0000704c 23bdfff0 addi r29,r29,#-16 7619 00007050 21080004 addi r8,r8,#4 7620 00007054 21290001 addi r9,r9,#1 7621 00007058 8d150000 lw r21,(r8) 7622 0000705c afb50000 sw (r29),r21 7623 00007060 20150000 addi r21,r0,#0 7624 00007064 afb50004 sw 4(r29),r21 7625 00007068 afb50008 sw 8(r29),r21 7626 0000706c 0fffcf4c jal _dstrtol 7627 00007070 54000000 nop; not filled. 7628 00007074 00011820 add r3,r0,r1 7629 00007078 afa10000 sw (r29),r1 7630 0000707c afac0004 sw 4(r29),r12 7631 00007080 0fffce2c jal _ditoa 7632 00007084 54000000 nop; not filled. 7633 00007088 3c150001 lhi r21,((LC48_LF5)>>16)&0xffff 7634 0000708c 26b50b14 addui r21,r21,(LC48_LF5)&0xffff 7635 00007090 afb50000 sw (r29),r21 7636 00007094 8d010000 lw r1,(r8) 7637 00007098 afa10004 sw 4(r29),r1 7638 0000709c afa30008 sw 8(r29),r3 7639 000070a0 afac000c sw 12(r29),r12 7640 000070a4 0c004028 jal _printf 7641 000070a8 54000000 nop; not filled. 7642 000070ac 23bd0010 addi r29,r29,#16 7643 000070b0 08000200 j L363_LF5 7644 000070b4 54000000 nop; not filled. 7645 000070b8 L366_LF5: 7646 000070b8 20150000 addi r21,r0,#0 7647 000070bc afd5ff38 sw -200(r30),r21 7648 000070c0 23bdffe8 addi r29,r29,#-24 7649 000070c4 21080004 addi r8,r8,#4 7650 000070c8 21290001 addi r9,r9,#1 7651 000070cc 8d150000 lw r21,(r8) 7652 000070d0 afb50000 sw (r29),r21 7653 000070d4 23c1ff4c addi r1,r30,#-180 7654 000070d8 afa10004 sw 4(r29),r1 7655 000070dc 23c1ff48 addi r1,r30,#-184 7656 000070e0 afa10008 sw 8(r29),r1 7657 000070e4 23c1ff44 addi r1,r30,#-188 7658 000070e8 afa1000c sw 12(r29),r1 7659 000070ec 23c1ff40 addi r1,r30,#-192 7660 000070f0 afa10010 sw 16(r29),r1 7661 000070f4 23c1ff3c addi r1,r30,#-196 7662 000070f8 afa10014 sw 20(r29),r1 7663 000070fc 0ffff24c jal _ProcessGetCodeInfo 7664 00007100 54000000 nop; not filled. 7665 00007104 00015020 add r10,r0,r1 7666 00007108 3c150001 lhi r21,((LC27_LF5)>>16)&0xffff 7667 0000710c 26b507f4 addui r21,r21,(LC27_LF5)&0xffff 7668 00007110 afb50000 sw (r29),r21 7669 00007114 8d010000 lw r1,(r8) 7670 00007118 afa10004 sw 4(r29),r1 7671 0000711c 8fd5ff4c lw r21,-180(r30) 7672 00007120 afb50008 sw 8(r29),r21 7673 00007124 0c003fa8 jal _printf 7674 00007128 54000000 nop; not filled. 7675 0000712c 3c150001 lhi r21,((LC28_LF5)>>16)&0xffff 7676 00007130 26b50810 addui r21,r21,(LC28_LF5)&0xffff 7677 00007134 afb50000 sw (r29),r21 7678 00007138 8d010000 lw r1,(r8) 7679 0000713c afa10004 sw 4(r29),r1 7680 00007140 8fd5ff48 lw r21,-184(r30) 7681 00007144 afb50008 sw 8(r29),r21 7682 00007148 8fd5ff44 lw r21,-188(r30) 7683 0000714c afb5000c sw 12(r29),r21 7684 00007150 0c003f7c jal _printf 7685 00007154 54000000 nop; not filled. 7686 00007158 3c150001 lhi r21,((LC29_LF5)>>16)&0xffff 7687 0000715c 26b50838 addui r21,r21,(LC29_LF5)&0xffff 7688 00007160 afb50000 sw (r29),r21 7689 00007164 8d010000 lw r1,(r8) 7690 00007168 afa10004 sw 4(r29),r1 7691 0000716c 8fd5ff40 lw r21,-192(r30) 7692 00007170 afb50008 sw 8(r29),r21 7693 00007174 8fd5ff3c lw r21,-196(r30) 7694 00007178 afb5000c sw 12(r29),r21 7695 0000717c 0c003f50 jal _printf 7696 00007180 54000000 nop; not filled. 7697 00007184 23bd0018 addi r29,r29,#24 7698 00007188 3c0b0001 lhi r11,((_buf65_LF5+3)>>16)&0xffff 7699 0000718c 256b0b2e addui r11,r11,(_buf65_LF5+3)&0xffff 7700 00007190 L367_LF5: 7701 00007190 23bdfff0 addi r29,r29,#-16 7702 00007194 afaa0000 sw (r29),r10 7703 00007198 3c150001 lhi r21,((_buf65_LF5)>>16)&0xffff 7704 0000719c 26b50b2b addui r21,r21,(_buf65_LF5)&0xffff 7705 000071a0 afb50004 sw 4(r29),r21 7706 000071a4 afad0008 sw 8(r29),r13 7707 000071a8 201500c8 addi r21,r0,#200 7708 000071ac afb5000c sw 12(r29),r21 7709 000071b0 0ffff5f8 jal _ProcessGetFromFile 7710 000071b4 54000000 nop; not filled. 7711 000071b8 00011820 add r3,r0,r1 7712 000071bc 23bd0010 addi r29,r29,#16 7713 000071c0 6c610000 sgti r1,r3,#0 7714 000071c4 10200098 beqz r1,L368_LF5 7715 000071c8 54000000 nop; not filled. 7716 000071cc 20020000 addi r2,r0,#0 7717 000071d0 0043082a slt r1,r2,r3 7718 000071d4 1020ffb8 beqz r1,L367_LF5 7719 000071d8 54000000 nop; not filled. 7720 000071dc 000b3820 add r7,r0,r11 7721 000071e0 00113020 add r6,r0,r17 7722 000071e4 00122820 add r5,r0,r18 7723 000071e8 000f2020 add r4,r0,r15 7724 000071ec L373_LF5: 7725 000071ec 23bdffe8 addi r29,r29,#-24 7726 000071f0 3c150001 lhi r21,((LC49_LF5)>>16)&0xffff 7727 000071f4 26b50bf4 addui r21,r21,(LC49_LF5)&0xffff 7728 000071f8 afb50000 sw (r29),r21 7729 000071fc 8fc1ff38 lw r1,-200(r30) 7730 00007200 00220820 add r1,r1,r2 7731 00007204 00230822 sub r1,r1,r3 7732 00007208 afa10004 sw 4(r29),r1 7733 0000720c 90810000 lbu r1,(r4) 7734 00007210 afa10008 sw 8(r29),r1 7735 00007214 90a10000 lbu r1,(r5) 7736 00007218 afa1000c sw 12(r29),r1 7737 0000721c 90c10000 lbu r1,(r6) 7738 00007220 afa10010 sw 16(r29),r1 7739 00007224 90e10000 lbu r1,(r7) 7740 00007228 afa10014 sw 20(r29),r1 7741 0000722c 0c003ea0 jal _printf 7742 00007230 54000000 nop; not filled. 7743 00007234 23bd0018 addi r29,r29,#24 7744 00007238 20e70004 addi r7,r7,#4 7745 0000723c 20c60004 addi r6,r6,#4 7746 00007240 20a50004 addi r5,r5,#4 7747 00007244 20840004 addi r4,r4,#4 7748 00007248 20420004 addi r2,r2,#4 7749 0000724c 0043082a slt r1,r2,r3 7750 00007250 1420ff98 bnez r1,L373_LF5 7751 00007254 54000000 nop; not filled. 7752 00007258 0bffff34 j L367_LF5 7753 0000725c 54000000 nop; not filled. 7754 00007260 L368_LF5: 7755 00007260 23bdfff8 addi r29,r29,#-8 7756 00007264 afaa0000 sw (r29),r10 7757 00007268 0c003de0 jal _close 7758 0000726c 54000000 nop; not filled. 7759 00007270 0800003c j L411_LF5 7760 00007274 54000000 nop; not filled. 7761 00007278 L375_LF5: 7762 00007278 21080004 addi r8,r8,#4 7763 0000727c 21290001 addi r9,r9,#1 7764 00007280 8d100000 lw r16,(r8) 7765 00007284 00099820 add r19,r0,r9 7766 00007288 08000028 j L363_LF5 7767 0000728c 54000000 nop; not filled. 7768 00007290 L376_LF5: 7769 00007290 23bdfff8 addi r29,r29,#-8 7770 00007294 3c150001 lhi r21,((LC50_LF5)>>16)&0xffff 7771 00007298 26b50c0c addui r21,r21,(LC50_LF5)&0xffff 7772 0000729c afb50000 sw (r29),r21 7773 000072a0 8d010000 lw r1,(r8) 7774 000072a4 afa10004 sw 4(r29),r1 7775 000072a8 0c003e24 jal _printf 7776 000072ac 54000000 nop; not filled. 7777 000072b0 L411_LF5: 7778 000072b0 23bd0008 addi r29,r29,#8 7779 000072b4 L363_LF5: 7780 000072b4 66010000 snei r1,r16,#0 7781 000072b8 14200018 bnez r1,L359_LF5 7782 000072bc 54000000 nop; not filled. 7783 000072c0 L360_LF5: 7784 000072c0 21080004 addi r8,r8,#4 7785 000072c4 21290001 addi r9,r9,#1 7786 000072c8 012e082a slt r1,r9,r14 7787 000072cc 1420fce8 bnez r1,L361_LF5 7788 000072d0 54000000 nop; not filled. 7789 000072d4 L359_LF5: 7790 000072d4 23bdfff8 addi r29,r29,#-8 7791 000072d8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7792 000072dc 24420d78 addui r2,r2,(_debugstr)&0xffff 7793 000072e0 afa20000 sw (r29),r2 7794 000072e4 20150069 addi r21,r0,#105 7795 000072e8 afb50004 sw 4(r29),r21 7796 000072ec 0fffcb44 jal _dindex 7797 000072f0 54000000 nop; not filled. 7798 000072f4 23bd0008 addi r29,r29,#8 7799 000072f8 64210000 snei r1,r1,#0 7800 000072fc 1420002c bnez r1,L382_LF5 7801 00007300 54000000 nop; not filled. 7802 00007304 23bdfff8 addi r29,r29,#-8 7803 00007308 afa20000 sw (r29),r2 7804 0000730c 2015002b addi r21,r0,#43 7805 00007310 afb50004 sw 4(r29),r21 7806 00007314 0fffcb1c jal _dindex 7807 00007318 54000000 nop; not filled. 7808 0000731c 23bd0008 addi r29,r29,#8 7809 00007320 64210000 snei r1,r1,#0 7810 00007324 10200020 beqz r1,L381_LF5 7811 00007328 54000000 nop; not filled. 7812 0000732c L382_LF5: 7813 0000732c 23bdfff8 addi r29,r29,#-8 7814 00007330 3c150001 lhi r21,((LC51_LF5)>>16)&0xffff 7815 00007334 26b50c28 addui r21,r21,(LC51_LF5)&0xffff 7816 00007338 afb50000 sw (r29),r21 7817 0000733c 0c003d90 jal _printf 7818 00007340 54000000 nop; not filled. 7819 00007344 23bd0008 addi r29,r29,#8 7820 00007348 L381_LF5: 7821 00007348 0c000c64 jal _QueueModuleInit 7822 0000734c 54000000 nop; not filled. 7823 00007350 23bdfff8 addi r29,r29,#-8 7824 00007354 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7825 00007358 24420d78 addui r2,r2,(_debugstr)&0xffff 7826 0000735c afa20000 sw (r29),r2 7827 00007360 20150069 addi r21,r0,#105 7828 00007364 afb50004 sw 4(r29),r21 7829 00007368 0fffcac8 jal _dindex 7830 0000736c 54000000 nop; not filled. 7831 00007370 23bd0008 addi r29,r29,#8 7832 00007374 64210000 snei r1,r1,#0 7833 00007378 1420002c bnez r1,L384_LF5 7834 0000737c 54000000 nop; not filled. 7835 00007380 23bdfff8 addi r29,r29,#-8 7836 00007384 afa20000 sw (r29),r2 7837 00007388 2015002b addi r21,r0,#43 7838 0000738c afb50004 sw 4(r29),r21 7839 00007390 0fffcaa0 jal _dindex 7840 00007394 54000000 nop; not filled. 7841 00007398 23bd0008 addi r29,r29,#8 7842 0000739c 64210000 snei r1,r1,#0 7843 000073a0 10200020 beqz r1,L383_LF5 7844 000073a4 54000000 nop; not filled. 7845 000073a8 L384_LF5: 7846 000073a8 23bdfff8 addi r29,r29,#-8 7847 000073ac 3c150001 lhi r21,((LC52_LF5)>>16)&0xffff 7848 000073b0 26b50c48 addui r21,r21,(LC52_LF5)&0xffff 7849 000073b4 afb50000 sw (r29),r21 7850 000073b8 0c003d14 jal _printf 7851 000073bc 54000000 nop; not filled. 7852 000073c0 23bd0008 addi r29,r29,#8 7853 000073c4 L383_LF5: 7854 000073c4 0fffb7a4 jal _MemoryModuleInit 7855 000073c8 54000000 nop; not filled. 7856 000073cc 23bdfff8 addi r29,r29,#-8 7857 000073d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7858 000073d4 24420d78 addui r2,r2,(_debugstr)&0xffff 7859 000073d8 afa20000 sw (r29),r2 7860 000073dc 20150069 addi r21,r0,#105 7861 000073e0 afb50004 sw 4(r29),r21 7862 000073e4 0fffca4c jal _dindex 7863 000073e8 54000000 nop; not filled. 7864 000073ec 23bd0008 addi r29,r29,#8 7865 000073f0 64210000 snei r1,r1,#0 7866 000073f4 1420002c bnez r1,L386_LF5 7867 000073f8 54000000 nop; not filled. 7868 000073fc 23bdfff8 addi r29,r29,#-8 7869 00007400 afa20000 sw (r29),r2 7870 00007404 2015002b addi r21,r0,#43 7871 00007408 afb50004 sw 4(r29),r21 7872 0000740c 0fffca24 jal _dindex 7873 00007410 54000000 nop; not filled. 7874 00007414 23bd0008 addi r29,r29,#8 7875 00007418 64210000 snei r1,r1,#0 7876 0000741c 10200020 beqz r1,L385_LF5 7877 00007420 54000000 nop; not filled. 7878 00007424 L386_LF5: 7879 00007424 23bdfff8 addi r29,r29,#-8 7880 00007428 3c150001 lhi r21,((LC53_LF5)>>16)&0xffff 7881 0000742c 26b50c64 addui r21,r21,(LC53_LF5)&0xffff 7882 00007430 afb50000 sw (r29),r21 7883 00007434 0c003c98 jal _printf 7884 00007438 54000000 nop; not filled. 7885 0000743c 23bd0008 addi r29,r29,#8 7886 00007440 L385_LF5: 7887 00007440 0fffd2f4 jal _ProcessModuleInit 7888 00007444 54000000 nop; not filled. 7889 00007448 23bdfff8 addi r29,r29,#-8 7890 0000744c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7891 00007450 24420d78 addui r2,r2,(_debugstr)&0xffff 7892 00007454 afa20000 sw (r29),r2 7893 00007458 20150069 addi r21,r0,#105 7894 0000745c afb50004 sw 4(r29),r21 7895 00007460 0fffc9d0 jal _dindex 7896 00007464 54000000 nop; not filled. 7897 00007468 23bd0008 addi r29,r29,#8 7898 0000746c 64210000 snei r1,r1,#0 7899 00007470 1420002c bnez r1,L388_LF5 7900 00007474 54000000 nop; not filled. 7901 00007478 23bdfff8 addi r29,r29,#-8 7902 0000747c afa20000 sw (r29),r2 7903 00007480 2015002b addi r21,r0,#43 7904 00007484 afb50004 sw 4(r29),r21 7905 00007488 0fffc9a8 jal _dindex 7906 0000748c 54000000 nop; not filled. 7907 00007490 23bd0008 addi r29,r29,#8 7908 00007494 64210000 snei r1,r1,#0 7909 00007498 10200020 beqz r1,L387_LF5 7910 0000749c 54000000 nop; not filled. 7911 000074a0 L388_LF5: 7912 000074a0 23bdfff8 addi r29,r29,#-8 7913 000074a4 3c150001 lhi r21,((LC54_LF5)>>16)&0xffff 7914 000074a8 26b50c80 addui r21,r21,(LC54_LF5)&0xffff 7915 000074ac afb50000 sw (r29),r21 7916 000074b0 0c003c1c jal _printf 7917 000074b4 54000000 nop; not filled. 7918 000074b8 23bd0008 addi r29,r29,#8 7919 000074bc L387_LF5: 7920 000074bc 0c00127c jal _SynchModuleInit 7921 000074c0 54000000 nop; not filled. 7922 000074c4 23bdfff8 addi r29,r29,#-8 7923 000074c8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7924 000074cc 24420d78 addui r2,r2,(_debugstr)&0xffff 7925 000074d0 afa20000 sw (r29),r2 7926 000074d4 20150069 addi r21,r0,#105 7927 000074d8 afb50004 sw 4(r29),r21 7928 000074dc 0fffc954 jal _dindex 7929 000074e0 54000000 nop; not filled. 7930 000074e4 23bd0008 addi r29,r29,#8 7931 000074e8 64210000 snei r1,r1,#0 7932 000074ec 1420002c bnez r1,L390_LF5 7933 000074f0 54000000 nop; not filled. 7934 000074f4 23bdfff8 addi r29,r29,#-8 7935 000074f8 afa20000 sw (r29),r2 7936 000074fc 2015002b addi r21,r0,#43 7937 00007500 afb50004 sw 4(r29),r21 7938 00007504 0fffc92c jal _dindex 7939 00007508 54000000 nop; not filled. 7940 0000750c 23bd0008 addi r29,r29,#8 7941 00007510 64210000 snei r1,r1,#0 7942 00007514 10200020 beqz r1,L389_LF5 7943 00007518 54000000 nop; not filled. 7944 0000751c L390_LF5: 7945 0000751c 23bdfff8 addi r29,r29,#-8 7946 00007520 3c150001 lhi r21,((LC55_LF5)>>16)&0xffff 7947 00007524 26b50ca0 addui r21,r21,(LC55_LF5)&0xffff 7948 00007528 afb50000 sw (r29),r21 7949 0000752c 0c003ba0 jal _printf 7950 00007530 54000000 nop; not filled. 7951 00007534 23bd0008 addi r29,r29,#8 7952 00007538 L389_LF5: 7953 00007538 0c001f08 jal _KbdModuleInit 7954 0000753c 54000000 nop; not filled. 7955 00007540 23bdfff8 addi r29,r29,#-8 7956 00007544 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7957 00007548 24420d78 addui r2,r2,(_debugstr)&0xffff 7958 0000754c afa20000 sw (r29),r2 7959 00007550 20150069 addi r21,r0,#105 7960 00007554 afb50004 sw 4(r29),r21 7961 00007558 0fffc8d8 jal _dindex 7962 0000755c 54000000 nop; not filled. 7963 00007560 23bd0008 addi r29,r29,#8 7964 00007564 64210000 snei r1,r1,#0 7965 00007568 1420002c bnez r1,L392_LF5 7966 0000756c 54000000 nop; not filled. 7967 00007570 23bdfff8 addi r29,r29,#-8 7968 00007574 afa20000 sw (r29),r2 7969 00007578 2015002b addi r21,r0,#43 7970 0000757c afb50004 sw 4(r29),r21 7971 00007580 0fffc8b0 jal _dindex 7972 00007584 54000000 nop; not filled. 7973 00007588 23bd0008 addi r29,r29,#8 7974 0000758c 64210000 snei r1,r1,#0 7975 00007590 10200020 beqz r1,L391_LF5 7976 00007594 54000000 nop; not filled. 7977 00007598 L392_LF5: 7978 00007598 23bdfff8 addi r29,r29,#-8 7979 0000759c 3c150001 lhi r21,((LC56_LF5)>>16)&0xffff 7980 000075a0 26b50ccc addui r21,r21,(LC56_LF5)&0xffff 7981 000075a4 afb50000 sw (r29),r21 7982 000075a8 0c003b24 jal _printf 7983 000075ac 54000000 nop; not filled. 7984 000075b0 23bd0008 addi r29,r29,#8 7985 000075b4 L391_LF5: 7986 000075b4 23c2ff80 addi r2,r30,#-128 7987 000075b8 23c3ffe3 addi r3,r30,#-29 7988 000075bc L396_LF5: 7989 000075bc 20150061 addi r21,r0,(#0x61)&0xff 7990 000075c0 a0550000 sb (r2),r21 7991 000075c4 20420001 addi r2,r2,#1 7992 000075c8 0043082c sle r1,r2,r3 7993 000075cc 1420ffec bnez r1,L396_LF5 7994 000075d0 54000000 nop; not filled. 7995 000075d4 23bdfff8 addi r29,r29,#-8 7996 000075d8 3c150001 lhi r21,((LC57_LF5)>>16)&0xffff 7997 000075dc 26b50cec addui r21,r21,(LC57_LF5)&0xffff 7998 000075e0 afb50000 sw (r29),r21 7999 000075e4 20150002 addi r21,r0,#2 8000 000075e8 afb50004 sw 4(r29),r21 8001 000075ec 0fffa1a8 jal _FsOpen 8002 000075f0 54000000 nop; not filled. 8003 000075f4 00014820 add r9,r0,r1 8004 000075f8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8005 000075fc 24420d78 addui r2,r2,(_debugstr)&0xffff 8006 00007600 afa20000 sw (r29),r2 8007 00007604 20150069 addi r21,r0,#105 8008 00007608 afb50004 sw 4(r29),r21 8009 0000760c 0fffc824 jal _dindex 8010 00007610 54000000 nop; not filled. 8011 00007614 23bd0008 addi r29,r29,#8 8012 00007618 64210000 snei r1,r1,#0 8013 0000761c 1420002c bnez r1,L399_LF5 8014 00007620 54000000 nop; not filled. 8015 00007624 23bdfff8 addi r29,r29,#-8 8016 00007628 afa20000 sw (r29),r2 8017 0000762c 2015002b addi r21,r0,#43 8018 00007630 afb50004 sw 4(r29),r21 8019 00007634 0fffc7fc jal _dindex 8020 00007638 54000000 nop; not filled. 8021 0000763c 23bd0008 addi r29,r29,#8 8022 00007640 64210000 snei r1,r1,#0 8023 00007644 10200024 beqz r1,L398_LF5 8024 00007648 54000000 nop; not filled. 8025 0000764c L399_LF5: 8026 0000764c 23bdfff8 addi r29,r29,#-8 8027 00007650 3c150001 lhi r21,((LC58_LF5)>>16)&0xffff 8028 00007654 26b50cf0 addui r21,r21,(LC58_LF5)&0xffff 8029 00007658 afb50000 sw (r29),r21 8030 0000765c afa90004 sw 4(r29),r9 8031 00007660 0c003a6c jal _printf 8032 00007664 54000000 nop; not filled. 8033 00007668 23bd0008 addi r29,r29,#8 8034 0000766c L398_LF5: 8035 0000766c 23bdfff0 addi r29,r29,#-16 8036 00007670 afa90000 sw (r29),r9 8037 00007674 20150000 addi r21,r0,#0 8038 00007678 afb50004 sw 4(r29),r21 8039 0000767c afb50008 sw 8(r29),r21 8040 00007680 0fffa770 jal _FsSeek 8041 00007684 54000000 nop; not filled. 8042 00007688 afa90000 sw (r29),r9 8043 0000768c 23c1ff80 addi r1,r30,#-128 8044 00007690 afa10004 sw 4(r29),r1 8045 00007694 20150050 addi r21,r0,#80 8046 00007698 afb50008 sw 8(r29),r21 8047 0000769c 0fffa658 jal _FsWrite 8048 000076a0 54000000 nop; not filled. 8049 000076a4 afa90000 sw (r29),r9 8050 000076a8 0fffa448 jal _FsClose 8051 000076ac 54000000 nop; not filled. 8052 000076b0 23bd0010 addi r29,r29,#16 8053 000076b4 66010000 snei r1,r16,#0 8054 000076b8 102000c4 beqz r1,L400_LF5 8055 000076bc 54000000 nop; not filled. 8056 000076c0 00134820 add r9,r0,r19 8057 000076c4 026e082a slt r1,r19,r14 8058 000076c8 10200044 beqz r1,L402_LF5 8059 000076cc 54000000 nop; not filled. 8060 000076d0 23c4fff8 addi r4,r30,#-8 8061 000076d4 51210002 slli r1,r9,#0x2 8062 000076d8 00341820 add r3,r1,r20 8063 000076dc L406_LF5: 8064 000076dc 01331022 sub r2,r9,r19 8065 000076e0 7041000a slei r1,r2,#10 8066 000076e4 10200028 beqz r1,L402_LF5 8067 000076e8 54000000 nop; not filled. 8068 000076ec 50410002 slli r1,r2,#0x2 8069 000076f0 00240820 add r1,r1,r4 8070 000076f4 8c750000 lw r21,(r3) 8071 000076f8 ac35ff58 sw -168(r1),r21 8072 000076fc 20630004 addi r3,r3,#4 8073 00007700 21290001 addi r9,r9,#1 8074 00007704 012e082a slt r1,r9,r14 8075 00007708 1420ffd0 bnez r1,L406_LF5 8076 0000770c 54000000 nop; not filled. 8077 00007710 L402_LF5: 8078 00007710 23bdffd0 addi r29,r29,#-48 8079 00007714 8fd5ff50 lw r21,-176(r30) 8080 00007718 afb50000 sw (r29),r21 8081 0000771c 8fc1ff54 lw r1,-172(r30) 8082 00007720 afa10004 sw 4(r29),r1 8083 00007724 8fd5ff58 lw r21,-168(r30) 8084 00007728 afb50008 sw 8(r29),r21 8085 0000772c 8fd5ff5c lw r21,-164(r30) 8086 00007730 afb5000c sw 12(r29),r21 8087 00007734 8fd5ff60 lw r21,-160(r30) 8088 00007738 afb50010 sw 16(r29),r21 8089 0000773c 8fd5ff64 lw r21,-156(r30) 8090 00007740 afb50014 sw 20(r29),r21 8091 00007744 8fd5ff68 lw r21,-152(r30) 8092 00007748 afb50018 sw 24(r29),r21 8093 0000774c 8fd5ff6c lw r21,-148(r30) 8094 00007750 afb5001c sw 28(r29),r21 8095 00007754 8fd5ff70 lw r21,-144(r30) 8096 00007758 afb50020 sw 32(r29),r21 8097 0000775c 8fd5ff74 lw r21,-140(r30) 8098 00007760 afb50024 sw 36(r29),r21 8099 00007764 8fd5ff78 lw r21,-136(r30) 8100 00007768 afb50028 sw 40(r29),r21 8101 0000776c 8fd5ff7c lw r21,-132(r30) 8102 00007770 afb5002c sw 44(r29),r21 8103 00007774 0c000220 jal _process_create 8104 00007778 54000000 nop; not filled. 8105 0000777c 23bd0030 addi r29,r29,#48 8106 00007780 L400_LF5: 8107 00007780 0c003834 jal _SysprocCreateProcesses 8108 00007784 54000000 nop; not filled. 8109 00007788 23bdfff8 addi r29,r29,#-8 8110 0000778c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8111 00007790 24420d78 addui r2,r2,(_debugstr)&0xffff 8112 00007794 afa20000 sw (r29),r2 8113 00007798 20150069 addi r21,r0,#105 8114 0000779c afb50004 sw 4(r29),r21 8115 000077a0 0fffc690 jal _dindex 8116 000077a4 54000000 nop; not filled. 8117 000077a8 23bd0008 addi r29,r29,#8 8118 000077ac 64210000 snei r1,r1,#0 8119 000077b0 1420002c bnez r1,L408_LF5 8120 000077b4 54000000 nop; not filled. 8121 000077b8 23bdfff8 addi r29,r29,#-8 8122 000077bc afa20000 sw (r29),r2 8123 000077c0 2015002b addi r21,r0,#43 8124 000077c4 afb50004 sw 4(r29),r21 8125 000077c8 0fffc668 jal _dindex 8126 000077cc 54000000 nop; not filled. 8127 000077d0 23bd0008 addi r29,r29,#8 8128 000077d4 64210000 snei r1,r1,#0 8129 000077d8 10200020 beqz r1,L407_LF5 8130 000077dc 54000000 nop; not filled. 8131 000077e0 L408_LF5: 8132 000077e0 23bdfff8 addi r29,r29,#-8 8133 000077e4 3c150001 lhi r21,((LC59_LF5)>>16)&0xffff 8134 000077e8 26b50d08 addui r21,r21,(LC59_LF5)&0xffff 8135 000077ec afb50000 sw (r29),r21 8136 000077f0 0c0038dc jal _printf 8137 000077f4 54000000 nop; not filled. 8138 000077f8 23bd0008 addi r29,r29,#8 8139 000077fc L407_LF5: 8140 000077fc 23bdfff8 addi r29,r29,#-8 8141 00007800 3c030001 lhi r3,((_processQuantum_LF5)>>16)&0xffff 8142 00007804 24630438 addui r3,r3,(_processQuantum_LF5)&0xffff 8143 00007808 8c750000 lw r21,(r3) 8144 0000780c afb50000 sw (r29),r21 8145 00007810 0c001bfc jal _TimerSet 8146 00007814 54000000 nop; not filled. 8147 00007818 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8148 0000781c 24420d78 addui r2,r2,(_debugstr)&0xffff 8149 00007820 afa20000 sw (r29),r2 8150 00007824 20150069 addi r21,r0,#105 8151 00007828 afb50004 sw 4(r29),r21 8152 0000782c 0fffc604 jal _dindex 8153 00007830 54000000 nop; not filled. 8154 00007834 23bd0008 addi r29,r29,#8 8155 00007838 64210000 snei r1,r1,#0 8156 0000783c 1420002c bnez r1,L410_LF5 8157 00007840 54000000 nop; not filled. 8158 00007844 23bdfff8 addi r29,r29,#-8 8159 00007848 afa20000 sw (r29),r2 8160 0000784c 2015002b addi r21,r0,#43 8161 00007850 afb50004 sw 4(r29),r21 8162 00007854 0fffc5dc jal _dindex 8163 00007858 54000000 nop; not filled. 8164 0000785c 23bd0008 addi r29,r29,#8 8165 00007860 64210000 snei r1,r1,#0 8166 00007864 10200028 beqz r1,L409_LF5 8167 00007868 54000000 nop; not filled. 8168 0000786c L410_LF5: 8169 0000786c 23bdfff8 addi r29,r29,#-8 8170 00007870 3c150001 lhi r21,((LC60_LF5)>>16)&0xffff 8171 00007874 26b50d3c addui r21,r21,(LC60_LF5)&0xffff 8172 00007878 afb50000 sw (r29),r21 8173 0000787c 8c610000 lw r1,(r3) 8174 00007880 afa10004 sw 4(r29),r1 8175 00007884 0c003848 jal _printf 8176 00007888 54000000 nop; not filled. 8177 0000788c 23bd0008 addi r29,r29,#8 8178 00007890 L409_LF5: 8179 00007890 0fff98d4 jal _intrreturn 8180 00007894 54000000 nop; not filled. 8181 00007898 0c00381c jal _exitsim 8182 0000789c 54000000 nop; not filled. 8183 000078a0 0c003820 jal _exit 8184 000078a4 54000000 nop 8185 000078a8 .endproc _main 8186 000078a8 .data 8187 00010d72 .align 2 8188 00010d74 LC62_LF5: 8189 00010d74 00000000 .word 0x00000000 8190 ;; 0.0000000e+00 8191 00010d78 .text 8192 000078a8 .align 2 8193 000078a8 .proc _MyFuncRetZero 8194 000078a8 .global _MyFuncRetZero 8195 000078a8 _MyFuncRetZero: 8196 ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. 8197 000078a8 afbefffc sw -4(r29),r30; push fp 8198 000078ac 001df020 add r30,r0,r29; fp = sp 8199 000078b0 afbffff8 sw -8(r29),r31; push ret addr 8200 000078b4 2fbd0008 subui r29,r29,#8; alloc local storage 8201 000078b8 3c010001 lhi r1,((LC62_LF5)>>16)&0xffff 8202 000078bc 24210d74 addui r1,r1,(LC62_LF5)&0xffff 8203 000078c0 98200000 lf f0,(r1) 8204 000078c4 8fdffff8 lw r31,-8(r30) 8205 000078c8 001ee820 add r29,r0,r30 8206 000078cc 8fdefffc lw r30,-4(r30) 8207 000078d0 4be00000 jr r31 8208 000078d4 54000000 nop 8209 000078d8 .endproc _MyFuncRetZero 8210 000078d8 .align 2 8211 000078d8 .proc _GetCurrentPid 8212 000078d8 .global _GetCurrentPid 8213 000078d8 _GetCurrentPid: 8214 ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. 8215 000078d8 afbefffc sw -4(r29),r30; push fp 8216 000078dc 001df020 add r30,r0,r29; fp = sp 8217 000078e0 afbffff8 sw -8(r29),r31; push ret addr 8218 000078e4 2fbd0010 subui r29,r29,#16; alloc local storage 8219 000078e8 afa20000 sw 0(r29),r2 8220 000078ec 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 8221 000078f0 24210e40 addui r1,r1,(_currentPCB)&0xffff 8222 000078f4 8c210000 lw r1,(r1) 8223 000078f8 3c1f0001 lhi r31,((_pcbs_LF5)>>16)&0xffff 8224 000078fc 27ff0e74 addui r31,r31,(_pcbs_LF5)&0xffff 8225 00007900 003f1022 sub r2,r1,r31 8226 00007904 50410004 slli r1,r2,#0x4 8227 00007908 00221020 add r2,r1,r2 8228 0000790c 50410008 slli r1,r2,#0x8 8229 00007910 00411020 add r2,r2,r1 8230 00007914 50410010 slli r1,r2,#0x10 8231 00007918 00410820 add r1,r2,r1 8232 0000791c 00010822 sub r1,r0,r1 8233 00007920 5c210003 srai r1,r1,#0x3 8234 00007924 8fa20000 lw r2,0(r29) 8235 00007928 8fdffff8 lw r31,-8(r30) 8236 0000792c 001ee820 add r29,r0,r30 8237 00007930 8fdefffc lw r30,-4(r30) 8238 00007934 4be00000 jr r31 8239 00007938 54000000 nop 8240 0000793c .endproc _GetCurrentPid 8241 0000793c .align 2 8242 0000793c .proc _findpid 8243 0000793c .global _findpid 8244 0000793c _findpid: 8245 ; Function 'findpid'; 0 bytes of locals, 1 regs to save. 8246 0000793c afbefffc sw -4(r29),r30; push fp 8247 00007940 001df020 add r30,r0,r29; fp = sp 8248 00007944 afbffff8 sw -8(r29),r31; push ret addr 8249 00007948 2fbd0010 subui r29,r29,#16; alloc local storage 8250 0000794c afa20000 sw 0(r29),r2 8251 00007950 8fc10000 lw r1,(r30) 8252 00007954 3c1f0001 lhi r31,((_pcbs_LF5)>>16)&0xffff 8253 00007958 27ff0e74 addui r31,r31,(_pcbs_LF5)&0xffff 8254 0000795c 003f1022 sub r2,r1,r31 8255 00007960 50410004 slli r1,r2,#0x4 8256 00007964 00221020 add r2,r1,r2 8257 00007968 50410008 slli r1,r2,#0x8 8258 0000796c 00411020 add r2,r2,r1 8259 00007970 50410010 slli r1,r2,#0x10 8260 00007974 00410820 add r1,r2,r1 8261 00007978 00010822 sub r1,r0,r1 8262 0000797c 5c210003 srai r1,r1,#0x3 8263 00007980 8fa20000 lw r2,0(r29) 8264 00007984 8fdffff8 lw r31,-8(r30) 8265 00007988 001ee820 add r29,r0,r30 8266 0000798c 8fdefffc lw r30,-4(r30) 8267 00007990 4be00000 jr r31 8268 00007994 54000000 nop 8269 00007998 .endproc _findpid 8270 00007998 .align 2 8271 00007998 .proc _process_create 8272 00007998 .global _process_create 8273 00007998 _process_create: 8274 ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. 8275 00007998 afbefffc sw -4(r29),r30; push fp 8276 0000799c 001df020 add r30,r0,r29; fp = sp 8277 000079a0 afbffff8 sw -8(r29),r31; push ret addr 8278 000079a4 2fbd0408 subui r29,r29,#1032; alloc local storage 8279 000079a8 afa20000 sw 0(r29),r2 8280 000079ac afa30004 sw 4(r29),r3 8281 000079b0 afa40008 sw 8(r29),r4 8282 000079b4 afa5000c sw 12(r29),r5 8283 000079b8 afa60010 sw 16(r29),r6 8284 000079bc 20040000 addi r4,r0,#0 8285 000079c0 8fc10000 lw r1,(r30) 8286 000079c4 64210000 snei r1,r1,#0 8287 000079c8 1020005c beqz r1,L420_LF5 8288 000079cc 54000000 nop; not filled. 8289 000079d0 23c5fc10 addi r5,r30,#-1008 8290 000079d4 001ef820 add r31,r0,r30 8291 000079d8 L422_LF5: 8292 000079d8 20020000 addi r2,r0,#0 8293 000079dc 00851820 add r3,r4,r5 8294 000079e0 L423_LF5: 8295 000079e0 8fe10000 lw r1,(r31) 8296 000079e4 00220820 add r1,r1,r2 8297 000079e8 80210000 lb r1,(r1) 8298 000079ec a0610000 sb (r3),r1 8299 000079f0 20420001 addi r2,r2,#1 8300 000079f4 20630001 addi r3,r3,#1 8301 000079f8 20840001 addi r4,r4,#1 8302 000079fc 8fe10000 lw r1,(r31) 8303 00007a00 00410820 add r1,r2,r1 8304 00007a04 9021ffff lbu r1,-1(r1) 8305 00007a08 64210000 snei r1,r1,#0 8306 00007a0c 1420ffd0 bnez r1,L423_LF5 8307 00007a10 54000000 nop; not filled. 8308 00007a14 23ff0004 addi r31,r31,#4 8309 00007a18 8fe10000 lw r1,(r31) 8310 00007a1c 64210000 snei r1,r1,#0 8311 00007a20 1420ffb4 bnez r1,L422_LF5 8312 00007a24 54000000 nop; not filled. 8313 00007a28 L420_LF5: 8314 00007a28 23c3fc10 addi r3,r30,#-1008 8315 00007a2c 00641020 add r2,r3,r4 8316 00007a30 23c1fc11 addi r1,r30,#-1007 8317 00007a34 00240820 add r1,r1,r4 8318 00007a38 20060000 addi r6,r0,(#0x0)&0xff 8319 00007a3c a0260000 sb (r1),r6 8320 00007a40 a0460000 sb (r2),r6 8321 00007a44 23bdfff0 addi r29,r29,#-16 8322 00007a48 20060000 addi r6,r0,#0 8323 00007a4c afa60000 sw (r29),r6 8324 00007a50 afa30004 sw 4(r29),r3 8325 00007a54 8fc60000 lw r6,(r30) 8326 00007a58 afa60008 sw 8(r29),r6 8327 00007a5c 20060001 addi r6,r0,#1 8328 00007a60 afa6000c sw 12(r29),r6 8329 00007a64 0fffdb64 jal _ProcessFork 8330 00007a68 54000000 nop; not filled. 8331 00007a6c 23bd0010 addi r29,r29,#16 8332 00007a70 8fa20000 lw r2,0(r29) 8333 00007a74 8fa30004 lw r3,4(r29) 8334 00007a78 8fa40008 lw r4,8(r29) 8335 00007a7c 8fa5000c lw r5,12(r29) 8336 00007a80 8fa60010 lw r6,16(r29) 8337 00007a84 8fdffff8 lw r31,-8(r30) 8338 00007a88 001ee820 add r29,r0,r30 8339 00007a8c 8fdefffc lw r30,-4(r30) 8340 00007a90 4be00000 jr r31 8341 00007a94 54000000 nop 8342 00007a98 .endproc _process_create 8343 00007a98 .align 2 8344 00007a98 .proc _ProcessKill 8345 00007a98 .global _ProcessKill 8346 00007a98 _ProcessKill: 8347 ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. 8348 00007a98 afbefffc sw -4(r29),r30; push fp 8349 00007a9c 001df020 add r30,r0,r29; fp = sp 8350 00007aa0 afbffff8 sw -8(r29),r31; push ret addr 8351 00007aa4 2fbd0008 subui r29,r29,#8; alloc local storage 8352 00007aa8 0fffd0a0 jal _ProcessSchedule 8353 00007aac 54000000 nop; not filled. 8354 00007ab0 8fdffff8 lw r31,-8(r30) 8355 00007ab4 001ee820 add r29,r0,r30 8356 00007ab8 8fdefffc lw r30,-4(r30) 8357 00007abc 4be00000 jr r31 8358 00007ac0 54000000 nop 8359 00007ac4 .endproc _ProcessKill 8360 00007ac4 .align 2 8361 00007ac4 .proc _PageFaultHandler 8362 00007ac4 .global _PageFaultHandler 8363 00007ac4 _PageFaultHandler: 8364 ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. 8365 00007ac4 afbefffc sw -4(r29),r30; push fp 8366 00007ac8 001df020 add r30,r0,r29; fp = sp 8367 00007acc afbffff8 sw -8(r29),r31; push ret addr 8368 00007ad0 2fbd0008 subui r29,r29,#8; alloc local storage 8369 00007ad4 8fdffff8 lw r31,-8(r30) 8370 00007ad8 001ee820 add r29,r0,r30 8371 00007adc 8fdefffc lw r30,-4(r30) 8372 00007ae0 4be00000 jr r31 8373 00007ae4 54000000 nop 8374 00007ae8 .endproc _PageFaultHandler 8375 00007ae8 .data 8376 00010d78 .global _debugstr 8377 00010d78 _debugstr: 8378 00010d78 .space 200 8379 00010e40 .align 2 8380 00010e40 .global _currentPCB 8381 00010e40 _currentPCB: 8382 00010e40 .space 4 8383 00010e44 .align 2 8384 00010e44 _freepcbs_LF5: 8385 00010e44 .space 12 8386 00010e50 .align 2 8387 00010e50 _runQueue_LF5: 8388 00010e50 .space 12 8389 00010e5c .align 2 8390 00010e5c _waitQueue_LF5: 8391 00010e5c .space 12 8392 00010e68 .align 2 8393 00010e68 _zombieQueue_LF5: 8394 00010e68 .space 12 8395 00010e74 .align 2 8396 00010e74 _pcbs_LF5: 8397 00010e74 .space 3840 8398 00011d74 .text 8399 00007ae8 .align 2 8400 00007ae8 .proc _ProcessExit_LF5 8401 00007ae8 _ProcessExit_LF5: 8402 ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. 8403 00007ae8 afbefffc sw -4(r29),r30; push fp 8404 00007aec 001df020 add r30,r0,r29; fp = sp 8405 00007af0 afbffff8 sw -8(r29),r31; push ret addr 8406 00007af4 2fbd0008 subui r29,r29,#8; alloc local storage 8407 00007af8 0c0035c8 jal _exit 8408 00007afc 54000000 nop; not filled. 8409 00007b00 8fdffff8 lw r31,-8(r30) 8410 00007b04 001ee820 add r29,r0,r30 8411 00007b08 8fdefffc lw r30,-4(r30) 8412 00007b0c 4be00000 jr r31 8413 00007b10 54000000 nop 8414 00007b14 .endproc _ProcessExit_LF5 8415 ; Compiled by GCC 8417 00007b14 .align 2 8418 00007b14 .proc _isspace 8419 00007b14 .global _isspace 8420 00007b14 _isspace: 8421 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 8422 00007b14 afbefffc sw -4(r29),r30; push fp 8423 00007b18 001df020 add r30,r0,r29; fp = sp 8424 00007b1c afbffff8 sw -8(r29),r31; push ret addr 8425 00007b20 2fbd0010 subui r29,r29,#16; alloc local storage 8426 00007b24 afa20000 sw 0(r29),r2 8427 00007b28 83c20003 lb r2,3(r30) 8428 00007b2c 201f0000 addi r31,r0,#0 8429 00007b30 304100ff andi r1,r2,#0x00ff 8430 00007b34 60210020 seqi r1,r1,#32 8431 00007b38 14200018 bnez r1,L6_LF6 8432 00007b3c 54000000 nop; not filled. 8433 00007b40 2041fff7 addi r1,r2,#-9 8434 00007b44 302100ff andi r1,r1,#0x00ff 8435 00007b48 70210001 sleui r1,r1,#1 8436 00007b4c 10200008 beqz r1,L5_LF6 8437 00007b50 54000000 nop; not filled. 8438 00007b54 L6_LF6: 8439 00007b54 201f0001 addi r31,r0,#1 8440 00007b58 L5_LF6: 8441 00007b58 001f0820 add r1,r0,r31 8442 00007b5c 8fa20000 lw r2,0(r29) 8443 00007b60 8fdffff8 lw r31,-8(r30) 8444 00007b64 001ee820 add r29,r0,r30 8445 00007b68 8fdefffc lw r30,-4(r30) 8446 00007b6c 4be00000 jr r31 8447 00007b70 54000000 nop 8448 00007b74 .endproc _isspace 8449 00007b74 .align 2 8450 00007b74 .proc _isxdigit 8451 00007b74 .global _isxdigit 8452 00007b74 _isxdigit: 8453 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 8454 00007b74 afbefffc sw -4(r29),r30; push fp 8455 00007b78 001df020 add r30,r0,r29; fp = sp 8456 00007b7c afbffff8 sw -8(r29),r31; push ret addr 8457 00007b80 2fbd0010 subui r29,r29,#16; alloc local storage 8458 00007b84 afa20000 sw 0(r29),r2 8459 00007b88 83df0003 lb r31,3(r30) 8460 00007b8c 20020000 addi r2,r0,#0 8461 00007b90 23e1ffd0 addi r1,r31,#-48 8462 00007b94 302100ff andi r1,r1,#0x00ff 8463 00007b98 70210009 sleui r1,r1,#9 8464 00007b9c 14200028 bnez r1,L12_LF6 8465 00007ba0 54000000 nop; not filled. 8466 00007ba4 23e1ff9f addi r1,r31,#-97 8467 00007ba8 302100ff andi r1,r1,#0x00ff 8468 00007bac 70210005 sleui r1,r1,#5 8469 00007bb0 14200014 bnez r1,L12_LF6 8470 00007bb4 54000000 nop; not filled. 8471 00007bb8 33e100ff andi r1,r31,#0x00ff 8472 00007bbc 64210041 snei r1,r1,#65 8473 00007bc0 14200008 bnez r1,L11_LF6 8474 00007bc4 54000000 nop; not filled. 8475 00007bc8 L12_LF6: 8476 00007bc8 20020001 addi r2,r0,#1 8477 00007bcc L11_LF6: 8478 00007bcc 00020820 add r1,r0,r2 8479 00007bd0 8fa20000 lw r2,0(r29) 8480 00007bd4 8fdffff8 lw r31,-8(r30) 8481 00007bd8 001ee820 add r29,r0,r30 8482 00007bdc 8fdefffc lw r30,-4(r30) 8483 00007be0 4be00000 jr r31 8484 00007be4 54000000 nop 8485 00007be8 .endproc _isxdigit 8486 00007be8 .align 2 8487 00007be8 .proc _DisableIntrs 8488 00007be8 .global _DisableIntrs 8489 00007be8 _DisableIntrs: 8490 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 8491 00007be8 afbefffc sw -4(r29),r30; push fp 8492 00007bec 001df020 add r30,r0,r29; fp = sp 8493 00007bf0 afbffff8 sw -8(r29),r31; push ret addr 8494 00007bf4 2fbd0010 subui r29,r29,#16; alloc local storage 8495 00007bf8 afa20000 sw 0(r29),r2 8496 00007bfc 23bdfff8 addi r29,r29,#-8 8497 00007c00 2002000f addi r2,r0,#15 8498 00007c04 afa20000 sw (r29),r2 8499 00007c08 0fff967c jal _SetIntrs 8500 00007c0c 54000000 nop; not filled. 8501 00007c10 23bd0008 addi r29,r29,#8 8502 00007c14 8fa20000 lw r2,0(r29) 8503 00007c18 8fdffff8 lw r31,-8(r30) 8504 00007c1c 001ee820 add r29,r0,r30 8505 00007c20 8fdefffc lw r30,-4(r30) 8506 00007c24 4be00000 jr r31 8507 00007c28 54000000 nop 8508 00007c2c .endproc _DisableIntrs 8509 00007c2c .align 2 8510 00007c2c .proc _EnableIntrs 8511 00007c2c .global _EnableIntrs 8512 00007c2c _EnableIntrs: 8513 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 8514 00007c2c afbefffc sw -4(r29),r30; push fp 8515 00007c30 001df020 add r30,r0,r29; fp = sp 8516 00007c34 afbffff8 sw -8(r29),r31; push ret addr 8517 00007c38 2fbd0010 subui r29,r29,#16; alloc local storage 8518 00007c3c afa20000 sw 0(r29),r2 8519 00007c40 23bdfff8 addi r29,r29,#-8 8520 00007c44 20020000 addi r2,r0,#0 8521 00007c48 afa20000 sw (r29),r2 8522 00007c4c 0fff9638 jal _SetIntrs 8523 00007c50 54000000 nop; not filled. 8524 00007c54 23bd0008 addi r29,r29,#8 8525 00007c58 8fa20000 lw r2,0(r29) 8526 00007c5c 8fdffff8 lw r31,-8(r30) 8527 00007c60 001ee820 add r29,r0,r30 8528 00007c64 8fdefffc lw r30,-4(r30) 8529 00007c68 4be00000 jr r31 8530 00007c6c 54000000 nop 8531 00007c70 .endproc _EnableIntrs 8532 00007c70 .align 2 8533 00007c70 .proc _RestoreIntrs 8534 00007c70 .global _RestoreIntrs 8535 00007c70 _RestoreIntrs: 8536 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 8537 00007c70 afbefffc sw -4(r29),r30; push fp 8538 00007c74 001df020 add r30,r0,r29; fp = sp 8539 00007c78 afbffff8 sw -8(r29),r31; push ret addr 8540 00007c7c 2fbd0010 subui r29,r29,#16; alloc local storage 8541 00007c80 afa20000 sw 0(r29),r2 8542 00007c84 23bdfff8 addi r29,r29,#-8 8543 00007c88 8fc20000 lw r2,(r30) 8544 00007c8c afa20000 sw (r29),r2 8545 00007c90 0fff95f4 jal _SetIntrs 8546 00007c94 54000000 nop; not filled. 8547 00007c98 23bd0008 addi r29,r29,#8 8548 00007c9c 8fa20000 lw r2,0(r29) 8549 00007ca0 8fdffff8 lw r31,-8(r30) 8550 00007ca4 001ee820 add r29,r0,r30 8551 00007ca8 8fdefffc lw r30,-4(r30) 8552 00007cac 4be00000 jr r31 8553 00007cb0 54000000 nop 8554 00007cb4 .endproc _RestoreIntrs 8555 00007cb4 .align 2 8556 00007cb4 .proc _QueueLinkInit 8557 00007cb4 .global _QueueLinkInit 8558 00007cb4 _QueueLinkInit: 8559 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 8560 00007cb4 afbefffc sw -4(r29),r30; push fp 8561 00007cb8 001df020 add r30,r0,r29; fp = sp 8562 00007cbc afbffff8 sw -8(r29),r31; push ret addr 8563 00007cc0 2fbd0010 subui r29,r29,#16; alloc local storage 8564 00007cc4 afa20000 sw 0(r29),r2 8565 00007cc8 8fc10000 lw r1,(r30) 8566 00007ccc 8fc20004 lw r2,4(r30) 8567 00007cd0 201f0000 addi r31,r0,#0 8568 00007cd4 ac3f0000 sw (r1),r31 8569 00007cd8 ac22000c sw 12(r1),r2 8570 00007cdc 8fa20000 lw r2,0(r29) 8571 00007ce0 8fdffff8 lw r31,-8(r30) 8572 00007ce4 001ee820 add r29,r0,r30 8573 00007ce8 8fdefffc lw r30,-4(r30) 8574 00007cec 4be00000 jr r31 8575 00007cf0 54000000 nop 8576 00007cf4 .endproc _QueueLinkInit 8577 00007cf4 .align 2 8578 00007cf4 .proc _QueueNext 8579 00007cf4 .global _QueueNext 8580 00007cf4 _QueueNext: 8581 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 8582 00007cf4 afbefffc sw -4(r29),r30; push fp 8583 00007cf8 001df020 add r30,r0,r29; fp = sp 8584 00007cfc afbffff8 sw -8(r29),r31; push ret addr 8585 00007d00 2fbd0008 subui r29,r29,#8; alloc local storage 8586 00007d04 8fc10000 lw r1,(r30) 8587 00007d08 8c210000 lw r1,(r1) 8588 00007d0c 8fdffff8 lw r31,-8(r30) 8589 00007d10 001ee820 add r29,r0,r30 8590 00007d14 8fdefffc lw r30,-4(r30) 8591 00007d18 4be00000 jr r31 8592 00007d1c 54000000 nop 8593 00007d20 .endproc _QueueNext 8594 00007d20 .align 2 8595 00007d20 .proc _QueuePrev 8596 00007d20 .global _QueuePrev 8597 00007d20 _QueuePrev: 8598 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 8599 00007d20 afbefffc sw -4(r29),r30; push fp 8600 00007d24 001df020 add r30,r0,r29; fp = sp 8601 00007d28 afbffff8 sw -8(r29),r31; push ret addr 8602 00007d2c 2fbd0008 subui r29,r29,#8; alloc local storage 8603 00007d30 8fc10000 lw r1,(r30) 8604 00007d34 8c210004 lw r1,4(r1) 8605 00007d38 8fdffff8 lw r31,-8(r30) 8606 00007d3c 001ee820 add r29,r0,r30 8607 00007d40 8fdefffc lw r30,-4(r30) 8608 00007d44 4be00000 jr r31 8609 00007d48 54000000 nop 8610 00007d4c .endproc _QueuePrev 8611 00007d4c .align 2 8612 00007d4c .proc _QueueFirst 8613 00007d4c .global _QueueFirst 8614 00007d4c _QueueFirst: 8615 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 8616 00007d4c afbefffc sw -4(r29),r30; push fp 8617 00007d50 001df020 add r30,r0,r29; fp = sp 8618 00007d54 afbffff8 sw -8(r29),r31; push ret addr 8619 00007d58 2fbd0008 subui r29,r29,#8; alloc local storage 8620 00007d5c 8fc10000 lw r1,(r30) 8621 00007d60 8c210000 lw r1,(r1) 8622 00007d64 8fdffff8 lw r31,-8(r30) 8623 00007d68 001ee820 add r29,r0,r30 8624 00007d6c 8fdefffc lw r30,-4(r30) 8625 00007d70 4be00000 jr r31 8626 00007d74 54000000 nop 8627 00007d78 .endproc _QueueFirst 8628 00007d78 .align 2 8629 00007d78 .proc _QueueLast 8630 00007d78 .global _QueueLast 8631 00007d78 _QueueLast: 8632 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 8633 00007d78 afbefffc sw -4(r29),r30; push fp 8634 00007d7c 001df020 add r30,r0,r29; fp = sp 8635 00007d80 afbffff8 sw -8(r29),r31; push ret addr 8636 00007d84 2fbd0008 subui r29,r29,#8; alloc local storage 8637 00007d88 8fc10000 lw r1,(r30) 8638 00007d8c 8c210004 lw r1,4(r1) 8639 00007d90 8fdffff8 lw r31,-8(r30) 8640 00007d94 001ee820 add r29,r0,r30 8641 00007d98 8fdefffc lw r30,-4(r30) 8642 00007d9c 4be00000 jr r31 8643 00007da0 54000000 nop 8644 00007da4 .endproc _QueueLast 8645 00007da4 .align 2 8646 00007da4 .proc _QueueInsertAfter 8647 00007da4 .global _QueueInsertAfter 8648 00007da4 _QueueInsertAfter: 8649 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 8650 00007da4 afbefffc sw -4(r29),r30; push fp 8651 00007da8 001df020 add r30,r0,r29; fp = sp 8652 00007dac afbffff8 sw -8(r29),r31; push ret addr 8653 00007db0 2fbd0010 subui r29,r29,#16; alloc local storage 8654 00007db4 afa20000 sw 0(r29),r2 8655 00007db8 afa30004 sw 4(r29),r3 8656 00007dbc 8fc30000 lw r3,(r30) 8657 00007dc0 8fc20004 lw r2,4(r30) 8658 00007dc4 8fc10008 lw r1,8(r30) 8659 00007dc8 ac230008 sw 8(r1),r3 8660 00007dcc ac220004 sw 4(r1),r2 8661 00007dd0 8c5f0000 lw r31,(r2) 8662 00007dd4 ac3f0000 sw (r1),r31 8663 00007dd8 ac410000 sw (r2),r1 8664 00007ddc 8c220000 lw r2,(r1) 8665 00007de0 ac410004 sw 4(r2),r1 8666 00007de4 8c610008 lw r1,8(r3) 8667 00007de8 20210001 addi r1,r1,#1 8668 00007dec ac610008 sw 8(r3),r1 8669 00007df0 8fa20000 lw r2,0(r29) 8670 00007df4 8fa30004 lw r3,4(r29) 8671 00007df8 8fdffff8 lw r31,-8(r30) 8672 00007dfc 001ee820 add r29,r0,r30 8673 00007e00 8fdefffc lw r30,-4(r30) 8674 00007e04 4be00000 jr r31 8675 00007e08 54000000 nop 8676 00007e0c .endproc _QueueInsertAfter 8677 00007e0c .align 2 8678 00007e0c .proc _QueueInsertFirst 8679 00007e0c .global _QueueInsertFirst 8680 00007e0c _QueueInsertFirst: 8681 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 8682 00007e0c afbefffc sw -4(r29),r30; push fp 8683 00007e10 001df020 add r30,r0,r29; fp = sp 8684 00007e14 afbffff8 sw -8(r29),r31; push ret addr 8685 00007e18 2fbd0010 subui r29,r29,#16; alloc local storage 8686 00007e1c afa20000 sw 0(r29),r2 8687 00007e20 afa30004 sw 4(r29),r3 8688 00007e24 8fc30000 lw r3,(r30) 8689 00007e28 8fc10004 lw r1,4(r30) 8690 00007e2c ac230008 sw 8(r1),r3 8691 00007e30 ac230004 sw 4(r1),r3 8692 00007e34 8c7f0000 lw r31,(r3) 8693 00007e38 ac3f0000 sw (r1),r31 8694 00007e3c ac610000 sw (r3),r1 8695 00007e40 8c220000 lw r2,(r1) 8696 00007e44 ac410004 sw 4(r2),r1 8697 00007e48 8c610008 lw r1,8(r3) 8698 00007e4c 20210001 addi r1,r1,#1 8699 00007e50 ac610008 sw 8(r3),r1 8700 00007e54 8fa20000 lw r2,0(r29) 8701 00007e58 8fa30004 lw r3,4(r29) 8702 00007e5c 8fdffff8 lw r31,-8(r30) 8703 00007e60 001ee820 add r29,r0,r30 8704 00007e64 8fdefffc lw r30,-4(r30) 8705 00007e68 4be00000 jr r31 8706 00007e6c 54000000 nop 8707 00007e70 .endproc _QueueInsertFirst 8708 00007e70 .align 2 8709 00007e70 .proc _QueueInsertLast 8710 00007e70 .global _QueueInsertLast 8711 00007e70 _QueueInsertLast: 8712 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 8713 00007e70 afbefffc sw -4(r29),r30; push fp 8714 00007e74 001df020 add r30,r0,r29; fp = sp 8715 00007e78 afbffff8 sw -8(r29),r31; push ret addr 8716 00007e7c 2fbd0010 subui r29,r29,#16; alloc local storage 8717 00007e80 afa20000 sw 0(r29),r2 8718 00007e84 afa30004 sw 4(r29),r3 8719 00007e88 8fc30000 lw r3,(r30) 8720 00007e8c 8fc10004 lw r1,4(r30) 8721 00007e90 8c620004 lw r2,4(r3) 8722 00007e94 ac230008 sw 8(r1),r3 8723 00007e98 ac220004 sw 4(r1),r2 8724 00007e9c 8c5f0000 lw r31,(r2) 8725 00007ea0 ac3f0000 sw (r1),r31 8726 00007ea4 ac410000 sw (r2),r1 8727 00007ea8 8c220000 lw r2,(r1) 8728 00007eac ac410004 sw 4(r2),r1 8729 00007eb0 8c610008 lw r1,8(r3) 8730 00007eb4 20210001 addi r1,r1,#1 8731 00007eb8 ac610008 sw 8(r3),r1 8732 00007ebc 8fa20000 lw r2,0(r29) 8733 00007ec0 8fa30004 lw r3,4(r29) 8734 00007ec4 8fdffff8 lw r31,-8(r30) 8735 00007ec8 001ee820 add r29,r0,r30 8736 00007ecc 8fdefffc lw r30,-4(r30) 8737 00007ed0 4be00000 jr r31 8738 00007ed4 54000000 nop 8739 00007ed8 .endproc _QueueInsertLast 8740 00007ed8 .align 2 8741 00007ed8 .proc _QueueRemove 8742 00007ed8 .global _QueueRemove 8743 00007ed8 _QueueRemove: 8744 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 8745 00007ed8 afbefffc sw -4(r29),r30; push fp 8746 00007edc 001df020 add r30,r0,r29; fp = sp 8747 00007ee0 afbffff8 sw -8(r29),r31; push ret addr 8748 00007ee4 2fbd0010 subui r29,r29,#16; alloc local storage 8749 00007ee8 afa20000 sw 0(r29),r2 8750 00007eec afa30004 sw 4(r29),r3 8751 00007ef0 8fdf0000 lw r31,(r30) 8752 00007ef4 8fe10008 lw r1,8(r31) 8753 00007ef8 8c210008 lw r1,8(r1) 8754 00007efc 6c210000 sgti r1,r1,#0 8755 00007f00 1020002c beqz r1,L44_LF6 8756 00007f04 54000000 nop; not filled. 8757 00007f08 8fe10004 lw r1,4(r31) 8758 00007f0c 8fe30000 lw r3,(r31) 8759 00007f10 ac230000 sw (r1),r3 8760 00007f14 8fe10000 lw r1,(r31) 8761 00007f18 8fe30004 lw r3,4(r31) 8762 00007f1c ac230004 sw 4(r1),r3 8763 00007f20 8fe20008 lw r2,8(r31) 8764 00007f24 8c410008 lw r1,8(r2) 8765 00007f28 2021ffff addi r1,r1,#-1 8766 00007f2c ac410008 sw 8(r2),r1 8767 00007f30 L44_LF6: 8768 00007f30 20030000 addi r3,r0,#0 8769 00007f34 afe30000 sw (r31),r3 8770 00007f38 8fa20000 lw r2,0(r29) 8771 00007f3c 8fa30004 lw r3,4(r29) 8772 00007f40 8fdffff8 lw r31,-8(r30) 8773 00007f44 001ee820 add r29,r0,r30 8774 00007f48 8fdefffc lw r30,-4(r30) 8775 00007f4c 4be00000 jr r31 8776 00007f50 54000000 nop 8777 00007f54 .endproc _QueueRemove 8778 00007f54 .align 2 8779 00007f54 .proc _QueueLength 8780 00007f54 .global _QueueLength 8781 00007f54 _QueueLength: 8782 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 8783 00007f54 afbefffc sw -4(r29),r30; push fp 8784 00007f58 001df020 add r30,r0,r29; fp = sp 8785 00007f5c afbffff8 sw -8(r29),r31; push ret addr 8786 00007f60 2fbd0008 subui r29,r29,#8; alloc local storage 8787 00007f64 8fc10000 lw r1,(r30) 8788 00007f68 8c210008 lw r1,8(r1) 8789 00007f6c 8fdffff8 lw r31,-8(r30) 8790 00007f70 001ee820 add r29,r0,r30 8791 00007f74 8fdefffc lw r30,-4(r30) 8792 00007f78 4be00000 jr r31 8793 00007f7c 54000000 nop 8794 00007f80 .endproc _QueueLength 8795 00007f80 .align 2 8796 00007f80 .proc _QueueEmpty 8797 00007f80 .global _QueueEmpty 8798 00007f80 _QueueEmpty: 8799 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 8800 00007f80 afbefffc sw -4(r29),r30; push fp 8801 00007f84 001df020 add r30,r0,r29; fp = sp 8802 00007f88 afbffff8 sw -8(r29),r31; push ret addr 8803 00007f8c 2fbd0008 subui r29,r29,#8; alloc local storage 8804 00007f90 8fc10000 lw r1,(r30) 8805 00007f94 8c210008 lw r1,8(r1) 8806 00007f98 60210000 seqi r1,r1,#0 8807 00007f9c 8fdffff8 lw r31,-8(r30) 8808 00007fa0 001ee820 add r29,r0,r30 8809 00007fa4 8fdefffc lw r30,-4(r30) 8810 00007fa8 4be00000 jr r31 8811 00007fac 54000000 nop 8812 00007fb0 .endproc _QueueEmpty 8813 00007fb0 .data 8814 00011d74 .align 2 8815 00011d74 LC0_LF6: 8816 00011d74 496e6974 .ascii "Initializing queue link %d.\n\000" 8816 00011d78 69616c69 8816 00011d7c 7a696e67 8816 00011d80 20717565 8816 00011d84 7565206c 8816 00011d88 696e6b20 8816 00011d8c 25642e0a 8816 00011d90 00 8817 00011d91 .text 8818 00007fb0 .align 2 8819 00007fb0 .proc _QueueModuleInit 8820 00007fb0 .global _QueueModuleInit 8821 00007fb0 _QueueModuleInit: 8822 ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. 8823 00007fb0 afbefffc sw -4(r29),r30; push fp 8824 00007fb4 001df020 add r30,r0,r29; fp = sp 8825 00007fb8 afbffff8 sw -8(r29),r31; push ret addr 8826 00007fbc 2fbd0018 subui r29,r29,#24; alloc local storage 8827 00007fc0 afa20000 sw 0(r29),r2 8828 00007fc4 afa30004 sw 4(r29),r3 8829 00007fc8 afa40008 sw 8(r29),r4 8830 00007fcc afa5000c sw 12(r29),r5 8831 00007fd0 23bdfff8 addi r29,r29,#-8 8832 00007fd4 3c050001 lhi r5,((_freeLinks)>>16)&0xffff 8833 00007fd8 24a51de0 addui r5,r5,(_freeLinks)&0xffff 8834 00007fdc afa50000 sw (r29),r5 8835 00007fe0 0c0000e0 jal _QueueInit 8836 00007fe4 54000000 nop; not filled. 8837 00007fe8 20030000 addi r3,r0,#0 8838 00007fec 23bd0008 addi r29,r29,#8 8839 00007ff0 3c040001 lhi r4,((_debugstr)>>16)&0xffff 8840 00007ff4 24840d78 addui r4,r4,(_debugstr)&0xffff 8841 00007ff8 3c020001 lhi r2,((_linkpool_LF6)>>16)&0xffff 8842 00007ffc 24421dec addui r2,r2,(_linkpool_LF6)&0xffff 8843 00008000 L63_LF6: 8844 00008000 23bdfff8 addi r29,r29,#-8 8845 00008004 afa40000 sw (r29),r4 8846 00008008 20050069 addi r5,r0,#105 8847 0000800c afa50004 sw 4(r29),r5 8848 00008010 0fffbe20 jal _dindex 8849 00008014 54000000 nop; not filled. 8850 00008018 23bd0008 addi r29,r29,#8 8851 0000801c 64210000 snei r1,r1,#0 8852 00008020 1420002c bnez r1,L65_LF6 8853 00008024 54000000 nop; not filled. 8854 00008028 23bdfff8 addi r29,r29,#-8 8855 0000802c afa40000 sw (r29),r4 8856 00008030 2005002b addi r5,r0,#43 8857 00008034 afa50004 sw 4(r29),r5 8858 00008038 0fffbdf8 jal _dindex 8859 0000803c 54000000 nop; not filled. 8860 00008040 23bd0008 addi r29,r29,#8 8861 00008044 64210000 snei r1,r1,#0 8862 00008048 10200024 beqz r1,L64_LF6 8863 0000804c 54000000 nop; not filled. 8864 00008050 L65_LF6: 8865 00008050 23bdfff8 addi r29,r29,#-8 8866 00008054 3c050001 lhi r5,((LC0_LF6)>>16)&0xffff 8867 00008058 24a51d74 addui r5,r5,(LC0_LF6)&0xffff 8868 0000805c afa50000 sw (r29),r5 8869 00008060 afa30004 sw 4(r29),r3 8870 00008064 0c003068 jal _printf 8871 00008068 54000000 nop; not filled. 8872 0000806c 23bd0008 addi r29,r29,#8 8873 00008070 L64_LF6: 8874 00008070 20050000 addi r5,r0,#0 8875 00008074 ac450000 sw (r2),r5 8876 00008078 23bdfff8 addi r29,r29,#-8 8877 0000807c afa20000 sw (r29),r2 8878 00008080 0c000078 jal _QueueFreeLink 8879 00008084 54000000 nop; not filled. 8880 00008088 23bd0008 addi r29,r29,#8 8881 0000808c 20420010 addi r2,r2,#16 8882 00008090 20630001 addi r3,r3,#1 8883 00008094 7061018f slei r1,r3,#399 8884 00008098 1420ff64 bnez r1,L63_LF6 8885 0000809c 54000000 nop; not filled. 8886 000080a0 8fa20000 lw r2,0(r29) 8887 000080a4 8fa30004 lw r3,4(r29) 8888 000080a8 8fa40008 lw r4,8(r29) 8889 000080ac 8fa5000c lw r5,12(r29) 8890 000080b0 8fdffff8 lw r31,-8(r30) 8891 000080b4 001ee820 add r29,r0,r30 8892 000080b8 8fdefffc lw r30,-4(r30) 8893 000080bc 4be00000 jr r31 8894 000080c0 54000000 nop 8895 000080c4 .endproc _QueueModuleInit 8896 000080c4 .align 2 8897 000080c4 .proc _QueueInit 8898 000080c4 .global _QueueInit 8899 000080c4 _QueueInit: 8900 ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. 8901 000080c4 afbefffc sw -4(r29),r30; push fp 8902 000080c8 001df020 add r30,r0,r29; fp = sp 8903 000080cc afbffff8 sw -8(r29),r31; push ret addr 8904 000080d0 2fbd0008 subui r29,r29,#8; alloc local storage 8905 000080d4 8fc10000 lw r1,(r30) 8906 000080d8 ac210000 sw (r1),r1 8907 000080dc ac210004 sw 4(r1),r1 8908 000080e0 201f0000 addi r31,r0,#0 8909 000080e4 ac3f0008 sw 8(r1),r31 8910 000080e8 8fdffff8 lw r31,-8(r30) 8911 000080ec 001ee820 add r29,r0,r30 8912 000080f0 8fdefffc lw r30,-4(r30) 8913 000080f4 4be00000 jr r31 8914 000080f8 54000000 nop 8915 000080fc .endproc _QueueInit 8916 000080fc .data 8917 00011d91 .align 2 8918 00011d94 LC1_LF6: 8919 00011d94 25733a20 .ascii "%s: %s\n\000" 8919 00011d98 25730a00 8920 00011d9c .align 2 8921 00011d9c LC2_LF6: 8922 00011d9c 51756575 .ascii "QueueFreeLink\000" 8922 00011da0 65467265 8922 00011da4 654c696e 8922 00011da8 6b00 8923 00011daa .align 2 8924 00011dac LC3_LF6: 8925 00011dac 4c696e6b .ascii "Link not empty\000" 8925 00011db0 206e6f74 8925 00011db4 20656d70 8925 00011db8 747900 8926 00011dbb .text 8927 000080fc .align 2 8928 000080fc .proc _QueueFreeLink 8929 000080fc .global _QueueFreeLink 8930 000080fc _QueueFreeLink: 8931 ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. 8932 000080fc afbefffc sw -4(r29),r30; push fp 8933 00008100 001df020 add r30,r0,r29; fp = sp 8934 00008104 afbffff8 sw -8(r29),r31; push ret addr 8935 00008108 2fbd0018 subui r29,r29,#24; alloc local storage 8936 0000810c afa20000 sw 0(r29),r2 8937 00008110 afa30004 sw 4(r29),r3 8938 00008114 afa40008 sw 8(r29),r4 8939 00008118 8fc30000 lw r3,(r30) 8940 0000811c 8c610000 lw r1,(r3) 8941 00008120 64210000 snei r1,r1,#0 8942 00008124 10200038 beqz r1,L77_LF6 8943 00008128 54000000 nop; not filled. 8944 0000812c 23bdfff0 addi r29,r29,#-16 8945 00008130 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 8946 00008134 24841d94 addui r4,r4,(LC1_LF6)&0xffff 8947 00008138 afa40000 sw (r29),r4 8948 0000813c 3c010001 lhi r1,((LC2_LF6)>>16)&0xffff 8949 00008140 24211d9c addui r1,r1,(LC2_LF6)&0xffff 8950 00008144 afa10004 sw 4(r29),r1 8951 00008148 3c040001 lhi r4,((LC3_LF6)>>16)&0xffff 8952 0000814c 24841dac addui r4,r4,(LC3_LF6)&0xffff 8953 00008150 afa40008 sw 8(r29),r4 8954 00008154 0c002f78 jal _printf 8955 00008158 54000000 nop; not filled. 8956 0000815c 23bd0010 addi r29,r29,#16 8957 00008160 L77_LF6: 8958 00008160 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 8959 00008164 24421de0 addui r2,r2,(_freeLinks)&0xffff 8960 00008168 8c410004 lw r1,4(r2) 8961 0000816c ac620008 sw 8(r3),r2 8962 00008170 ac610004 sw 4(r3),r1 8963 00008174 8c240000 lw r4,(r1) 8964 00008178 ac640000 sw (r3),r4 8965 0000817c ac230000 sw (r1),r3 8966 00008180 8c610000 lw r1,(r3) 8967 00008184 ac230004 sw 4(r1),r3 8968 00008188 8c410008 lw r1,8(r2) 8969 0000818c 20210001 addi r1,r1,#1 8970 00008190 ac410008 sw 8(r2),r1 8971 00008194 8fa20000 lw r2,0(r29) 8972 00008198 8fa30004 lw r3,4(r29) 8973 0000819c 8fa40008 lw r4,8(r29) 8974 000081a0 8fdffff8 lw r31,-8(r30) 8975 000081a4 001ee820 add r29,r0,r30 8976 000081a8 8fdefffc lw r30,-4(r30) 8977 000081ac 4be00000 jr r31 8978 000081b0 54000000 nop 8979 000081b4 .endproc _QueueFreeLink 8980 000081b4 .data 8981 00011dbb .align 2 8982 00011dbc LC4_LF6: 8983 00011dbc 51756575 .ascii "QueueAllocLink\000" 8983 00011dc0 65416c6c 8983 00011dc4 6f634c69 8983 00011dc8 6e6b00 8984 00011dcb .align 2 8985 00011dcc LC5_LF6: 8986 00011dcc 4c696e6b .ascii "Link not allocated!\000" 8986 00011dd0 206e6f74 8986 00011dd4 20616c6c 8986 00011dd8 6f636174 8986 00011ddc 65642100 8987 00011de0 .text 8988 000081b4 .align 2 8989 000081b4 .proc _QueueAllocLink 8990 000081b4 .global _QueueAllocLink 8991 000081b4 _QueueAllocLink: 8992 ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. 8993 000081b4 afbefffc sw -4(r29),r30; push fp 8994 000081b8 001df020 add r30,r0,r29; fp = sp 8995 000081bc afbffff8 sw -8(r29),r31; push ret addr 8996 000081c0 2fbd0018 subui r29,r29,#24; alloc local storage 8997 000081c4 afa20000 sw 0(r29),r2 8998 000081c8 afa30004 sw 4(r29),r3 8999 000081cc afa40008 sw 8(r29),r4 9000 000081d0 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 9001 000081d4 24421de0 addui r2,r2,(_freeLinks)&0xffff 9002 000081d8 8c410008 lw r1,8(r2) 9003 000081dc 60210000 seqi r1,r1,#0 9004 000081e0 14200054 bnez r1,L92_LF6 9005 000081e4 54000000 nop; not filled. 9006 000081e8 8c430000 lw r3,(r2) 9007 000081ec 8c610008 lw r1,8(r3) 9008 000081f0 8c210008 lw r1,8(r1) 9009 000081f4 6c210000 sgti r1,r1,#0 9010 000081f8 1020002c beqz r1,L97_LF6 9011 000081fc 54000000 nop; not filled. 9012 00008200 8c610004 lw r1,4(r3) 9013 00008204 8c640000 lw r4,(r3) 9014 00008208 ac240000 sw (r1),r4 9015 0000820c 8c610000 lw r1,(r3) 9016 00008210 8c640004 lw r4,4(r3) 9017 00008214 ac240004 sw 4(r1),r4 9018 00008218 8c620008 lw r2,8(r3) 9019 0000821c 8c410008 lw r1,8(r2) 9020 00008220 2021ffff addi r1,r1,#-1 9021 00008224 ac410008 sw 8(r2),r1 9022 00008228 L97_LF6: 9023 00008228 20040000 addi r4,r0,#0 9024 0000822c ac640000 sw (r3),r4 9025 00008230 08000008 j L98_LF6 9026 00008234 54000000 nop; not filled. 9027 00008238 L92_LF6: 9028 00008238 20030000 addi r3,r0,#0 9029 0000823c L98_LF6: 9030 0000823c 64610000 snei r1,r3,#0 9031 00008240 14200038 bnez r1,L100_LF6 9032 00008244 54000000 nop; not filled. 9033 00008248 23bdfff0 addi r29,r29,#-16 9034 0000824c 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 9035 00008250 24841d94 addui r4,r4,(LC1_LF6)&0xffff 9036 00008254 afa40000 sw (r29),r4 9037 00008258 3c010001 lhi r1,((LC4_LF6)>>16)&0xffff 9038 0000825c 24211dbc addui r1,r1,(LC4_LF6)&0xffff 9039 00008260 afa10004 sw 4(r29),r1 9040 00008264 3c040001 lhi r4,((LC5_LF6)>>16)&0xffff 9041 00008268 24841dcc addui r4,r4,(LC5_LF6)&0xffff 9042 0000826c afa40008 sw 8(r29),r4 9043 00008270 0c002e5c jal _printf 9044 00008274 54000000 nop; not filled. 9045 00008278 23bd0010 addi r29,r29,#16 9046 0000827c L100_LF6: 9047 0000827c 00030820 add r1,r0,r3 9048 00008280 8fa20000 lw r2,0(r29) 9049 00008284 8fa30004 lw r3,4(r29) 9050 00008288 8fa40008 lw r4,8(r29) 9051 0000828c 8fdffff8 lw r31,-8(r30) 9052 00008290 001ee820 add r29,r0,r30 9053 00008294 8fdefffc lw r30,-4(r30) 9054 00008298 4be00000 jr r31 9055 0000829c 54000000 nop 9056 000082a0 .endproc _QueueAllocLink 9057 000082a0 .data 9058 00011de0 .align 2 9059 00011de0 .global _freeLinks 9060 00011de0 _freeLinks: 9061 00011de0 .space 12 9062 00011dec .align 2 9063 00011dec _linkpool_LF6: 9064 00011dec .space 6400 9065 ; Compiled by GCC 9066 000136ec .text 9067 000082a0 .align 2 9068 000082a0 .proc _isspace 9069 000082a0 .global _isspace 9070 000082a0 _isspace: 9071 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 9072 000082a0 afbefffc sw -4(r29),r30; push fp 9073 000082a4 001df020 add r30,r0,r29; fp = sp 9074 000082a8 afbffff8 sw -8(r29),r31; push ret addr 9075 000082ac 2fbd0010 subui r29,r29,#16; alloc local storage 9076 000082b0 afa20000 sw 0(r29),r2 9077 000082b4 83c20003 lb r2,3(r30) 9078 000082b8 201f0000 addi r31,r0,#0 9079 000082bc 304100ff andi r1,r2,#0x00ff 9080 000082c0 60210020 seqi r1,r1,#32 9081 000082c4 14200018 bnez r1,L6_LF7 9082 000082c8 54000000 nop; not filled. 9083 000082cc 2041fff7 addi r1,r2,#-9 9084 000082d0 302100ff andi r1,r1,#0x00ff 9085 000082d4 70210001 sleui r1,r1,#1 9086 000082d8 10200008 beqz r1,L5_LF7 9087 000082dc 54000000 nop; not filled. 9088 000082e0 L6_LF7: 9089 000082e0 201f0001 addi r31,r0,#1 9090 000082e4 L5_LF7: 9091 000082e4 001f0820 add r1,r0,r31 9092 000082e8 8fa20000 lw r2,0(r29) 9093 000082ec 8fdffff8 lw r31,-8(r30) 9094 000082f0 001ee820 add r29,r0,r30 9095 000082f4 8fdefffc lw r30,-4(r30) 9096 000082f8 4be00000 jr r31 9097 000082fc 54000000 nop 9098 00008300 .endproc _isspace 9099 00008300 .align 2 9100 00008300 .proc _isxdigit 9101 00008300 .global _isxdigit 9102 00008300 _isxdigit: 9103 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 9104 00008300 afbefffc sw -4(r29),r30; push fp 9105 00008304 001df020 add r30,r0,r29; fp = sp 9106 00008308 afbffff8 sw -8(r29),r31; push ret addr 9107 0000830c 2fbd0010 subui r29,r29,#16; alloc local storage 9108 00008310 afa20000 sw 0(r29),r2 9109 00008314 83df0003 lb r31,3(r30) 9110 00008318 20020000 addi r2,r0,#0 9111 0000831c 23e1ffd0 addi r1,r31,#-48 9112 00008320 302100ff andi r1,r1,#0x00ff 9113 00008324 70210009 sleui r1,r1,#9 9114 00008328 14200028 bnez r1,L12_LF7 9115 0000832c 54000000 nop; not filled. 9116 00008330 23e1ff9f addi r1,r31,#-97 9117 00008334 302100ff andi r1,r1,#0x00ff 9118 00008338 70210005 sleui r1,r1,#5 9119 0000833c 14200014 bnez r1,L12_LF7 9120 00008340 54000000 nop; not filled. 9121 00008344 33e100ff andi r1,r31,#0x00ff 9122 00008348 64210041 snei r1,r1,#65 9123 0000834c 14200008 bnez r1,L11_LF7 9124 00008350 54000000 nop; not filled. 9125 00008354 L12_LF7: 9126 00008354 20020001 addi r2,r0,#1 9127 00008358 L11_LF7: 9128 00008358 00020820 add r1,r0,r2 9129 0000835c 8fa20000 lw r2,0(r29) 9130 00008360 8fdffff8 lw r31,-8(r30) 9131 00008364 001ee820 add r29,r0,r30 9132 00008368 8fdefffc lw r30,-4(r30) 9133 0000836c 4be00000 jr r31 9134 00008370 54000000 nop 9135 00008374 .endproc _isxdigit 9136 00008374 .align 2 9137 00008374 .proc _DisableIntrs 9138 00008374 .global _DisableIntrs 9139 00008374 _DisableIntrs: 9140 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 9141 00008374 afbefffc sw -4(r29),r30; push fp 9142 00008378 001df020 add r30,r0,r29; fp = sp 9143 0000837c afbffff8 sw -8(r29),r31; push ret addr 9144 00008380 2fbd0010 subui r29,r29,#16; alloc local storage 9145 00008384 afa20000 sw 0(r29),r2 9146 00008388 23bdfff8 addi r29,r29,#-8 9147 0000838c 2002000f addi r2,r0,#15 9148 00008390 afa20000 sw (r29),r2 9149 00008394 0fff8ef0 jal _SetIntrs 9150 00008398 54000000 nop; not filled. 9151 0000839c 23bd0008 addi r29,r29,#8 9152 000083a0 8fa20000 lw r2,0(r29) 9153 000083a4 8fdffff8 lw r31,-8(r30) 9154 000083a8 001ee820 add r29,r0,r30 9155 000083ac 8fdefffc lw r30,-4(r30) 9156 000083b0 4be00000 jr r31 9157 000083b4 54000000 nop 9158 000083b8 .endproc _DisableIntrs 9159 000083b8 .align 2 9160 000083b8 .proc _EnableIntrs 9161 000083b8 .global _EnableIntrs 9162 000083b8 _EnableIntrs: 9163 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 9164 000083b8 afbefffc sw -4(r29),r30; push fp 9165 000083bc 001df020 add r30,r0,r29; fp = sp 9166 000083c0 afbffff8 sw -8(r29),r31; push ret addr 9167 000083c4 2fbd0010 subui r29,r29,#16; alloc local storage 9168 000083c8 afa20000 sw 0(r29),r2 9169 000083cc 23bdfff8 addi r29,r29,#-8 9170 000083d0 20020000 addi r2,r0,#0 9171 000083d4 afa20000 sw (r29),r2 9172 000083d8 0fff8eac jal _SetIntrs 9173 000083dc 54000000 nop; not filled. 9174 000083e0 23bd0008 addi r29,r29,#8 9175 000083e4 8fa20000 lw r2,0(r29) 9176 000083e8 8fdffff8 lw r31,-8(r30) 9177 000083ec 001ee820 add r29,r0,r30 9178 000083f0 8fdefffc lw r30,-4(r30) 9179 000083f4 4be00000 jr r31 9180 000083f8 54000000 nop 9181 000083fc .endproc _EnableIntrs 9182 000083fc .align 2 9183 000083fc .proc _RestoreIntrs 9184 000083fc .global _RestoreIntrs 9185 000083fc _RestoreIntrs: 9186 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 9187 000083fc afbefffc sw -4(r29),r30; push fp 9188 00008400 001df020 add r30,r0,r29; fp = sp 9189 00008404 afbffff8 sw -8(r29),r31; push ret addr 9190 00008408 2fbd0010 subui r29,r29,#16; alloc local storage 9191 0000840c afa20000 sw 0(r29),r2 9192 00008410 23bdfff8 addi r29,r29,#-8 9193 00008414 8fc20000 lw r2,(r30) 9194 00008418 afa20000 sw (r29),r2 9195 0000841c 0fff8e68 jal _SetIntrs 9196 00008420 54000000 nop; not filled. 9197 00008424 23bd0008 addi r29,r29,#8 9198 00008428 8fa20000 lw r2,0(r29) 9199 0000842c 8fdffff8 lw r31,-8(r30) 9200 00008430 001ee820 add r29,r0,r30 9201 00008434 8fdefffc lw r30,-4(r30) 9202 00008438 4be00000 jr r31 9203 0000843c 54000000 nop 9204 00008440 .endproc _RestoreIntrs 9205 00008440 .align 2 9206 00008440 .proc _QueueLinkInit 9207 00008440 .global _QueueLinkInit 9208 00008440 _QueueLinkInit: 9209 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 9210 00008440 afbefffc sw -4(r29),r30; push fp 9211 00008444 001df020 add r30,r0,r29; fp = sp 9212 00008448 afbffff8 sw -8(r29),r31; push ret addr 9213 0000844c 2fbd0010 subui r29,r29,#16; alloc local storage 9214 00008450 afa20000 sw 0(r29),r2 9215 00008454 8fc10000 lw r1,(r30) 9216 00008458 8fc20004 lw r2,4(r30) 9217 0000845c 201f0000 addi r31,r0,#0 9218 00008460 ac3f0000 sw (r1),r31 9219 00008464 ac22000c sw 12(r1),r2 9220 00008468 8fa20000 lw r2,0(r29) 9221 0000846c 8fdffff8 lw r31,-8(r30) 9222 00008470 001ee820 add r29,r0,r30 9223 00008474 8fdefffc lw r30,-4(r30) 9224 00008478 4be00000 jr r31 9225 0000847c 54000000 nop 9226 00008480 .endproc _QueueLinkInit 9227 00008480 .align 2 9228 00008480 .proc _QueueNext 9229 00008480 .global _QueueNext 9230 00008480 _QueueNext: 9231 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 9232 00008480 afbefffc sw -4(r29),r30; push fp 9233 00008484 001df020 add r30,r0,r29; fp = sp 9234 00008488 afbffff8 sw -8(r29),r31; push ret addr 9235 0000848c 2fbd0008 subui r29,r29,#8; alloc local storage 9236 00008490 8fc10000 lw r1,(r30) 9237 00008494 8c210000 lw r1,(r1) 9238 00008498 8fdffff8 lw r31,-8(r30) 9239 0000849c 001ee820 add r29,r0,r30 9240 000084a0 8fdefffc lw r30,-4(r30) 9241 000084a4 4be00000 jr r31 9242 000084a8 54000000 nop 9243 000084ac .endproc _QueueNext 9244 000084ac .align 2 9245 000084ac .proc _QueuePrev 9246 000084ac .global _QueuePrev 9247 000084ac _QueuePrev: 9248 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 9249 000084ac afbefffc sw -4(r29),r30; push fp 9250 000084b0 001df020 add r30,r0,r29; fp = sp 9251 000084b4 afbffff8 sw -8(r29),r31; push ret addr 9252 000084b8 2fbd0008 subui r29,r29,#8; alloc local storage 9253 000084bc 8fc10000 lw r1,(r30) 9254 000084c0 8c210004 lw r1,4(r1) 9255 000084c4 8fdffff8 lw r31,-8(r30) 9256 000084c8 001ee820 add r29,r0,r30 9257 000084cc 8fdefffc lw r30,-4(r30) 9258 000084d0 4be00000 jr r31 9259 000084d4 54000000 nop 9260 000084d8 .endproc _QueuePrev 9261 000084d8 .align 2 9262 000084d8 .proc _QueueFirst 9263 000084d8 .global _QueueFirst 9264 000084d8 _QueueFirst: 9265 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 9266 000084d8 afbefffc sw -4(r29),r30; push fp 9267 000084dc 001df020 add r30,r0,r29; fp = sp 9268 000084e0 afbffff8 sw -8(r29),r31; push ret addr 9269 000084e4 2fbd0008 subui r29,r29,#8; alloc local storage 9270 000084e8 8fc10000 lw r1,(r30) 9271 000084ec 8c210000 lw r1,(r1) 9272 000084f0 8fdffff8 lw r31,-8(r30) 9273 000084f4 001ee820 add r29,r0,r30 9274 000084f8 8fdefffc lw r30,-4(r30) 9275 000084fc 4be00000 jr r31 9276 00008500 54000000 nop 9277 00008504 .endproc _QueueFirst 9278 00008504 .align 2 9279 00008504 .proc _QueueLast 9280 00008504 .global _QueueLast 9281 00008504 _QueueLast: 9282 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 9283 00008504 afbefffc sw -4(r29),r30; push fp 9284 00008508 001df020 add r30,r0,r29; fp = sp 9285 0000850c afbffff8 sw -8(r29),r31; push ret addr 9286 00008510 2fbd0008 subui r29,r29,#8; alloc local storage 9287 00008514 8fc10000 lw r1,(r30) 9288 00008518 8c210004 lw r1,4(r1) 9289 0000851c 8fdffff8 lw r31,-8(r30) 9290 00008520 001ee820 add r29,r0,r30 9291 00008524 8fdefffc lw r30,-4(r30) 9292 00008528 4be00000 jr r31 9293 0000852c 54000000 nop 9294 00008530 .endproc _QueueLast 9295 00008530 .align 2 9296 00008530 .proc _QueueInsertAfter 9297 00008530 .global _QueueInsertAfter 9298 00008530 _QueueInsertAfter: 9299 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 9300 00008530 afbefffc sw -4(r29),r30; push fp 9301 00008534 001df020 add r30,r0,r29; fp = sp 9302 00008538 afbffff8 sw -8(r29),r31; push ret addr 9303 0000853c 2fbd0010 subui r29,r29,#16; alloc local storage 9304 00008540 afa20000 sw 0(r29),r2 9305 00008544 afa30004 sw 4(r29),r3 9306 00008548 8fc30000 lw r3,(r30) 9307 0000854c 8fc20004 lw r2,4(r30) 9308 00008550 8fc10008 lw r1,8(r30) 9309 00008554 ac230008 sw 8(r1),r3 9310 00008558 ac220004 sw 4(r1),r2 9311 0000855c 8c5f0000 lw r31,(r2) 9312 00008560 ac3f0000 sw (r1),r31 9313 00008564 ac410000 sw (r2),r1 9314 00008568 8c220000 lw r2,(r1) 9315 0000856c ac410004 sw 4(r2),r1 9316 00008570 8c610008 lw r1,8(r3) 9317 00008574 20210001 addi r1,r1,#1 9318 00008578 ac610008 sw 8(r3),r1 9319 0000857c 8fa20000 lw r2,0(r29) 9320 00008580 8fa30004 lw r3,4(r29) 9321 00008584 8fdffff8 lw r31,-8(r30) 9322 00008588 001ee820 add r29,r0,r30 9323 0000858c 8fdefffc lw r30,-4(r30) 9324 00008590 4be00000 jr r31 9325 00008594 54000000 nop 9326 00008598 .endproc _QueueInsertAfter 9327 00008598 .align 2 9328 00008598 .proc _QueueInsertFirst 9329 00008598 .global _QueueInsertFirst 9330 00008598 _QueueInsertFirst: 9331 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 9332 00008598 afbefffc sw -4(r29),r30; push fp 9333 0000859c 001df020 add r30,r0,r29; fp = sp 9334 000085a0 afbffff8 sw -8(r29),r31; push ret addr 9335 000085a4 2fbd0010 subui r29,r29,#16; alloc local storage 9336 000085a8 afa20000 sw 0(r29),r2 9337 000085ac afa30004 sw 4(r29),r3 9338 000085b0 8fc30000 lw r3,(r30) 9339 000085b4 8fc10004 lw r1,4(r30) 9340 000085b8 ac230008 sw 8(r1),r3 9341 000085bc ac230004 sw 4(r1),r3 9342 000085c0 8c7f0000 lw r31,(r3) 9343 000085c4 ac3f0000 sw (r1),r31 9344 000085c8 ac610000 sw (r3),r1 9345 000085cc 8c220000 lw r2,(r1) 9346 000085d0 ac410004 sw 4(r2),r1 9347 000085d4 8c610008 lw r1,8(r3) 9348 000085d8 20210001 addi r1,r1,#1 9349 000085dc ac610008 sw 8(r3),r1 9350 000085e0 8fa20000 lw r2,0(r29) 9351 000085e4 8fa30004 lw r3,4(r29) 9352 000085e8 8fdffff8 lw r31,-8(r30) 9353 000085ec 001ee820 add r29,r0,r30 9354 000085f0 8fdefffc lw r30,-4(r30) 9355 000085f4 4be00000 jr r31 9356 000085f8 54000000 nop 9357 000085fc .endproc _QueueInsertFirst 9358 000085fc .align 2 9359 000085fc .proc _QueueInsertLast 9360 000085fc .global _QueueInsertLast 9361 000085fc _QueueInsertLast: 9362 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 9363 000085fc afbefffc sw -4(r29),r30; push fp 9364 00008600 001df020 add r30,r0,r29; fp = sp 9365 00008604 afbffff8 sw -8(r29),r31; push ret addr 9366 00008608 2fbd0010 subui r29,r29,#16; alloc local storage 9367 0000860c afa20000 sw 0(r29),r2 9368 00008610 afa30004 sw 4(r29),r3 9369 00008614 8fc30000 lw r3,(r30) 9370 00008618 8fc10004 lw r1,4(r30) 9371 0000861c 8c620004 lw r2,4(r3) 9372 00008620 ac230008 sw 8(r1),r3 9373 00008624 ac220004 sw 4(r1),r2 9374 00008628 8c5f0000 lw r31,(r2) 9375 0000862c ac3f0000 sw (r1),r31 9376 00008630 ac410000 sw (r2),r1 9377 00008634 8c220000 lw r2,(r1) 9378 00008638 ac410004 sw 4(r2),r1 9379 0000863c 8c610008 lw r1,8(r3) 9380 00008640 20210001 addi r1,r1,#1 9381 00008644 ac610008 sw 8(r3),r1 9382 00008648 8fa20000 lw r2,0(r29) 9383 0000864c 8fa30004 lw r3,4(r29) 9384 00008650 8fdffff8 lw r31,-8(r30) 9385 00008654 001ee820 add r29,r0,r30 9386 00008658 8fdefffc lw r30,-4(r30) 9387 0000865c 4be00000 jr r31 9388 00008660 54000000 nop 9389 00008664 .endproc _QueueInsertLast 9390 00008664 .align 2 9391 00008664 .proc _QueueRemove 9392 00008664 .global _QueueRemove 9393 00008664 _QueueRemove: 9394 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 9395 00008664 afbefffc sw -4(r29),r30; push fp 9396 00008668 001df020 add r30,r0,r29; fp = sp 9397 0000866c afbffff8 sw -8(r29),r31; push ret addr 9398 00008670 2fbd0010 subui r29,r29,#16; alloc local storage 9399 00008674 afa20000 sw 0(r29),r2 9400 00008678 afa30004 sw 4(r29),r3 9401 0000867c 8fdf0000 lw r31,(r30) 9402 00008680 8fe10008 lw r1,8(r31) 9403 00008684 8c210008 lw r1,8(r1) 9404 00008688 6c210000 sgti r1,r1,#0 9405 0000868c 1020002c beqz r1,L44_LF7 9406 00008690 54000000 nop; not filled. 9407 00008694 8fe10004 lw r1,4(r31) 9408 00008698 8fe30000 lw r3,(r31) 9409 0000869c ac230000 sw (r1),r3 9410 000086a0 8fe10000 lw r1,(r31) 9411 000086a4 8fe30004 lw r3,4(r31) 9412 000086a8 ac230004 sw 4(r1),r3 9413 000086ac 8fe20008 lw r2,8(r31) 9414 000086b0 8c410008 lw r1,8(r2) 9415 000086b4 2021ffff addi r1,r1,#-1 9416 000086b8 ac410008 sw 8(r2),r1 9417 000086bc L44_LF7: 9418 000086bc 20030000 addi r3,r0,#0 9419 000086c0 afe30000 sw (r31),r3 9420 000086c4 8fa20000 lw r2,0(r29) 9421 000086c8 8fa30004 lw r3,4(r29) 9422 000086cc 8fdffff8 lw r31,-8(r30) 9423 000086d0 001ee820 add r29,r0,r30 9424 000086d4 8fdefffc lw r30,-4(r30) 9425 000086d8 4be00000 jr r31 9426 000086dc 54000000 nop 9427 000086e0 .endproc _QueueRemove 9428 000086e0 .align 2 9429 000086e0 .proc _QueueLength 9430 000086e0 .global _QueueLength 9431 000086e0 _QueueLength: 9432 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 9433 000086e0 afbefffc sw -4(r29),r30; push fp 9434 000086e4 001df020 add r30,r0,r29; fp = sp 9435 000086e8 afbffff8 sw -8(r29),r31; push ret addr 9436 000086ec 2fbd0008 subui r29,r29,#8; alloc local storage 9437 000086f0 8fc10000 lw r1,(r30) 9438 000086f4 8c210008 lw r1,8(r1) 9439 000086f8 8fdffff8 lw r31,-8(r30) 9440 000086fc 001ee820 add r29,r0,r30 9441 00008700 8fdefffc lw r30,-4(r30) 9442 00008704 4be00000 jr r31 9443 00008708 54000000 nop 9444 0000870c .endproc _QueueLength 9445 0000870c .align 2 9446 0000870c .proc _QueueEmpty 9447 0000870c .global _QueueEmpty 9448 0000870c _QueueEmpty: 9449 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 9450 0000870c afbefffc sw -4(r29),r30; push fp 9451 00008710 001df020 add r30,r0,r29; fp = sp 9452 00008714 afbffff8 sw -8(r29),r31; push ret addr 9453 00008718 2fbd0008 subui r29,r29,#8; alloc local storage 9454 0000871c 8fc10000 lw r1,(r30) 9455 00008720 8c210008 lw r1,8(r1) 9456 00008724 60210000 seqi r1,r1,#0 9457 00008728 8fdffff8 lw r31,-8(r30) 9458 0000872c 001ee820 add r29,r0,r30 9459 00008730 8fdefffc lw r30,-4(r30) 9460 00008734 4be00000 jr r31 9461 00008738 54000000 nop 9462 0000873c .endproc _QueueEmpty 9463 0000873c .data 9464 000136ec .align 2 9465 000136ec LC0_LF7: 9466 000136ec 456e7465 .ascii "Entering SynchModuleInit\n\000" 9466 000136f0 72696e67 9466 000136f4 2053796e 9466 000136f8 63684d6f 9466 000136fc 64756c65 9466 00013700 496e6974 9466 00013704 0a00 9467 00013706 .align 2 9468 00013708 LC1_LF7: 9469 00013708 4c656176 .ascii "Leaving SynchModuleInit\n\000" 9469 0001370c 696e6720 9469 00013710 53796e63 9469 00013714 684d6f64 9469 00013718 756c6549 9469 0001371c 6e69740a 9469 00013720 00 9470 00013721 .text 9471 0000873c .align 2 9472 0000873c .proc _SynchModuleInit 9473 0000873c .global _SynchModuleInit 9474 0000873c _SynchModuleInit: 9475 ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. 9476 0000873c afbefffc sw -4(r29),r30; push fp 9477 00008740 001df020 add r30,r0,r29; fp = sp 9478 00008744 afbffff8 sw -8(r29),r31; push ret addr 9479 00008748 2fbd0010 subui r29,r29,#16; alloc local storage 9480 0000874c afa20000 sw 0(r29),r2 9481 00008750 afa30004 sw 4(r29),r3 9482 00008754 23bdfff8 addi r29,r29,#-8 9483 00008758 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9484 0000875c 24420d78 addui r2,r2,(_debugstr)&0xffff 9485 00008760 afa20000 sw (r29),r2 9486 00008764 20030070 addi r3,r0,#112 9487 00008768 afa30004 sw 4(r29),r3 9488 0000876c 0fffb6c4 jal _dindex 9489 00008770 54000000 nop; not filled. 9490 00008774 23bd0008 addi r29,r29,#8 9491 00008778 64210000 snei r1,r1,#0 9492 0000877c 1420002c bnez r1,L53_LF7 9493 00008780 54000000 nop; not filled. 9494 00008784 23bdfff8 addi r29,r29,#-8 9495 00008788 afa20000 sw (r29),r2 9496 0000878c 2003002b addi r3,r0,#43 9497 00008790 afa30004 sw 4(r29),r3 9498 00008794 0fffb69c jal _dindex 9499 00008798 54000000 nop; not filled. 9500 0000879c 23bd0008 addi r29,r29,#8 9501 000087a0 64210000 snei r1,r1,#0 9502 000087a4 10200020 beqz r1,L52_LF7 9503 000087a8 54000000 nop; not filled. 9504 000087ac L53_LF7: 9505 000087ac 23bdfff8 addi r29,r29,#-8 9506 000087b0 3c030001 lhi r3,((LC0_LF7)>>16)&0xffff 9507 000087b4 246336ec addui r3,r3,(LC0_LF7)&0xffff 9508 000087b8 afa30000 sw (r29),r3 9509 000087bc 0c002910 jal _printf 9510 000087c0 54000000 nop; not filled. 9511 000087c4 23bd0008 addi r29,r29,#8 9512 000087c8 L52_LF7: 9513 000087c8 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9514 000087cc 27ff37d0 addui r31,r31,(_sems_LF7)&0xffff 9515 000087d0 23e2026c addi r2,r31,#620 9516 000087d4 L57_LF7: 9517 000087d4 20030000 addi r3,r0,#0 9518 000087d8 afe30010 sw 16(r31),r3 9519 000087dc 23ff0014 addi r31,r31,#20 9520 000087e0 03e2082c sle r1,r31,r2 9521 000087e4 1420ffec bnez r1,L57_LF7 9522 000087e8 54000000 nop; not filled. 9523 000087ec 23bdfff8 addi r29,r29,#-8 9524 000087f0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9525 000087f4 24420d78 addui r2,r2,(_debugstr)&0xffff 9526 000087f8 afa20000 sw (r29),r2 9527 000087fc 20030070 addi r3,r0,#112 9528 00008800 afa30004 sw 4(r29),r3 9529 00008804 0fffb62c jal _dindex 9530 00008808 54000000 nop; not filled. 9531 0000880c 23bd0008 addi r29,r29,#8 9532 00008810 64210000 snei r1,r1,#0 9533 00008814 1420002c bnez r1,L60_LF7 9534 00008818 54000000 nop; not filled. 9535 0000881c 23bdfff8 addi r29,r29,#-8 9536 00008820 afa20000 sw (r29),r2 9537 00008824 2003002b addi r3,r0,#43 9538 00008828 afa30004 sw 4(r29),r3 9539 0000882c 0fffb604 jal _dindex 9540 00008830 54000000 nop; not filled. 9541 00008834 23bd0008 addi r29,r29,#8 9542 00008838 64210000 snei r1,r1,#0 9543 0000883c 10200020 beqz r1,L59_LF7 9544 00008840 54000000 nop; not filled. 9545 00008844 L60_LF7: 9546 00008844 23bdfff8 addi r29,r29,#-8 9547 00008848 3c030001 lhi r3,((LC1_LF7)>>16)&0xffff 9548 0000884c 24633708 addui r3,r3,(LC1_LF7)&0xffff 9549 00008850 afa30000 sw (r29),r3 9550 00008854 0c002878 jal _printf 9551 00008858 54000000 nop; not filled. 9552 0000885c 23bd0008 addi r29,r29,#8 9553 00008860 L59_LF7: 9554 00008860 8fa20000 lw r2,0(r29) 9555 00008864 8fa30004 lw r3,4(r29) 9556 00008868 8fdffff8 lw r31,-8(r30) 9557 0000886c 001ee820 add r29,r0,r30 9558 00008870 8fdefffc lw r30,-4(r30) 9559 00008874 4be00000 jr r31 9560 00008878 54000000 nop 9561 0000887c .endproc _SynchModuleInit 9562 0000887c .align 2 9563 0000887c .proc _SemInit 9564 0000887c .global _SemInit 9565 0000887c _SemInit: 9566 ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. 9567 0000887c afbefffc sw -4(r29),r30; push fp 9568 00008880 001df020 add r30,r0,r29; fp = sp 9569 00008884 afbffff8 sw -8(r29),r31; push ret addr 9570 00008888 2fbd0010 subui r29,r29,#16; alloc local storage 9571 0000888c afa20000 sw 0(r29),r2 9572 00008890 afa30004 sw 4(r29),r3 9573 00008894 8fc20000 lw r2,(r30) 9574 00008898 8fc30004 lw r3,4(r30) 9575 0000889c 23bdfff8 addi r29,r29,#-8 9576 000088a0 afa20000 sw (r29),r2 9577 000088a4 0ffff81c jal _QueueInit 9578 000088a8 54000000 nop; not filled. 9579 000088ac ac43000c sw 12(r2),r3 9580 000088b0 23bd0008 addi r29,r29,#8 9581 000088b4 8fa20000 lw r2,0(r29) 9582 000088b8 8fa30004 lw r3,4(r29) 9583 000088bc 8fdffff8 lw r31,-8(r30) 9584 000088c0 001ee820 add r29,r0,r30 9585 000088c4 8fdefffc lw r30,-4(r30) 9586 000088c8 4be00000 jr r31 9587 000088cc 54000000 nop 9588 000088d0 .endproc _SemInit 9589 000088d0 .align 2 9590 000088d0 .proc _SemCreate 9591 000088d0 .global _SemCreate 9592 000088d0 _SemCreate: 9593 ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. 9594 000088d0 afbefffc sw -4(r29),r30; push fp 9595 000088d4 001df020 add r30,r0,r29; fp = sp 9596 000088d8 afbffff8 sw -8(r29),r31; push ret addr 9597 000088dc 2fbd0018 subui r29,r29,#24; alloc local storage 9598 000088e0 afa20000 sw 0(r29),r2 9599 000088e4 afa30004 sw 4(r29),r3 9600 000088e8 afa40008 sw 8(r29),r4 9601 000088ec afa5000c sw 12(r29),r5 9602 000088f0 23bdfff8 addi r29,r29,#-8 9603 000088f4 2005000f addi r5,r0,#15 9604 000088f8 afa50000 sw (r29),r5 9605 000088fc 0fff8988 jal _SetIntrs 9606 00008900 54000000 nop; not filled. 9607 00008904 00012020 add r4,r0,r1 9608 00008908 23bd0008 addi r29,r29,#8 9609 0000890c 20030000 addi r3,r0,#0 9610 00008910 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9611 00008914 27ff37d0 addui r31,r31,(_sems_LF7)&0xffff 9612 00008918 L79_LF7: 9613 00008918 001f1020 add r2,r0,r31 9614 0000891c 8fe10010 lw r1,16(r31) 9615 00008920 64210000 snei r1,r1,#0 9616 00008924 10200078 beqz r1,L86_LF7 9617 00008928 54000000 nop; not filled. 9618 0000892c 205f0014 addi r31,r2,#20 9619 00008930 20630001 addi r3,r3,#1 9620 00008934 7061001f slei r1,r3,#31 9621 00008938 1420ffdc bnez r1,L79_LF7 9622 0000893c 54000000 nop; not filled. 9623 00008940 L77_LF7: 9624 00008940 23bdfff8 addi r29,r29,#-8 9625 00008944 afa40000 sw (r29),r4 9626 00008948 0fff893c jal _SetIntrs 9627 0000894c 54000000 nop; not filled. 9628 00008950 23bd0008 addi r29,r29,#8 9629 00008954 60610020 seqi r1,r3,#32 9630 00008958 14200054 bnez r1,L83_LF7 9631 0000895c 54000000 nop; not filled. 9632 00008960 50610002 slli r1,r3,#0x2 9633 00008964 00230820 add r1,r1,r3 9634 00008968 50210002 slli r1,r1,#0x2 9635 0000896c 3c050001 lhi r5,((_sems_LF7)>>16)&0xffff 9636 00008970 24a537d0 addui r5,r5,(_sems_LF7)&0xffff 9637 00008974 00251020 add r2,r1,r5 9638 00008978 23bdfff8 addi r29,r29,#-8 9639 0000897c afa20000 sw (r29),r2 9640 00008980 0ffff740 jal _QueueInit 9641 00008984 54000000 nop; not filled. 9642 00008988 8fc50000 lw r5,(r30) 9643 0000898c ac45000c sw 12(r2),r5 9644 00008990 23bd0008 addi r29,r29,#8 9645 00008994 00030820 add r1,r0,r3 9646 00008998 08000018 j L85_LF7 9647 0000899c 54000000 nop; not filled. 9648 000089a0 L86_LF7: 9649 000089a0 20050001 addi r5,r0,#1 9650 000089a4 afe50010 sw 16(r31),r5 9651 000089a8 0bffff94 j L77_LF7 9652 000089ac 54000000 nop; not filled. 9653 000089b0 L83_LF7: 9654 000089b0 2001ffff addi r1,r0,#-1 9655 000089b4 L85_LF7: 9656 000089b4 8fa20000 lw r2,0(r29) 9657 000089b8 8fa30004 lw r3,4(r29) 9658 000089bc 8fa40008 lw r4,8(r29) 9659 000089c0 8fa5000c lw r5,12(r29) 9660 000089c4 8fdffff8 lw r31,-8(r30) 9661 000089c8 001ee820 add r29,r0,r30 9662 000089cc 8fdefffc lw r30,-4(r30) 9663 000089d0 4be00000 jr r31 9664 000089d4 54000000 nop 9665 000089d8 .endproc _SemCreate 9666 000089d8 .data 9667 00013721 .align 2 9668 00013724 LC2_LF7: 9669 00013724 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 9669 00013728 696e7465 9669 0001372c 72727570 9669 00013730 74207661 9669 00013734 6c756520 9669 00013738 77617320 9669 0001373c 30782578 9669 00013740 2e0a00 9670 00013743 .align 2 9671 00013744 LC3_LF7: 9672 00013744 50726f63 .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" 9672 00013748 20307825 9672 0001374c 78207761 9672 00013750 6974696e 9672 00013754 67206f6e 9672 00013758 2073656d 9672 0001375c 20307825 9672 00013760 782c2063 9672 00013764 6f756e74 9672 00013768 3d25642e 9672 0001376c 0a00 9673 0001376e .align 2 9674 00013770 LC4_LF7: 9675 00013770 53757370 .ascii "Suspending current proc (0x%x).\n\000" 9675 00013774 656e6469 9675 00013778 6e672063 9675 0001377c 75727265 9675 00013780 6e742070 9675 00013784 726f6320 9675 00013788 28307825 9675 0001378c 78292e0a 9675 00013790 00 9676 00013791 .text 9677 000089d8 .align 2 9678 000089d8 .proc _SemWait 9679 000089d8 .global _SemWait 9680 000089d8 _SemWait: 9681 ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. 9682 000089d8 afbefffc sw -4(r29),r30; push fp 9683 000089dc 001df020 add r30,r0,r29; fp = sp 9684 000089e0 afbffff8 sw -8(r29),r31; push ret addr 9685 000089e4 2fbd0020 subui r29,r29,#32; alloc local storage 9686 000089e8 afa20000 sw 0(r29),r2 9687 000089ec afa30004 sw 4(r29),r3 9688 000089f0 afa40008 sw 8(r29),r4 9689 000089f4 afa5000c sw 12(r29),r5 9690 000089f8 afa60010 sw 16(r29),r6 9691 000089fc afa70014 sw 20(r29),r7 9692 00008a00 8fc40000 lw r4,(r30) 9693 00008a04 23bdfff8 addi r29,r29,#-8 9694 00008a08 2007000f addi r7,r0,#15 9695 00008a0c afa70000 sw (r29),r7 9696 00008a10 0fff8874 jal _SetIntrs 9697 00008a14 54000000 nop; not filled. 9698 00008a18 00013020 add r6,r0,r1 9699 00008a1c 23bd0008 addi r29,r29,#8 9700 00008a20 23bdfff8 addi r29,r29,#-8 9701 00008a24 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9702 00008a28 24420d78 addui r2,r2,(_debugstr)&0xffff 9703 00008a2c afa20000 sw (r29),r2 9704 00008a30 20070049 addi r7,r0,#73 9705 00008a34 afa70004 sw 4(r29),r7 9706 00008a38 0fffb3f8 jal _dindex 9707 00008a3c 54000000 nop; not filled. 9708 00008a40 23bd0008 addi r29,r29,#8 9709 00008a44 64210000 snei r1,r1,#0 9710 00008a48 1420002c bnez r1,L90_LF7 9711 00008a4c 54000000 nop; not filled. 9712 00008a50 23bdfff8 addi r29,r29,#-8 9713 00008a54 afa20000 sw (r29),r2 9714 00008a58 2007002b addi r7,r0,#43 9715 00008a5c afa70004 sw 4(r29),r7 9716 00008a60 0fffb3d0 jal _dindex 9717 00008a64 54000000 nop; not filled. 9718 00008a68 23bd0008 addi r29,r29,#8 9719 00008a6c 64210000 snei r1,r1,#0 9720 00008a70 10200024 beqz r1,L89_LF7 9721 00008a74 54000000 nop; not filled. 9722 00008a78 L90_LF7: 9723 00008a78 23bdfff8 addi r29,r29,#-8 9724 00008a7c 3c070001 lhi r7,((LC2_LF7)>>16)&0xffff 9725 00008a80 24e73724 addui r7,r7,(LC2_LF7)&0xffff 9726 00008a84 afa70000 sw (r29),r7 9727 00008a88 afa60004 sw 4(r29),r6 9728 00008a8c 0c002640 jal _printf 9729 00008a90 54000000 nop; not filled. 9730 00008a94 23bd0008 addi r29,r29,#8 9731 00008a98 L89_LF7: 9732 00008a98 23bdfff8 addi r29,r29,#-8 9733 00008a9c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9734 00008aa0 24420d78 addui r2,r2,(_debugstr)&0xffff 9735 00008aa4 afa20000 sw (r29),r2 9736 00008aa8 20070073 addi r7,r0,#115 9737 00008aac afa70004 sw 4(r29),r7 9738 00008ab0 0fffb380 jal _dindex 9739 00008ab4 54000000 nop; not filled. 9740 00008ab8 23bd0008 addi r29,r29,#8 9741 00008abc 64210000 snei r1,r1,#0 9742 00008ac0 1420002c bnez r1,L92_LF7 9743 00008ac4 54000000 nop; not filled. 9744 00008ac8 23bdfff8 addi r29,r29,#-8 9745 00008acc afa20000 sw (r29),r2 9746 00008ad0 2007002b addi r7,r0,#43 9747 00008ad4 afa70004 sw 4(r29),r7 9748 00008ad8 0fffb358 jal _dindex 9749 00008adc 54000000 nop; not filled. 9750 00008ae0 23bd0008 addi r29,r29,#8 9751 00008ae4 64210000 snei r1,r1,#0 9752 00008ae8 1020003c beqz r1,L91_LF7 9753 00008aec 54000000 nop; not filled. 9754 00008af0 L92_LF7: 9755 00008af0 23bdfff0 addi r29,r29,#-16 9756 00008af4 3c070001 lhi r7,((LC3_LF7)>>16)&0xffff 9757 00008af8 24e73744 addui r7,r7,(LC3_LF7)&0xffff 9758 00008afc afa70000 sw (r29),r7 9759 00008b00 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 9760 00008b04 24210e40 addui r1,r1,(_currentPCB)&0xffff 9761 00008b08 8c210000 lw r1,(r1) 9762 00008b0c afa10004 sw 4(r29),r1 9763 00008b10 afa40008 sw 8(r29),r4 9764 00008b14 8c87000c lw r7,12(r4) 9765 00008b18 afa7000c sw 12(r29),r7 9766 00008b1c 0c0025b0 jal _printf 9767 00008b20 54000000 nop; not filled. 9768 00008b24 23bd0010 addi r29,r29,#16 9769 00008b28 L91_LF7: 9770 00008b28 8c81000c lw r1,12(r4) 9771 00008b2c 2021ffff addi r1,r1,#-1 9772 00008b30 ac81000c sw 12(r4),r1 9773 00008b34 68210000 slti r1,r1,#0 9774 00008b38 102000d8 beqz r1,L93_LF7 9775 00008b3c 54000000 nop; not filled. 9776 00008b40 0ffff670 jal _QueueAllocLink 9777 00008b44 54000000 nop; not filled. 9778 00008b48 00011020 add r2,r0,r1 9779 00008b4c 3c050001 lhi r5,((_currentPCB)>>16)&0xffff 9780 00008b50 24a50e40 addui r5,r5,(_currentPCB)&0xffff 9781 00008b54 8ca10000 lw r1,(r5) 9782 00008b58 20070000 addi r7,r0,#0 9783 00008b5c ac470000 sw (r2),r7 9784 00008b60 ac41000c sw 12(r2),r1 9785 00008b64 23bdfff8 addi r29,r29,#-8 9786 00008b68 3c030001 lhi r3,((_debugstr)>>16)&0xffff 9787 00008b6c 24630d78 addui r3,r3,(_debugstr)&0xffff 9788 00008b70 afa30000 sw (r29),r3 9789 00008b74 20070073 addi r7,r0,#115 9790 00008b78 afa70004 sw 4(r29),r7 9791 00008b7c 0fffb2b4 jal _dindex 9792 00008b80 54000000 nop; not filled. 9793 00008b84 23bd0008 addi r29,r29,#8 9794 00008b88 64210000 snei r1,r1,#0 9795 00008b8c 1420002c bnez r1,L96_LF7 9796 00008b90 54000000 nop; not filled. 9797 00008b94 23bdfff8 addi r29,r29,#-8 9798 00008b98 afa30000 sw (r29),r3 9799 00008b9c 2007002b addi r7,r0,#43 9800 00008ba0 afa70004 sw 4(r29),r7 9801 00008ba4 0fffb28c jal _dindex 9802 00008ba8 54000000 nop; not filled. 9803 00008bac 23bd0008 addi r29,r29,#8 9804 00008bb0 64210000 snei r1,r1,#0 9805 00008bb4 10200028 beqz r1,L95_LF7 9806 00008bb8 54000000 nop; not filled. 9807 00008bbc L96_LF7: 9808 00008bbc 23bdfff8 addi r29,r29,#-8 9809 00008bc0 3c070001 lhi r7,((LC4_LF7)>>16)&0xffff 9810 00008bc4 24e73770 addui r7,r7,(LC4_LF7)&0xffff 9811 00008bc8 afa70000 sw (r29),r7 9812 00008bcc 8ca10000 lw r1,(r5) 9813 00008bd0 afa10004 sw 4(r29),r1 9814 00008bd4 0c0024f8 jal _printf 9815 00008bd8 54000000 nop; not filled. 9816 00008bdc 23bd0008 addi r29,r29,#8 9817 00008be0 L95_LF7: 9818 00008be0 8c810004 lw r1,4(r4) 9819 00008be4 ac440008 sw 8(r2),r4 9820 00008be8 ac410004 sw 4(r2),r1 9821 00008bec 8c270000 lw r7,(r1) 9822 00008bf0 ac470000 sw (r2),r7 9823 00008bf4 ac220000 sw (r1),r2 9824 00008bf8 8c410000 lw r1,(r2) 9825 00008bfc ac220004 sw 4(r1),r2 9826 00008c00 8c810008 lw r1,8(r4) 9827 00008c04 20210001 addi r1,r1,#1 9828 00008c08 ac810008 sw 8(r4),r1 9829 00008c0c 0fff86c4 jal _ProcessSleep 9830 00008c10 54000000 nop; not filled. 9831 00008c14 L93_LF7: 9832 00008c14 23bdfff8 addi r29,r29,#-8 9833 00008c18 afa60000 sw (r29),r6 9834 00008c1c 0fff8668 jal _SetIntrs 9835 00008c20 54000000 nop; not filled. 9836 00008c24 23bd0008 addi r29,r29,#8 9837 00008c28 8fa20000 lw r2,0(r29) 9838 00008c2c 8fa30004 lw r3,4(r29) 9839 00008c30 8fa40008 lw r4,8(r29) 9840 00008c34 8fa5000c lw r5,12(r29) 9841 00008c38 8fa60010 lw r6,16(r29) 9842 00008c3c 8fa70014 lw r7,20(r29) 9843 00008c40 8fdffff8 lw r31,-8(r30) 9844 00008c44 001ee820 add r29,r0,r30 9845 00008c48 8fdefffc lw r30,-4(r30) 9846 00008c4c 4be00000 jr r31 9847 00008c50 54000000 nop 9848 00008c54 .endproc _SemWait 9849 00008c54 .align 2 9850 00008c54 .proc _SemHandleWait 9851 00008c54 .global _SemHandleWait 9852 00008c54 _SemHandleWait: 9853 ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. 9854 00008c54 afbefffc sw -4(r29),r30; push fp 9855 00008c58 001df020 add r30,r0,r29; fp = sp 9856 00008c5c afbffff8 sw -8(r29),r31; push ret addr 9857 00008c60 2fbd0010 subui r29,r29,#16; alloc local storage 9858 00008c64 afa20000 sw 0(r29),r2 9859 00008c68 8fdf0000 lw r31,(r30) 9860 00008c6c 73e1001f sleui r1,r31,#31 9861 00008c70 10200058 beqz r1,L106_LF7 9862 00008c74 54000000 nop; not filled. 9863 00008c78 53e10002 slli r1,r31,#0x2 9864 00008c7c 003f0820 add r1,r1,r31 9865 00008c80 50210002 slli r1,r1,#0x2 9866 00008c84 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 9867 00008c88 244237d0 addui r2,r2,(_sems_LF7)&0xffff 9868 00008c8c 0022f820 add r31,r1,r2 9869 00008c90 8fe10010 lw r1,16(r31) 9870 00008c94 64210000 snei r1,r1,#0 9871 00008c98 10200024 beqz r1,L107_LF7 9872 00008c9c 54000000 nop; not filled. 9873 00008ca0 23bdfff8 addi r29,r29,#-8 9874 00008ca4 afbf0000 sw (r29),r31 9875 00008ca8 0ffffd2c jal _SemWait 9876 00008cac 54000000 nop; not filled. 9877 00008cb0 20010000 addi r1,r0,#0 9878 00008cb4 23bd0008 addi r29,r29,#8 9879 00008cb8 08000014 j L105_LF7 9880 00008cbc 54000000 nop; not filled. 9881 00008cc0 L107_LF7: 9882 00008cc0 20010001 addi r1,r0,#1 9883 00008cc4 08000008 j L105_LF7 9884 00008cc8 54000000 nop; not filled. 9885 00008ccc L106_LF7: 9886 00008ccc 20010001 addi r1,r0,#1 9887 00008cd0 L105_LF7: 9888 00008cd0 8fa20000 lw r2,0(r29) 9889 00008cd4 8fdffff8 lw r31,-8(r30) 9890 00008cd8 001ee820 add r29,r0,r30 9891 00008cdc 8fdefffc lw r30,-4(r30) 9892 00008ce0 4be00000 jr r31 9893 00008ce4 54000000 nop 9894 00008ce8 .endproc _SemHandleWait 9895 00008ce8 .data 9896 00013791 .align 2 9897 00013794 LC5_LF7: 9898 00013794 5369676e .ascii "Signalling on sem 0x%x, count=%d.\n\000" 9898 00013798 616c6c69 9898 0001379c 6e67206f 9898 000137a0 6e207365 9898 000137a4 6d203078 9898 000137a8 25782c20 9898 000137ac 636f756e 9898 000137b0 743d2564 9898 000137b4 2e0a00 9899 000137b7 .align 2 9900 000137b8 LC6_LF7: 9901 000137b8 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 9901 000137bc 6e672075 9901 000137c0 70205043 9901 000137c4 42203078 9901 000137c8 25782e0a 9901 000137cc 00 9902 000137cd .text 9903 00008ce8 .align 2 9904 00008ce8 .proc _SemSignal 9905 00008ce8 .global _SemSignal 9906 00008ce8 _SemSignal: 9907 ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. 9908 00008ce8 afbefffc sw -4(r29),r30; push fp 9909 00008cec 001df020 add r30,r0,r29; fp = sp 9910 00008cf0 afbffff8 sw -8(r29),r31; push ret addr 9911 00008cf4 2fbd0018 subui r29,r29,#24; alloc local storage 9912 00008cf8 afa20000 sw 0(r29),r2 9913 00008cfc afa30004 sw 4(r29),r3 9914 00008d00 afa40008 sw 8(r29),r4 9915 00008d04 afa5000c sw 12(r29),r5 9916 00008d08 8fc20000 lw r2,(r30) 9917 00008d0c 23bdfff8 addi r29,r29,#-8 9918 00008d10 2005000f addi r5,r0,#15 9919 00008d14 afa50000 sw (r29),r5 9920 00008d18 0fff856c jal _SetIntrs 9921 00008d1c 54000000 nop; not filled. 9922 00008d20 00012020 add r4,r0,r1 9923 00008d24 23bd0008 addi r29,r29,#8 9924 00008d28 23bdfff8 addi r29,r29,#-8 9925 00008d2c 3c030001 lhi r3,((_debugstr)>>16)&0xffff 9926 00008d30 24630d78 addui r3,r3,(_debugstr)&0xffff 9927 00008d34 afa30000 sw (r29),r3 9928 00008d38 20050073 addi r5,r0,#115 9929 00008d3c afa50004 sw 4(r29),r5 9930 00008d40 0fffb0f0 jal _dindex 9931 00008d44 54000000 nop; not filled. 9932 00008d48 23bd0008 addi r29,r29,#8 9933 00008d4c 64210000 snei r1,r1,#0 9934 00008d50 1420002c bnez r1,L113_LF7 9935 00008d54 54000000 nop; not filled. 9936 00008d58 23bdfff8 addi r29,r29,#-8 9937 00008d5c afa30000 sw (r29),r3 9938 00008d60 2005002b addi r5,r0,#43 9939 00008d64 afa50004 sw 4(r29),r5 9940 00008d68 0fffb0c8 jal _dindex 9941 00008d6c 54000000 nop; not filled. 9942 00008d70 23bd0008 addi r29,r29,#8 9943 00008d74 64210000 snei r1,r1,#0 9944 00008d78 1020002c beqz r1,L112_LF7 9945 00008d7c 54000000 nop; not filled. 9946 00008d80 L113_LF7: 9947 00008d80 23bdfff0 addi r29,r29,#-16 9948 00008d84 3c050001 lhi r5,((LC5_LF7)>>16)&0xffff 9949 00008d88 24a53794 addui r5,r5,(LC5_LF7)&0xffff 9950 00008d8c afa50000 sw (r29),r5 9951 00008d90 afa20004 sw 4(r29),r2 9952 00008d94 8c45000c lw r5,12(r2) 9953 00008d98 afa50008 sw 8(r29),r5 9954 00008d9c 0c002330 jal _printf 9955 00008da0 54000000 nop; not filled. 9956 00008da4 23bd0010 addi r29,r29,#16 9957 00008da8 L112_LF7: 9958 00008da8 8c41000c lw r1,12(r2) 9959 00008dac 20210001 addi r1,r1,#1 9960 00008db0 ac41000c sw 12(r2),r1 9961 00008db4 70210000 slei r1,r1,#0 9962 00008db8 102000ec beqz r1,L114_LF7 9963 00008dbc 54000000 nop; not filled. 9964 00008dc0 8c430000 lw r3,(r2) 9965 00008dc4 8c610008 lw r1,8(r3) 9966 00008dc8 8c210008 lw r1,8(r1) 9967 00008dcc 6c210000 sgti r1,r1,#0 9968 00008dd0 1020002c beqz r1,L117_LF7 9969 00008dd4 54000000 nop; not filled. 9970 00008dd8 8c610004 lw r1,4(r3) 9971 00008ddc 8c650000 lw r5,(r3) 9972 00008de0 ac250000 sw (r1),r5 9973 00008de4 8c610000 lw r1,(r3) 9974 00008de8 8c650004 lw r5,4(r3) 9975 00008dec ac250004 sw 4(r1),r5 9976 00008df0 8c620008 lw r2,8(r3) 9977 00008df4 8c410008 lw r1,8(r2) 9978 00008df8 2021ffff addi r1,r1,#-1 9979 00008dfc ac410008 sw 8(r2),r1 9980 00008e00 L117_LF7: 9981 00008e00 20050000 addi r5,r0,#0 9982 00008e04 ac650000 sw (r3),r5 9983 00008e08 23bdfff8 addi r29,r29,#-8 9984 00008e0c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 9985 00008e10 24420d78 addui r2,r2,(_debugstr)&0xffff 9986 00008e14 afa20000 sw (r29),r2 9987 00008e18 20050073 addi r5,r0,#115 9988 00008e1c afa50004 sw 4(r29),r5 9989 00008e20 0fffb010 jal _dindex 9990 00008e24 54000000 nop; not filled. 9991 00008e28 23bd0008 addi r29,r29,#8 9992 00008e2c 64210000 snei r1,r1,#0 9993 00008e30 1420002c bnez r1,L119_LF7 9994 00008e34 54000000 nop; not filled. 9995 00008e38 23bdfff8 addi r29,r29,#-8 9996 00008e3c afa20000 sw (r29),r2 9997 00008e40 2005002b addi r5,r0,#43 9998 00008e44 afa50004 sw 4(r29),r5 9999 00008e48 0fffafe8 jal _dindex 10000 00008e4c 54000000 nop; not filled. 10001 00008e50 23bd0008 addi r29,r29,#8 10002 00008e54 64210000 snei r1,r1,#0 10003 00008e58 10200028 beqz r1,L118_LF7 10004 00008e5c 54000000 nop; not filled. 10005 00008e60 L119_LF7: 10006 00008e60 23bdfff8 addi r29,r29,#-8 10007 00008e64 3c050001 lhi r5,((LC6_LF7)>>16)&0xffff 10008 00008e68 24a537b8 addui r5,r5,(LC6_LF7)&0xffff 10009 00008e6c afa50000 sw (r29),r5 10010 00008e70 8c61000c lw r1,12(r3) 10011 00008e74 afa10004 sw 4(r29),r1 10012 00008e78 0c002254 jal _printf 10013 00008e7c 54000000 nop; not filled. 10014 00008e80 23bd0008 addi r29,r29,#8 10015 00008e84 L118_LF7: 10016 00008e84 23bdfff8 addi r29,r29,#-8 10017 00008e88 8c65000c lw r5,12(r3) 10018 00008e8c afa50000 sw (r29),r5 10019 00008e90 0fffc2e4 jal _ProcessWakeup 10020 00008e94 54000000 nop; not filled. 10021 00008e98 afa30000 sw (r29),r3 10022 00008e9c 0ffff25c jal _QueueFreeLink 10023 00008ea0 54000000 nop; not filled. 10024 00008ea4 23bd0008 addi r29,r29,#8 10025 00008ea8 L114_LF7: 10026 00008ea8 23bdfff8 addi r29,r29,#-8 10027 00008eac afa40000 sw (r29),r4 10028 00008eb0 0fff83d4 jal _SetIntrs 10029 00008eb4 54000000 nop; not filled. 10030 00008eb8 23bd0008 addi r29,r29,#8 10031 00008ebc 8fa20000 lw r2,0(r29) 10032 00008ec0 8fa30004 lw r3,4(r29) 10033 00008ec4 8fa40008 lw r4,8(r29) 10034 00008ec8 8fa5000c lw r5,12(r29) 10035 00008ecc 8fdffff8 lw r31,-8(r30) 10036 00008ed0 001ee820 add r29,r0,r30 10037 00008ed4 8fdefffc lw r30,-4(r30) 10038 00008ed8 4be00000 jr r31 10039 00008edc 54000000 nop 10040 00008ee0 .endproc _SemSignal 10041 00008ee0 .align 2 10042 00008ee0 .proc _SemHandleSignal 10043 00008ee0 .global _SemHandleSignal 10044 00008ee0 _SemHandleSignal: 10045 ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. 10046 00008ee0 afbefffc sw -4(r29),r30; push fp 10047 00008ee4 001df020 add r30,r0,r29; fp = sp 10048 00008ee8 afbffff8 sw -8(r29),r31; push ret addr 10049 00008eec 2fbd0010 subui r29,r29,#16; alloc local storage 10050 00008ef0 afa20000 sw 0(r29),r2 10051 00008ef4 8fdf0000 lw r31,(r30) 10052 00008ef8 73e1001f sleui r1,r31,#31 10053 00008efc 10200058 beqz r1,L126_LF7 10054 00008f00 54000000 nop; not filled. 10055 00008f04 53e10002 slli r1,r31,#0x2 10056 00008f08 003f0820 add r1,r1,r31 10057 00008f0c 50210002 slli r1,r1,#0x2 10058 00008f10 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 10059 00008f14 244237d0 addui r2,r2,(_sems_LF7)&0xffff 10060 00008f18 0022f820 add r31,r1,r2 10061 00008f1c 8fe10010 lw r1,16(r31) 10062 00008f20 64210000 snei r1,r1,#0 10063 00008f24 10200024 beqz r1,L127_LF7 10064 00008f28 54000000 nop; not filled. 10065 00008f2c 23bdfff8 addi r29,r29,#-8 10066 00008f30 afbf0000 sw (r29),r31 10067 00008f34 0ffffdb0 jal _SemSignal 10068 00008f38 54000000 nop; not filled. 10069 00008f3c 20010000 addi r1,r0,#0 10070 00008f40 23bd0008 addi r29,r29,#8 10071 00008f44 08000014 j L125_LF7 10072 00008f48 54000000 nop; not filled. 10073 00008f4c L127_LF7: 10074 00008f4c 20010001 addi r1,r0,#1 10075 00008f50 08000008 j L125_LF7 10076 00008f54 54000000 nop; not filled. 10077 00008f58 L126_LF7: 10078 00008f58 20010001 addi r1,r0,#1 10079 00008f5c L125_LF7: 10080 00008f5c 8fa20000 lw r2,0(r29) 10081 00008f60 8fdffff8 lw r31,-8(r30) 10082 00008f64 001ee820 add r29,r0,r30 10083 00008f68 8fdefffc lw r30,-4(r30) 10084 00008f6c 4be00000 jr r31 10085 00008f70 54000000 nop 10086 00008f74 .endproc _SemHandleSignal 10087 00008f74 .data 10088 000137cd .align 2 10089 000137d0 _sems_LF7: 10090 000137d0 .space 640 10091 ; Compiled by GCC 10093 00013a50 .align 2 10094 00013a50 _rcsid_LF8: 10095 00013a50 3a207472 .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 10095 00013a54 6170732e 10095 00013a58 632c7620 10095 00013a5c 312e3120 10095 00013a60 32303030 10095 00013a64 2f30392f 10095 00013a68 32302030 10095 00013a6c 313a3530 10095 00013a70 3a313920 10095 00013a74 656c6d20 10095 00013a78 45787020 10095 00013a7c 656c6d20 10095 00013a80 303030 10096 00013a83 .text 10097 00008f74 .align 2 10098 00008f74 .proc _isspace 10099 00008f74 .global _isspace 10100 00008f74 _isspace: 10101 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 10102 00008f74 afbefffc sw -4(r29),r30; push fp 10103 00008f78 001df020 add r30,r0,r29; fp = sp 10104 00008f7c afbffff8 sw -8(r29),r31; push ret addr 10105 00008f80 2fbd0010 subui r29,r29,#16; alloc local storage 10106 00008f84 afa20000 sw 0(r29),r2 10107 00008f88 83c20003 lb r2,3(r30) 10108 00008f8c 201f0000 addi r31,r0,#0 10109 00008f90 304100ff andi r1,r2,#0x00ff 10110 00008f94 60210020 seqi r1,r1,#32 10111 00008f98 14200018 bnez r1,L6_LF8 10112 00008f9c 54000000 nop; not filled. 10113 00008fa0 2041fff7 addi r1,r2,#-9 10114 00008fa4 302100ff andi r1,r1,#0x00ff 10115 00008fa8 70210001 sleui r1,r1,#1 10116 00008fac 10200008 beqz r1,L5_LF8 10117 00008fb0 54000000 nop; not filled. 10118 00008fb4 L6_LF8: 10119 00008fb4 201f0001 addi r31,r0,#1 10120 00008fb8 L5_LF8: 10121 00008fb8 001f0820 add r1,r0,r31 10122 00008fbc 8fa20000 lw r2,0(r29) 10123 00008fc0 8fdffff8 lw r31,-8(r30) 10124 00008fc4 001ee820 add r29,r0,r30 10125 00008fc8 8fdefffc lw r30,-4(r30) 10126 00008fcc 4be00000 jr r31 10127 00008fd0 54000000 nop 10128 00008fd4 .endproc _isspace 10129 00008fd4 .align 2 10130 00008fd4 .proc _isxdigit 10131 00008fd4 .global _isxdigit 10132 00008fd4 _isxdigit: 10133 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 10134 00008fd4 afbefffc sw -4(r29),r30; push fp 10135 00008fd8 001df020 add r30,r0,r29; fp = sp 10136 00008fdc afbffff8 sw -8(r29),r31; push ret addr 10137 00008fe0 2fbd0010 subui r29,r29,#16; alloc local storage 10138 00008fe4 afa20000 sw 0(r29),r2 10139 00008fe8 83df0003 lb r31,3(r30) 10140 00008fec 20020000 addi r2,r0,#0 10141 00008ff0 23e1ffd0 addi r1,r31,#-48 10142 00008ff4 302100ff andi r1,r1,#0x00ff 10143 00008ff8 70210009 sleui r1,r1,#9 10144 00008ffc 14200028 bnez r1,L12_LF8 10145 00009000 54000000 nop; not filled. 10146 00009004 23e1ff9f addi r1,r31,#-97 10147 00009008 302100ff andi r1,r1,#0x00ff 10148 0000900c 70210005 sleui r1,r1,#5 10149 00009010 14200014 bnez r1,L12_LF8 10150 00009014 54000000 nop; not filled. 10151 00009018 33e100ff andi r1,r31,#0x00ff 10152 0000901c 64210041 snei r1,r1,#65 10153 00009020 14200008 bnez r1,L11_LF8 10154 00009024 54000000 nop; not filled. 10155 00009028 L12_LF8: 10156 00009028 20020001 addi r2,r0,#1 10157 0000902c L11_LF8: 10158 0000902c 00020820 add r1,r0,r2 10159 00009030 8fa20000 lw r2,0(r29) 10160 00009034 8fdffff8 lw r31,-8(r30) 10161 00009038 001ee820 add r29,r0,r30 10162 0000903c 8fdefffc lw r30,-4(r30) 10163 00009040 4be00000 jr r31 10164 00009044 54000000 nop 10165 00009048 .endproc _isxdigit 10166 00009048 .align 2 10167 00009048 .proc _DisableIntrs 10168 00009048 .global _DisableIntrs 10169 00009048 _DisableIntrs: 10170 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 10171 00009048 afbefffc sw -4(r29),r30; push fp 10172 0000904c 001df020 add r30,r0,r29; fp = sp 10173 00009050 afbffff8 sw -8(r29),r31; push ret addr 10174 00009054 2fbd0010 subui r29,r29,#16; alloc local storage 10175 00009058 afa20000 sw 0(r29),r2 10176 0000905c 23bdfff8 addi r29,r29,#-8 10177 00009060 2002000f addi r2,r0,#15 10178 00009064 afa20000 sw (r29),r2 10179 00009068 0fff821c jal _SetIntrs 10180 0000906c 54000000 nop; not filled. 10181 00009070 23bd0008 addi r29,r29,#8 10182 00009074 8fa20000 lw r2,0(r29) 10183 00009078 8fdffff8 lw r31,-8(r30) 10184 0000907c 001ee820 add r29,r0,r30 10185 00009080 8fdefffc lw r30,-4(r30) 10186 00009084 4be00000 jr r31 10187 00009088 54000000 nop 10188 0000908c .endproc _DisableIntrs 10189 0000908c .align 2 10190 0000908c .proc _EnableIntrs 10191 0000908c .global _EnableIntrs 10192 0000908c _EnableIntrs: 10193 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 10194 0000908c afbefffc sw -4(r29),r30; push fp 10195 00009090 001df020 add r30,r0,r29; fp = sp 10196 00009094 afbffff8 sw -8(r29),r31; push ret addr 10197 00009098 2fbd0010 subui r29,r29,#16; alloc local storage 10198 0000909c afa20000 sw 0(r29),r2 10199 000090a0 23bdfff8 addi r29,r29,#-8 10200 000090a4 20020000 addi r2,r0,#0 10201 000090a8 afa20000 sw (r29),r2 10202 000090ac 0fff81d8 jal _SetIntrs 10203 000090b0 54000000 nop; not filled. 10204 000090b4 23bd0008 addi r29,r29,#8 10205 000090b8 8fa20000 lw r2,0(r29) 10206 000090bc 8fdffff8 lw r31,-8(r30) 10207 000090c0 001ee820 add r29,r0,r30 10208 000090c4 8fdefffc lw r30,-4(r30) 10209 000090c8 4be00000 jr r31 10210 000090cc 54000000 nop 10211 000090d0 .endproc _EnableIntrs 10212 000090d0 .align 2 10213 000090d0 .proc _RestoreIntrs 10214 000090d0 .global _RestoreIntrs 10215 000090d0 _RestoreIntrs: 10216 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 10217 000090d0 afbefffc sw -4(r29),r30; push fp 10218 000090d4 001df020 add r30,r0,r29; fp = sp 10219 000090d8 afbffff8 sw -8(r29),r31; push ret addr 10220 000090dc 2fbd0010 subui r29,r29,#16; alloc local storage 10221 000090e0 afa20000 sw 0(r29),r2 10222 000090e4 23bdfff8 addi r29,r29,#-8 10223 000090e8 8fc20000 lw r2,(r30) 10224 000090ec afa20000 sw (r29),r2 10225 000090f0 0fff8194 jal _SetIntrs 10226 000090f4 54000000 nop; not filled. 10227 000090f8 23bd0008 addi r29,r29,#8 10228 000090fc 8fa20000 lw r2,0(r29) 10229 00009100 8fdffff8 lw r31,-8(r30) 10230 00009104 001ee820 add r29,r0,r30 10231 00009108 8fdefffc lw r30,-4(r30) 10232 0000910c 4be00000 jr r31 10233 00009110 54000000 nop 10234 00009114 .endproc _RestoreIntrs 10235 00009114 .align 2 10236 00009114 .proc _QueueLinkInit 10237 00009114 .global _QueueLinkInit 10238 00009114 _QueueLinkInit: 10239 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 10240 00009114 afbefffc sw -4(r29),r30; push fp 10241 00009118 001df020 add r30,r0,r29; fp = sp 10242 0000911c afbffff8 sw -8(r29),r31; push ret addr 10243 00009120 2fbd0010 subui r29,r29,#16; alloc local storage 10244 00009124 afa20000 sw 0(r29),r2 10245 00009128 8fc10000 lw r1,(r30) 10246 0000912c 8fc20004 lw r2,4(r30) 10247 00009130 201f0000 addi r31,r0,#0 10248 00009134 ac3f0000 sw (r1),r31 10249 00009138 ac22000c sw 12(r1),r2 10250 0000913c 8fa20000 lw r2,0(r29) 10251 00009140 8fdffff8 lw r31,-8(r30) 10252 00009144 001ee820 add r29,r0,r30 10253 00009148 8fdefffc lw r30,-4(r30) 10254 0000914c 4be00000 jr r31 10255 00009150 54000000 nop 10256 00009154 .endproc _QueueLinkInit 10257 00009154 .align 2 10258 00009154 .proc _QueueNext 10259 00009154 .global _QueueNext 10260 00009154 _QueueNext: 10261 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 10262 00009154 afbefffc sw -4(r29),r30; push fp 10263 00009158 001df020 add r30,r0,r29; fp = sp 10264 0000915c afbffff8 sw -8(r29),r31; push ret addr 10265 00009160 2fbd0008 subui r29,r29,#8; alloc local storage 10266 00009164 8fc10000 lw r1,(r30) 10267 00009168 8c210000 lw r1,(r1) 10268 0000916c 8fdffff8 lw r31,-8(r30) 10269 00009170 001ee820 add r29,r0,r30 10270 00009174 8fdefffc lw r30,-4(r30) 10271 00009178 4be00000 jr r31 10272 0000917c 54000000 nop 10273 00009180 .endproc _QueueNext 10274 00009180 .align 2 10275 00009180 .proc _QueuePrev 10276 00009180 .global _QueuePrev 10277 00009180 _QueuePrev: 10278 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 10279 00009180 afbefffc sw -4(r29),r30; push fp 10280 00009184 001df020 add r30,r0,r29; fp = sp 10281 00009188 afbffff8 sw -8(r29),r31; push ret addr 10282 0000918c 2fbd0008 subui r29,r29,#8; alloc local storage 10283 00009190 8fc10000 lw r1,(r30) 10284 00009194 8c210004 lw r1,4(r1) 10285 00009198 8fdffff8 lw r31,-8(r30) 10286 0000919c 001ee820 add r29,r0,r30 10287 000091a0 8fdefffc lw r30,-4(r30) 10288 000091a4 4be00000 jr r31 10289 000091a8 54000000 nop 10290 000091ac .endproc _QueuePrev 10291 000091ac .align 2 10292 000091ac .proc _QueueFirst 10293 000091ac .global _QueueFirst 10294 000091ac _QueueFirst: 10295 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 10296 000091ac afbefffc sw -4(r29),r30; push fp 10297 000091b0 001df020 add r30,r0,r29; fp = sp 10298 000091b4 afbffff8 sw -8(r29),r31; push ret addr 10299 000091b8 2fbd0008 subui r29,r29,#8; alloc local storage 10300 000091bc 8fc10000 lw r1,(r30) 10301 000091c0 8c210000 lw r1,(r1) 10302 000091c4 8fdffff8 lw r31,-8(r30) 10303 000091c8 001ee820 add r29,r0,r30 10304 000091cc 8fdefffc lw r30,-4(r30) 10305 000091d0 4be00000 jr r31 10306 000091d4 54000000 nop 10307 000091d8 .endproc _QueueFirst 10308 000091d8 .align 2 10309 000091d8 .proc _QueueLast 10310 000091d8 .global _QueueLast 10311 000091d8 _QueueLast: 10312 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 10313 000091d8 afbefffc sw -4(r29),r30; push fp 10314 000091dc 001df020 add r30,r0,r29; fp = sp 10315 000091e0 afbffff8 sw -8(r29),r31; push ret addr 10316 000091e4 2fbd0008 subui r29,r29,#8; alloc local storage 10317 000091e8 8fc10000 lw r1,(r30) 10318 000091ec 8c210004 lw r1,4(r1) 10319 000091f0 8fdffff8 lw r31,-8(r30) 10320 000091f4 001ee820 add r29,r0,r30 10321 000091f8 8fdefffc lw r30,-4(r30) 10322 000091fc 4be00000 jr r31 10323 00009200 54000000 nop 10324 00009204 .endproc _QueueLast 10325 00009204 .align 2 10326 00009204 .proc _QueueInsertAfter 10327 00009204 .global _QueueInsertAfter 10328 00009204 _QueueInsertAfter: 10329 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 10330 00009204 afbefffc sw -4(r29),r30; push fp 10331 00009208 001df020 add r30,r0,r29; fp = sp 10332 0000920c afbffff8 sw -8(r29),r31; push ret addr 10333 00009210 2fbd0010 subui r29,r29,#16; alloc local storage 10334 00009214 afa20000 sw 0(r29),r2 10335 00009218 afa30004 sw 4(r29),r3 10336 0000921c 8fc30000 lw r3,(r30) 10337 00009220 8fc20004 lw r2,4(r30) 10338 00009224 8fc10008 lw r1,8(r30) 10339 00009228 ac230008 sw 8(r1),r3 10340 0000922c ac220004 sw 4(r1),r2 10341 00009230 8c5f0000 lw r31,(r2) 10342 00009234 ac3f0000 sw (r1),r31 10343 00009238 ac410000 sw (r2),r1 10344 0000923c 8c220000 lw r2,(r1) 10345 00009240 ac410004 sw 4(r2),r1 10346 00009244 8c610008 lw r1,8(r3) 10347 00009248 20210001 addi r1,r1,#1 10348 0000924c ac610008 sw 8(r3),r1 10349 00009250 8fa20000 lw r2,0(r29) 10350 00009254 8fa30004 lw r3,4(r29) 10351 00009258 8fdffff8 lw r31,-8(r30) 10352 0000925c 001ee820 add r29,r0,r30 10353 00009260 8fdefffc lw r30,-4(r30) 10354 00009264 4be00000 jr r31 10355 00009268 54000000 nop 10356 0000926c .endproc _QueueInsertAfter 10357 0000926c .align 2 10358 0000926c .proc _QueueInsertFirst 10359 0000926c .global _QueueInsertFirst 10360 0000926c _QueueInsertFirst: 10361 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 10362 0000926c afbefffc sw -4(r29),r30; push fp 10363 00009270 001df020 add r30,r0,r29; fp = sp 10364 00009274 afbffff8 sw -8(r29),r31; push ret addr 10365 00009278 2fbd0010 subui r29,r29,#16; alloc local storage 10366 0000927c afa20000 sw 0(r29),r2 10367 00009280 afa30004 sw 4(r29),r3 10368 00009284 8fc30000 lw r3,(r30) 10369 00009288 8fc10004 lw r1,4(r30) 10370 0000928c ac230008 sw 8(r1),r3 10371 00009290 ac230004 sw 4(r1),r3 10372 00009294 8c7f0000 lw r31,(r3) 10373 00009298 ac3f0000 sw (r1),r31 10374 0000929c ac610000 sw (r3),r1 10375 000092a0 8c220000 lw r2,(r1) 10376 000092a4 ac410004 sw 4(r2),r1 10377 000092a8 8c610008 lw r1,8(r3) 10378 000092ac 20210001 addi r1,r1,#1 10379 000092b0 ac610008 sw 8(r3),r1 10380 000092b4 8fa20000 lw r2,0(r29) 10381 000092b8 8fa30004 lw r3,4(r29) 10382 000092bc 8fdffff8 lw r31,-8(r30) 10383 000092c0 001ee820 add r29,r0,r30 10384 000092c4 8fdefffc lw r30,-4(r30) 10385 000092c8 4be00000 jr r31 10386 000092cc 54000000 nop 10387 000092d0 .endproc _QueueInsertFirst 10388 000092d0 .align 2 10389 000092d0 .proc _QueueInsertLast 10390 000092d0 .global _QueueInsertLast 10391 000092d0 _QueueInsertLast: 10392 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 10393 000092d0 afbefffc sw -4(r29),r30; push fp 10394 000092d4 001df020 add r30,r0,r29; fp = sp 10395 000092d8 afbffff8 sw -8(r29),r31; push ret addr 10396 000092dc 2fbd0010 subui r29,r29,#16; alloc local storage 10397 000092e0 afa20000 sw 0(r29),r2 10398 000092e4 afa30004 sw 4(r29),r3 10399 000092e8 8fc30000 lw r3,(r30) 10400 000092ec 8fc10004 lw r1,4(r30) 10401 000092f0 8c620004 lw r2,4(r3) 10402 000092f4 ac230008 sw 8(r1),r3 10403 000092f8 ac220004 sw 4(r1),r2 10404 000092fc 8c5f0000 lw r31,(r2) 10405 00009300 ac3f0000 sw (r1),r31 10406 00009304 ac410000 sw (r2),r1 10407 00009308 8c220000 lw r2,(r1) 10408 0000930c ac410004 sw 4(r2),r1 10409 00009310 8c610008 lw r1,8(r3) 10410 00009314 20210001 addi r1,r1,#1 10411 00009318 ac610008 sw 8(r3),r1 10412 0000931c 8fa20000 lw r2,0(r29) 10413 00009320 8fa30004 lw r3,4(r29) 10414 00009324 8fdffff8 lw r31,-8(r30) 10415 00009328 001ee820 add r29,r0,r30 10416 0000932c 8fdefffc lw r30,-4(r30) 10417 00009330 4be00000 jr r31 10418 00009334 54000000 nop 10419 00009338 .endproc _QueueInsertLast 10420 00009338 .align 2 10421 00009338 .proc _QueueRemove 10422 00009338 .global _QueueRemove 10423 00009338 _QueueRemove: 10424 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 10425 00009338 afbefffc sw -4(r29),r30; push fp 10426 0000933c 001df020 add r30,r0,r29; fp = sp 10427 00009340 afbffff8 sw -8(r29),r31; push ret addr 10428 00009344 2fbd0010 subui r29,r29,#16; alloc local storage 10429 00009348 afa20000 sw 0(r29),r2 10430 0000934c afa30004 sw 4(r29),r3 10431 00009350 8fdf0000 lw r31,(r30) 10432 00009354 8fe10008 lw r1,8(r31) 10433 00009358 8c210008 lw r1,8(r1) 10434 0000935c 6c210000 sgti r1,r1,#0 10435 00009360 1020002c beqz r1,L44_LF8 10436 00009364 54000000 nop; not filled. 10437 00009368 8fe10004 lw r1,4(r31) 10438 0000936c 8fe30000 lw r3,(r31) 10439 00009370 ac230000 sw (r1),r3 10440 00009374 8fe10000 lw r1,(r31) 10441 00009378 8fe30004 lw r3,4(r31) 10442 0000937c ac230004 sw 4(r1),r3 10443 00009380 8fe20008 lw r2,8(r31) 10444 00009384 8c410008 lw r1,8(r2) 10445 00009388 2021ffff addi r1,r1,#-1 10446 0000938c ac410008 sw 8(r2),r1 10447 00009390 L44_LF8: 10448 00009390 20030000 addi r3,r0,#0 10449 00009394 afe30000 sw (r31),r3 10450 00009398 8fa20000 lw r2,0(r29) 10451 0000939c 8fa30004 lw r3,4(r29) 10452 000093a0 8fdffff8 lw r31,-8(r30) 10453 000093a4 001ee820 add r29,r0,r30 10454 000093a8 8fdefffc lw r30,-4(r30) 10455 000093ac 4be00000 jr r31 10456 000093b0 54000000 nop 10457 000093b4 .endproc _QueueRemove 10458 000093b4 .align 2 10459 000093b4 .proc _QueueLength 10460 000093b4 .global _QueueLength 10461 000093b4 _QueueLength: 10462 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 10463 000093b4 afbefffc sw -4(r29),r30; push fp 10464 000093b8 001df020 add r30,r0,r29; fp = sp 10465 000093bc afbffff8 sw -8(r29),r31; push ret addr 10466 000093c0 2fbd0008 subui r29,r29,#8; alloc local storage 10467 000093c4 8fc10000 lw r1,(r30) 10468 000093c8 8c210008 lw r1,8(r1) 10469 000093cc 8fdffff8 lw r31,-8(r30) 10470 000093d0 001ee820 add r29,r0,r30 10471 000093d4 8fdefffc lw r30,-4(r30) 10472 000093d8 4be00000 jr r31 10473 000093dc 54000000 nop 10474 000093e0 .endproc _QueueLength 10475 000093e0 .align 2 10476 000093e0 .proc _QueueEmpty 10477 000093e0 .global _QueueEmpty 10478 000093e0 _QueueEmpty: 10479 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 10480 000093e0 afbefffc sw -4(r29),r30; push fp 10481 000093e4 001df020 add r30,r0,r29; fp = sp 10482 000093e8 afbffff8 sw -8(r29),r31; push ret addr 10483 000093ec 2fbd0008 subui r29,r29,#8; alloc local storage 10484 000093f0 8fc10000 lw r1,(r30) 10485 000093f4 8c210008 lw r1,8(r1) 10486 000093f8 60210000 seqi r1,r1,#0 10487 000093fc 8fdffff8 lw r31,-8(r30) 10488 00009400 001ee820 add r29,r0,r30 10489 00009404 8fdefffc lw r30,-4(r30) 10490 00009408 4be00000 jr r31 10491 0000940c 54000000 nop 10492 00009410 .endproc _QueueEmpty 10493 00009410 .align 2 10494 00009410 .proc _TimerSet 10495 00009410 .global _TimerSet 10496 00009410 _TimerSet: 10497 ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. 10498 00009410 afbefffc sw -4(r29),r30; push fp 10499 00009414 001df020 add r30,r0,r29; fp = sp 10500 00009418 afbffff8 sw -8(r29),r31; push ret addr 10501 0000941c 2fbd0008 subui r29,r29,#8; alloc local storage 10502 00009420 3c01fff0 lhi r1,#-16 10503 00009424 24210010 addui r1,r1,#16 10504 00009428 8fdf0000 lw r31,(r30) 10505 0000942c ac3f0000 sw (r1),r31 10506 00009430 8fdffff8 lw r31,-8(r30) 10507 00009434 001ee820 add r29,r0,r30 10508 00009438 8fdefffc lw r30,-4(r30) 10509 0000943c 4be00000 jr r31 10510 00009440 54000000 nop 10511 00009444 .endproc _TimerSet 10512 00009444 .align 2 10513 00009444 .proc _KbdModuleInit 10514 00009444 .global _KbdModuleInit 10515 00009444 _KbdModuleInit: 10516 ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. 10517 00009444 afbefffc sw -4(r29),r30; push fp 10518 00009448 001df020 add r30,r0,r29; fp = sp 10519 0000944c afbffff8 sw -8(r29),r31; push ret addr 10520 00009450 2fbd0008 subui r29,r29,#8; alloc local storage 10521 00009454 3c01fff0 lhi r1,#-16 10522 00009458 242101c0 addui r1,r1,#448 10523 0000945c 201f0001 addi r31,r0,#1 10524 00009460 ac3f0000 sw (r1),r31 10525 00009464 8fdffff8 lw r31,-8(r30) 10526 00009468 001ee820 add r29,r0,r30 10527 0000946c 8fdefffc lw r30,-4(r30) 10528 00009470 4be00000 jr r31 10529 00009474 54000000 nop 10530 00009478 .endproc _KbdModuleInit 10531 00009478 .data 10532 00013a83 .align 2 10533 00013a84 LC0_LF8: 10534 00013a84 46617461 .ascii "Fatal: Cumulative length of all arguments > 100\n\000" 10534 00013a88 6c3a2043 10534 00013a8c 756d756c 10534 00013a90 61746976 10534 00013a94 65206c65 10534 00013a98 6e677468 10534 00013a9c 206f6620 10534 00013aa0 616c6c20 10534 00013aa4 61726775 10534 00013aa8 6d656e74 10534 00013aac 73203e20 10534 00013ab0 3130300a 10534 00013ab4 00 10535 00013ab5 .text 10536 00009478 .align 2 10537 00009478 .proc _TrapProcessCreateHandler_LF8 10538 00009478 _TrapProcessCreateHandler_LF8: 10539 ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. 10540 00009478 afbefffc sw -4(r29),r30; push fp 10541 0000947c 001df020 add r30,r0,r29; fp = sp 10542 00009480 afbffff8 sw -8(r29),r31; push ret addr 10543 00009484 2fbd06a0 subui r29,r29,#1696; alloc local storage 10544 00009488 afa20000 sw 0(r29),r2 10545 0000948c afa30004 sw 4(r29),r3 10546 00009490 afa40008 sw 8(r29),r4 10547 00009494 afa5000c sw 12(r29),r5 10548 00009498 afa60010 sw 16(r29),r6 10549 0000949c afa70014 sw 20(r29),r7 10550 000094a0 afa80018 sw 24(r29),r8 10551 000094a4 afa9001c sw 28(r29),r9 10552 000094a8 afaa0020 sw 32(r29),r10 10553 000094ac afab0024 sw 36(r29),r11 10554 000094b0 afac0028 sw 40(r29),r12 10555 000094b4 8fc40000 lw r4,(r30) 10556 000094b8 8fc60004 lw r6,4(r30) 10557 000094bc 23c2fbf8 addi r2,r30,#-1032 10558 000094c0 23c3fc5b addi r3,r30,#-933 10559 000094c4 L65_LF8: 10560 000094c4 200c0000 addi r12,r0,(#0x0)&0xff 10561 000094c8 a04c0000 sb (r2),r12 10562 000094cc 20420001 addi r2,r2,#1 10563 000094d0 0043082c sle r1,r2,r3 10564 000094d4 1420ffec bnez r1,L65_LF8 10565 000094d8 54000000 nop; not filled. 10566 000094dc 20050000 addi r5,r0,#0 10567 000094e0 64c10000 snei r1,r6,#0 10568 000094e4 142000a0 bnez r1,L67_LF8 10569 000094e8 54000000 nop; not filled. 10570 000094ec 23bdfff0 addi r29,r29,#-16 10571 000094f0 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 10572 000094f4 24420e40 addui r2,r2,(_currentPCB)&0xffff 10573 000094f8 8c4c0000 lw r12,(r2) 10574 000094fc afac0000 sw (r29),r12 10575 00009500 afa40004 sw 4(r29),r4 10576 00009504 23c1f990 addi r1,r30,#-1648 10577 00009508 afa10008 sw 8(r29),r1 10578 0000950c 200c0200 addi r12,r0,#512 10579 00009510 afac000c sw 12(r29),r12 10580 00009514 0fffa06c jal _MemoryCopyUserToSystem 10581 00009518 54000000 nop; not filled. 10582 0000951c 23bd0010 addi r29,r29,#16 10583 00009520 23c4fb8f addi r4,r30,#-1137 10584 00009524 23c3fb90 addi r3,r30,#-1136 10585 00009528 L68_LF8: 10586 00009528 23bdfff0 addi r29,r29,#-16 10587 0000952c 8c4c0000 lw r12,(r2) 10588 00009530 afac0000 sw (r29),r12 10589 00009534 8fc1f990 lw r1,-1648(r30) 10590 00009538 00250820 add r1,r1,r5 10591 0000953c afa10004 sw 4(r29),r1 10592 00009540 afa30008 sw 8(r29),r3 10593 00009544 200c0001 addi r12,r0,#1 10594 00009548 afac000c sw 12(r29),r12 10595 0000954c 0fffa034 jal _MemoryCopyUserToSystem 10596 00009550 54000000 nop; not filled. 10597 00009554 20840001 addi r4,r4,#1 10598 00009558 20630001 addi r3,r3,#1 10599 0000955c 20a50001 addi r5,r5,#1 10600 00009560 23bd0010 addi r29,r29,#16 10601 00009564 70a10063 sleui r1,r5,#99 10602 00009568 10200060 beqz r1,L73_LF8 10603 0000956c 54000000 nop; not filled. 10604 00009570 90810000 lbu r1,(r4) 10605 00009574 64210000 snei r1,r1,#0 10606 00009578 10200050 beqz r1,L73_LF8 10607 0000957c 54000000 nop; not filled. 10608 00009580 0bffffa4 j L68_LF8 10609 00009584 54000000 nop; not filled. 10610 00009588 L67_LF8: 10611 00009588 23bdfff0 addi r29,r29,#-16 10612 0000958c afa40000 sw (r29),r4 10613 00009590 23c1f990 addi r1,r30,#-1648 10614 00009594 afa10004 sw 4(r29),r1 10615 00009598 200c0200 addi r12,r0,#512 10616 0000959c afac0008 sw 8(r29),r12 10617 000095a0 0fffac20 jal _bcopy 10618 000095a4 54000000 nop; not filled. 10619 000095a8 8fccf990 lw r12,-1648(r30) 10620 000095ac afac0000 sw (r29),r12 10621 000095b0 23c1fb90 addi r1,r30,#-1136 10622 000095b4 afa10004 sw 4(r29),r1 10623 000095b8 200c0064 addi r12,r0,#100 10624 000095bc afac0008 sw 8(r29),r12 10625 000095c0 0fffa414 jal _dstrncpy 10626 000095c4 54000000 nop; not filled. 10627 000095c8 23bd0010 addi r29,r29,#16 10628 000095cc L73_LF8: 10629 000095cc 200c0000 addi r12,r0,(#0x0)&0xff 10630 000095d0 a3ccfbf3 sb -1037(r30),r12 10631 000095d4 20050000 addi r5,r0,#0 10632 000095d8 64c10000 snei r1,r6,#0 10633 000095dc 142000b0 bnez r1,L74_LF8 10634 000095e0 54000000 nop; not filled. 10635 000095e4 3c080001 lhi r8,((_currentPCB)>>16)&0xffff 10636 000095e8 25080e40 addui r8,r8,(_currentPCB)&0xffff 10637 000095ec 23cbfbf8 addi r11,r30,#-1032 10638 000095f0 23cafbf7 addi r10,r30,#-1033 10639 000095f4 23c6fff8 addi r6,r30,#-8 10640 000095f8 23c90020 addi r9,r30,#32 10641 000095fc L85_LF8: 10642 000095fc 8cc1f998 lw r1,-1640(r6) 10643 00009600 64210000 snei r1,r1,#0 10644 00009604 1020012c beqz r1,L86_LF8 10645 00009608 54000000 nop; not filled. 10646 0000960c 20020000 addi r2,r0,#0 10647 00009610 00063820 add r7,r0,r6 10648 00009614 00aa2020 add r4,r5,r10 10649 00009618 00ab1820 add r3,r5,r11 10650 0000961c L80_LF8: 10651 0000961c 23bdfff0 addi r29,r29,#-16 10652 00009620 8d0c0000 lw r12,(r8) 10653 00009624 afac0000 sw (r29),r12 10654 00009628 8ce1f998 lw r1,-1640(r7) 10655 0000962c 00220820 add r1,r1,r2 10656 00009630 afa10004 sw 4(r29),r1 10657 00009634 afa30008 sw 8(r29),r3 10658 00009638 200c0001 addi r12,r0,#1 10659 0000963c afac000c sw 12(r29),r12 10660 00009640 0fff9f40 jal _MemoryCopyUserToSystem 10661 00009644 54000000 nop; not filled. 10662 00009648 20840001 addi r4,r4,#1 10663 0000964c 20630001 addi r3,r3,#1 10664 00009650 20a50001 addi r5,r5,#1 10665 00009654 20420001 addi r2,r2,#1 10666 00009658 23bd0010 addi r29,r29,#16 10667 0000965c 70a103ff sleui r1,r5,#1023 10668 00009660 10200014 beqz r1,L77_LF8 10669 00009664 54000000 nop; not filled. 10670 00009668 90810000 lbu r1,(r4) 10671 0000966c 64210000 snei r1,r1,#0 10672 00009670 1420ffa8 bnez r1,L80_LF8 10673 00009674 54000000 nop; not filled. 10674 00009678 L77_LF8: 10675 00009678 20c60004 addi r6,r6,#4 10676 0000967c 00c9082c sle r1,r6,r9 10677 00009680 102000b0 beqz r1,L86_LF8 10678 00009684 54000000 nop; not filled. 10679 00009688 0bffff70 j L85_LF8 10680 0000968c 54000000 nop; not filled. 10681 00009690 L74_LF8: 10682 00009690 23c5fbf8 addi r5,r30,#-1032 10683 00009694 00053820 add r7,r0,r5 10684 00009698 23c3fff8 addi r3,r30,#-8 10685 0000969c 23c60020 addi r6,r30,#32 10686 000096a0 L93_LF8: 10687 000096a0 2064f998 addi r4,r3,#-1640 10688 000096a4 8c820000 lw r2,(r4) 10689 000096a8 64410000 snei r1,r2,#0 10690 000096ac 10200084 beqz r1,L86_LF8 10691 000096b0 54000000 nop; not filled. 10692 000096b4 23bdfff8 addi r29,r29,#-8 10693 000096b8 afa20000 sw (r29),r2 10694 000096bc 0fffa504 jal _dstrlen 10695 000096c0 54000000 nop; not filled. 10696 000096c4 00a11020 add r2,r5,r1 10697 000096c8 00470822 sub r1,r2,r7 10698 000096cc 23bd0008 addi r29,r29,#8 10699 000096d0 6c210064 sgti r1,r1,#100 10700 000096d4 10200028 beqz r1,L92_LF8 10701 000096d8 54000000 nop; not filled. 10702 000096dc 23bdfff8 addi r29,r29,#-8 10703 000096e0 3c0c0001 lhi r12,((LC0_LF8)>>16)&0xffff 10704 000096e4 258c3a84 addui r12,r12,(LC0_LF8)&0xffff 10705 000096e8 afac0000 sw (r29),r12 10706 000096ec 0c0019e0 jal _printf 10707 000096f0 54000000 nop; not filled. 10708 000096f4 0c0019c0 jal _exitsim 10709 000096f8 54000000 nop; not filled. 10710 000096fc 23bd0008 addi r29,r29,#8 10711 00009700 L92_LF8: 10712 00009700 23bdfff8 addi r29,r29,#-8 10713 00009704 afa50000 sw (r29),r5 10714 00009708 8c810000 lw r1,(r4) 10715 0000970c afa10004 sw 4(r29),r1 10716 00009710 0fffa260 jal _dstrcpy 10717 00009714 54000000 nop; not filled. 10718 00009718 200c0000 addi r12,r0,(#0x0)&0xff 10719 0000971c a04c0000 sb (r2),r12 10720 00009720 23bd0008 addi r29,r29,#8 10721 00009724 20630004 addi r3,r3,#4 10722 00009728 0066082c sle r1,r3,r6 10723 0000972c 1420ff70 bnez r1,L93_LF8 10724 00009730 54000000 nop; not filled. 10725 00009734 L86_LF8: 10726 00009734 200c0000 addi r12,r0,(#0x0)&0xff 10727 00009738 a3ccfff7 sb -9(r30),r12 10728 0000973c 23bdfff0 addi r29,r29,#-16 10729 00009740 200c0000 addi r12,r0,#0 10730 00009744 afac0000 sw (r29),r12 10731 00009748 23c1fbf8 addi r1,r30,#-1032 10732 0000974c afa10004 sw 4(r29),r1 10733 00009750 23c1fb90 addi r1,r30,#-1136 10734 00009754 afa10008 sw 8(r29),r1 10735 00009758 200c0001 addi r12,r0,#1 10736 0000975c afac000c sw 12(r29),r12 10737 00009760 0fffbe68 jal _ProcessFork 10738 00009764 54000000 nop; not filled. 10739 00009768 23bd0010 addi r29,r29,#16 10740 0000976c 8fa20000 lw r2,0(r29) 10741 00009770 8fa30004 lw r3,4(r29) 10742 00009774 8fa40008 lw r4,8(r29) 10743 00009778 8fa5000c lw r5,12(r29) 10744 0000977c 8fa60010 lw r6,16(r29) 10745 00009780 8fa70014 lw r7,20(r29) 10746 00009784 8fa80018 lw r8,24(r29) 10747 00009788 8fa9001c lw r9,28(r29) 10748 0000978c 8faa0020 lw r10,32(r29) 10749 00009790 8fab0024 lw r11,36(r29) 10750 00009794 8fac0028 lw r12,40(r29) 10751 00009798 8fdffff8 lw r31,-8(r30) 10752 0000979c 001ee820 add r29,r0,r30 10753 000097a0 8fdefffc lw r30,-4(r30) 10754 000097a4 4be00000 jr r31 10755 000097a8 54000000 nop 10756 000097ac .endproc _TrapProcessCreateHandler_LF8 10757 000097ac .align 2 10758 000097ac .proc _TrapPrintfHandler_LF8 10759 000097ac _TrapPrintfHandler_LF8: 10760 ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. 10761 000097ac afbefffc sw -4(r29),r30; push fp 10762 000097b0 001df020 add r30,r0,r29; fp = sp 10763 000097b4 afbffff8 sw -8(r29),r31; push ret addr 10764 000097b8 2fbd00d0 subui r29,r29,#208; alloc local storage 10765 000097bc afa20000 sw 0(r29),r2 10766 000097c0 afa30004 sw 4(r29),r3 10767 000097c4 afa40008 sw 8(r29),r4 10768 000097c8 afa5000c sw 12(r29),r5 10769 000097cc afa60010 sw 16(r29),r6 10770 000097d0 afa70014 sw 20(r29),r7 10771 000097d4 afa80018 sw 24(r29),r8 10772 000097d8 afa9001c sw 28(r29),r9 10773 000097dc afaa0020 sw 32(r29),r10 10774 000097e0 afab0024 sw 36(r29),r11 10775 000097e4 8fc40000 lw r4,(r30) 10776 000097e8 8fc10004 lw r1,4(r30) 10777 000097ec 20080000 addi r8,r0,#0 10778 000097f0 00081820 add r3,r0,r8 10779 000097f4 64210000 snei r1,r1,#0 10780 000097f8 142000a0 bnez r1,L95_LF8 10781 000097fc 54000000 nop; not filled. 10782 00009800 23bdfff0 addi r29,r29,#-16 10783 00009804 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 10784 00009808 24420e40 addui r2,r2,(_currentPCB)&0xffff 10785 0000980c 8c4b0000 lw r11,(r2) 10786 00009810 afab0000 sw (r29),r11 10787 00009814 afa40004 sw 4(r29),r4 10788 00009818 23c1ff58 addi r1,r30,#-168 10789 0000981c afa10008 sw 8(r29),r1 10790 00009820 200b0028 addi r11,r0,#40 10791 00009824 afab000c sw 12(r29),r11 10792 00009828 0fff9d58 jal _MemoryCopyUserToSystem 10793 0000982c 54000000 nop; not filled. 10794 00009830 23bd0010 addi r29,r29,#16 10795 00009834 23c5ffa7 addi r5,r30,#-89 10796 00009838 23c4ffa8 addi r4,r30,#-88 10797 0000983c L96_LF8: 10798 0000983c 23bdfff0 addi r29,r29,#-16 10799 00009840 8c4b0000 lw r11,(r2) 10800 00009844 afab0000 sw (r29),r11 10801 00009848 8fc1ff58 lw r1,-168(r30) 10802 0000984c 00230820 add r1,r1,r3 10803 00009850 afa10004 sw 4(r29),r1 10804 00009854 afa40008 sw 8(r29),r4 10805 00009858 200b0001 addi r11,r0,#1 10806 0000985c afab000c sw 12(r29),r11 10807 00009860 0fff9d20 jal _MemoryCopyUserToSystem 10808 00009864 54000000 nop; not filled. 10809 00009868 20a50001 addi r5,r5,#1 10810 0000986c 20840001 addi r4,r4,#1 10811 00009870 20630001 addi r3,r3,#1 10812 00009874 23bd0010 addi r29,r29,#16 10813 00009878 7061004f sleui r1,r3,#79 10814 0000987c 10200060 beqz r1,L101_LF8 10815 00009880 54000000 nop; not filled. 10816 00009884 90a10000 lbu r1,(r5) 10817 00009888 64210000 snei r1,r1,#0 10818 0000988c 10200050 beqz r1,L101_LF8 10819 00009890 54000000 nop; not filled. 10820 00009894 0bffffa4 j L96_LF8 10821 00009898 54000000 nop; not filled. 10822 0000989c L95_LF8: 10823 0000989c 23bdfff0 addi r29,r29,#-16 10824 000098a0 afa40000 sw (r29),r4 10825 000098a4 23c1ff58 addi r1,r30,#-168 10826 000098a8 afa10004 sw 4(r29),r1 10827 000098ac 200b0028 addi r11,r0,#40 10828 000098b0 afab0008 sw 8(r29),r11 10829 000098b4 0fffa90c jal _bcopy 10830 000098b8 54000000 nop; not filled. 10831 000098bc 8fcbff58 lw r11,-168(r30) 10832 000098c0 afab0000 sw (r29),r11 10833 000098c4 23c1ffa8 addi r1,r30,#-88 10834 000098c8 afa10004 sw 4(r29),r1 10835 000098cc 200b0050 addi r11,r0,#80 10836 000098d0 afab0008 sw 8(r29),r11 10837 000098d4 0fffa100 jal _dstrncpy 10838 000098d8 54000000 nop; not filled. 10839 000098dc 23bd0010 addi r29,r29,#16 10840 000098e0 L101_LF8: 10841 000098e0 200b0000 addi r11,r0,(#0x0)&0xff 10842 000098e4 a3cbfff7 sb -9(r30),r11 10843 000098e8 23c3ffa8 addi r3,r30,#-88 10844 000098ec 80620000 lb r2,(r3) 10845 000098f0 304100ff andi r1,r2,#0x00ff 10846 000098f4 64210000 snei r1,r1,#0 10847 000098f8 102000f0 beqz r1,L103_LF8 10848 000098fc 54000000 nop; not filled. 10849 00009900 23cafff8 addi r10,r30,#-8 10850 00009904 23c9ff5c addi r9,r30,#-164 10851 00009908 51010002 slli r1,r8,#0x2 10852 0000990c 00293820 add r7,r1,r9 10853 00009910 002a3020 add r6,r1,r10 10854 00009914 L105_LF8: 10855 00009914 304100ff andi r1,r2,#0x00ff 10856 00009918 60210025 seqi r1,r1,#37 10857 0000991c 102000b4 beqz r1,L104_LF8 10858 00009920 54000000 nop; not filled. 10859 00009924 90610001 lbu r1,1(r3) 10860 00009928 60210025 seqi r1,r1,#37 10861 0000992c 10200010 beqz r1,L107_LF8 10862 00009930 54000000 nop; not filled. 10863 00009934 20630001 addi r3,r3,#1 10864 00009938 08000098 j L104_LF8 10865 0000993c 54000000 nop; not filled. 10866 00009940 L107_LF8: 10867 00009940 8ceb0000 lw r11,(r7) 10868 00009944 accbff88 sw -120(r6),r11 10869 00009948 51010002 slli r1,r8,#0x2 10870 0000994c 00292820 add r5,r1,r9 10871 00009950 002a2020 add r4,r1,r10 10872 00009954 L110_LF8: 10873 00009954 20630001 addi r3,r3,#1 10874 00009958 807f0000 lb r31,(r3) 10875 0000995c 33e200ff andi r2,r31,#0x00ff 10876 00009960 60410073 seqi r1,r2,#115 10877 00009964 14200060 bnez r1,L109_LF8 10878 00009968 54000000 nop; not filled. 10879 0000996c 6041006c seqi r1,r2,#108 10880 00009970 1420ffe0 bnez r1,L110_LF8 10881 00009974 54000000 nop; not filled. 10882 00009978 23e1ff9a addi r1,r31,#-102 10883 0000997c 302100ff andi r1,r1,#0x00ff 10884 00009980 70210001 sleui r1,r1,#1 10885 00009984 14200010 bnez r1,L116_LF8 10886 00009988 54000000 nop; not filled. 10887 0000998c 60410065 seqi r1,r2,#101 10888 00009990 10200020 beqz r1,L115_LF8 10889 00009994 54000000 nop; not filled. 10890 00009998 L116_LF8: 10891 00009998 20e70004 addi r7,r7,#4 10892 0000999c 20c60004 addi r6,r6,#4 10893 000099a0 21080001 addi r8,r8,#1 10894 000099a4 8ca50004 lw r5,4(r5) 10895 000099a8 ac85ff8c sw -116(r4),r5 10896 000099ac 08000018 j L109_LF8 10897 000099b0 54000000 nop; not filled. 10898 000099b4 L115_LF8: 10899 000099b4 23e1ff9f addi r1,r31,#-97 10900 000099b8 302100ff andi r1,r1,#0x00ff 10901 000099bc 70210019 sleui r1,r1,#25 10902 000099c0 1020ff90 beqz r1,L110_LF8 10903 000099c4 54000000 nop; not filled. 10904 000099c8 L109_LF8: 10905 000099c8 20e70004 addi r7,r7,#4 10906 000099cc 20c60004 addi r6,r6,#4 10907 000099d0 21080001 addi r8,r8,#1 10908 000099d4 L104_LF8: 10909 000099d4 20630001 addi r3,r3,#1 10910 000099d8 80620000 lb r2,(r3) 10911 000099dc 304100ff andi r1,r2,#0x00ff 10912 000099e0 64210000 snei r1,r1,#0 10913 000099e4 1420ff2c bnez r1,L105_LF8 10914 000099e8 54000000 nop; not filled. 10915 000099ec L103_LF8: 10916 000099ec 23bdffd8 addi r29,r29,#-40 10917 000099f0 23c1ffa8 addi r1,r30,#-88 10918 000099f4 afa10000 sw (r29),r1 10919 000099f8 8fc1ff80 lw r1,-128(r30) 10920 000099fc afa10004 sw 4(r29),r1 10921 00009a00 8fcbff84 lw r11,-124(r30) 10922 00009a04 afab0008 sw 8(r29),r11 10923 00009a08 8fcbff88 lw r11,-120(r30) 10924 00009a0c afab000c sw 12(r29),r11 10925 00009a10 8fcbff8c lw r11,-116(r30) 10926 00009a14 afab0010 sw 16(r29),r11 10927 00009a18 8fcbff90 lw r11,-112(r30) 10928 00009a1c afab0014 sw 20(r29),r11 10929 00009a20 8fcbff94 lw r11,-108(r30) 10930 00009a24 afab0018 sw 24(r29),r11 10931 00009a28 8fcbff98 lw r11,-104(r30) 10932 00009a2c afab001c sw 28(r29),r11 10933 00009a30 8fcbff9c lw r11,-100(r30) 10934 00009a34 afab0020 sw 32(r29),r11 10935 00009a38 0c001694 jal _printf 10936 00009a3c 54000000 nop; not filled. 10937 00009a40 23bd0028 addi r29,r29,#40 10938 00009a44 8fa20000 lw r2,0(r29) 10939 00009a48 8fa30004 lw r3,4(r29) 10940 00009a4c 8fa40008 lw r4,8(r29) 10941 00009a50 8fa5000c lw r5,12(r29) 10942 00009a54 8fa60010 lw r6,16(r29) 10943 00009a58 8fa70014 lw r7,20(r29) 10944 00009a5c 8fa80018 lw r8,24(r29) 10945 00009a60 8fa9001c lw r9,28(r29) 10946 00009a64 8faa0020 lw r10,32(r29) 10947 00009a68 8fab0024 lw r11,36(r29) 10948 00009a6c 8fdffff8 lw r31,-8(r30) 10949 00009a70 001ee820 add r29,r0,r30 10950 00009a74 8fdefffc lw r30,-4(r30) 10951 00009a78 4be00000 jr r31 10952 00009a7c 54000000 nop 10953 00009a80 .endproc _TrapPrintfHandler_LF8 10954 00009a80 .data 10955 00013ab5 .align 2 10956 00013ab8 LC1_LF8: 10957 00013ab8 496e7465 .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" 10957 00013abc 72727570 10957 00013ac0 74206361 10957 00013ac4 7573653d 10957 00013ac8 30782578 10957 00013acc 20696172 10957 00013ad0 3d307825 10957 00013ad4 78206973 10957 00013ad8 723d3078 10957 00013adc 25782061 10957 00013ae0 7267733d 10957 00013ae4 30782530 10957 00013ae8 38782e0a 10957 00013aec 00 10958 00013aed .align 2 10959 00013af0 LC2_LF8: 10960 00013af0 476f7420 .ascii "Got a context switch trap!\n\000" 10960 00013af4 6120636f 10960 00013af8 6e746578 10960 00013afc 74207377 10960 00013b00 69746368 10960 00013b04 20747261 10960 00013b08 70210a00 10961 00013b0c .align 2 10962 00013b0c LC3_LF8: 10963 00013b0c 476f7420 .ascii "Got an exit trap!\n\000" 10963 00013b10 616e2065 10963 00013b14 78697420 10963 00013b18 74726170 10963 00013b1c 210a00 10964 00013b1f .align 2 10965 00013b20 LC4_LF8: 10966 00013b20 476f7420 .ascii "Got a fork trap!\n\000" 10966 00013b24 6120666f 10966 00013b28 726b2074 10966 00013b2c 72617021 10966 00013b30 0a00 10967 00013b32 .align 2 10968 00013b34 LC5_LF8: 10969 00013b34 476f7420 .ascii "Got a process sleep trap!\n\000" 10969 00013b38 61207072 10969 00013b3c 6f636573 10969 00013b40 7320736c 10969 00013b44 65657020 10969 00013b48 74726170 10969 00013b4c 210a00 10970 00013b4f .align 2 10971 00013b50 LC6_LF8: 10972 00013b50 476f7420 .ascii "Got a printf trap!\n\000" 10972 00013b54 61207072 10972 00013b58 696e7466 10972 00013b5c 20747261 10972 00013b60 70210a00 10973 00013b64 .align 2 10974 00013b64 LC7_LF8: 10975 00013b64 476f7420 .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" 10975 00013b68 616e206f 10975 00013b6c 70656e20 10975 00013b70 77697468 10975 00013b74 20706172 10975 00013b78 616d6574 10975 00013b7c 65727320 10975 00013b80 28272573 10975 00013b84 272c3078 10975 00013b88 2578290a 10975 00013b8c 00 10976 00013b8d .align 2 10977 00013b90 LC8_LF8: 10978 00013b90 476f7420 .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" 10978 00013b94 616e2075 10978 00013b98 6e726563 10978 00013b9c 6f676e69 10978 00013ba0 7a656420 10978 00013ba4 74726170 10978 00013ba8 20283078 10978 00013bac 25782920 10978 00013bb0 2d206578 10978 00013bb4 6974696e 10978 00013bb8 67210a00 10979 00013bbc .align 2 10980 00013bbc LC9_LF8: 10981 00013bbc 476f7420 .ascii "Got a timer interrupt!\n\000" 10981 00013bc0 61207469 10981 00013bc4 6d657220 10981 00013bc8 696e7465 10981 00013bcc 72727570 10981 00013bd0 74210a00 10982 00013bd4 .align 2 10983 00013bd4 LC10_LF8: 10984 00013bd4 476f7420 .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" 10984 00013bd8 61206b65 10984 00013bdc 79626f61 10984 00013be0 72642069 10984 00013be4 6e746572 10984 00013be8 72757074 10984 00013bec 20286368 10984 00013bf0 61723d30 10984 00013bf4 78257828 10984 00013bf8 2563292c 10984 00013bfc 206e6c65 10984 00013c00 66743d25 10984 00013c04 6429210a 10984 00013c08 00 10985 00013c09 .align 2 10986 00013c0c LC11_LF8: 10987 00013c0c 54726170 .ascii "Trap access\n\000" 10987 00013c10 20616363 10987 00013c14 6573730a 10987 00013c18 00 10988 00013c19 .align 2 10989 00013c1c LC12_LF8: 10990 00013c1c 43757272 .ascii "Current PROC %s\n\000" 10990 00013c20 656e7420 10990 00013c24 50524f43 10990 00013c28 2025730a 10990 00013c2c 00 10991 00013c2d .align 2 10992 00013c30 LC13_LF8: 10993 00013c30 45786974 .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" 10993 00013c34 696e6720 10993 00013c38 61667465 10993 00013c3c 7220696c 10993 00013c40 6c656761 10993 00013c44 6c206164 10993 00013c48 64726573 10993 00013c4c 73206174 10993 00013c50 20696172 10993 00013c54 3d307825 10993 00013c58 782c2069 10993 00013c5c 73723d30 10993 00013c60 7825780a 10993 00013c64 00 10994 00013c65 .align 2 10995 00013c68 LC14_LF8: 10996 00013c68 45786974 .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" 10996 00013c6c 696e6720 10996 00013c70 61667465 10996 00013c74 7220696c 10996 00013c78 6c656761 10996 00013c7c 6c20696e 10996 00013c80 73747275 10996 00013c84 6374696f 10996 00013c88 6e206174 10996 00013c8c 20696172 10996 00013c90 3d307825 10996 00013c94 782c2069 10996 00013c98 73723d30 10996 00013c9c 7825780a 10996 00013ca0 00 10997 00013ca1 .align 2 10998 00013ca4 LC15_LF8: 10999 00013ca4 476f7420 .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" 10999 00013ca8 616e2075 10999 00013cac 6e726563 10999 00013cb0 6f676e69 10999 00013cb4 7a656420 10999 00013cb8 73797374 10999 00013cbc 656d2069 10999 00013cc0 6e746572 10999 00013cc4 72757074 10999 00013cc8 20283078 10999 00013ccc 25782920 10999 00013cd0 2d206578 10999 00013cd4 6974696e 10999 00013cd8 67210a00 11000 00013cdc .align 2 11001 00013cdc LC16_LF8: 11002 00013cdc 41626f75 .ascii "About to return from dointerrupt.\n\000" 11002 00013ce0 7420746f 11002 00013ce4 20726574 11002 00013ce8 75726e20 11002 00013cec 66726f6d 11002 00013cf0 20646f69 11002 00013cf4 6e746572 11002 00013cf8 72757074 11002 00013cfc 2e0a00 11003 00013cff .text 11004 00009a80 .align 2 11005 00009a80 .proc _dointerrupt 11006 00009a80 .global _dointerrupt 11007 00009a80 _dointerrupt: 11008 ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. 11009 00009a80 afbefffc sw -4(r29),r30; push fp 11010 00009a84 001df020 add r30,r0,r29; fp = sp 11011 00009a88 afbffff8 sw -8(r29),r31; push ret addr 11012 00009a8c 2fbd0058 subui r29,r29,#88; alloc local storage 11013 00009a90 afa20000 sw 0(r29),r2 11014 00009a94 afa30004 sw 4(r29),r3 11015 00009a98 afa40008 sw 8(r29),r4 11016 00009a9c afa5000c sw 12(r29),r5 11017 00009aa0 afa60010 sw 16(r29),r6 11018 00009aa4 afa70014 sw 20(r29),r7 11019 00009aa8 8fc20000 lw r2,(r30) 11020 00009aac 8fc60004 lw r6,4(r30) 11021 00009ab0 8fc50008 lw r5,8(r30) 11022 00009ab4 8fc3000c lw r3,12(r30) 11023 00009ab8 23bdfff8 addi r29,r29,#-8 11024 00009abc 3c040001 lhi r4,((_debugstr)>>16)&0xffff 11025 00009ac0 24840d78 addui r4,r4,(_debugstr)&0xffff 11026 00009ac4 afa40000 sw (r29),r4 11027 00009ac8 20070074 addi r7,r0,#116 11028 00009acc afa70004 sw 4(r29),r7 11029 00009ad0 0fffa360 jal _dindex 11030 00009ad4 54000000 nop; not filled. 11031 00009ad8 23bd0008 addi r29,r29,#8 11032 00009adc 64210000 snei r1,r1,#0 11033 00009ae0 1420002c bnez r1,L123_LF8 11034 00009ae4 54000000 nop; not filled. 11035 00009ae8 23bdfff8 addi r29,r29,#-8 11036 00009aec afa40000 sw (r29),r4 11037 00009af0 2007002b addi r7,r0,#43 11038 00009af4 afa70004 sw 4(r29),r7 11039 00009af8 0fffa338 jal _dindex 11040 00009afc 54000000 nop; not filled. 11041 00009b00 23bd0008 addi r29,r29,#8 11042 00009b04 64210000 snei r1,r1,#0 11043 00009b08 10200030 beqz r1,L122_LF8 11044 00009b0c 54000000 nop; not filled. 11045 00009b10 L123_LF8: 11046 00009b10 23bdffe8 addi r29,r29,#-24 11047 00009b14 3c070001 lhi r7,((LC1_LF8)>>16)&0xffff 11048 00009b18 24e73ab8 addui r7,r7,(LC1_LF8)&0xffff 11049 00009b1c afa70000 sw (r29),r7 11050 00009b20 afa20004 sw 4(r29),r2 11051 00009b24 afa60008 sw 8(r29),r6 11052 00009b28 afa5000c sw 12(r29),r5 11053 00009b2c afa30010 sw 16(r29),r3 11054 00009b30 0c00159c jal _printf 11055 00009b34 54000000 nop; not filled. 11056 00009b38 23bd0018 addi r29,r29,#24 11057 00009b3c L122_LF8: 11058 00009b3c 3c070800 lhi r7,#2048 11059 00009b40 24e70000 addui r7,r7,#0 11060 00009b44 00470824 and r1,r2,r7 11061 00009b48 64210000 snei r1,r1,#0 11062 00009b4c 10200998 beqz r1,L124_LF8 11063 00009b50 54000000 nop; not filled. 11064 00009b54 3c07f7ff lhi r7,#-2049 11065 00009b58 24e7ffff addui r7,r7,#65535 11066 00009b5c 00471024 and r2,r2,r7 11067 00009b60 60410400 seqi r1,r2,#1024 11068 00009b64 14200110 bnez r1,L126_LF8 11069 00009b68 54000000 nop; not filled. 11070 00009b6c 6c410400 sgtui r1,r2,#1024 11071 00009b70 14200074 bnez r1,L179_LF8 11072 00009b74 54000000 nop; not filled. 11073 00009b78 60410212 seqi r1,r2,#530 11074 00009b7c 142006ac bnez r1,L160_LF8 11075 00009b80 54000000 nop; not filled. 11076 00009b84 6c410212 sgtui r1,r2,#530 11077 00009b88 14200030 bnez r1,L180_LF8 11078 00009b8c 54000000 nop; not filled. 11079 00009b90 60410210 seqi r1,r2,#528 11080 00009b94 14200580 bnez r1,L151_LF8 11081 00009b98 54000000 nop; not filled. 11082 00009b9c 6c410210 sgtui r1,r2,#528 11083 00009ba0 142005d0 bnez r1,L154_LF8 11084 00009ba4 54000000 nop; not filled. 11085 00009ba8 60410201 seqi r1,r2,#513 11086 00009bac 10200924 beqz r1,L177_LF8 11087 00009bb0 54000000 nop; not filled. 11088 00009bb4 08000350 j L140_LF8 11089 00009bb8 54000000 nop; not filled. 11090 00009bbc L180_LF8: 11091 00009bbc 60410214 seqi r1,r2,#532 11092 00009bc0 142004f8 bnez r1,L148_LF8 11093 00009bc4 54000000 nop; not filled. 11094 00009bc8 68410214 sltui r1,r2,#532 11095 00009bcc 142003cc bnez r1,L143_LF8 11096 00009bd0 54000000 nop; not filled. 11097 00009bd4 60410300 seqi r1,r2,#768 11098 00009bd8 102008f8 beqz r1,L177_LF8 11099 00009bdc 54000000 nop; not filled. 11100 00009be0 08000100 j L129_LF8 11101 00009be4 54000000 nop; not filled. 11102 00009be8 L179_LF8: 11103 00009be8 60410432 seqi r1,r2,#1074 11104 00009bec 142006cc bnez r1,L164_LF8 11105 00009bf0 54000000 nop; not filled. 11106 00009bf4 6c410432 sgtui r1,r2,#1074 11107 00009bf8 14200030 bnez r1,L181_LF8 11108 00009bfc 54000000 nop; not filled. 11109 00009c00 60410430 seqi r1,r2,#1072 11110 00009c04 142001e8 bnez r1,L134_LF8 11111 00009c08 54000000 nop; not filled. 11112 00009c0c 6c410430 sgtui r1,r2,#1072 11113 00009c10 14200674 bnez r1,L163_LF8 11114 00009c14 54000000 nop; not filled. 11115 00009c18 60410410 seqi r1,r2,#1040 11116 00009c1c 102008b4 beqz r1,L177_LF8 11117 00009c20 54000000 nop; not filled. 11118 00009c24 08000240 j L137_LF8 11119 00009c28 54000000 nop; not filled. 11120 00009c2c L181_LF8: 11121 00009c2c 60410451 seqi r1,r2,#1105 11122 00009c30 14200750 bnez r1,L169_LF8 11123 00009c34 54000000 nop; not filled. 11124 00009c38 6c410451 sgtui r1,r2,#1105 11125 00009c3c 14200018 bnez r1,L182_LF8 11126 00009c40 54000000 nop; not filled. 11127 00009c44 60410450 seqi r1,r2,#1104 11128 00009c48 10200888 beqz r1,L177_LF8 11129 00009c4c 54000000 nop; not filled. 11130 00009c50 08000688 j L165_LF8 11131 00009c54 54000000 nop; not filled. 11132 00009c58 L182_LF8: 11133 00009c58 60410452 seqi r1,r2,#1106 11134 00009c5c 142007cc bnez r1,L173_LF8 11135 00009c60 54000000 nop; not filled. 11136 00009c64 60410580 seqi r1,r2,#1408 11137 00009c68 10200868 beqz r1,L177_LF8 11138 00009c6c 54000000 nop; not filled. 11139 00009c70 0800055c j L157_LF8 11140 00009c74 54000000 nop; not filled. 11141 00009c78 L126_LF8: 11142 00009c78 23bdfff8 addi r29,r29,#-8 11143 00009c7c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11144 00009c80 24420d78 addui r2,r2,(_debugstr)&0xffff 11145 00009c84 afa20000 sw (r29),r2 11146 00009c88 20070074 addi r7,r0,#116 11147 00009c8c afa70004 sw 4(r29),r7 11148 00009c90 0fffa1a0 jal _dindex 11149 00009c94 54000000 nop; not filled. 11150 00009c98 23bd0008 addi r29,r29,#8 11151 00009c9c 64210000 snei r1,r1,#0 11152 00009ca0 1420002c bnez r1,L128_LF8 11153 00009ca4 54000000 nop; not filled. 11154 00009ca8 23bdfff8 addi r29,r29,#-8 11155 00009cac afa20000 sw (r29),r2 11156 00009cb0 2007002b addi r7,r0,#43 11157 00009cb4 afa70004 sw 4(r29),r7 11158 00009cb8 0fffa178 jal _dindex 11159 00009cbc 54000000 nop; not filled. 11160 00009cc0 23bd0008 addi r29,r29,#8 11161 00009cc4 64210000 snei r1,r1,#0 11162 00009cc8 10200908 beqz r1,L186_LF8 11163 00009ccc 54000000 nop; not filled. 11164 00009cd0 L128_LF8: 11165 00009cd0 23bdfff8 addi r29,r29,#-8 11166 00009cd4 3c070001 lhi r7,((LC2_LF8)>>16)&0xffff 11167 00009cd8 24e73af0 addui r7,r7,(LC2_LF8)&0xffff 11168 00009cdc 080008e4 j L209_LF8 11169 00009ce0 54000000 nop; not filled. 11170 00009ce4 L129_LF8: 11171 00009ce4 23bdfff8 addi r29,r29,#-8 11172 00009ce8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11173 00009cec 24420d78 addui r2,r2,(_debugstr)&0xffff 11174 00009cf0 afa20000 sw (r29),r2 11175 00009cf4 20070074 addi r7,r0,#116 11176 00009cf8 afa70004 sw 4(r29),r7 11177 00009cfc 0fffa134 jal _dindex 11178 00009d00 54000000 nop; not filled. 11179 00009d04 23bd0008 addi r29,r29,#8 11180 00009d08 64210000 snei r1,r1,#0 11181 00009d0c 1420002c bnez r1,L131_LF8 11182 00009d10 54000000 nop; not filled. 11183 00009d14 23bdfff8 addi r29,r29,#-8 11184 00009d18 afa20000 sw (r29),r2 11185 00009d1c 2007002b addi r7,r0,#43 11186 00009d20 afa70004 sw 4(r29),r7 11187 00009d24 0fffa10c jal _dindex 11188 00009d28 54000000 nop; not filled. 11189 00009d2c 23bd0008 addi r29,r29,#8 11190 00009d30 64210000 snei r1,r1,#0 11191 00009d34 10200020 beqz r1,L130_LF8 11192 00009d38 54000000 nop; not filled. 11193 00009d3c L131_LF8: 11194 00009d3c 23bdfff8 addi r29,r29,#-8 11195 00009d40 3c070001 lhi r7,((LC3_LF8)>>16)&0xffff 11196 00009d44 24e73b0c addui r7,r7,(LC3_LF8)&0xffff 11197 00009d48 afa70000 sw (r29),r7 11198 00009d4c 0c001380 jal _printf 11199 00009d50 54000000 nop; not filled. 11200 00009d54 23bd0008 addi r29,r29,#8 11201 00009d58 L130_LF8: 11202 00009d58 23bdfff8 addi r29,r29,#-8 11203 00009d5c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11204 00009d60 24420d78 addui r2,r2,(_debugstr)&0xffff 11205 00009d64 afa20000 sw (r29),r2 11206 00009d68 20070074 addi r7,r0,#116 11207 00009d6c afa70004 sw 4(r29),r7 11208 00009d70 0fffa0c0 jal _dindex 11209 00009d74 54000000 nop; not filled. 11210 00009d78 23bd0008 addi r29,r29,#8 11211 00009d7c 64210000 snei r1,r1,#0 11212 00009d80 1420002c bnez r1,L133_LF8 11213 00009d84 54000000 nop; not filled. 11214 00009d88 23bdfff8 addi r29,r29,#-8 11215 00009d8c afa20000 sw (r29),r2 11216 00009d90 2007002b addi r7,r0,#43 11217 00009d94 afa70004 sw 4(r29),r7 11218 00009d98 0fffa098 jal _dindex 11219 00009d9c 54000000 nop; not filled. 11220 00009da0 23bd0008 addi r29,r29,#8 11221 00009da4 64210000 snei r1,r1,#0 11222 00009da8 10200020 beqz r1,L132_LF8 11223 00009dac 54000000 nop; not filled. 11224 00009db0 L133_LF8: 11225 00009db0 23bdfff8 addi r29,r29,#-8 11226 00009db4 3c070001 lhi r7,((LC3_LF8)>>16)&0xffff 11227 00009db8 24e73b0c addui r7,r7,(LC3_LF8)&0xffff 11228 00009dbc afa70000 sw (r29),r7 11229 00009dc0 0c00130c jal _printf 11230 00009dc4 54000000 nop; not filled. 11231 00009dc8 23bd0008 addi r29,r29,#8 11232 00009dcc L132_LF8: 11233 00009dcc 23bdfff8 addi r29,r29,#-8 11234 00009dd0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11235 00009dd4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11236 00009dd8 8c210000 lw r1,(r1) 11237 00009ddc afa10000 sw (r29),r1 11238 00009de0 0fffdcb4 jal _ProcessKill 11239 00009de4 54000000 nop; not filled. 11240 00009de8 08000958 j L203_LF8 11241 00009dec 54000000 nop; not filled. 11242 00009df0 L134_LF8: 11243 00009df0 23bdfff8 addi r29,r29,#-8 11244 00009df4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11245 00009df8 24420d78 addui r2,r2,(_debugstr)&0xffff 11246 00009dfc afa20000 sw (r29),r2 11247 00009e00 20070074 addi r7,r0,#116 11248 00009e04 afa70004 sw 4(r29),r7 11249 00009e08 0fffa028 jal _dindex 11250 00009e0c 54000000 nop; not filled. 11251 00009e10 23bd0008 addi r29,r29,#8 11252 00009e14 64210000 snei r1,r1,#0 11253 00009e18 1420002c bnez r1,L136_LF8 11254 00009e1c 54000000 nop; not filled. 11255 00009e20 23bdfff8 addi r29,r29,#-8 11256 00009e24 afa20000 sw (r29),r2 11257 00009e28 2007002b addi r7,r0,#43 11258 00009e2c afa70004 sw 4(r29),r7 11259 00009e30 0fffa000 jal _dindex 11260 00009e34 54000000 nop; not filled. 11261 00009e38 23bd0008 addi r29,r29,#8 11262 00009e3c 64210000 snei r1,r1,#0 11263 00009e40 10200904 beqz r1,L183_LF8 11264 00009e44 54000000 nop; not filled. 11265 00009e48 L136_LF8: 11266 00009e48 23bdfff8 addi r29,r29,#-8 11267 00009e4c 3c070001 lhi r7,((LC4_LF8)>>16)&0xffff 11268 00009e50 24e73b20 addui r7,r7,(LC4_LF8)&0xffff 11269 00009e54 afa70000 sw (r29),r7 11270 00009e58 0c001274 jal _printf 11271 00009e5c 54000000 nop; not filled. 11272 00009e60 080008e0 j L203_LF8 11273 00009e64 54000000 nop; not filled. 11274 00009e68 L137_LF8: 11275 00009e68 23bdfff8 addi r29,r29,#-8 11276 00009e6c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11277 00009e70 24420d78 addui r2,r2,(_debugstr)&0xffff 11278 00009e74 afa20000 sw (r29),r2 11279 00009e78 20070074 addi r7,r0,#116 11280 00009e7c afa70004 sw 4(r29),r7 11281 00009e80 0fff9fb0 jal _dindex 11282 00009e84 54000000 nop; not filled. 11283 00009e88 23bd0008 addi r29,r29,#8 11284 00009e8c 64210000 snei r1,r1,#0 11285 00009e90 1420002c bnez r1,L139_LF8 11286 00009e94 54000000 nop; not filled. 11287 00009e98 23bdfff8 addi r29,r29,#-8 11288 00009e9c afa20000 sw (r29),r2 11289 00009ea0 2007002b addi r7,r0,#43 11290 00009ea4 afa70004 sw 4(r29),r7 11291 00009ea8 0fff9f88 jal _dindex 11292 00009eac 54000000 nop; not filled. 11293 00009eb0 23bd0008 addi r29,r29,#8 11294 00009eb4 64210000 snei r1,r1,#0 11295 00009eb8 10200020 beqz r1,L138_LF8 11296 00009ebc 54000000 nop; not filled. 11297 00009ec0 L139_LF8: 11298 00009ec0 23bdfff8 addi r29,r29,#-8 11299 00009ec4 3c070001 lhi r7,((LC5_LF8)>>16)&0xffff 11300 00009ec8 24e73b34 addui r7,r7,(LC5_LF8)&0xffff 11301 00009ecc afa70000 sw (r29),r7 11302 00009ed0 0c0011fc jal _printf 11303 00009ed4 54000000 nop; not filled. 11304 00009ed8 23bd0008 addi r29,r29,#8 11305 00009edc L138_LF8: 11306 00009edc 23bdfff8 addi r29,r29,#-8 11307 00009ee0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11308 00009ee4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11309 00009ee8 8c210000 lw r1,(r1) 11310 00009eec afa10000 sw (r29),r1 11311 00009ef0 0fffb0ec jal _ProcessSuspend 11312 00009ef4 54000000 nop; not filled. 11313 00009ef8 0fffac50 jal _ProcessSchedule 11314 00009efc 54000000 nop; not filled. 11315 00009f00 08000840 j L203_LF8 11316 00009f04 54000000 nop; not filled. 11317 00009f08 L140_LF8: 11318 00009f08 23bdfff8 addi r29,r29,#-8 11319 00009f0c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11320 00009f10 24420d78 addui r2,r2,(_debugstr)&0xffff 11321 00009f14 afa20000 sw (r29),r2 11322 00009f18 20070074 addi r7,r0,#116 11323 00009f1c afa70004 sw 4(r29),r7 11324 00009f20 0fff9f10 jal _dindex 11325 00009f24 54000000 nop; not filled. 11326 00009f28 23bd0008 addi r29,r29,#8 11327 00009f2c 64210000 snei r1,r1,#0 11328 00009f30 1420002c bnez r1,L142_LF8 11329 00009f34 54000000 nop; not filled. 11330 00009f38 23bdfff8 addi r29,r29,#-8 11331 00009f3c afa20000 sw (r29),r2 11332 00009f40 2007002b addi r7,r0,#43 11333 00009f44 afa70004 sw 4(r29),r7 11334 00009f48 0fff9ee8 jal _dindex 11335 00009f4c 54000000 nop; not filled. 11336 00009f50 23bd0008 addi r29,r29,#8 11337 00009f54 64210000 snei r1,r1,#0 11338 00009f58 10200020 beqz r1,L141_LF8 11339 00009f5c 54000000 nop; not filled. 11340 00009f60 L142_LF8: 11341 00009f60 23bdfff8 addi r29,r29,#-8 11342 00009f64 3c070001 lhi r7,((LC6_LF8)>>16)&0xffff 11343 00009f68 24e73b50 addui r7,r7,(LC6_LF8)&0xffff 11344 00009f6c afa70000 sw (r29),r7 11345 00009f70 0c00115c jal _printf 11346 00009f74 54000000 nop; not filled. 11347 00009f78 23bd0008 addi r29,r29,#8 11348 00009f7c L141_LF8: 11349 00009f7c 23bdfff8 addi r29,r29,#-8 11350 00009f80 afa30000 sw (r29),r3 11351 00009f84 30a10040 andi r1,r5,#64 11352 00009f88 afa10004 sw 4(r29),r1 11353 00009f8c 0ffff81c jal _TrapPrintfHandler_LF8 11354 00009f90 54000000 nop; not filled. 11355 00009f94 080007ac j L203_LF8 11356 00009f98 54000000 nop; not filled. 11357 00009f9c L143_LF8: 11358 00009f9c 30a10040 andi r1,r5,#64 11359 00009fa0 64210000 snei r1,r1,#0 11360 00009fa4 1020001c beqz r1,L144_LF8 11361 00009fa8 54000000 nop; not filled. 11362 00009fac 8c670000 lw r7,(r3) 11363 00009fb0 afc7ffe8 sw -24(r30),r7 11364 00009fb4 8c630004 lw r3,4(r3) 11365 00009fb8 afc3ffec sw -20(r30),r3 11366 00009fbc 0800006c j L145_LF8 11367 00009fc0 54000000 nop; not filled. 11368 00009fc4 L144_LF8: 11369 00009fc4 23bdfff0 addi r29,r29,#-16 11370 00009fc8 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 11371 00009fcc 24420e40 addui r2,r2,(_currentPCB)&0xffff 11372 00009fd0 8c470000 lw r7,(r2) 11373 00009fd4 afa70000 sw (r29),r7 11374 00009fd8 afa30004 sw 4(r29),r3 11375 00009fdc 23c1ffe8 addi r1,r30,#-24 11376 00009fe0 afa10008 sw 8(r29),r1 11377 00009fe4 20070008 addi r7,r0,#8 11378 00009fe8 afa7000c sw 12(r29),r7 11379 00009fec 0fff9594 jal _MemoryCopyUserToSystem 11380 00009ff0 54000000 nop; not filled. 11381 00009ff4 8c420000 lw r2,(r2) 11382 00009ff8 afa20000 sw (r29),r2 11383 00009ffc 8fc1ffe8 lw r1,-24(r30) 11384 0000a000 afa10004 sw 4(r29),r1 11385 0000a004 23c2ffc8 addi r2,r30,#-56 11386 0000a008 afa20008 sw 8(r29),r2 11387 0000a00c 2007001f addi r7,r0,#31 11388 0000a010 afa7000c sw 12(r29),r7 11389 0000a014 0fff956c jal _MemoryCopyUserToSystem 11390 0000a018 54000000 nop; not filled. 11391 0000a01c 20070000 addi r7,r0,(#0x0)&0xff 11392 0000a020 a3c7ffe7 sb -25(r30),r7 11393 0000a024 afc2ffe8 sw -24(r30),r2 11394 0000a028 23bd0010 addi r29,r29,#16 11395 0000a02c L145_LF8: 11396 0000a02c 23bdfff8 addi r29,r29,#-8 11397 0000a030 20070000 addi r7,r0,#0 11398 0000a034 afa70000 sw (r29),r7 11399 0000a038 0fff724c jal _SetIntrs 11400 0000a03c 54000000 nop; not filled. 11401 0000a040 00011020 add r2,r0,r1 11402 0000a044 23bd0008 addi r29,r29,#8 11403 0000a048 23bdfff8 addi r29,r29,#-8 11404 0000a04c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11405 0000a050 24210e40 addui r1,r1,(_currentPCB)&0xffff 11406 0000a054 8c210000 lw r1,(r1) 11407 0000a058 afa10000 sw (r29),r1 11408 0000a05c 8fc1ffec lw r1,-20(r30) 11409 0000a060 3c070001 lhi r7,#1 11410 0000a064 24e70000 addui r7,r7,#0 11411 0000a068 00270820 add r1,r1,r7 11412 0000a06c afa10004 sw 4(r29),r1 11413 0000a070 0fffaaa4 jal _ProcessSetResult 11414 0000a074 54000000 nop; not filled. 11415 0000a078 23bdfff8 addi r29,r29,#-8 11416 0000a07c 3c070001 lhi r7,((LC7_LF8)>>16)&0xffff 11417 0000a080 24e73b64 addui r7,r7,(LC7_LF8)&0xffff 11418 0000a084 afa70000 sw (r29),r7 11419 0000a088 8fc1ffe8 lw r1,-24(r30) 11420 0000a08c afa10004 sw 4(r29),r1 11421 0000a090 8fc7ffec lw r7,-20(r30) 11422 0000a094 afa70008 sw 8(r29),r7 11423 0000a098 0c001034 jal _printf 11424 0000a09c 54000000 nop; not filled. 11425 0000a0a0 23bd0010 addi r29,r29,#16 11426 0000a0a4 23bdfff8 addi r29,r29,#-8 11427 0000a0a8 afa20000 sw (r29),r2 11428 0000a0ac 0fff71d8 jal _SetIntrs 11429 0000a0b0 54000000 nop; not filled. 11430 0000a0b4 0800068c j L203_LF8 11431 0000a0b8 54000000 nop; not filled. 11432 0000a0bc L148_LF8: 11433 0000a0bc 23bdfff8 addi r29,r29,#-8 11434 0000a0c0 20070000 addi r7,r0,#0 11435 0000a0c4 afa70000 sw (r29),r7 11436 0000a0c8 0fff71bc jal _SetIntrs 11437 0000a0cc 54000000 nop; not filled. 11438 0000a0d0 00011020 add r2,r0,r1 11439 0000a0d4 23bd0008 addi r29,r29,#8 11440 0000a0d8 23bdfff8 addi r29,r29,#-8 11441 0000a0dc 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11442 0000a0e0 24210e40 addui r1,r1,(_currentPCB)&0xffff 11443 0000a0e4 8c210000 lw r1,(r1) 11444 0000a0e8 afa10000 sw (r29),r1 11445 0000a0ec 2007ffff addi r7,r0,#-1 11446 0000a0f0 afa70004 sw 4(r29),r7 11447 0000a0f4 0fffaa20 jal _ProcessSetResult 11448 0000a0f8 54000000 nop; not filled. 11449 0000a0fc 23bd0008 addi r29,r29,#8 11450 0000a100 23bdfff8 addi r29,r29,#-8 11451 0000a104 afa20000 sw (r29),r2 11452 0000a108 0fff717c jal _SetIntrs 11453 0000a10c 54000000 nop; not filled. 11454 0000a110 08000630 j L203_LF8 11455 0000a114 54000000 nop; not filled. 11456 0000a118 L151_LF8: 11457 0000a118 23bdfff8 addi r29,r29,#-8 11458 0000a11c 20070000 addi r7,r0,#0 11459 0000a120 afa70000 sw (r29),r7 11460 0000a124 0fff7160 jal _SetIntrs 11461 0000a128 54000000 nop; not filled. 11462 0000a12c 00011020 add r2,r0,r1 11463 0000a130 23bd0008 addi r29,r29,#8 11464 0000a134 23bdfff8 addi r29,r29,#-8 11465 0000a138 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11466 0000a13c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11467 0000a140 8c210000 lw r1,(r1) 11468 0000a144 afa10000 sw (r29),r1 11469 0000a148 2007ffff addi r7,r0,#-1 11470 0000a14c afa70004 sw 4(r29),r7 11471 0000a150 0fffa9c4 jal _ProcessSetResult 11472 0000a154 54000000 nop; not filled. 11473 0000a158 23bd0008 addi r29,r29,#8 11474 0000a15c 23bdfff8 addi r29,r29,#-8 11475 0000a160 afa20000 sw (r29),r2 11476 0000a164 0fff7120 jal _SetIntrs 11477 0000a168 54000000 nop; not filled. 11478 0000a16c 080005d4 j L203_LF8 11479 0000a170 54000000 nop; not filled. 11480 0000a174 L154_LF8: 11481 0000a174 23bdfff8 addi r29,r29,#-8 11482 0000a178 20070000 addi r7,r0,#0 11483 0000a17c afa70000 sw (r29),r7 11484 0000a180 0fff7104 jal _SetIntrs 11485 0000a184 54000000 nop; not filled. 11486 0000a188 00011020 add r2,r0,r1 11487 0000a18c 23bd0008 addi r29,r29,#8 11488 0000a190 23bdfff8 addi r29,r29,#-8 11489 0000a194 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11490 0000a198 24210e40 addui r1,r1,(_currentPCB)&0xffff 11491 0000a19c 8c210000 lw r1,(r1) 11492 0000a1a0 afa10000 sw (r29),r1 11493 0000a1a4 2007ffff addi r7,r0,#-1 11494 0000a1a8 afa70004 sw 4(r29),r7 11495 0000a1ac 0fffa968 jal _ProcessSetResult 11496 0000a1b0 54000000 nop; not filled. 11497 0000a1b4 23bd0008 addi r29,r29,#8 11498 0000a1b8 23bdfff8 addi r29,r29,#-8 11499 0000a1bc afa20000 sw (r29),r2 11500 0000a1c0 0fff70c4 jal _SetIntrs 11501 0000a1c4 54000000 nop; not filled. 11502 0000a1c8 08000578 j L203_LF8 11503 0000a1cc 54000000 nop; not filled. 11504 0000a1d0 L157_LF8: 11505 0000a1d0 23bdfff8 addi r29,r29,#-8 11506 0000a1d4 20070000 addi r7,r0,#0 11507 0000a1d8 afa70000 sw (r29),r7 11508 0000a1dc 0fff70a8 jal _SetIntrs 11509 0000a1e0 54000000 nop; not filled. 11510 0000a1e4 00011020 add r2,r0,r1 11511 0000a1e8 23bd0008 addi r29,r29,#8 11512 0000a1ec 23bdfff8 addi r29,r29,#-8 11513 0000a1f0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11514 0000a1f4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11515 0000a1f8 8c210000 lw r1,(r1) 11516 0000a1fc afa10000 sw (r29),r1 11517 0000a200 2007ffff addi r7,r0,#-1 11518 0000a204 afa70004 sw 4(r29),r7 11519 0000a208 0fffa90c jal _ProcessSetResult 11520 0000a20c 54000000 nop; not filled. 11521 0000a210 23bd0008 addi r29,r29,#8 11522 0000a214 23bdfff8 addi r29,r29,#-8 11523 0000a218 afa20000 sw (r29),r2 11524 0000a21c 0fff7068 jal _SetIntrs 11525 0000a220 54000000 nop; not filled. 11526 0000a224 0800051c j L203_LF8 11527 0000a228 54000000 nop; not filled. 11528 0000a22c L160_LF8: 11529 0000a22c 23bdfff8 addi r29,r29,#-8 11530 0000a230 20070000 addi r7,r0,#0 11531 0000a234 afa70000 sw (r29),r7 11532 0000a238 0fff704c jal _SetIntrs 11533 0000a23c 54000000 nop; not filled. 11534 0000a240 00011020 add r2,r0,r1 11535 0000a244 23bd0008 addi r29,r29,#8 11536 0000a248 23bdfff8 addi r29,r29,#-8 11537 0000a24c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11538 0000a250 24210e40 addui r1,r1,(_currentPCB)&0xffff 11539 0000a254 8c210000 lw r1,(r1) 11540 0000a258 afa10000 sw (r29),r1 11541 0000a25c 2007ffff addi r7,r0,#-1 11542 0000a260 afa70004 sw 4(r29),r7 11543 0000a264 0fffa8b0 jal _ProcessSetResult 11544 0000a268 54000000 nop; not filled. 11545 0000a26c 23bd0008 addi r29,r29,#8 11546 0000a270 23bdfff8 addi r29,r29,#-8 11547 0000a274 afa20000 sw (r29),r2 11548 0000a278 0fff700c jal _SetIntrs 11549 0000a27c 54000000 nop; not filled. 11550 0000a280 080004c0 j L203_LF8 11551 0000a284 54000000 nop; not filled. 11552 0000a288 L163_LF8: 11553 0000a288 0fffd64c jal _GetCurrentPid 11554 0000a28c 54000000 nop; not filled. 11555 0000a290 00011020 add r2,r0,r1 11556 0000a294 23bdfff8 addi r29,r29,#-8 11557 0000a298 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11558 0000a29c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11559 0000a2a0 8c210000 lw r1,(r1) 11560 0000a2a4 afa10000 sw (r29),r1 11561 0000a2a8 afa20004 sw 4(r29),r2 11562 0000a2ac 0fffa868 jal _ProcessSetResult 11563 0000a2b0 54000000 nop; not filled. 11564 0000a2b4 0800048c j L203_LF8 11565 0000a2b8 54000000 nop; not filled. 11566 0000a2bc L164_LF8: 11567 0000a2bc 23bdfff8 addi r29,r29,#-8 11568 0000a2c0 afa30000 sw (r29),r3 11569 0000a2c4 30a10040 andi r1,r5,#64 11570 0000a2c8 afa10004 sw 4(r29),r1 11571 0000a2cc 0ffff1a8 jal _TrapProcessCreateHandler_LF8 11572 0000a2d0 54000000 nop; not filled. 11573 0000a2d4 0800046c j L203_LF8 11574 0000a2d8 54000000 nop; not filled. 11575 0000a2dc L165_LF8: 11576 0000a2dc 30a10040 andi r1,r5,#64 11577 0000a2e0 64210000 snei r1,r1,#0 11578 0000a2e4 1420003c bnez r1,L167_LF8 11579 0000a2e8 54000000 nop; not filled. 11580 0000a2ec 23bdfff0 addi r29,r29,#-16 11581 0000a2f0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11582 0000a2f4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11583 0000a2f8 8c210000 lw r1,(r1) 11584 0000a2fc afa10000 sw (r29),r1 11585 0000a300 afa30004 sw 4(r29),r3 11586 0000a304 23c1ffc4 addi r1,r30,#-60 11587 0000a308 afa10008 sw 8(r29),r1 11588 0000a30c 20070004 addi r7,r0,#4 11589 0000a310 afa7000c sw 12(r29),r7 11590 0000a314 0fff926c jal _MemoryCopyUserToSystem 11591 0000a318 54000000 nop; not filled. 11592 0000a31c 08000024 j L204_LF8 11593 0000a320 54000000 nop; not filled. 11594 0000a324 L167_LF8: 11595 0000a324 23bdfff0 addi r29,r29,#-16 11596 0000a328 afa30000 sw (r29),r3 11597 0000a32c 23c1ffc4 addi r1,r30,#-60 11598 0000a330 afa10004 sw 4(r29),r1 11599 0000a334 20070004 addi r7,r0,#4 11600 0000a338 afa70008 sw 8(r29),r7 11601 0000a33c 0fff9e84 jal _bcopy 11602 0000a340 54000000 nop; not filled. 11603 0000a344 L204_LF8: 11604 0000a344 23bd0010 addi r29,r29,#16 11605 0000a348 23bdfff8 addi r29,r29,#-8 11606 0000a34c 8fc7ffc4 lw r7,-60(r30) 11607 0000a350 afa70000 sw (r29),r7 11608 0000a354 0fffe578 jal _SemCreate 11609 0000a358 54000000 nop; not filled. 11610 0000a35c 00011020 add r2,r0,r1 11611 0000a360 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11612 0000a364 24210e40 addui r1,r1,(_currentPCB)&0xffff 11613 0000a368 8c210000 lw r1,(r1) 11614 0000a36c afa10000 sw (r29),r1 11615 0000a370 afa20004 sw 4(r29),r2 11616 0000a374 0fffa7a0 jal _ProcessSetResult 11617 0000a378 54000000 nop; not filled. 11618 0000a37c 080003c4 j L203_LF8 11619 0000a380 54000000 nop; not filled. 11620 0000a384 L169_LF8: 11621 0000a384 30a10040 andi r1,r5,#64 11622 0000a388 64210000 snei r1,r1,#0 11623 0000a38c 1420003c bnez r1,L171_LF8 11624 0000a390 54000000 nop; not filled. 11625 0000a394 23bdfff0 addi r29,r29,#-16 11626 0000a398 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11627 0000a39c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11628 0000a3a0 8c210000 lw r1,(r1) 11629 0000a3a4 afa10000 sw (r29),r1 11630 0000a3a8 afa30004 sw 4(r29),r3 11631 0000a3ac 23c1ffc4 addi r1,r30,#-60 11632 0000a3b0 afa10008 sw 8(r29),r1 11633 0000a3b4 20070004 addi r7,r0,#4 11634 0000a3b8 afa7000c sw 12(r29),r7 11635 0000a3bc 0fff91c4 jal _MemoryCopyUserToSystem 11636 0000a3c0 54000000 nop; not filled. 11637 0000a3c4 08000024 j L205_LF8 11638 0000a3c8 54000000 nop; not filled. 11639 0000a3cc L171_LF8: 11640 0000a3cc 23bdfff0 addi r29,r29,#-16 11641 0000a3d0 afa30000 sw (r29),r3 11642 0000a3d4 23c1ffc4 addi r1,r30,#-60 11643 0000a3d8 afa10004 sw 4(r29),r1 11644 0000a3dc 20070004 addi r7,r0,#4 11645 0000a3e0 afa70008 sw 8(r29),r7 11646 0000a3e4 0fff9ddc jal _bcopy 11647 0000a3e8 54000000 nop; not filled. 11648 0000a3ec L205_LF8: 11649 0000a3ec 23bd0010 addi r29,r29,#16 11650 0000a3f0 23bdfff8 addi r29,r29,#-8 11651 0000a3f4 8fc7ffc4 lw r7,-60(r30) 11652 0000a3f8 afa70000 sw (r29),r7 11653 0000a3fc 0fffe854 jal _SemHandleWait 11654 0000a400 54000000 nop; not filled. 11655 0000a404 00011020 add r2,r0,r1 11656 0000a408 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11657 0000a40c 24210e40 addui r1,r1,(_currentPCB)&0xffff 11658 0000a410 8c210000 lw r1,(r1) 11659 0000a414 afa10000 sw (r29),r1 11660 0000a418 afa20004 sw 4(r29),r2 11661 0000a41c 0fffa6f8 jal _ProcessSetResult 11662 0000a420 54000000 nop; not filled. 11663 0000a424 0800031c j L203_LF8 11664 0000a428 54000000 nop; not filled. 11665 0000a42c L173_LF8: 11666 0000a42c 30a10040 andi r1,r5,#64 11667 0000a430 64210000 snei r1,r1,#0 11668 0000a434 1420003c bnez r1,L175_LF8 11669 0000a438 54000000 nop; not filled. 11670 0000a43c 23bdfff0 addi r29,r29,#-16 11671 0000a440 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11672 0000a444 24210e40 addui r1,r1,(_currentPCB)&0xffff 11673 0000a448 8c210000 lw r1,(r1) 11674 0000a44c afa10000 sw (r29),r1 11675 0000a450 afa30004 sw 4(r29),r3 11676 0000a454 23c1ffc4 addi r1,r30,#-60 11677 0000a458 afa10008 sw 8(r29),r1 11678 0000a45c 20070004 addi r7,r0,#4 11679 0000a460 afa7000c sw 12(r29),r7 11680 0000a464 0fff911c jal _MemoryCopyUserToSystem 11681 0000a468 54000000 nop; not filled. 11682 0000a46c 08000024 j L206_LF8 11683 0000a470 54000000 nop; not filled. 11684 0000a474 L175_LF8: 11685 0000a474 23bdfff0 addi r29,r29,#-16 11686 0000a478 afa30000 sw (r29),r3 11687 0000a47c 23c1ffc4 addi r1,r30,#-60 11688 0000a480 afa10004 sw 4(r29),r1 11689 0000a484 20070004 addi r7,r0,#4 11690 0000a488 afa70008 sw 8(r29),r7 11691 0000a48c 0fff9d34 jal _bcopy 11692 0000a490 54000000 nop; not filled. 11693 0000a494 L206_LF8: 11694 0000a494 23bd0010 addi r29,r29,#16 11695 0000a498 23bdfff8 addi r29,r29,#-8 11696 0000a49c 8fc7ffc4 lw r7,-60(r30) 11697 0000a4a0 afa70000 sw (r29),r7 11698 0000a4a4 0fffea38 jal _SemHandleSignal 11699 0000a4a8 54000000 nop; not filled. 11700 0000a4ac 00011020 add r2,r0,r1 11701 0000a4b0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11702 0000a4b4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11703 0000a4b8 8c210000 lw r1,(r1) 11704 0000a4bc afa10000 sw (r29),r1 11705 0000a4c0 afa20004 sw 4(r29),r2 11706 0000a4c4 0fffa650 jal _ProcessSetResult 11707 0000a4c8 54000000 nop; not filled. 11708 0000a4cc 08000274 j L203_LF8 11709 0000a4d0 54000000 nop; not filled. 11710 0000a4d4 L177_LF8: 11711 0000a4d4 23bdfff8 addi r29,r29,#-8 11712 0000a4d8 3c070001 lhi r7,((LC8_LF8)>>16)&0xffff 11713 0000a4dc 24e73b90 addui r7,r7,(LC8_LF8)&0xffff 11714 0000a4e0 08000248 j L207_LF8 11715 0000a4e4 54000000 nop; not filled. 11716 0000a4e8 L124_LF8: 11717 0000a4e8 60410003 seqi r1,r2,#3 11718 0000a4ec 14200148 bnez r1,L193_LF8 11719 0000a4f0 54000000 nop; not filled. 11720 0000a4f4 6c410003 sgtui r1,r2,#3 11721 0000a4f8 14200024 bnez r1,L199_LF8 11722 0000a4fc 54000000 nop; not filled. 11723 0000a500 60410001 seqi r1,r2,#1 11724 0000a504 142001a8 bnez r1,L195_LF8 11725 0000a508 54000000 nop; not filled. 11726 0000a50c 60410002 seqi r1,r2,#2 11727 0000a510 1020020c beqz r1,L197_LF8 11728 0000a514 54000000 nop; not filled. 11729 0000a518 08000154 j L194_LF8 11730 0000a51c 54000000 nop; not filled. 11731 0000a520 L199_LF8: 11732 0000a520 60410040 seqi r1,r2,#64 11733 0000a524 14200038 bnez r1,L185_LF8 11734 0000a528 54000000 nop; not filled. 11735 0000a52c 6c410040 sgtui r1,r2,#64 11736 0000a530 14200018 bnez r1,L200_LF8 11737 0000a534 54000000 nop; not filled. 11738 0000a538 60410020 seqi r1,r2,#32 11739 0000a53c 102001e0 beqz r1,L197_LF8 11740 0000a540 54000000 nop; not filled. 11741 0000a544 080001c8 j L196_LF8 11742 0000a548 54000000 nop; not filled. 11743 0000a54c L200_LF8: 11744 0000a54c 60410048 seqi r1,r2,#72 11745 0000a550 102001cc beqz r1,L197_LF8 11746 0000a554 54000000 nop; not filled. 11747 0000a558 08000088 j L188_LF8 11748 0000a55c 54000000 nop; not filled. 11749 0000a560 L185_LF8: 11750 0000a560 23bdfff8 addi r29,r29,#-8 11751 0000a564 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11752 0000a568 24420d78 addui r2,r2,(_debugstr)&0xffff 11753 0000a56c afa20000 sw (r29),r2 11754 0000a570 20070074 addi r7,r0,#116 11755 0000a574 afa70004 sw 4(r29),r7 11756 0000a578 0fff98b8 jal _dindex 11757 0000a57c 54000000 nop; not filled. 11758 0000a580 23bd0008 addi r29,r29,#8 11759 0000a584 64210000 snei r1,r1,#0 11760 0000a588 1420002c bnez r1,L187_LF8 11761 0000a58c 54000000 nop; not filled. 11762 0000a590 23bdfff8 addi r29,r29,#-8 11763 0000a594 afa20000 sw (r29),r2 11764 0000a598 2007002b addi r7,r0,#43 11765 0000a59c afa70004 sw 4(r29),r7 11766 0000a5a0 0fff9890 jal _dindex 11767 0000a5a4 54000000 nop; not filled. 11768 0000a5a8 23bd0008 addi r29,r29,#8 11769 0000a5ac 64210000 snei r1,r1,#0 11770 0000a5b0 10200020 beqz r1,L186_LF8 11771 0000a5b4 54000000 nop; not filled. 11772 0000a5b8 L187_LF8: 11773 0000a5b8 23bdfff8 addi r29,r29,#-8 11774 0000a5bc 3c070001 lhi r7,((LC9_LF8)>>16)&0xffff 11775 0000a5c0 24e73bbc addui r7,r7,(LC9_LF8)&0xffff 11776 0000a5c4 L209_LF8: 11777 0000a5c4 afa70000 sw (r29),r7 11778 0000a5c8 0c000b04 jal _printf 11779 0000a5cc 54000000 nop; not filled. 11780 0000a5d0 23bd0008 addi r29,r29,#8 11781 0000a5d4 L186_LF8: 11782 0000a5d4 0fffa574 jal _ProcessSchedule 11783 0000a5d8 54000000 nop; not filled. 11784 0000a5dc 08000168 j L183_LF8 11785 0000a5e0 54000000 nop; not filled. 11786 0000a5e4 L188_LF8: 11787 0000a5e4 3c04fff0 lhi r4,#-16 11788 0000a5e8 248401a0 addui r4,r4,#416 11789 0000a5ec 3c03fff0 lhi r3,#-16 11790 0000a5f0 24630180 addui r3,r3,#384 11791 0000a5f4 L189_LF8: 11792 0000a5f4 8c820000 lw r2,(r4) 11793 0000a5f8 8c610000 lw r1,(r3) 11794 0000a5fc 23bdfff0 addi r29,r29,#-16 11795 0000a600 3c070001 lhi r7,((LC10_LF8)>>16)&0xffff 11796 0000a604 24e73bd4 addui r7,r7,(LC10_LF8)&0xffff 11797 0000a608 afa70000 sw (r29),r7 11798 0000a60c afa10004 sw 4(r29),r1 11799 0000a610 afa10008 sw 8(r29),r1 11800 0000a614 afa2000c sw 12(r29),r2 11801 0000a618 0c000ab4 jal _printf 11802 0000a61c 54000000 nop; not filled. 11803 0000a620 23bd0010 addi r29,r29,#16 11804 0000a624 6c410001 sgti r1,r2,#1 11805 0000a628 1020011c beqz r1,L183_LF8 11806 0000a62c 54000000 nop; not filled. 11807 0000a630 0bffffc0 j L189_LF8 11808 0000a634 54000000 nop; not filled. 11809 0000a638 L193_LF8: 11810 0000a638 23bdfff8 addi r29,r29,#-8 11811 0000a63c 3c070001 lhi r7,((LC11_LF8)>>16)&0xffff 11812 0000a640 24e73c0c addui r7,r7,(LC11_LF8)&0xffff 11813 0000a644 afa70000 sw (r29),r7 11814 0000a648 0c000a84 jal _printf 11815 0000a64c 54000000 nop; not filled. 11816 0000a650 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11817 0000a654 24210e40 addui r1,r1,(_currentPCB)&0xffff 11818 0000a658 8c210000 lw r1,(r1) 11819 0000a65c afa10000 sw (r29),r1 11820 0000a660 0fffd434 jal _ProcessKill 11821 0000a664 54000000 nop; not filled. 11822 0000a668 080000d8 j L203_LF8 11823 0000a66c 54000000 nop; not filled. 11824 0000a670 L194_LF8: 11825 0000a670 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11826 0000a674 24210e40 addui r1,r1,(_currentPCB)&0xffff 11827 0000a678 8c210000 lw r1,(r1) 11828 0000a67c 23bdfff8 addi r29,r29,#-8 11829 0000a680 3c070001 lhi r7,((LC12_LF8)>>16)&0xffff 11830 0000a684 24e73c1c addui r7,r7,(LC12_LF8)&0xffff 11831 0000a688 afa70000 sw (r29),r7 11832 0000a68c 20210010 addi r1,r1,#16 11833 0000a690 afa10004 sw 4(r29),r1 11834 0000a694 0c000a38 jal _printf 11835 0000a698 54000000 nop; not filled. 11836 0000a69c 23bdfff8 addi r29,r29,#-8 11837 0000a6a0 3c070001 lhi r7,((LC13_LF8)>>16)&0xffff 11838 0000a6a4 24e73c30 addui r7,r7,(LC13_LF8)&0xffff 11839 0000a6a8 0800003c j L208_LF8 11840 0000a6ac 54000000 nop; not filled. 11841 0000a6b0 L195_LF8: 11842 0000a6b0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 11843 0000a6b4 24210e40 addui r1,r1,(_currentPCB)&0xffff 11844 0000a6b8 8c210000 lw r1,(r1) 11845 0000a6bc 23bdfff8 addi r29,r29,#-8 11846 0000a6c0 3c070001 lhi r7,((LC12_LF8)>>16)&0xffff 11847 0000a6c4 24e73c1c addui r7,r7,(LC12_LF8)&0xffff 11848 0000a6c8 afa70000 sw (r29),r7 11849 0000a6cc 20210010 addi r1,r1,#16 11850 0000a6d0 afa10004 sw 4(r29),r1 11851 0000a6d4 0c0009f8 jal _printf 11852 0000a6d8 54000000 nop; not filled. 11853 0000a6dc 23bdfff8 addi r29,r29,#-8 11854 0000a6e0 3c070001 lhi r7,((LC14_LF8)>>16)&0xffff 11855 0000a6e4 24e73c68 addui r7,r7,(LC14_LF8)&0xffff 11856 0000a6e8 L208_LF8: 11857 0000a6e8 afa70000 sw (r29),r7 11858 0000a6ec afa60004 sw 4(r29),r6 11859 0000a6f0 afa50008 sw 8(r29),r5 11860 0000a6f4 0c0009d8 jal _printf 11861 0000a6f8 54000000 nop; not filled. 11862 0000a6fc 0c0009b8 jal _exitsim 11863 0000a700 54000000 nop; not filled. 11864 0000a704 23bd0010 addi r29,r29,#16 11865 0000a708 0800003c j L183_LF8 11866 0000a70c 54000000 nop; not filled. 11867 0000a710 L196_LF8: 11868 0000a710 0fffd3b0 jal _PageFaultHandler 11869 0000a714 54000000 nop; not filled. 11870 0000a718 0800002c j L183_LF8 11871 0000a71c 54000000 nop; not filled. 11872 0000a720 L197_LF8: 11873 0000a720 23bdfff8 addi r29,r29,#-8 11874 0000a724 3c070001 lhi r7,((LC15_LF8)>>16)&0xffff 11875 0000a728 24e73ca4 addui r7,r7,(LC15_LF8)&0xffff 11876 0000a72c L207_LF8: 11877 0000a72c afa70000 sw (r29),r7 11878 0000a730 afa20004 sw 4(r29),r2 11879 0000a734 0c000998 jal _printf 11880 0000a738 54000000 nop; not filled. 11881 0000a73c 0c000978 jal _exitsim 11882 0000a740 54000000 nop; not filled. 11883 0000a744 L203_LF8: 11884 0000a744 23bd0008 addi r29,r29,#8 11885 0000a748 L183_LF8: 11886 0000a748 23bdfff8 addi r29,r29,#-8 11887 0000a74c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 11888 0000a750 24420d78 addui r2,r2,(_debugstr)&0xffff 11889 0000a754 afa20000 sw (r29),r2 11890 0000a758 20070074 addi r7,r0,#116 11891 0000a75c afa70004 sw 4(r29),r7 11892 0000a760 0fff96d0 jal _dindex 11893 0000a764 54000000 nop; not filled. 11894 0000a768 23bd0008 addi r29,r29,#8 11895 0000a76c 64210000 snei r1,r1,#0 11896 0000a770 1420002c bnez r1,L202_LF8 11897 0000a774 54000000 nop; not filled. 11898 0000a778 23bdfff8 addi r29,r29,#-8 11899 0000a77c afa20000 sw (r29),r2 11900 0000a780 2007002b addi r7,r0,#43 11901 0000a784 afa70004 sw 4(r29),r7 11902 0000a788 0fff96a8 jal _dindex 11903 0000a78c 54000000 nop; not filled. 11904 0000a790 23bd0008 addi r29,r29,#8 11905 0000a794 64210000 snei r1,r1,#0 11906 0000a798 10200020 beqz r1,L201_LF8 11907 0000a79c 54000000 nop; not filled. 11908 0000a7a0 L202_LF8: 11909 0000a7a0 23bdfff8 addi r29,r29,#-8 11910 0000a7a4 3c070001 lhi r7,((LC16_LF8)>>16)&0xffff 11911 0000a7a8 24e73cdc addui r7,r7,(LC16_LF8)&0xffff 11912 0000a7ac afa70000 sw (r29),r7 11913 0000a7b0 0c00091c jal _printf 11914 0000a7b4 54000000 nop; not filled. 11915 0000a7b8 23bd0008 addi r29,r29,#8 11916 0000a7bc L201_LF8: 11917 0000a7bc 0fff69a8 jal _intrreturn 11918 0000a7c0 54000000 nop; not filled. 11919 0000a7c4 8fa20000 lw r2,0(r29) 11920 0000a7c8 8fa30004 lw r3,4(r29) 11921 0000a7cc 8fa40008 lw r4,8(r29) 11922 0000a7d0 8fa5000c lw r5,12(r29) 11923 0000a7d4 8fa60010 lw r6,16(r29) 11924 0000a7d8 8fa70014 lw r7,20(r29) 11925 0000a7dc 8fdffff8 lw r31,-8(r30) 11926 0000a7e0 001ee820 add r29,r0,r30 11927 0000a7e4 8fdefffc lw r30,-4(r30) 11928 0000a7e8 4be00000 jr r31 11929 0000a7ec 54000000 nop 11930 0000a7f0 .endproc _dointerrupt 11931 ; Compiled by GCC 11933 0000a7f0 .align 2 11934 0000a7f0 .proc _isspace 11935 0000a7f0 .global _isspace 11936 0000a7f0 _isspace: 11937 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 11938 0000a7f0 afbefffc sw -4(r29),r30; push fp 11939 0000a7f4 001df020 add r30,r0,r29; fp = sp 11940 0000a7f8 afbffff8 sw -8(r29),r31; push ret addr 11941 0000a7fc 2fbd0010 subui r29,r29,#16; alloc local storage 11942 0000a800 afa20000 sw 0(r29),r2 11943 0000a804 83c20003 lb r2,3(r30) 11944 0000a808 201f0000 addi r31,r0,#0 11945 0000a80c 304100ff andi r1,r2,#0x00ff 11946 0000a810 60210020 seqi r1,r1,#32 11947 0000a814 14200018 bnez r1,L6_LF9 11948 0000a818 54000000 nop; not filled. 11949 0000a81c 2041fff7 addi r1,r2,#-9 11950 0000a820 302100ff andi r1,r1,#0x00ff 11951 0000a824 70210001 sleui r1,r1,#1 11952 0000a828 10200008 beqz r1,L5_LF9 11953 0000a82c 54000000 nop; not filled. 11954 0000a830 L6_LF9: 11955 0000a830 201f0001 addi r31,r0,#1 11956 0000a834 L5_LF9: 11957 0000a834 001f0820 add r1,r0,r31 11958 0000a838 8fa20000 lw r2,0(r29) 11959 0000a83c 8fdffff8 lw r31,-8(r30) 11960 0000a840 001ee820 add r29,r0,r30 11961 0000a844 8fdefffc lw r30,-4(r30) 11962 0000a848 4be00000 jr r31 11963 0000a84c 54000000 nop 11964 0000a850 .endproc _isspace 11965 0000a850 .align 2 11966 0000a850 .proc _isxdigit 11967 0000a850 .global _isxdigit 11968 0000a850 _isxdigit: 11969 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 11970 0000a850 afbefffc sw -4(r29),r30; push fp 11971 0000a854 001df020 add r30,r0,r29; fp = sp 11972 0000a858 afbffff8 sw -8(r29),r31; push ret addr 11973 0000a85c 2fbd0010 subui r29,r29,#16; alloc local storage 11974 0000a860 afa20000 sw 0(r29),r2 11975 0000a864 83df0003 lb r31,3(r30) 11976 0000a868 20020000 addi r2,r0,#0 11977 0000a86c 23e1ffd0 addi r1,r31,#-48 11978 0000a870 302100ff andi r1,r1,#0x00ff 11979 0000a874 70210009 sleui r1,r1,#9 11980 0000a878 14200028 bnez r1,L12_LF9 11981 0000a87c 54000000 nop; not filled. 11982 0000a880 23e1ff9f addi r1,r31,#-97 11983 0000a884 302100ff andi r1,r1,#0x00ff 11984 0000a888 70210005 sleui r1,r1,#5 11985 0000a88c 14200014 bnez r1,L12_LF9 11986 0000a890 54000000 nop; not filled. 11987 0000a894 33e100ff andi r1,r31,#0x00ff 11988 0000a898 64210041 snei r1,r1,#65 11989 0000a89c 14200008 bnez r1,L11_LF9 11990 0000a8a0 54000000 nop; not filled. 11991 0000a8a4 L12_LF9: 11992 0000a8a4 20020001 addi r2,r0,#1 11993 0000a8a8 L11_LF9: 11994 0000a8a8 00020820 add r1,r0,r2 11995 0000a8ac 8fa20000 lw r2,0(r29) 11996 0000a8b0 8fdffff8 lw r31,-8(r30) 11997 0000a8b4 001ee820 add r29,r0,r30 11998 0000a8b8 8fdefffc lw r30,-4(r30) 11999 0000a8bc 4be00000 jr r31 12000 0000a8c0 54000000 nop 12001 0000a8c4 .endproc _isxdigit 12002 0000a8c4 .align 2 12003 0000a8c4 .proc _DisableIntrs 12004 0000a8c4 .global _DisableIntrs 12005 0000a8c4 _DisableIntrs: 12006 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 12007 0000a8c4 afbefffc sw -4(r29),r30; push fp 12008 0000a8c8 001df020 add r30,r0,r29; fp = sp 12009 0000a8cc afbffff8 sw -8(r29),r31; push ret addr 12010 0000a8d0 2fbd0010 subui r29,r29,#16; alloc local storage 12011 0000a8d4 afa20000 sw 0(r29),r2 12012 0000a8d8 23bdfff8 addi r29,r29,#-8 12013 0000a8dc 2002000f addi r2,r0,#15 12014 0000a8e0 afa20000 sw (r29),r2 12015 0000a8e4 0fff69a0 jal _SetIntrs 12016 0000a8e8 54000000 nop; not filled. 12017 0000a8ec 23bd0008 addi r29,r29,#8 12018 0000a8f0 8fa20000 lw r2,0(r29) 12019 0000a8f4 8fdffff8 lw r31,-8(r30) 12020 0000a8f8 001ee820 add r29,r0,r30 12021 0000a8fc 8fdefffc lw r30,-4(r30) 12022 0000a900 4be00000 jr r31 12023 0000a904 54000000 nop 12024 0000a908 .endproc _DisableIntrs 12025 0000a908 .align 2 12026 0000a908 .proc _EnableIntrs 12027 0000a908 .global _EnableIntrs 12028 0000a908 _EnableIntrs: 12029 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 12030 0000a908 afbefffc sw -4(r29),r30; push fp 12031 0000a90c 001df020 add r30,r0,r29; fp = sp 12032 0000a910 afbffff8 sw -8(r29),r31; push ret addr 12033 0000a914 2fbd0010 subui r29,r29,#16; alloc local storage 12034 0000a918 afa20000 sw 0(r29),r2 12035 0000a91c 23bdfff8 addi r29,r29,#-8 12036 0000a920 20020000 addi r2,r0,#0 12037 0000a924 afa20000 sw (r29),r2 12038 0000a928 0fff695c jal _SetIntrs 12039 0000a92c 54000000 nop; not filled. 12040 0000a930 23bd0008 addi r29,r29,#8 12041 0000a934 8fa20000 lw r2,0(r29) 12042 0000a938 8fdffff8 lw r31,-8(r30) 12043 0000a93c 001ee820 add r29,r0,r30 12044 0000a940 8fdefffc lw r30,-4(r30) 12045 0000a944 4be00000 jr r31 12046 0000a948 54000000 nop 12047 0000a94c .endproc _EnableIntrs 12048 0000a94c .align 2 12049 0000a94c .proc _RestoreIntrs 12050 0000a94c .global _RestoreIntrs 12051 0000a94c _RestoreIntrs: 12052 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 12053 0000a94c afbefffc sw -4(r29),r30; push fp 12054 0000a950 001df020 add r30,r0,r29; fp = sp 12055 0000a954 afbffff8 sw -8(r29),r31; push ret addr 12056 0000a958 2fbd0010 subui r29,r29,#16; alloc local storage 12057 0000a95c afa20000 sw 0(r29),r2 12058 0000a960 23bdfff8 addi r29,r29,#-8 12059 0000a964 8fc20000 lw r2,(r30) 12060 0000a968 afa20000 sw (r29),r2 12061 0000a96c 0fff6918 jal _SetIntrs 12062 0000a970 54000000 nop; not filled. 12063 0000a974 23bd0008 addi r29,r29,#8 12064 0000a978 8fa20000 lw r2,0(r29) 12065 0000a97c 8fdffff8 lw r31,-8(r30) 12066 0000a980 001ee820 add r29,r0,r30 12067 0000a984 8fdefffc lw r30,-4(r30) 12068 0000a988 4be00000 jr r31 12069 0000a98c 54000000 nop 12070 0000a990 .endproc _RestoreIntrs 12071 0000a990 .align 2 12072 0000a990 .proc _QueueLinkInit 12073 0000a990 .global _QueueLinkInit 12074 0000a990 _QueueLinkInit: 12075 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 12076 0000a990 afbefffc sw -4(r29),r30; push fp 12077 0000a994 001df020 add r30,r0,r29; fp = sp 12078 0000a998 afbffff8 sw -8(r29),r31; push ret addr 12079 0000a99c 2fbd0010 subui r29,r29,#16; alloc local storage 12080 0000a9a0 afa20000 sw 0(r29),r2 12081 0000a9a4 8fc10000 lw r1,(r30) 12082 0000a9a8 8fc20004 lw r2,4(r30) 12083 0000a9ac 201f0000 addi r31,r0,#0 12084 0000a9b0 ac3f0000 sw (r1),r31 12085 0000a9b4 ac22000c sw 12(r1),r2 12086 0000a9b8 8fa20000 lw r2,0(r29) 12087 0000a9bc 8fdffff8 lw r31,-8(r30) 12088 0000a9c0 001ee820 add r29,r0,r30 12089 0000a9c4 8fdefffc lw r30,-4(r30) 12090 0000a9c8 4be00000 jr r31 12091 0000a9cc 54000000 nop 12092 0000a9d0 .endproc _QueueLinkInit 12093 0000a9d0 .align 2 12094 0000a9d0 .proc _QueueNext 12095 0000a9d0 .global _QueueNext 12096 0000a9d0 _QueueNext: 12097 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 12098 0000a9d0 afbefffc sw -4(r29),r30; push fp 12099 0000a9d4 001df020 add r30,r0,r29; fp = sp 12100 0000a9d8 afbffff8 sw -8(r29),r31; push ret addr 12101 0000a9dc 2fbd0008 subui r29,r29,#8; alloc local storage 12102 0000a9e0 8fc10000 lw r1,(r30) 12103 0000a9e4 8c210000 lw r1,(r1) 12104 0000a9e8 8fdffff8 lw r31,-8(r30) 12105 0000a9ec 001ee820 add r29,r0,r30 12106 0000a9f0 8fdefffc lw r30,-4(r30) 12107 0000a9f4 4be00000 jr r31 12108 0000a9f8 54000000 nop 12109 0000a9fc .endproc _QueueNext 12110 0000a9fc .align 2 12111 0000a9fc .proc _QueuePrev 12112 0000a9fc .global _QueuePrev 12113 0000a9fc _QueuePrev: 12114 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 12115 0000a9fc afbefffc sw -4(r29),r30; push fp 12116 0000aa00 001df020 add r30,r0,r29; fp = sp 12117 0000aa04 afbffff8 sw -8(r29),r31; push ret addr 12118 0000aa08 2fbd0008 subui r29,r29,#8; alloc local storage 12119 0000aa0c 8fc10000 lw r1,(r30) 12120 0000aa10 8c210004 lw r1,4(r1) 12121 0000aa14 8fdffff8 lw r31,-8(r30) 12122 0000aa18 001ee820 add r29,r0,r30 12123 0000aa1c 8fdefffc lw r30,-4(r30) 12124 0000aa20 4be00000 jr r31 12125 0000aa24 54000000 nop 12126 0000aa28 .endproc _QueuePrev 12127 0000aa28 .align 2 12128 0000aa28 .proc _QueueFirst 12129 0000aa28 .global _QueueFirst 12130 0000aa28 _QueueFirst: 12131 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 12132 0000aa28 afbefffc sw -4(r29),r30; push fp 12133 0000aa2c 001df020 add r30,r0,r29; fp = sp 12134 0000aa30 afbffff8 sw -8(r29),r31; push ret addr 12135 0000aa34 2fbd0008 subui r29,r29,#8; alloc local storage 12136 0000aa38 8fc10000 lw r1,(r30) 12137 0000aa3c 8c210000 lw r1,(r1) 12138 0000aa40 8fdffff8 lw r31,-8(r30) 12139 0000aa44 001ee820 add r29,r0,r30 12140 0000aa48 8fdefffc lw r30,-4(r30) 12141 0000aa4c 4be00000 jr r31 12142 0000aa50 54000000 nop 12143 0000aa54 .endproc _QueueFirst 12144 0000aa54 .align 2 12145 0000aa54 .proc _QueueLast 12146 0000aa54 .global _QueueLast 12147 0000aa54 _QueueLast: 12148 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 12149 0000aa54 afbefffc sw -4(r29),r30; push fp 12150 0000aa58 001df020 add r30,r0,r29; fp = sp 12151 0000aa5c afbffff8 sw -8(r29),r31; push ret addr 12152 0000aa60 2fbd0008 subui r29,r29,#8; alloc local storage 12153 0000aa64 8fc10000 lw r1,(r30) 12154 0000aa68 8c210004 lw r1,4(r1) 12155 0000aa6c 8fdffff8 lw r31,-8(r30) 12156 0000aa70 001ee820 add r29,r0,r30 12157 0000aa74 8fdefffc lw r30,-4(r30) 12158 0000aa78 4be00000 jr r31 12159 0000aa7c 54000000 nop 12160 0000aa80 .endproc _QueueLast 12161 0000aa80 .align 2 12162 0000aa80 .proc _QueueInsertAfter 12163 0000aa80 .global _QueueInsertAfter 12164 0000aa80 _QueueInsertAfter: 12165 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 12166 0000aa80 afbefffc sw -4(r29),r30; push fp 12167 0000aa84 001df020 add r30,r0,r29; fp = sp 12168 0000aa88 afbffff8 sw -8(r29),r31; push ret addr 12169 0000aa8c 2fbd0010 subui r29,r29,#16; alloc local storage 12170 0000aa90 afa20000 sw 0(r29),r2 12171 0000aa94 afa30004 sw 4(r29),r3 12172 0000aa98 8fc30000 lw r3,(r30) 12173 0000aa9c 8fc20004 lw r2,4(r30) 12174 0000aaa0 8fc10008 lw r1,8(r30) 12175 0000aaa4 ac230008 sw 8(r1),r3 12176 0000aaa8 ac220004 sw 4(r1),r2 12177 0000aaac 8c5f0000 lw r31,(r2) 12178 0000aab0 ac3f0000 sw (r1),r31 12179 0000aab4 ac410000 sw (r2),r1 12180 0000aab8 8c220000 lw r2,(r1) 12181 0000aabc ac410004 sw 4(r2),r1 12182 0000aac0 8c610008 lw r1,8(r3) 12183 0000aac4 20210001 addi r1,r1,#1 12184 0000aac8 ac610008 sw 8(r3),r1 12185 0000aacc 8fa20000 lw r2,0(r29) 12186 0000aad0 8fa30004 lw r3,4(r29) 12187 0000aad4 8fdffff8 lw r31,-8(r30) 12188 0000aad8 001ee820 add r29,r0,r30 12189 0000aadc 8fdefffc lw r30,-4(r30) 12190 0000aae0 4be00000 jr r31 12191 0000aae4 54000000 nop 12192 0000aae8 .endproc _QueueInsertAfter 12193 0000aae8 .align 2 12194 0000aae8 .proc _QueueInsertFirst 12195 0000aae8 .global _QueueInsertFirst 12196 0000aae8 _QueueInsertFirst: 12197 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 12198 0000aae8 afbefffc sw -4(r29),r30; push fp 12199 0000aaec 001df020 add r30,r0,r29; fp = sp 12200 0000aaf0 afbffff8 sw -8(r29),r31; push ret addr 12201 0000aaf4 2fbd0010 subui r29,r29,#16; alloc local storage 12202 0000aaf8 afa20000 sw 0(r29),r2 12203 0000aafc afa30004 sw 4(r29),r3 12204 0000ab00 8fc30000 lw r3,(r30) 12205 0000ab04 8fc10004 lw r1,4(r30) 12206 0000ab08 ac230008 sw 8(r1),r3 12207 0000ab0c ac230004 sw 4(r1),r3 12208 0000ab10 8c7f0000 lw r31,(r3) 12209 0000ab14 ac3f0000 sw (r1),r31 12210 0000ab18 ac610000 sw (r3),r1 12211 0000ab1c 8c220000 lw r2,(r1) 12212 0000ab20 ac410004 sw 4(r2),r1 12213 0000ab24 8c610008 lw r1,8(r3) 12214 0000ab28 20210001 addi r1,r1,#1 12215 0000ab2c ac610008 sw 8(r3),r1 12216 0000ab30 8fa20000 lw r2,0(r29) 12217 0000ab34 8fa30004 lw r3,4(r29) 12218 0000ab38 8fdffff8 lw r31,-8(r30) 12219 0000ab3c 001ee820 add r29,r0,r30 12220 0000ab40 8fdefffc lw r30,-4(r30) 12221 0000ab44 4be00000 jr r31 12222 0000ab48 54000000 nop 12223 0000ab4c .endproc _QueueInsertFirst 12224 0000ab4c .align 2 12225 0000ab4c .proc _QueueInsertLast 12226 0000ab4c .global _QueueInsertLast 12227 0000ab4c _QueueInsertLast: 12228 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 12229 0000ab4c afbefffc sw -4(r29),r30; push fp 12230 0000ab50 001df020 add r30,r0,r29; fp = sp 12231 0000ab54 afbffff8 sw -8(r29),r31; push ret addr 12232 0000ab58 2fbd0010 subui r29,r29,#16; alloc local storage 12233 0000ab5c afa20000 sw 0(r29),r2 12234 0000ab60 afa30004 sw 4(r29),r3 12235 0000ab64 8fc30000 lw r3,(r30) 12236 0000ab68 8fc10004 lw r1,4(r30) 12237 0000ab6c 8c620004 lw r2,4(r3) 12238 0000ab70 ac230008 sw 8(r1),r3 12239 0000ab74 ac220004 sw 4(r1),r2 12240 0000ab78 8c5f0000 lw r31,(r2) 12241 0000ab7c ac3f0000 sw (r1),r31 12242 0000ab80 ac410000 sw (r2),r1 12243 0000ab84 8c220000 lw r2,(r1) 12244 0000ab88 ac410004 sw 4(r2),r1 12245 0000ab8c 8c610008 lw r1,8(r3) 12246 0000ab90 20210001 addi r1,r1,#1 12247 0000ab94 ac610008 sw 8(r3),r1 12248 0000ab98 8fa20000 lw r2,0(r29) 12249 0000ab9c 8fa30004 lw r3,4(r29) 12250 0000aba0 8fdffff8 lw r31,-8(r30) 12251 0000aba4 001ee820 add r29,r0,r30 12252 0000aba8 8fdefffc lw r30,-4(r30) 12253 0000abac 4be00000 jr r31 12254 0000abb0 54000000 nop 12255 0000abb4 .endproc _QueueInsertLast 12256 0000abb4 .align 2 12257 0000abb4 .proc _QueueRemove 12258 0000abb4 .global _QueueRemove 12259 0000abb4 _QueueRemove: 12260 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 12261 0000abb4 afbefffc sw -4(r29),r30; push fp 12262 0000abb8 001df020 add r30,r0,r29; fp = sp 12263 0000abbc afbffff8 sw -8(r29),r31; push ret addr 12264 0000abc0 2fbd0010 subui r29,r29,#16; alloc local storage 12265 0000abc4 afa20000 sw 0(r29),r2 12266 0000abc8 afa30004 sw 4(r29),r3 12267 0000abcc 8fdf0000 lw r31,(r30) 12268 0000abd0 8fe10008 lw r1,8(r31) 12269 0000abd4 8c210008 lw r1,8(r1) 12270 0000abd8 6c210000 sgti r1,r1,#0 12271 0000abdc 1020002c beqz r1,L44_LF9 12272 0000abe0 54000000 nop; not filled. 12273 0000abe4 8fe10004 lw r1,4(r31) 12274 0000abe8 8fe30000 lw r3,(r31) 12275 0000abec ac230000 sw (r1),r3 12276 0000abf0 8fe10000 lw r1,(r31) 12277 0000abf4 8fe30004 lw r3,4(r31) 12278 0000abf8 ac230004 sw 4(r1),r3 12279 0000abfc 8fe20008 lw r2,8(r31) 12280 0000ac00 8c410008 lw r1,8(r2) 12281 0000ac04 2021ffff addi r1,r1,#-1 12282 0000ac08 ac410008 sw 8(r2),r1 12283 0000ac0c L44_LF9: 12284 0000ac0c 20030000 addi r3,r0,#0 12285 0000ac10 afe30000 sw (r31),r3 12286 0000ac14 8fa20000 lw r2,0(r29) 12287 0000ac18 8fa30004 lw r3,4(r29) 12288 0000ac1c 8fdffff8 lw r31,-8(r30) 12289 0000ac20 001ee820 add r29,r0,r30 12290 0000ac24 8fdefffc lw r30,-4(r30) 12291 0000ac28 4be00000 jr r31 12292 0000ac2c 54000000 nop 12293 0000ac30 .endproc _QueueRemove 12294 0000ac30 .align 2 12295 0000ac30 .proc _QueueLength 12296 0000ac30 .global _QueueLength 12297 0000ac30 _QueueLength: 12298 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 12299 0000ac30 afbefffc sw -4(r29),r30; push fp 12300 0000ac34 001df020 add r30,r0,r29; fp = sp 12301 0000ac38 afbffff8 sw -8(r29),r31; push ret addr 12302 0000ac3c 2fbd0008 subui r29,r29,#8; alloc local storage 12303 0000ac40 8fc10000 lw r1,(r30) 12304 0000ac44 8c210008 lw r1,8(r1) 12305 0000ac48 8fdffff8 lw r31,-8(r30) 12306 0000ac4c 001ee820 add r29,r0,r30 12307 0000ac50 8fdefffc lw r30,-4(r30) 12308 0000ac54 4be00000 jr r31 12309 0000ac58 54000000 nop 12310 0000ac5c .endproc _QueueLength 12311 0000ac5c .align 2 12312 0000ac5c .proc _QueueEmpty 12313 0000ac5c .global _QueueEmpty 12314 0000ac5c _QueueEmpty: 12315 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 12316 0000ac5c afbefffc sw -4(r29),r30; push fp 12317 0000ac60 001df020 add r30,r0,r29; fp = sp 12318 0000ac64 afbffff8 sw -8(r29),r31; push ret addr 12319 0000ac68 2fbd0008 subui r29,r29,#8; alloc local storage 12320 0000ac6c 8fc10000 lw r1,(r30) 12321 0000ac70 8c210008 lw r1,8(r1) 12322 0000ac74 60210000 seqi r1,r1,#0 12323 0000ac78 8fdffff8 lw r31,-8(r30) 12324 0000ac7c 001ee820 add r29,r0,r30 12325 0000ac80 8fdefffc lw r30,-4(r30) 12326 0000ac84 4be00000 jr r31 12327 0000ac88 54000000 nop 12328 0000ac8c .endproc _QueueEmpty 12329 0000ac8c .data 12330 00013cff .align 2 12331 00013d00 LC0_LF9: 12332 00013d00 50726f63 .ascii "Process #\000" 12332 00013d04 65737320 12332 00013d08 2300 12333 00013d0a .align 2 12334 00013d0c LC1_LF9: 12335 00013d0c 52756e6e .ascii "Running process %d (iteration %d)!\n\000" 12335 00013d10 696e6720 12335 00013d14 70726f63 12335 00013d18 65737320 12335 00013d1c 25642028 12335 00013d20 69746572 12335 00013d24 6174696f 12335 00013d28 6e202564 12335 00013d2c 29210a00 12336 00013d30 .text 12337 0000ac8c .align 2 12338 0000ac8c .proc _doSomething_LF9 12339 0000ac8c _doSomething_LF9: 12340 ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. 12341 0000ac8c afbefffc sw -4(r29),r30; push fp 12342 0000ac90 001df020 add r30,r0,r29; fp = sp 12343 0000ac94 afbffff8 sw -8(r29),r31; push ret addr 12344 0000ac98 2fbd0078 subui r29,r29,#120; alloc local storage 12345 0000ac9c afa20000 sw 0(r29),r2 12346 0000aca0 afa30004 sw 4(r29),r3 12347 0000aca4 afa40008 sw 8(r29),r4 12348 0000aca8 afa5000c sw 12(r29),r5 12349 0000acac afa60010 sw 16(r29),r6 12350 0000acb0 afa70014 sw 20(r29),r7 12351 0000acb4 afa80018 sw 24(r29),r8 12352 0000acb8 8fc60000 lw r6,(r30) 12353 0000acbc 2001000a addi r1,r0,#10 12354 0000acc0 00c00035 movi2fp f0,r6 12355 0000acc4 00200835 movi2fp f1,r1 12356 0000acc8 0401000f div f0,f0,f1 12357 0000accc 00001034 movfp2i r2,f0 12358 0000acd0 50410002 slli r1,r2,#0x2 12359 0000acd4 00220820 add r1,r1,r2 12360 0000acd8 50210001 slli r1,r1,#0x1 12361 0000acdc 00c13822 sub r7,r6,r1 12362 0000ace0 70c10063 slei r1,r6,#99 12363 0000ace4 102000dc beqz r1,L52_LF9 12364 0000ace8 54000000 nop; not filled. 12365 0000acec 23bdfff8 addi r29,r29,#-8 12366 0000acf0 50e10002 slli r1,r7,#0x2 12367 0000acf4 00270820 add r1,r1,r7 12368 0000acf8 50210002 slli r1,r1,#0x2 12369 0000acfc 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12370 0000ad00 25083da4 addui r8,r8,(_mysems_LF9)&0xffff 12371 0000ad04 00280820 add r1,r1,r8 12372 0000ad08 afa10000 sw (r29),r1 12373 0000ad0c 20080001 addi r8,r0,#1 12374 0000ad10 afa80004 sw 4(r29),r8 12375 0000ad14 0fffdb64 jal _SemInit 12376 0000ad18 54000000 nop; not filled. 12377 0000ad1c 20030001 addi r3,r0,#1 12378 0000ad20 23bd0008 addi r29,r29,#8 12379 0000ad24 23c4ffd0 addi r4,r30,#-48 12380 0000ad28 23c5ffa8 addi r5,r30,#-88 12381 0000ad2c 00061020 add r2,r0,r6 12382 0000ad30 L56_LF9: 12383 0000ad30 23bdfff8 addi r29,r29,#-8 12384 0000ad34 afa40000 sw (r29),r4 12385 0000ad38 3c080001 lhi r8,((LC0_LF9)>>16)&0xffff 12386 0000ad3c 25083d00 addui r8,r8,(LC0_LF9)&0xffff 12387 0000ad40 afa80004 sw 4(r29),r8 12388 0000ad44 0fff8c2c jal _dstrcpy 12389 0000ad48 54000000 nop; not filled. 12390 0000ad4c afa30000 sw (r29),r3 12391 0000ad50 afa50004 sw 4(r29),r5 12392 0000ad54 0fff9158 jal _ditoa 12393 0000ad58 54000000 nop; not filled. 12394 0000ad5c afa40000 sw (r29),r4 12395 0000ad60 afa50004 sw 4(r29),r5 12396 0000ad64 0fff8cfc jal _dstrcat 12397 0000ad68 54000000 nop; not filled. 12398 0000ad6c 23bdfff8 addi r29,r29,#-8 12399 0000ad70 3c080000 lhi r8,((_doSomething_LF9)>>16)&0xffff 12400 0000ad74 2508ac8c addui r8,r8,(_doSomething_LF9)&0xffff 12401 0000ad78 afa80000 sw (r29),r8 12402 0000ad7c 50410005 slli r1,r2,#0x5 12403 0000ad80 00220822 sub r1,r1,r2 12404 0000ad84 50210002 slli r1,r1,#0x2 12405 0000ad88 00220820 add r1,r1,r2 12406 0000ad8c 50210003 slli r1,r1,#0x3 12407 0000ad90 00260820 add r1,r1,r6 12408 0000ad94 afa10004 sw 4(r29),r1 12409 0000ad98 afa40008 sw 8(r29),r4 12410 0000ad9c 20080000 addi r8,r0,#0 12411 0000ada0 afa8000c sw 12(r29),r8 12412 0000ada4 0fffa824 jal _ProcessFork 12413 0000ada8 54000000 nop; not filled. 12414 0000adac 23bd0010 addi r29,r29,#16 12415 0000adb0 00461020 add r2,r2,r6 12416 0000adb4 20630001 addi r3,r3,#1 12417 0000adb8 70610006 slei r1,r3,#6 12418 0000adbc 1420ff70 bnez r1,L56_LF9 12419 0000adc0 54000000 nop; not filled. 12420 0000adc4 L52_LF9: 12421 0000adc4 23bdfff8 addi r29,r29,#-8 12422 0000adc8 50e10002 slli r1,r7,#0x2 12423 0000adcc 00270820 add r1,r1,r7 12424 0000add0 50210002 slli r1,r1,#0x2 12425 0000add4 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12426 0000add8 25083da4 addui r8,r8,(_mysems_LF9)&0xffff 12427 0000addc 00280820 add r1,r1,r8 12428 0000ade0 afa10000 sw (r29),r1 12429 0000ade4 0fffdbf0 jal _SemWait 12430 0000ade8 54000000 nop; not filled. 12431 0000adec 20030000 addi r3,r0,#0 12432 0000adf0 23bd0008 addi r29,r29,#8 12433 0000adf4 50c20001 slli r2,r6,#0x1 12434 0000adf8 0062082a slt r1,r3,r2 12435 0000adfc 10200070 beqz r1,L59_LF9 12436 0000ae00 54000000 nop; not filled. 12437 0000ae04 200503e8 addi r5,r0,#1000 12438 0000ae08 00022020 add r4,r0,r2 12439 0000ae0c L61_LF9: 12440 0000ae0c 00600035 movi2fp f0,r3 12441 0000ae10 00a00835 movi2fp f1,r5 12442 0000ae14 0401000f div f0,f0,f1 12443 0000ae18 00001034 movfp2i r2,f0 12444 0000ae1c 50410005 slli r1,r2,#0x5 12445 0000ae20 00220822 sub r1,r1,r2 12446 0000ae24 50210002 slli r1,r1,#0x2 12447 0000ae28 00220820 add r1,r1,r2 12448 0000ae2c 50210003 slli r1,r1,#0x3 12449 0000ae30 00610829 sne r1,r3,r1 12450 0000ae34 14200028 bnez r1,L62_LF9 12451 0000ae38 54000000 nop; not filled. 12452 0000ae3c 23bdfff0 addi r29,r29,#-16 12453 0000ae40 3c080001 lhi r8,((LC1_LF9)>>16)&0xffff 12454 0000ae44 25083d0c addui r8,r8,(LC1_LF9)&0xffff 12455 0000ae48 afa80000 sw (r29),r8 12456 0000ae4c afa60004 sw 4(r29),r6 12457 0000ae50 afa30008 sw 8(r29),r3 12458 0000ae54 0c000278 jal _printf 12459 0000ae58 54000000 nop; not filled. 12460 0000ae5c 23bd0010 addi r29,r29,#16 12461 0000ae60 L62_LF9: 12462 0000ae60 20630001 addi r3,r3,#1 12463 0000ae64 0064082a slt r1,r3,r4 12464 0000ae68 1420ffa0 bnez r1,L61_LF9 12465 0000ae6c 54000000 nop; not filled. 12466 0000ae70 L59_LF9: 12467 0000ae70 23bdfff8 addi r29,r29,#-8 12468 0000ae74 50e10002 slli r1,r7,#0x2 12469 0000ae78 00270820 add r1,r1,r7 12470 0000ae7c 50210002 slli r1,r1,#0x2 12471 0000ae80 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12472 0000ae84 25083da4 addui r8,r8,(_mysems_LF9)&0xffff 12473 0000ae88 00280820 add r1,r1,r8 12474 0000ae8c afa10000 sw (r29),r1 12475 0000ae90 0fffde54 jal _SemSignal 12476 0000ae94 54000000 nop; not filled. 12477 0000ae98 23bd0008 addi r29,r29,#8 12478 0000ae9c 8fa20000 lw r2,0(r29) 12479 0000aea0 8fa30004 lw r3,4(r29) 12480 0000aea4 8fa40008 lw r4,8(r29) 12481 0000aea8 8fa5000c lw r5,12(r29) 12482 0000aeac 8fa60010 lw r6,16(r29) 12483 0000aeb0 8fa70014 lw r7,20(r29) 12484 0000aeb4 8fa80018 lw r8,24(r29) 12485 0000aeb8 8fdffff8 lw r31,-8(r30) 12486 0000aebc 001ee820 add r29,r0,r30 12487 0000aec0 8fdefffc lw r30,-4(r30) 12488 0000aec4 4be00000 jr r31 12489 0000aec8 54000000 nop 12490 0000aecc .endproc _doSomething_LF9 12491 0000aecc .data 12492 00013d30 .align 2 12493 00013d30 LC2_LF9: 12494 00013d30 63686173 .ascii "chasetail\000" 12494 00013d34 65746169 12494 00013d38 6c00 12495 00013d3a .align 2 12496 00013d3c LC3_LF9: 12497 00013d3c 43686173 .ascii "Chasing tail %d.\n\000" 12497 00013d40 696e6720 12497 00013d44 7461696c 12497 00013d48 2025642e 12497 00013d4c 0a00 12498 00013d4e .align 2 12499 00013d50 LC4_LF9: 12500 00013d50 4f70656e .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" 12500 00013d54 206f6620 12500 00013d58 2825732c 12500 00013d5c 30782578 12500 00013d60 29207265 12500 00013d64 7475726e 12500 00013d68 73203078 12500 00013d6c 25782e0a 12500 00013d70 00 12501 00013d71 .align 2 12502 00013d74 LC5_LF9: 12503 00013d74 43686173 .ascii "ChaseTail\000" 12503 00013d78 65546169 12503 00013d7c 6c00 12504 00013d7e .text 12505 0000aecc .align 2 12506 0000aecc .proc _chaseTail_LF9 12507 0000aecc _chaseTail_LF9: 12508 ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. 12509 0000aecc afbefffc sw -4(r29),r30; push fp 12510 0000aed0 001df020 add r30,r0,r29; fp = sp 12511 0000aed4 afbffff8 sw -8(r29),r31; push ret addr 12512 0000aed8 2fbd0018 subui r29,r29,#24; alloc local storage 12513 0000aedc afa20000 sw 0(r29),r2 12514 0000aee0 afa30004 sw 4(r29),r3 12515 0000aee4 afa40008 sw 8(r29),r4 12516 0000aee8 afa5000c sw 12(r29),r5 12517 0000aeec 8fc40000 lw r4,(r30) 12518 0000aef0 3c030001 lhi r3,((LC2_LF9)>>16)&0xffff 12519 0000aef4 24633d30 addui r3,r3,(LC2_LF9)&0xffff 12520 0000aef8 23bdfff8 addi r29,r29,#-8 12521 0000aefc 3c050001 lhi r5,((LC3_LF9)>>16)&0xffff 12522 0000af00 24a53d3c addui r5,r5,(LC3_LF9)&0xffff 12523 0000af04 afa50000 sw (r29),r5 12524 0000af08 afa40004 sw 4(r29),r4 12525 0000af0c 0c0001c0 jal _printf 12526 0000af10 54000000 nop; not filled. 12527 0000af14 afa30000 sw (r29),r3 12528 0000af18 20822000 addi r2,r4,#8192 12529 0000af1c afa20004 sw 4(r29),r2 12530 0000af20 0c000158 jal _Open 12531 0000af24 54000000 nop; not filled. 12532 0000af28 23bdfff8 addi r29,r29,#-8 12533 0000af2c 3c050001 lhi r5,((LC4_LF9)>>16)&0xffff 12534 0000af30 24a53d50 addui r5,r5,(LC4_LF9)&0xffff 12535 0000af34 afa50000 sw (r29),r5 12536 0000af38 afa30004 sw 4(r29),r3 12537 0000af3c afa20008 sw 8(r29),r2 12538 0000af40 afa1000c sw 12(r29),r1 12539 0000af44 0c000188 jal _printf 12540 0000af48 54000000 nop; not filled. 12541 0000af4c 23bd0010 addi r29,r29,#16 12542 0000af50 70810027 slei r1,r4,#39 12543 0000af54 1020003c beqz r1,L67_LF9 12544 0000af58 54000000 nop; not filled. 12545 0000af5c 23bdfff0 addi r29,r29,#-16 12546 0000af60 3c050000 lhi r5,((_chaseTail_LF9)>>16)&0xffff 12547 0000af64 24a5aecc addui r5,r5,(_chaseTail_LF9)&0xffff 12548 0000af68 afa50000 sw (r29),r5 12549 0000af6c 20810001 addi r1,r4,#1 12550 0000af70 afa10004 sw 4(r29),r1 12551 0000af74 3c050001 lhi r5,((LC5_LF9)>>16)&0xffff 12552 0000af78 24a53d74 addui r5,r5,(LC5_LF9)&0xffff 12553 0000af7c afa50008 sw 8(r29),r5 12554 0000af80 20050000 addi r5,r0,#0 12555 0000af84 afa5000c sw 12(r29),r5 12556 0000af88 0fffa640 jal _ProcessFork 12557 0000af8c 54000000 nop; not filled. 12558 0000af90 23bd0010 addi r29,r29,#16 12559 0000af94 L67_LF9: 12560 0000af94 8fa20000 lw r2,0(r29) 12561 0000af98 8fa30004 lw r3,4(r29) 12562 0000af9c 8fa40008 lw r4,8(r29) 12563 0000afa0 8fa5000c lw r5,12(r29) 12564 0000afa4 8fdffff8 lw r31,-8(r30) 12565 0000afa8 001ee820 add r29,r0,r30 12566 0000afac 8fdefffc lw r30,-4(r30) 12567 0000afb0 4be00000 jr r31 12568 0000afb4 54000000 nop 12569 0000afb8 .endproc _chaseTail_LF9 12570 0000afb8 .data 12571 00013d7e .align 2 12572 00013d80 LC6_LF9: 12573 00013d80 25642000 .ascii "%d \000" 12574 00013d84 .align 2 12575 00013d84 LC7_LF9: 12576 00013d84 52616e64 .ascii "Random number %02i is 0x%08x.\n\000" 12576 00013d88 6f6d206e 12576 00013d8c 756d6265 12576 00013d90 72202530 12576 00013d94 32692069 12576 00013d98 73203078 12576 00013d9c 25303878 12576 00013da0 2e0a00 12577 00013da3 .text 12578 0000afb8 .align 2 12579 0000afb8 .proc _SysprocCreateProcesses 12580 0000afb8 .global _SysprocCreateProcesses 12581 0000afb8 _SysprocCreateProcesses: 12582 ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. 12583 0000afb8 afbefffc sw -4(r29),r30; push fp 12584 0000afbc 001df020 add r30,r0,r29; fp = sp 12585 0000afc0 afbffff8 sw -8(r29),r31; push ret addr 12586 0000afc4 2fbd0018 subui r29,r29,#24; alloc local storage 12587 0000afc8 afa20000 sw 0(r29),r2 12588 0000afcc afa30004 sw 4(r29),r3 12589 0000afd0 afa40008 sw 8(r29),r4 12590 0000afd4 3c020001 lhi r2,((_mysems_LF9)>>16)&0xffff 12591 0000afd8 24423da4 addui r2,r2,(_mysems_LF9)&0xffff 12592 0000afdc 204300b4 addi r3,r2,#180 12593 0000afe0 L90_LF9: 12594 0000afe0 23bdfff8 addi r29,r29,#-8 12595 0000afe4 afa20000 sw (r29),r2 12596 0000afe8 20040001 addi r4,r0,#1 12597 0000afec afa40004 sw 4(r29),r4 12598 0000aff0 0fffd888 jal _SemInit 12599 0000aff4 54000000 nop; not filled. 12600 0000aff8 23bd0008 addi r29,r29,#8 12601 0000affc 20420014 addi r2,r2,#20 12602 0000b000 0043082c sle r1,r2,r3 12603 0000b004 1420ffd8 bnez r1,L90_LF9 12604 0000b008 54000000 nop; not filled. 12605 0000b00c 8fa20000 lw r2,0(r29) 12606 0000b010 8fa30004 lw r3,4(r29) 12607 0000b014 8fa40008 lw r4,8(r29) 12608 0000b018 8fdffff8 lw r31,-8(r30) 12609 0000b01c 001ee820 add r29,r0,r30 12610 0000b020 8fdefffc lw r30,-4(r30) 12611 0000b024 4be00000 jr r31 12612 0000b028 54000000 nop 12613 0000b02c .endproc _SysprocCreateProcesses 12614 0000b02c .data 12615 00013da3 .align 2 12616 00013da4 _mysems_LF9: 12617 00013da4 .space 200 12618 ;;; This file just includes a single variable that contains the last address 12619 ;;; in the operating system. The rest of memory is available for use by 12620 ;;; processes. 12622 00013e6c .align 2 12623 00013e6c .global _lastosaddress 12624 00013e6c _lastosaddress: 12625 00013e6c 00013e74 .word _lastosaddress+8 12626 ;;; Ethan L. Miller, 1999. Released to the public domain 12627 ;;; 12628 ;;; Most of the traps are called in files from libtraps. 12630 00013e70 .text 12631 0000b02c .align 2 12632 0000b02c .proc _exit 12633 0000b02c .global _exit 12634 0000b02c _exit: 12635 0000b02c 44000300 trap #0x300 12636 0000b030 4be00000 jr r31 12637 0000b034 54000000 nop 12638 0000b038 .endproc _exit 12640 ; for the benefit of gcc. 12641 0000b038 .proc ___main 12642 0000b038 .global ___main 12643 0000b038 ___main: 12644 0000b038 4be00000 jr r31 12645 0000b03c 54000000 nop 12646 0000b040 .endproc ___main 12647 ;;; 12648 ;;; Stub functions for DLX traps. 12649 ;;; 12650 ;;; Ethan L. Miller, 1999. Released to the public domain. 12651 ;;; 12652 ;;; There are two sets of traps here. The traps such as Open and Close 12653 ;;; (note the capital letters) are for use by user programs. The traps 12654 ;;; with names such as open and close (lower case) are for use by the OS. 12655 ;;; 12658 0000b040 .align 2 12659 0000b040 .proc _open 12660 0000b040 .global _open 12661 0000b040 _open: 12662 0000b040 44002013 trap #0x2013 12663 0000b044 4be00000 jr r31 12664 0000b048 54000000 nop 12665 0000b04c .endproc _open 12667 0000b04c .proc _close 12668 0000b04c .global _close 12669 0000b04c _close: 12670 0000b04c 44002014 trap #0x2014 12671 0000b050 4be00000 jr r31 12672 0000b054 54000000 nop 12673 0000b058 .endproc _close 12675 0000b058 .proc _read 12676 0000b058 .global _read 12677 0000b058 _read: 12678 0000b058 44002010 trap #0x2010 12679 0000b05c 4be00000 jr r31 12680 0000b060 54000000 nop 12681 0000b064 .endproc _read 12683 0000b064 .proc _write 12684 0000b064 .global _write 12685 0000b064 _write: 12686 0000b064 44002011 trap #0x2011 12687 0000b068 4be00000 jr r31 12688 0000b06c 54000000 nop 12689 0000b070 .endproc _write 12691 0000b070 .proc _lseek 12692 0000b070 .global _lseek 12693 0000b070 _lseek: 12694 0000b070 44002012 trap #0x2012 12695 0000b074 4be00000 jr r31 12696 0000b078 54000000 nop 12697 0000b07c .endproc _lseek 12699 ;;; The following are the traps to be used by user-level programs 12700 ;;; 12702 0000b07c .align 2 12703 0000b07c .proc _Open 12704 0000b07c .global _Open 12705 0000b07c _Open: 12706 0000b07c 44000213 trap #0x213 12707 0000b080 4be00000 jr r31 12708 0000b084 54000000 nop 12709 0000b088 .endproc _Open 12711 0000b088 .proc _Close 12712 0000b088 .global _Close 12713 0000b088 _Close: 12714 0000b088 44000214 trap #0x214 12715 0000b08c 4be00000 jr r31 12716 0000b090 54000000 nop 12717 0000b094 .endproc _Close 12719 0000b094 .proc _Read 12720 0000b094 .global _Read 12721 0000b094 _Read: 12722 0000b094 44000210 trap #0x210 12723 0000b098 4be00000 jr r31 12724 0000b09c 54000000 nop 12725 0000b0a0 .endproc _Read 12727 0000b0a0 .proc _Write 12728 0000b0a0 .global _Write 12729 0000b0a0 _Write: 12730 0000b0a0 44000211 trap #0x211 12731 0000b0a4 4be00000 jr r31 12732 0000b0a8 54000000 nop 12733 0000b0ac .endproc _Write 12735 0000b0ac .proc _Lseek 12736 0000b0ac .global _Lseek 12737 0000b0ac _Lseek: 12738 0000b0ac 44000212 trap #0x212 12739 0000b0b0 4be00000 jr r31 12740 0000b0b4 54000000 nop 12741 0000b0b8 .endproc _Lseek 12743 ;;; 12744 ;;; Stub functions for DLX traps. 12745 ;;; 12746 ;;; Ethan L. Miller, 1999. Released to the public domain. 12747 ;;; 12748 ;;; There are two exit traps. The first, _exitsim, actually exits the 12749 ;;; simulator. The second, _exit, simply calls a regular trap in the 12750 ;;; DLX simulator, and would be suitable for a user program that wants 12751 ;;; to signal the OS that it's exiting. 12752 ;;; 12753 ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and 12754 ;;; programs run without an OS - should call exitsim() rather than just 12755 ;;; falling through to exit. 12756 ;;; 12759 0000b0b8 .align 2 12760 0000b0b8 .proc _exitsim 12761 0000b0b8 .global _exitsim 12762 0000b0b8 _exitsim: 12763 0000b0b8 44002f00 trap #0x2f00 12764 0000b0bc 4be00000 jr r31 12765 0000b0c0 54000000 nop 12766 0000b0c4 .endproc _exitsim 12768 0000b0c4 .proc _exit 12769 0000b0c4 .global _exit 12770 0000b0c4 _exit: 12771 0000b0c4 44000300 trap #0x300 12772 0000b0c8 4be00000 jr r31 12773 0000b0cc 54000000 nop 12774 0000b0d0 .endproc _exit 12776 ; 12777 ; Stub functions for DLX traps. 12778 ; 12779 ; Aaron Sawdey 1996; released to the Public Domain. 12780 ; 12782 0000b0d0 .proc _printf 12783 0000b0d0 .global _printf 12784 0000b0d0 _printf: 12785 0000b0d0 44002001 trap #0x2001 12786 0000b0d4 4be00000 jr r31 12787 0000b0d8 54000000 nop 12788 0000b0dc .endproc _printf 12790 0000b0dc .text 12791 0000b0dc .global _etext 12792 0000b0dc _etext: 12793 0000b0dc .align 3 12794 0000b0e0 .data 12795 00013e70 .global _edata 12796 00013e70 _edata:

option1/lab4_2/src/dlx.h

// // Definitions of flags and other things defined by the DLX processor. // #ifndef _dlx_h_ #define _dlx_h_ #define DLX_STATUS_INTRMASK 0x0f // up to 16 interrupt levels #define DLX_STATUS_FPTRUE 0x20 // Set if last FP comparison was true #define DLX_STATUS_SYSMODE 0x40 // Set if CPU is in system mode #define DLX_STATUS_PAGE_TABLE 0x100 // Set -> use a page table #define DLX_STATUS_TLB 0x200 // Set -> use a software-loaded TLB #endif // _dlx_h_

option1/lab4_2/src/usertraps.o

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

option1/lab4_2/src/userprog2.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 26 ; Text size: 2880 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\nIn Userprog2, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 40000 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40008; alloc local storage jal ___main nop; not filled. addi r4,r0,#0 addi r2,r0,#1 lhi r5,#-1 addui r5,r5,#25536 addi r31,r30,#-8 addui r3,r31,#39996 L16_LF0: add r1,r31,r5 sw (r1),r2 addi r2,r2,#1 addi r31,r31,#2000 sle r1,r31,r3 bnez r1,L16_LF0 nop; not filled. lhi r3,#-1 addui r3,r3,#25536 addi r31,r30,#-8 addui r2,r31,#39996 L21_LF0: add r1,r31,r3 lw r1,(r1) add r4,r4,r1 addi r31,r31,#2000 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r6,((LC0_LF0)>>16)&0xffff addui r6,r6,(LC0_LF0)&0xffff sw (r29),r6 sw 4(r29),r4 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_2/src/res

Stack=0x1ffff0, pc starting at 0x1000 Hi Uday, How are you? Got 0 arguments. Available memory: 0x13310 -> 0x200000. Argument count is 0. Chasing tail 10. Got an open with parameters ('chasetail',0x200a) Open of (chasetail,0x200a) returns 0x1200a. Chasing tail 11. Got an open with parameters ('chasetail',0x200b) Open of (chasetail,0x200b) returns 0x1200b. Chasing tail 12. Got an open with parameters ('chasetail',0x200c) Open of (chasetail,0x200c) returns 0x1200c. Chasing tail 13. Got an open with parameters ('chasetail',0x200d) Open of (chasetail,0x200d) returns 0x1200d. Chasing tail 14. Got an open with parameters ('chasetail',0x200e) Open of (chasetail,0x200e) returns 0x1200e. Chasing tail 15. Got an open with parameters ('chasetail',0x200f) Open of (chasetail,0x200f) returns 0x1200f. Chasing tail 16. Got an open with parameters ('chasetail',0x2010) Open of (chasetail,0x2010) returns 0x12010. Chasing tail 17. Got an open with parameters ('chasetail',0x2011) Open of (chasetail,0x2011) returns 0x12011. Chasing tail 18. Got an open with parameters ('chasetail',0x2012) Open of (chasetail,0x2012) returns 0x12012. Chasing tail 19. Got an open with parameters ('chasetail',0x2013) Open of (chasetail,0x2013) returns 0x12013. Chasing tail 20. Got an open with parameters ('chasetail',0x2014) Open of (chasetail,0x2014) returns 0x12014. Chasing tail 21. Got an open with parameters ('chasetail',0x2015) Open of (chasetail,0x2015) returns 0x12015. Chasing tail 22. Got an open with parameters ('chasetail',0x2016) Open of (chasetail,0x2016) returns 0x12016. Chasing tail 23. Got an open with parameters ('chasetail',0x2017) Open of (chasetail,0x2017) returns 0x12017. Chasing tail 24. Got an open with parameters ('chasetail',0x2018) Open of (chasetail,0x2018) returns 0x12018. Chasing tail 25. Got an open with parameters ('chasetail',0x2019) Open of (chasetail,0x2019) returns 0x12019. Chasing tail 26. Got an open with parameters ('chasetail',0x201a) Open of (chasetail,0x201a) returns 0x1201a. Chasing tail 27. Got an open with parameters ('chasetail',0x201b) Open of (chasetail,0x201b) returns 0x1201b. Chasing tail 28. Got an open with parameters ('chasetail',0x201c) Open of (chasetail,0x201c) returns 0x1201c. Chasing tail 29. Got an open with parameters ('chasetail',0x201d) Open of (chasetail,0x201d) returns 0x1201d. Chasing tail 30. Got an open with parameters ('chasetail',0x201e) Open of (chasetail,0x201e) returns 0x1201e. Chasing tail 31. Got an open with parameters ('chasetail',0x201f) Open of (chasetail,0x201f) returns 0x1201f. Chasing tail 32. Got an open with parameters ('chasetail',0x2020) Open of (chasetail,0x2020) returns 0x12020. Chasing tail 33. Got an open with parameters ('chasetail',0x2021) Open of (chasetail,0x2021) returns 0x12021. Chasing tail 34. Got an open with parameters ('chasetail',0x2022) Open of (chasetail,0x2022) returns 0x12022. Chasing tail 35. Got an open with parameters ('chasetail',0x2023) Open of (chasetail,0x2023) returns 0x12023. Chasing tail 36. Got an open with parameters ('chasetail',0x2024) Open of (chasetail,0x2024) returns 0x12024. Chasing tail 37. Got an open with parameters ('chasetail',0x2025) Open of (chasetail,0x2025) returns 0x12025. Chasing tail 38. Got an open with parameters ('chasetail',0x2026) Open of (chasetail,0x2026) returns 0x12026. Chasing tail 39. Got an open with parameters ('chasetail',0x2027) Open of (chasetail,0x2027) returns 0x12027. 2 Chasing tail 40. Got an open with parameters ('chasetail',0x2028) Open of (chasetail,0x2028) returns 0x12028. 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 Got a control-C: exiting!

option1/lab4_2/src/userprog1.c

// This test case should generate 12 page faults and display output as Sum=66. main() { int i; char Sum=0; char * charPtr= (char *)0x0100000; for(i=0;i<12;i++) *(charPtr + 8196*i)=(char )i; for(i=0;i<12;i++) Sum+= *(charPtr + 8196 *i); Printf("In Userprog1, Sum : %d\n",Sum); }

option1/lab4_2/src/synch.working.s

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L38 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L38: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .data .align 2 LC0: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC1: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L49 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L48 nop ; not filled. L49: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r3 lw r6,12(r3) sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L48: lw r1,12(r3) addi r1,r1,#-1 sw 12(r3),r1 slti r1,r1,#0 beqz r1,L50 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r6,r0,#0 sw (r2),r6 sw 12(r2),r1 addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r6,((LC1)>>16)&0xffff addui r6,r6,(LC1)&0xffff sw (r29),r6 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L52: lw r1,4(r3) sw 8(r2),r3 sw 4(r2),r1 lw r6,(r1) sw (r2),r6 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 jal _ProcessSleep nop ; not filled. L50: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .data .align 2 LC2: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC3: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 sw 4(r29),r2 lw r4,12(r2) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L58: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L60 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L63 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L63: addi r4,r0,#0 sw (r3),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r29,r29,#-8 lw r4,12(r3) sw (r29),r4 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L60: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _LockInit .global _LockInit _LockInit: ; Function 'LockInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. addi r3,r0,#1 sw 12(r2),r3 addi r29,r29,#8 addi r1,r2,#16 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 28(r2),r3 addi r29,r29,#8 sw 32(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockInit .align 2 .proc _LockAcquire .global _LockAcquire _LockAcquire: ; Function 'LockAcquire'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lw r1,(r30) sw (r29),r1 jal _SemWait nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockAcquire .align 2 .proc _LockRelease .global _LockRelease _LockRelease: ; Function 'LockRelease'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,(r30) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L78 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L80 nop ; not filled. L78: addi r29,r29,#-8 sw (r29),r31 L80: jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockRelease .align 2 .proc _CondInit .global _CondInit _CondInit: ; Function 'CondInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) sw (r2),r3 addi r1,r2,#4 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 16(r2),r3 addi r29,r29,#8 sw 20(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondInit .align 2 .proc _CondWait .global _CondWait _CondWait: ; Function 'CondWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r2,(r30) lw r1,20(r2) addi r1,r1,#1 sw 20(r2),r1 lw r31,(r2) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L89 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L91 nop ; not filled. L89: addi r29,r29,#-8 sw (r29),r31 L91: jal _SemSignal nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 addi r1,r2,#4 sw (r29),r1 jal _SemWait nop ; not filled. lw r1,(r2) addi r1,r1,#16 sw (r29),r1 jal _SemWait nop ; not filled. lw r2,(r2) lw r1,32(r2) addi r1,r1,#-1 sw 32(r2),r1 addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondWait .align 2 .proc _CondSignal .global _CondSignal _CondSignal: ; Function 'CondSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) lw r2,20(r31) sgti r1,r2,#0 beqz r1,L95 nop ; not filled. addi r1,r2,#-1 sw 20(r31),r1 lw r2,(r31) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 addi r1,r31,#4 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 L95: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondSignal .align 2 .proc _CondBroadcast .global _CondBroadcast _CondBroadcast: ; Function 'CondBroadcast'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r5,20(r4) addi r3,r0,#0 slt r1,r3,r5 beqz r1,L106 nop ; not filled. addi r6,r4,#4 L108: lw r2,20(r4) sgti r1,r2,#0 beqz r1,L107 nop ; not filled. addi r1,r2,#-1 sw 20(r4),r1 lw r2,(r4) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 sw (r29),r6 jal _SemSignal nop ; not filled. addi r29,r29,#8 L107: addi r3,r3,#1 slt r1,r3,r5 bnez r1,L108 nop ; not filled. L106: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondBroadcast

option1/lab4_2/src/synch.c

// // synch.c // // Routines for synchronization // // #include "dlxos.h" #include "process.h" #include "synch.h" static Sem sems[MAX_SEMS]; //All semaphores in the system extern struct PCB *currentPCB; //---------------------------------------------------------------------- // SynchModuleInit // // Initializes the synchronization primitives: the semaphores //---------------------------------------------------------------------- void SynchModuleInit() { int i; dbprintf ('p', "Entering SynchModuleInit\n"); for(i=0; i<MAX_SEMS; i++) sems[i].inuse = 0; dbprintf ('p', "Leaving SynchModuleInit\n"); } //--------------------------------------------------------------------- // // SemInit // // Initialize a semaphore to a particular value. This just means // initting the process queue and setting the counter. // //---------------------------------------------------------------------- void SemInit (Sem *sem, int count) { QueueInit (&sem->waiting); sem->count = count; } //---------------------------------------------------------------------- // SemCreate // // Grabs a Semaphore, initializes it and returns a handle to this // semaphore. All subsequent accesses to this semaphore should be made // through this handle //---------------------------------------------------------------------- sem_t SemCreate(int count) { sem_t sem; uint32 intrval; // grabbing a semaphore should be an atomic operation intrval = DisableIntrs(); for(sem=0; sem<MAX_SEMS; sem++) { if(sems[sem].inuse==0) { sems[sem].inuse = 1; break; } } RestoreIntrs(intrval); if(sem==MAX_SEMS) return INVALID_SEM; SemInit(&sems[sem], count); return sem; } � //---------------------------------------------------------------------- // // SemWait // // Wait on a semaphore. As described in Section 6.4 of _OSC_, // we decrement the counter and suspend the process if the // semaphore's value is less than 0. To ensure atomicity, // interrupts are disabled for the entire operation. Note that, // if the process is put to sleep, interrupts will be OFF when // it returns from sleep. Thus, we enable interrupts at the end of // the routine. // //---------------------------------------------------------------------- void SemWait (Sem *sem) { Link *l; int intrval; intrval = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrval); dbprintf ('s', "Proc 0x%x waiting on sem 0x%x, count=%d.\n", currentPCB, sem, sem->count); sem->count -= 1; if (sem->count < 0) { l = QueueAllocLink (); QueueLinkInit (l, (void *)currentPCB); dbprintf ('s', "Suspending current proc (0x%x).\n", currentPCB); QueueInsertLast (&sem->waiting, l); ProcessSleep (); } RestoreIntrs (intrval); } int SemHandleWait(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemWait(&sems[sem]); return 0; } return 1; } else { return 1; } } //---------------------------------------------------------------------- // // SemSignal // // Signal on a semaphore. Again, details are in Section 6.4 of // _OSC_. // //---------------------------------------------------------------------- void SemSignal (Sem *sem) { Link *l; int intrs; intrs = DisableIntrs (); dbprintf ('s', "Signalling on sem 0x%x, count=%d.\n", sem, sem->count); sem->count += 1; if (sem->count <= 0) { l = QueueFirst (&sem->waiting); QueueRemove (l); dbprintf ('s', "Waking up PCB 0x%x.\n", l->object); ProcessWakeup ((PCB *)(l->object)); QueueFreeLink (l); } RestoreIntrs (intrs); } int SemHandleSignal(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemSignal(&sems[sem]); return 0; } return 1; } else { return 1; } }

option1/lab4_2/src/dlxos.ps

option1/lab4_2/src/traps.h

// // dlxtraps.h // // Traps used by the DLX simulator. These traps have to be handled by the // operating system. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: traps.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _dlxtraps_h_ #define _dlxtraps_h_ #define TRAP_ILLEGALINST 0x1 // Illegal instruction #define TRAP_ADDRESS 0x2 // Bad address #define TRAP_ACCESS 0x3 // Attempted to access illegal memory #define TRAP_OVERFLOW 0x4 // Math overflow #define TRAP_DIV0 0x5 // Divide by 0 #define TRAP_PRIVILEGE 0x6 // Instruction must be executed as sys #define TRAP_FORMAT 0x7 // Instruction is malformed #define TRAP_PAGEFAULT 0x20 #define TRAP_TLBFAULT 0x30 #define TRAP_TIMER 0x40 // timer interrupt #define TRAP_KBD 0x48 // keyboard interrupt // This bit is set in CAUSE if the interrupt was a trap instruction #define TRAP_TRAP_INSTR 0x08000000 // The following traps are all defined in the basic traps library. To // call TRAP_READ, use a Read() call from a user-level program. This applies // to every trap except EXIT, which is called via exit() [no uppercase]. #define TRAP_PRINTF 0x201 #define TRAP_READ 0x210 #define TRAP_WRITE 0x211 #define TRAP_LSEEK 0x212 #define TRAP_SEEK TRAP_LSEEK // SEEK and LSEEK are synonyms #define TRAP_OPEN 0x213 #define TRAP_CLOSE 0x214 #define TRAP_DELETE 0x580 #define TRAP_EXIT 0x300 // Following are user-defined traps. Traps should be in the range // 0x400 - 0xfff #define TRAP_CONTEXT_SWITCH 0x400 //#define TRAP_SEM_WAIT 0x401 //#define TRAP_SEM_SIGNAL 0x402 #define TRAP_PROCESS_SLEEP 0x410 #define TRAP_PROCESS_WAKEUP 0x420 #define TRAP_PROCESS_FORK 0x430 #define TRAP_PROCESS_GETPID 0x431 #define TRAP_PROCESS_CREATE 0x432 #define TRAP_SEM_CREATE 0x450 #define TRAP_SEM_WAIT 0x451 #define TRAP_SEM_SIGNAL 0x452 // The following are special I/O addresses for DLX. #define DLX_TIMER_ADDRESS 0xfff00010 #define DLX_KBD_PUTCHAR 0xfff00100 #define DLX_KBD_NCHARSOUT 0xfff00120 #define DLX_KBD_GETCHAR 0xfff00180 #define DLX_KBD_NCHARSIN 0xfff001a0 #define DLX_KBD_INTR 0xfff001c0 #define TRAP_STACK_SIZE 0x800 // interrupt stack is 2K words #endif /* _dlxtraps_h_ */

option1/lab4_2/execs/os.dlx.obj

start:00001000 00013e70 00001000 0000a0e0 0000c000 00007e70 00001000:3c010000 :24211010 :00204030 :08005e34 :0060f831 :33ff0040 :17e0001c :3c1f0001 :27ff0e40 :8fff0000 :8fff0004 :affdff48 :37fd0000 :10000004 :afbdff48 :2fbd0154 :afa1002c :afa20030 :afa30034 :afa40038 :afa5003c :afa60040 :afa70044 :afa80048 :afa9004c :afaa0050 :afab0054 :afac0058 :afad005c :afae0060 :afaf0064 :afb00068 :afb1006c :afb20070 :afb30074 :afb40078 :afb5007c :afb60080 :afb70084 :afb80088 :afb9008c :afba0090 :afbb0094 :afbc0098 :afbe00a0 :00401831 :afa300a4 :bfa000a8 :bfa200b0 :bfa400b8 :bfa600c0 :bfa800c8 :bfaa00d0 :bfac00d8 :bfae00e0 :bfb000e8 :bfb200f0 :bfb400f8 :bfb60100 :bfb80108 :bfba0110 :bfbc0118 :bfbe0120 :00802031 :afa40128 :00602831 :afa5012c :00c03031 :afa60130 :01201831 :afa30134 :01801831 :afa30138 :01a01831 :afa3013c :01c01831 :afa30140 :afa60000 :afa40004 :afa50008 :8fa1009c :afa1000c :3c010001 :24210e40 :8c210000 :8c220000 :afa20028 :ac3d0000 :0800891c :54000000 :0c009758 :3c010001 :24210e40 :8c210000 :8c3d0000 :8fa20028 :ac220000 :8fa30128 :00602030 :8fa3012c :00601830 :8fa30130 :00603030 :8fa30134 :00604830 :8fa30138 :00606030 :8fa3013c :00606830 :8fa30140 :00607030 :9fa000a8 :9fa200b0 :9fa400b8 :9fa600c0 :9fa800c8 :9faa00d0 :9fac00d8 :9fae00e0 :9fb000e8 :9fb200f0 :9fb400f8 :9fb60100 :9fb80108 :9fba0110 :9fbc0118 :9fbe0120 :8fa20030 :8fa30034 :8fa40038 :8fa5003c :8fa60040 :8fa70044 :8fa80048 :8fa9004c :8faa0050 :8fab0054 :8fac0058 :8fad005c :8fae0060 :8faf0064 :8fb00068 :8fb1006c :8fb20070 :8fb30074 :8fb40078 :8fb5007c :8fb60080 :8fb70084 :8fb80088 :8fb9008c :8fba0090 :8fbb0094 :8fbc0098 :8fbe00a0 :8fbf00a4 :27bd0154 :ac3d0004 :37a10000 :8c3dff48 :8c21fed8 :40000000 :2fbd0010 :afa2000c :8fa20010 :3042000f :00a00831 :afa10008 :3021fff0 :00410825 :00202830 :8fa10008 :3021000f :8fa2000c :27bd0010 :4be00000 :54000000 :00a00831 :3021000f :4be00000 :54000000 :44000410 :54000000 :4be00000 :54000000 :44002020 :4be00000 :54000000 :44002021 :4be00000 :54000000 0000c000:3a206669 :6c657379 :732e632c :7620312e :31203230 :30302f30 :392f3230 :2030313a :35303a31 :3920656c :6d204578 :7020656c :6d203030 :30 000012fc:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0ffffe94 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0ffffe50 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0ffffe0c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000c038:41747465 :706d7469 :6e672074 :6f206f70 :656e2025 :73206d6f :64653d25 :642e0a00 0000c058:646c783a :00 0000c060:46696c65 :20257320 :6f70656e :696e6720 :696e2066 :696c6520 :73797374 :656d2025 :642e0a00 0000c084:4f70656e :65642025 :7320696e :20465320 :25642c20 :6d6f6465 :3d256420 :736c6f74 :3d25642e :0a00 00001798:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc40000 :8fc50004 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080066 :afa80004 :0c00264c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c002624 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080000 :2508c038 :afa80000 :afa40004 :afa50008 :0c009890 :54000000 :23bd0010 :30a50003 :64a10000 :10200044 :54000000 :20030000 :3c060000 :24c6c110 :00061020 :8c410004 :64210000 :10200018 :54000000 :2042010c :20630001 :7061001f :1420ffe0 :54000000 :6c61001f :10200010 :54000000 :2001ffff :08000224 :54000000 :50610004 :00230820 :50210002 :00230822 :50210002 :00261020 :ac450004 :23bdfff0 :afa40000 :3c010000 :2421c058 :afa10004 :20080004 :afa80008 :0c002210 :54000000 :23bd0010 :64210000 :14200014 :54000000 :20840004 :20080001 :08000008 :54000000 :20080000 :ac480000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080066 :afa80004 :0c00250c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0024e4 :54000000 :23bd0008 :64210000 :1020004c :54000000 :23bdfff0 :3c080000 :2508c060 :afa80000 :afa40004 :50610004 :00230820 :50210002 :00230822 :50210002 :3c080000 :2508c110 :00280820 :8c210000 :afa10008 :0c00972c :54000000 :23bd0010 :23bdfff0 :50610004 :00230820 :50210002 :00230822 :50260002 :3c080000 :2508c110 :00c83820 :8ce20000 :50410001 :00220820 :50210003 :3c080000 :2508c0e0 :00280820 :afa30000 :afa40004 :afa50008 :8c210000 :4c200000 :54000000 :00011020 :23bd0010 :68410000 :10200024 :54000000 :3c080000 :2508c110 :00c80820 :20080000 :ac280004 :00020820 :08000090 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080066 :afa80004 :0c0023e0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0023b8 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdffe8 :3c080000 :2508c084 :afa80000 :afa40004 :8ce70000 :afa70008 :afa5000c :afa30010 :0c009618 :54000000 :23bd0018 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c040000 :2484c110 :00240820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200074 :54000000 :23bdfff8 :53e10004 :003f0820 :50210002 :003f0822 :50230002 :3c040000 :2484c110 :00640820 :8c220000 :50410001 :00220820 :50210003 :3c040000 :2484c0e0 :00240820 :afbf0000 :8c210010 :4c200000 :54000000 :23bd0008 :3c040000 :2484c110 :00641020 :20040000 :ac440004 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463c0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210004 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463c0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210008 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463c110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463c0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c21000c :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff0 :afa20000 :3c010000 :2421c058 :afa10004 :20030004 :afa30008 :0c001bc4 :54000000 :23bd0010 :64210000 :1420001c :54000000 :20420004 :23bdfff8 :3c010000 :2421c10c :08000010 :54000000 :23bdfff8 :3c010000 :2421c0f4 :afa20000 :8c210000 :4c200000 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000c0ac:41747465 :6d707469 :6e672074 :6f206f70 :656e2066 :696c6520 :25732069 :6e746f20 :64657363 :2025642c :206d6f64 :65202564 :2e0a00 00001f94:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc30004 :8fc50008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20060066 :afa60004 :0c001e54 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c001e2c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6c0ac :afa60000 :afa30004 :afa40008 :afa5000c :0c009094 :54000000 :23bd0010 :23bdfff8 :afa30000 :afa50004 :0c008fec :54000000 :00011820 :50810004 :00240820 :50210002 :00240822 :50210002 :3c060000 :24c6c110 :00260820 :ac230108 :23bd0008 :68620000 :00030820 :14400008 :54000000 :20010001 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5c110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008f34 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5c110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008eb0 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5c110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008e2c :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff8 :50410004 :00220820 :50210002 :00220822 :50210002 :3c030000 :2463c110 :00230820 :8c210108 :afa10000 :0c008d90 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :2001ffff :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffc110 :003f0820 :201f0000 :ac3f0108 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffc110 :003f0820 :8c210108 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :3c1f0000 :27ffc110 :23e22074 :20030000 :afe30004 :23ff010c :03e2082c :1420ffec :54000000 :3c010000 :2421c0e0 :3c030000 :24631f94 :ac230000 :3c030000 :24632270 :ac230010 :3c030000 :246320c0 :ac230004 :3c030000 :24632150 :ac230008 :3c030000 :246321e0 :ac23000c :3c030000 :246322e0 :ac230014 :3c030000 :24632380 :ac230018 :3c030000 :24632430 :ac230028 :3c030000 :24632330 :ac23001c :3c030000 :24632358 :ac230020 :3c030000 :246323dc :ac230024 :3c030000 :24632458 :ac23002c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e290:3a206d65 :6d6f7279 :2e632c76 :20312e31 :20323030 :302f3039 :2f323020 :30313a35 :303a3139 :20656c6d :20457870 :20656c6d :20303030 00002570:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffec20 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffebdc :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffeb98 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e2c4:ffffffff 00002a0c:afbefffc :001df020 :afbffff8 :2fbd0008 :3c01ffff :24210000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e2c8:53657420 :66726565 :6d617020 :656e7472 :79202564 :20746f20 :30782578 :2e0a00 00002a3c:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fdf0004 :00031020 :74610000 :14200008 :54000000 :2062001f :5c450005 :50a10005 :00611822 :20010001 :00231004 :3c010000 :2421e2c4 :8c210000 :00411026 :50a10002 :3c060000 :24c6e438 :00262020 :8c810000 :00221024 :03e30804 :00410825 :ac810000 :23bdfff8 :3c020001 :24420d78 :afa20000 :2006006d :afa60004 :0c001354 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c00132c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6e2c8 :afa60000 :afa50004 :8c840000 :afa40008 :0c008594 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e2e8:4d617020 :68617320 :25642065 :6e747269 :65732c20 :6d656d6f :72792073 :697a6520 :69732030 :7825782e :0a00 0000e314:46726565 :20706167 :65732073 :74617274 :20776974 :68207061 :67652023 :20307825 :782e0a00 0000e338:496e6974 :69616c69 :7a656420 :25642066 :72656520 :70616765 :732e0a00 00002b6c:afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :3c01ffff :24210000 :8c220000 :74410000 :14200008 :54000000 :2442ffff :5c480010 :3c030000 :2463e42c :3c010001 :24213e6c :8c210000 :2422fffc :74410000 :14200008 :54000000 :2442ffff :5c410010 :ac610000 :3c030000 :2463e430 :2102001f :74410000 :14200008 :54000000 :2102003e :5c410005 :ac610000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200b006d :afab0004 :0c001200 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c0011d8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256be2e8 :afab0000 :8c610000 :afa10004 :afa80008 :0c008440 :54000000 :23bd0010 :23bdfff8 :3c020001 :24420d78 :afa20000 :200b006d :afab0004 :0c001180 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c001158 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256be314 :afab0000 :3c010000 :2421e42c :8c210000 :afa10004 :0c0083bc :54000000 :23bd0008 :20020000 :3c040000 :2484e430 :8c810000 :0041082a :1020002c :54000000 :3c030000 :2463e438 :200b0000 :ac6b0000 :20630004 :20420001 :8c810000 :0041082a :1420ffe4 :54000000 :3c020000 :2442e434 :200b0000 :ac4b0000 :3c010000 :2421e42c :8c240000 :0088082a :10200104 :54000000 :00023820 :200a0001 :3c090000 :2529e2c4 :8ce10000 :20210001 :ace10000 :00041020 :74810000 :14200008 :54000000 :2082001f :5c460005 :50c10005 :00810822 :01411804 :8d210000 :00611026 :50c10002 :3c0b0000 :256be438 :002b2820 :8ca10000 :00220824 :00230825 :aca10000 :23bdfff8 :3c0b0001 :256b0d78 :afab0000 :200b006d :afab0004 :0c001028 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c0b0001 :256b0d78 :afab0000 :200b002b :afab0004 :0c000ff8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256be2c8 :afab0000 :afa60004 :8ca50000 :afa50008 :0c008260 :54000000 :23bd0010 :20840001 :0088082a :1420ff14 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200b006d :afab0004 :0c000f90 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c000f68 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256be338 :afab0000 :3c010000 :2421e434 :8c210000 :afa10004 :0c0081cc :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e354:00000000 :4552524f :52204154 :20544849 :5320504f :494e540a :00 0000e370:416c6c6f :63617469 :6e67206d :656d6f72 :792c2073 :74617274 :696e6720 :77697468 :20706167 :65202564 :0a00 0000e39c:416c6c6f :63617465 :64206d65 :6d6f7279 :2c206672 :6f6d206d :61702025 :642c2070 :61676520 :25642c20 :6d61703d :30782578 :2e0a00 00002f48:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :3c010000 :2421e434 :8c210000 :64210000 :1420002c :54000000 :23bdfff8 :3c070000 :24e7e358 :afa70000 :0c008134 :54000000 :20010000 :23bd0008 :08000238 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :2007006d :afa70004 :0c000e68 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000e40 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c070000 :24e7e370 :afa70000 :3c010000 :2421e354 :8c210000 :afa10004 :0c0080a4 :54000000 :23bd0008 :3c020000 :2442e354 :8c410000 :3c040000 :2484e438 :50210002 :00240820 :8c210000 :64210000 :1420004c :54000000 :3c010000 :2421e430 :8c230000 :8c410000 :20210001 :ac410000 :0023082d :1020000c :54000000 :20070000 :ac470000 :8c410000 :50210002 :00240820 :8c210000 :64210000 :1020ffc8 :54000000 :3c010000 :2421e354 :8c210000 :50210002 :3c070000 :24e7e438 :00270820 :8c230000 :201f0000 :30610001 :14200020 :54000000 :20020001 :23ff0001 :005f0804 :00610824 :64210000 :1020ffec :54000000 :20010001 :003f1004 :3c010000 :2421e2c4 :8c210000 :00412026 :3c050000 :24a5e354 :8ca30000 :3c060000 :24c6e438 :50610002 :00261020 :8c410000 :00240824 :ac410000 :50610005 :003f1820 :23bdfff8 :3c020001 :24420d78 :afa20000 :2007006d :afa70004 :0c000cdc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000cb4 :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070000 :24e7e39c :afa70000 :8ca10000 :afa10004 :afa30008 :50210002 :00260820 :8c210000 :afa1000c :0c007f0c :54000000 :23bd0010 :3c010000 :2421e434 :8c220000 :2042ffff :ac220000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e3d0:46726565 :64207061 :67652030 :7825782c :20256420 :72656d61 :696e696e :672e0a00 00003210:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc60000 :20030001 :00061020 :74c10000 :14200008 :54000000 :20c2001f :5c450005 :50a10005 :00c10822 :00611804 :3c010000 :2421e2c4 :8c210000 :00611026 :50a10002 :3c070000 :24e7e438 :00272020 :8c810000 :00220824 :00230825 :ac810000 :23bdfff8 :3c070001 :24e70d78 :afa70000 :2007006d :afa70004 :0c000b84 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c070001 :24e70d78 :afa70000 :2007002b :afa70004 :0c000b54 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7e2c8 :afa70000 :afa50004 :8c840000 :afa40008 :0c007dbc :54000000 :23bd0010 :3c020000 :2442e434 :8c410000 :20210001 :ac410000 :23bdfff8 :3c030001 :24630d78 :afa30000 :2007006d :afa70004 :0c000ae8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0c000ac0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7e3d0 :afa70000 :afa60004 :8c420000 :afa20008 :0c007d28 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc10004 :583f0010 :3022ffff :8c610064 :03e1082b :14200024 :54000000 :53e10002 :00230820 :8c210060 :2004fff8 :00240824 :00220820 :08000008 :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50004 :8fc40008 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afa50000 :afbf0004 :afa20008 :0c000c9c :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50008 :8fc40004 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afbf0000 :afa50004 :afa20008 :0c000b74 :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :50210010 :34210001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :23bdfff8 :97c10000 :afa10000 :0ffffb14 :54000000 :23bd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :201ffff8 :003f0824 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000e3f0:00003404 :4f706572 :616e6420 :666f7220 :696e7374 :72756374 :696f6e20 :25303878 :20697320 :30782578 :20287265 :673d3c25 :642c3078 :25783e29 :0a00 00003748:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc50004 :58a1001a :203fffe0 :6fe1000f :14200020 :54000000 :3c010000 :2421e3f0 :8c210000 :003f0806 :30210001 :10200010 :54000000 :2001ffff :080000c4 :54000000 :58a10015 :3026001f :30bfffff :5be1000f :10200010 :54000000 :3c07ffff :24e70000 :03e7f825 :8c420000 :50c10002 :00220820 :8c230028 :007f2020 :23bdfff8 :3c020001 :24420d78 :afa20000 :2007006d :afa70004 :0c00062c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000604 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070000 :24e7e3f4 :afa70000 :afa50004 :afa40008 :afa6000c :afa30010 :0c007868 :54000000 :23bd0018 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000038a0:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffcef4 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffceb0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffce6c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010438:00002710 :456e7465 :72696e67 :2050726f :63657373 :4d6f6475 :6c65496e :69740a00 00010458:496e6974 :69616c69 :7a696e67 :20504342 :20256420 :40203078 :25782e0a :00 00010478:4c656176 :696e6720 :50726f63 :6573734d :6f64756c :65496e69 :740a00 00004738:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff6b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff68c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080001 :2508043c :afa80000 :0c006900 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420e44 :afa20000 :0c0038d8 :54000000 :3c080001 :25080e50 :afa80000 :0c0038c4 :54000000 :3c080001 :25080e5c :afa80000 :0c0038b0 :54000000 :3c080001 :25080e68 :afa80000 :0c00389c :54000000 :20040000 :23bd0008 :3c070001 :24e70d78 :3c010001 :24210e74 :00022820 :20220068 :00011820 :00033020 :23bdfff8 :afa70000 :20080070 :afa80004 :0ffff5cc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa70000 :2008002b :afa80004 :0ffff5a4 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080001 :25080458 :afa80000 :afa40004 :afa60008 :0c006810 :54000000 :23bd0010 :20080001 :ac68000c :20080000 :ac480000 :ac43000c :ac450008 :ac450004 :8ca80000 :ac480000 :aca20000 :8c410000 :ac220004 :8ca10008 :20210001 :aca10008 :20420078 :20630078 :20c60078 :20840001 :7081001f :1420ff38 :54000000 :3c010001 :24210e40 :20080000 :ac280000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff4e8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff4c0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080001 :25080478 :afa80000 :0c006734 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8c61000c :201fffc0 :003f0824 :00220825 :ac61000c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :24630e44 :20820068 :8c610004 :ac830070 :ac81006c :8c250000 :ac450000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8c810064 :0041082a :10200038 :54000000 :00041820 :23bdfff8 :8c650060 :afa50000 :0fffec34 :54000000 :23bd0008 :20630004 :20420001 :8c810064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe738 :54000000 :23bd0008 :8c81000c :2005ffc0 :00250824 :34210001 :ac81000c :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdf0004 :ac3f002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010494:4e6f7720 :656e7465 :72696e67 :2050726f :63657373 :53636865 :64756c65 :20286375 :723d3078 :25782c20 :25642072 :65616479 :290a00 000104c8:4e6f2072 :756e6e61 :626c6520 :70726f63 :65737365 :73202d20 :65786974 :696e6721 :0a00 000104ec:41626f75 :7420746f :20737769 :74636820 :746f2050 :43422030 :7825782c :666c6167 :733d3078 :25782040 :20307825 :780a00 0001051c:46726565 :696e6720 :7a6f6d62 :69652050 :43422030 :7825782e :0a00 00010538:4c656176 :696e6720 :50726f63 :65737353 :63686564 :756c6520 :28637572 :3d307825 :78290a00 00004b4c:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff2a0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff278 :54000000 :23bd0008 :64210000 :10200040 :54000000 :3c010001 :24210e50 :8c220008 :23bdfff0 :3c080001 :25080494 :afa80000 :3c010001 :24210e40 :8c210000 :afa10004 :afa20008 :0c0064cc :54000000 :23bd0010 :3c050001 :24a50e50 :8ca10008 :60210000 :10200028 :54000000 :23bdfff8 :3c080001 :250804c8 :afa80000 :0c006498 :54000000 :0c006478 :54000000 :23bd0008 :8ca10000 :8c24000c :3c010001 :24210e40 :8c210000 :00810828 :10200078 :54000000 :20830068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8c680000 :ac280000 :8c610000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :ac680000 :8ca10004 :ac850070 :ac81006c :8c280000 :ac680000 :ac230000 :8c610000 :ac230004 :8ca10008 :20210001 :aca10008 :3c010001 :24210e50 :8c210000 :8c24000c :3c010001 :24210e40 :ac240000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0ffff120 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff0f8 :54000000 :23bd0008 :64210000 :10200038 :54000000 :23bdfff0 :3c080001 :250804ec :afa80000 :afa40004 :8c88000c :afa80008 :8c810004 :8c210128 :afa1000c :0c006354 :54000000 :23bd0010 :3c070001 :24e70e68 :3c060001 :24c60d78 :3c050001 :24a50e44 :8ce10008 :60210000 :1420016c :54000000 :8ce10000 :8c24000c :23bdfff8 :afa60000 :20080070 :afa80004 :0ffff06c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa60000 :2008002b :afa80004 :0ffff044 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c080001 :2508051c :afa80000 :afa40004 :0c0062b4 :54000000 :23bd0008 :209f0068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8fe80000 :ac280000 :8fe10000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :afe80000 :8ca10004 :ac850070 :ac81006c :8c280000 :afe80000 :ac3f0000 :8fe10000 :ac3f0004 :8ca10008 :20210001 :aca10008 :20030000 :8c810064 :0061082a :10200038 :54000000 :00041020 :23bdfff8 :8c480060 :afa80000 :0fffe81c :54000000 :23bd0008 :20420004 :20630001 :8c810064 :0061082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe320 :54000000 :23bd0008 :8c81000c :2008ffc0 :00280824 :34210001 :ac81000c :0bfffe8c :54000000 :23bdfff8 :3c010001 :24210438 :8c210000 :afa10000 :0c0044e4 :54000000 :3c020001 :24420d78 :afa20000 :20080070 :afa80004 :0fffeeec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0fffeec4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c080001 :25080538 :afa80000 :3c010001 :24210e40 :8c210000 :afa10004 :0c006128 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001055c:53757370 :656e6469 :6e672050 :43422030 :78257820 :28257329 :2e0a00 00010578:25733a20 :25730a00 00010580:50726f63 :65737353 :75737065 :6e6400 00010590:54727969 :6e672074 :6f207375 :7370656e :64206120 :6e6f6e2d :72756e6e :696e6720 :70726f63 :65737321 :0a00 00004fe0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffee18 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffedf0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c040001 :2484055c :afa40000 :afa30004 :20610010 :afa10008 :0c006058 :54000000 :23bd0010 :8064000f :58810001 :30210001 :14200038 :54000000 :23bdfff0 :3c040001 :24840578 :afa40000 :3c010001 :24210580 :afa10004 :3c040001 :24840590 :afa40008 :0c006010 :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210004 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24420e5c :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000105bc:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 000105d4:50726f63 :65737357 :616b6575 :7000 000105e4:54727969 :6e672074 :6f207761 :6b652075 :70206120 :6e6f6e2d :736c6565 :70696e67 :2070726f :63657373 :210a00 00005178:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffec80 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffec58 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :248405bc :afa40000 :afa30004 :0c005ec8 :54000000 :23bd0008 :8064000f :58810002 :30210001 :14200038 :54000000 :23bdfff0 :3c040001 :24840578 :afa40000 :3c010001 :242105d4 :afa10004 :3c040001 :248405e4 :afa40008 :0c005e80 :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210002 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24420e50 :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010610:456e7465 :72696e67 :2050726f :63657373 :44657374 :726f7920 :666f7220 :30782578 :2e0a00 00010634:4c656176 :696e6720 :50726f63 :65737344 :65737472 :6f792066 :6f722030 :7825782e :0a00 00005308:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffeaf0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffeac8 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :24840610 :afa40000 :afa30004 :0c005d38 :54000000 :23bd0008 :8c61000c :2004ffc0 :00240824 :34210010 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24420e68 :ac620070 :ac62006c :8c440000 :afe40000 :ac5f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20040070 :afa40004 :0fffe9ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffe9c4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :24840634 :afa40000 :afa30004 :0c005c34 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :00000000 000054c4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :64410000 :10200020 :54000000 :3c010001 :24210658 :ac220000 :3c010001 :2421065c :20050000 :ac250000 :3c1f0001 :27ff065c :8fe30000 :3c010001 :24210658 :8c220000 :00430820 :90210000 :64210000 :10200010 :54000000 :6c610062 :10200020 :54000000 :20010000 :08000058 :54000000 :23e10001 :ac410000 :08000044 :54000000 :70610063 :10200038 :54000000 :00022020 :001f1020 :8c5f0000 :009f0820 :90210000 :64210000 :1020ffc8 :54000000 :23e10001 :ac410000 :70210063 :1420ffd8 :54000000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010660:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 00010680:456e7465 :72696e67 :2050726f :63657373 :466f726b :20617267 :733d3078 :25782030 :78257820 :25732025 :640a00 000106ac:46415441 :4c206572 :726f723a :206e6f20 :66726565 :2070726f :63657373 :6573210a :00 000106d0:476f7420 :61206c69 :6e6b2040 :20307825 :780a00 000106e4:4265666f :72652072 :6573746f :72652069 :6e746572 :72757074 :2076616c :75652069 :73203078 :25782e0a :00 00010710:4e657720 :696e7465 :72727570 :74207661 :6c756520 :69732030 :7825782e :0a00 00010730:61464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65206d65 :6d6f7279 :202d206e :6f206672 :65652070 :61676573 :210a00 00010764:62464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65207379 :7374656d :20737461 :636b202d :206e6f20 :66726565 :20706167 :6573210a :00 000107a0:53657474 :696e6720 :75702050 :43422040 :20307825 :78202873 :79732073 :7461636b :3d307825 :782c206d :656d3d30 :7825782c :2073697a :653d3078 :2578290a :00 000107e0:41626f75 :7420746f :206c6f61 :64202573 :0a00 000107f4:46696c65 :20257320 :2d3e2073 :74617274 :3d307825 :3038780a :00 00010810:46696c65 :20257320 :2d3e2063 :6f646520 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 00010838:46696c65 :20257320 :2d3e2064 :61746120 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 00010860:506c6163 :696e6720 :25642062 :79746573 :20617420 :76616464 :72202530 :38782e0a :00 00010884:53657474 :696e6720 :63757272 :656e7450 :43423d30 :7825782c :20737461 :636b6672 :616d653d :30782578 :0a00 000108b0:4c656176 :696e6720 :50726f63 :65737346 :6f726b20 :28257329 :0a00 000055cc:afbefffc :001df020 :afbffff8 :2fbd02d8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :afad002c :8fc50000 :8fca0004 :8fcc0008 :8fc4000c :200d0000 :afcdfd58 :23bdfff8 :200d000f :afad0000 :0fffbc54 :54000000 :00011820 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0049 :afad0004 :0fffe7d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe7b0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad0660 :afad0000 :afa30004 :0c005a20 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe760 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe738 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c0d0001 :25ad0680 :afad0000 :afa50004 :afaa0008 :afac000c :afa40010 :0c00599c :54000000 :23bd0018 :3c020001 :24420e44 :8c410008 :60210000 :10200028 :54000000 :23bdfff8 :3c0d0001 :25ad06ac :afad0000 :0c005968 :54000000 :0c005948 :54000000 :23bd0008 :8c490000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe69c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe674 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad06d0 :afad0000 :afa90004 :0c0058e4 :54000000 :23bd0008 :8d210008 :8c210008 :6c210000 :1020002c :54000000 :8d210004 :8d2d0000 :ac2d0000 :8d210000 :8d2d0004 :ac2d0004 :8d220008 :8c410008 :2021ffff :ac410008 :200d0000 :ad2d0000 :8d26000c :8cc1000c :200dffc0 :002d0824 :34210002 :acc1000c :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0049 :afad0004 :0fffe5c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe5a0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffba18 :54000000 :23bdfff8 :3c0d0001 :25ad06e4 :afad0000 :afa10004 :0c005808 :54000000 :23bd0008 :23bdfff8 :afa30000 :0fffb9ac :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0049 :afad0004 :0fffe534 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe50c :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffb984 :54000000 :23bdfff8 :3c0d0001 :25ad0710 :afad0000 :afa10004 :0c005774 :54000000 :23bd0008 :23bdfff8 :20c10010 :afa10000 :afac0004 :0fffdffc :54000000 :200d0001 :accd0064 :0fffd5c0 :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0001 :25ad0730 :afad0000 :0c00571c :54000000 :0c0056fc :54000000 :23bd0008 :23bdfff8 :afa20000 :0fffdcdc :54000000 :acc10060 :0fffd56c :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0001 :25ad0764 :afad0000 :0c0056c8 :54000000 :0c0056a8 :54000000 :23bd0008 :50410010 :acc10008 :3428fe8c :acc80004 :acc80000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe3ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe3c4 :54000000 :23bd0008 :64210000 :10200040 :54000000 :23bdffe8 :3c0d0001 :25ad07a0 :afad0000 :afa60004 :8ccd0008 :afad0008 :8ccd0060 :afad000c :8cc10064 :50210010 :afa10010 :0c005618 :54000000 :23bd0018 :200d0000 :ad0d0028 :20c10060 :ad010138 :8ccd0064 :ad0d013c :3c010010 :24210010 :ad010140 :64810000 :10200640 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe328 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe300 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad07e0 :afad0000 :afac0004 :0c005570 :54000000 :23bd0008 :23bdffe8 :afac0000 :23c1fd6c :afa10004 :23c1fd68 :afa10008 :23c1fd64 :afa1000c :23c1fd60 :afa10010 :23c1fd5c :afa10014 :0c0007b0 :54000000 :00012820 :23bd0018 :68a10000 :102000bc :54000000 :3c030001 :24630e44 :20c20068 :8c610004 :acc30070 :acc1006c :8c2d0000 :ac4d0000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8cc10064 :0041082a :10200038 :54000000 :00061820 :23bdfff8 :8c6d0060 :afad0000 :0fffdac8 :54000000 :23bd0008 :20630004 :20420001 :8cc10064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94c10008 :afa10000 :0fffd5cc :54000000 :23bd0008 :8cc1000c :200dffc0 :002d0824 :34210001 :acc1000c :2001ffff :080006a0 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe1ac :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe184 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0001 :25ad07f4 :afad0000 :afac0004 :8fcdfd6c :afad0008 :0c0053ec :54000000 :23bd0010 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe12c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe104 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0001 :25ad0810 :afad0000 :afac0004 :8fcdfd68 :afad0008 :8fcdfd64 :afad000c :0c005364 :54000000 :23bd0010 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffe0a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe07c :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0001 :25ad0838 :afad0000 :afac0004 :8fcdfd60 :afad0008 :8fcdfd5c :afad000c :0c0052dc :54000000 :23bd0010 :23c3ff90 :23c7fd58 :3c040001 :24840d78 :23bdfff0 :afa50000 :afa30004 :afa70008 :200d0064 :afad000c :0c000984 :54000000 :00011020 :23bd0010 :6c410000 :102000b0 :54000000 :23bdfff8 :afa40000 :200d0070 :afad0004 :0fffdfe0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :200d002b :afad0004 :0fffdfb8 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0d0001 :25ad0860 :afad0000 :afa20004 :8fc1fd58 :00220822 :afa10008 :0c00521c :54000000 :23bd0010 :23bdfff0 :afa60000 :afa30004 :8fc1fd58 :00220822 :afa10008 :afa2000c :0fffd580 :54000000 :23bd0010 :0bffff24 :54000000 :23bdfff8 :afa50000 :0fffbbfc :54000000 :200d0100 :ad0d012c :240dfc00 :ad0d009c :23bdfff8 :afa60000 :afaa0004 :8d0d009c :afad0008 :200d03e0 :afad000c :0fffd530 :54000000 :23bd0010 :65410000 :10200020 :54000000 :3c010001 :24210658 :ac2a0000 :3c010001 :2421065c :200d0000 :ac2d0000 :3c030001 :2463065c :8c640000 :3c010001 :24210658 :8c220000 :00440820 :90210000 :64210000 :10200010 :54000000 :6c810062 :10200020 :54000000 :20030000 :08000054 :54000000 :20410001 :ac610000 :08000040 :54000000 :70810063 :10200034 :54000000 :00022820 :8c620000 :00a20820 :90210000 :64210000 :1020ffcc :54000000 :20410001 :ac610000 :70210063 :1420ffd8 :54000000 :00041820 :2402fc00 :00620820 :afc1fd78 :20070003 :3c040001 :2484065c :3c0b0001 :256b0658 :00025020 :23c50004 :8c9f0000 :8d630000 :007f0820 :90210000 :64210000 :10200010 :54000000 :6fe10062 :10200020 :54000000 :20030000 :08000054 :54000000 :20610001 :ac810000 :08000040 :54000000 :73e10063 :10200034 :54000000 :00031020 :8c830000 :00430820 :90210000 :64210000 :1020ffcc :54000000 :20610001 :ac810000 :70210063 :1420ffd8 :54000000 :001f1820 :006a0820 :aca1fd78 :64610000 :10200014 :54000000 :20a50004 :20e70001 :0bffff5c :54000000 :20e1fffe :afc1fd70 :50210002 :01410822 :afc1fd74 :23bdfff0 :afa60000 :23c1fd70 :afa10004 :50e20002 :8d01009c :00220822 :afa10008 :afa2000c :0fffd360 :54000000 :8d01009c :00220822 :ad01009c :8fcdfd6c :ad0d0128 :8cc1000c :34210200 :acc1000c :23bd0010 :08000038 :54000000 :3c0d0000 :25ad7ae8 :ad0d00a4 :8cc10008 :2421ffe0 :ad01009c :ac2a0000 :ad050128 :200d0140 :ad0d012c :8cc1000c :34210100 :acc1000c :23bdfff8 :200d000f :afad0000 :0fffb118 :54000000 :23bd0008 :3c030001 :24630e50 :8c620004 :ad230008 :ad220004 :8c4d0000 :ad2d0000 :ac490000 :8d220000 :ac490004 :8c620008 :20420001 :ac620008 :23bdfff8 :afa10000 :0fffb0d0 :54000000 :23bd0008 :3c010001 :24210e40 :8c210000 :64210000 :14200090 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffdc40 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdc18 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0001 :25ad0884 :afad0000 :afa60004 :8ccd0000 :afad0008 :0c004e80 :54000000 :23bd0010 :3c010001 :24210e40 :ac260000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200d0070 :afad0004 :0fffdbb4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdb8c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0001 :25ad08b0 :afad0000 :afac0004 :0c004dfc :54000000 :23bd0008 :3c0d0001 :25ad0e74 :00cd1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fad002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000108cc:50726f63 :65737347 :6574436f :6465496e :666f3a20 :6f70656e :206f6620 :25732066 :61696c65 :64202825 :64292e0a :00 000108fc:46696c65 :20646573 :63726970 :746f7220 :6973206e :6f772025 :642e0a00 00010918:50726f63 :65737347 :6574436f :6465496e :666f3a20 :72656164 :20676f74 :20256420 :286e6f74 :20256429 :20627974 :65732066 :726f6d20 :25730a00 00010950:73746172 :743a00 00010958:50726f63 :65737347 :6574436f :6465496e :666f3a20 :2573206d :69737369 :6e672073 :74617274 :206c696e :6520286e :6f742061 :20444c58 :20657865 :63757461 :626c653f :290a00 0000634c:afbefffc :001df020 :afbffff8 :2fbd00a8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc60000 :8fc70004 :8fc80008 :8fc9000c :8fca0010 :8fcb0014 :23bdfff8 :afa60000 :200c0001 :afac0004 :0fffb3e4 :54000000 :00011820 :23bd0008 :68610000 :10200088 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffda4c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffda24 :54000000 :23bd0008 :64210000 :10200224 :54000000 :23bdfff0 :3c0c0001 :258c08cc :afac0000 :afa60004 :afa30008 :0c004c90 :54000000 :23bd0010 :080001f8 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd9c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd9a0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c08fc :afac0000 :afa30004 :0c004c10 :54000000 :23bd0008 :23bdfff0 :afa30000 :23c4ff90 :afa40004 :200c0064 :afac0008 :0fffb718 :54000000 :00012820 :23bd0010 :64a10064 :102000a8 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd91c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd8f4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0c0001 :258c0918 :afac0000 :afa50004 :200c0064 :afac0008 :afa6000c :0c004b58 :54000000 :23bd0010 :23bdfff8 :afa30000 :0fffb568 :54000000 :2001ffff :23bd0008 :080001d0 :54000000 :23bdfff8 :afa40000 :3c010001 :24210950 :afa10004 :0fffd664 :54000000 :23bd0008 :64210000 :14200088 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd84c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd824 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c0958 :afac0000 :afa60004 :0c004a94 :54000000 :23bd0008 :2001ffff :08000120 :54000000 :23bdfff8 :afa40000 :200c003a :afac0004 :0fffd7d0 :54000000 :20210001 :afc1ff8c :23bdfff8 :afa10000 :23c2ff8c :afa20004 :200c0010 :afac0008 :0fffd930 :54000000 :ace10000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd910 :54000000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8f4 :54000000 :ad010000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8d4 :54000000 :ad210000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8b4 :54000000 :ad410000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd894 :54000000 :ad610000 :afa40000 :200c000a :afac0004 :0fffd6f4 :54000000 :23c2ff8f :00220822 :afa30000 :afa10004 :200c0000 :afac0008 :0fffb694 :54000000 :00030820 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001099c:476f7420 :25642062 :79746573 :20617420 :6f666673 :65742025 :64202e2e :2e00 000109bc:20746572 :6d696e61 :74656420 :61742025 :642e0a00 000109d0:42756666 :65722069 :73202725 :73270a00 000109e0:4e657720 :61646472 :65737320 :69732030 :7825782e :0a00 000109f8:5365656b :696e6720 :746f2025 :6420616e :64207265 :7475726e :696e6720 :25642062 :79746573 :210a00 000067ac:afbefffc :001df020 :afbffff8 :2fbd0110 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fca0000 :8fc70008 :8fc2000c :8fcb0004 :23c3ff28 :afc3ff24 :23bdfff0 :afaa0000 :200c0000 :afac0004 :200c0001 :afac0008 :0fffb5d8 :54000000 :00014820 :50420001 :23bd0010 :6c4100c8 :10200008 :54000000 :200200c8 :23bdfff0 :afaa0000 :afa30004 :afa20008 :0fffb3ac :54000000 :00012820 :23bd0010 :70a10000 :10200010 :54000000 :20010000 :08000594 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd5a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd57c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c0c0001 :258c099c :afac0000 :afa50004 :afa90008 :0c0047e8 :54000000 :23bd0010 :20a5ffff :23c1ff28 :00251020 :0800000c :54000000 :2042ffff :20a5ffff :90410000 :6421000a :1420ffec :54000000 :23c1ff29 :00250820 :200c005a :a02c0000 :23c1ff2a :00250820 :200c0000 :a02c0000 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd4dc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd4b4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c09bc :afac0000 :afa50004 :0c004724 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd464 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd43c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c09d0 :afac0000 :23c1ff28 :afa10004 :0c0046a8 :54000000 :23bd0008 :20050000 :3c080001 :25080d78 :23bdfff8 :8fccff24 :afac0000 :200c005a :afac0004 :0fffd3e0 :54000000 :23bd0008 :64210000 :102002ec :54000000 :23bdfff8 :8fccff24 :afac0000 :200c003a :afac0004 :0fffd3b4 :54000000 :23bd0008 :64210000 :102002c0 :54000000 :8fc2ff24 :90410000 :6421003a :102000b8 :54000000 :6ca10000 :142002a0 :54000000 :23bdfff0 :afa20000 :23c1ff24 :afa10004 :200c0010 :afac0008 :0fffd4ec :54000000 :ace10000 :afa80000 :200c0066 :afac0004 :0fffd34c :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa80000 :200c002b :afac0004 :0fffd324 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c09e0 :afac0000 :8ce10000 :afa10004 :0c004590 :54000000 :23bd0008 :8fc1ff24 :90210000 :6421003a :142001f8 :54000000 :8fc1ff24 :20210001 :afc1ff24 :00ab3020 :8fc1ff24 :08000010 :54000000 :8fc1ff24 :20210001 :afc1ff24 :903f0000 :63e10020 :1420ffe8 :54000000 :63e10009 :1420ffdc :54000000 :8fc2ff24 :805f0000 :33e300ff :6061000a :10200014 :54000000 :20410001 :afc1ff24 :0bfffe78 :54000000 :20020000 :23e1ffd0 :302100ff :70210009 :14200024 :54000000 :23e1ff9f :302100ff :70210005 :14200010 :54000000 :64610041 :14200008 :54000000 :20020001 :64410000 :1020fe30 :54000000 :8fc1ff24 :80220001 :20030000 :2041ffd0 :302100ff :70210009 :14200028 :54000000 :2041ff9f :302100ff :70210005 :14200014 :54000000 :304100ff :64210041 :14200008 :54000000 :20030001 :64610000 :1020fddc :54000000 :8fc1ff24 :90220000 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f2020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2044ffa9 :0800001c :54000000 :2061ffbf :70210005 :20040000 :10200008 :54000000 :2064ffc9 :8fc1ff24 :90220001 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f1020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2042ffa9 :0800001c :54000000 :2061ffbf :70210005 :20020000 :10200008 :54000000 :2062ffc9 :50810004 :00220820 :a0c10000 :20c60001 :20a50001 :8fc1ff24 :20210002 :afc1ff24 :8ce10000 :20210001 :ace10000 :0bfffe20 :54000000 :23bdfff0 :afaa0000 :8fc1ff24 :00290820 :23c3ff28 :00230822 :afa10004 :200c0000 :afac0008 :0fffb07c :54000000 :3c020001 :24420d78 :afa20000 :200c0066 :afac0004 :0fffd0a0 :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd078 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0c0001 :258c09f8 :afac0000 :8fc1ff24 :00290820 :00230822 :afa10004 :afa50008 :0c0042d8 :54000000 :23bd0010 :00050820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010a98:48692055 :6461792c :20486f77 :20617265 :20796f75 :3f0a00 00010ab0:476f7420 :25642061 :7267756d :656e7473 :2e0a00 00010ac4:41766169 :6c61626c :65206d65 :6d6f7279 :3a203078 :2578202d :3e203078 :25782e0a :00 00010ae8:41726775 :6d656e74 :20636f75 :6e742069 :73202564 :2e0a00 00010b00:41726775 :6d656e74 :20256420 :69732025 :732e0a00 00010b14:436f6e76 :65727465 :64202573 :20746f20 :25643d25 :730a00 00010bf4:25303878 :3a202530 :32782530 :32782530 :32782530 :32780a00 00010c0c:4f707469 :6f6e2025 :73206e6f :74207265 :636f676e :697a6564 :2e0a00 00010c28:41626f75 :7420746f :20696e69 :7469616c :697a6520 :71756575 :65732e0a :00 00010c48:41667465 :7220696e :69746961 :6c697a69 :6e672071 :75657565 :732e0a00 00010c64:41667465 :7220696e :69746961 :6c697a69 :6e67206d :656d6f72 :792e0a00 00010c80:41667465 :7220696e :69746961 :6c697a69 :6e672070 :726f6365 :73736573 :2e0a00 00010ca0:41667465 :7220696e :69746961 :6c697a69 :6e672073 :796e6368 :726f6e69 :7a617469 :6f6e2074 :6f6f6c73 :2e0a00 00010ccc:41667465 :7220696e :69746961 :6c697a69 :6e67206b :6579626f :6172642e :0a00 00010cec:766d00 00010cf0:564d2044 :65736372 :6970746f :72206973 :2025640a :00 00010d08:43726561 :74656420 :70726f63 :65737365 :73202d20 :61626f75 :7420746f :20736574 :2074696d :65722071 :75616e74 :756d2e0a :00 00010d3c:53657420 :74696d65 :72207175 :616e7475 :6d20746f :2025642c :2061626f :75742074 :6f207275 :6e206669 :72737420 :70726f63 :6573732e :0a00 00006e44:afbefffc :001df020 :afbffff8 :2fbd00c8 :8fce0000 :8fd40004 :0c0041d8 :54000000 :20100000 :20150000 :afd5ff50 :afd5ff54 :afd5ff58 :afd5ff5c :afd5ff60 :afd5ff64 :afd5ff68 :afd5ff6c :afd5ff70 :afd5ff74 :afd5ff78 :afd5ff7c :3c010001 :24210d78 :20150000 :a0350000 :23bdfff8 :3c150001 :26b50a98 :afb50000 :0c004210 :54000000 :0c0009e0 :54000000 :3c150001 :26b50ab0 :afb50000 :afae0004 :0c0041f0 :54000000 :0fffbb24 :54000000 :23bdfff8 :3c150001 :26b50ac4 :afb50000 :3c020001 :24423e6c :8c420000 :afa20004 :afa10008 :0c0041bc :54000000 :3c150001 :26b50ae8 :afb50000 :afae0004 :0c0041a4 :54000000 :20090000 :23bd0010 :012e082a :10200044 :54000000 :00141020 :23bdfff0 :3c150001 :26b50b00 :afb50000 :afa90004 :8c550000 :afb50008 :0c004168 :54000000 :23bd0010 :20420004 :21290001 :012e082a :1420ffc8 :54000000 :0fffb4f8 :54000000 :20090000 :012e082a :1020033c :54000000 :23ccff80 :23cdff38 :3c0f0001 :25ef0b2b :21f20001 :21f10002 :00144020 :8d020000 :90410000 :6021002d :102002f8 :54000000 :90420001 :60410066 :142000e0 :54000000 :6c410066 :14200018 :54000000 :60410044 :102002a0 :54000000 :08000024 :54000000 :60410069 :14200048 :54000000 :60410075 :10200280 :54000000 :08000260 :54000000 :23bdfff8 :3c150001 :26b50d78 :afb50000 :21080004 :21290001 :8d010000 :afa10004 :0fffc934 :54000000 :08000268 :54000000 :23bdfff0 :21080004 :21290001 :8d150000 :afb50000 :20150000 :afb50004 :afb50008 :0fffcf4c :54000000 :00011820 :afa10000 :afac0004 :0fffce2c :54000000 :3c150001 :26b50b14 :afb50000 :8d010000 :afa10004 :afa30008 :afac000c :0c004028 :54000000 :23bd0010 :08000200 :54000000 :20150000 :afd5ff38 :23bdffe8 :21080004 :21290001 :8d150000 :afb50000 :23c1ff4c :afa10004 :23c1ff48 :afa10008 :23c1ff44 :afa1000c :23c1ff40 :afa10010 :23c1ff3c :afa10014 :0ffff24c :54000000 :00015020 :3c150001 :26b507f4 :afb50000 :8d010000 :afa10004 :8fd5ff4c :afb50008 :0c003fa8 :54000000 :3c150001 :26b50810 :afb50000 :8d010000 :afa10004 :8fd5ff48 :afb50008 :8fd5ff44 :afb5000c :0c003f7c :54000000 :3c150001 :26b50838 :afb50000 :8d010000 :afa10004 :8fd5ff40 :afb50008 :8fd5ff3c :afb5000c :0c003f50 :54000000 :23bd0018 :3c0b0001 :256b0b2e :23bdfff0 :afaa0000 :3c150001 :26b50b2b :afb50004 :afad0008 :201500c8 :afb5000c :0ffff5f8 :54000000 :00011820 :23bd0010 :6c610000 :10200098 :54000000 :20020000 :0043082a :1020ffb8 :54000000 :000b3820 :00113020 :00122820 :000f2020 :23bdffe8 :3c150001 :26b50bf4 :afb50000 :8fc1ff38 :00220820 :00230822 :afa10004 :90810000 :afa10008 :90a10000 :afa1000c :90c10000 :afa10010 :90e10000 :afa10014 :0c003ea0 :54000000 :23bd0018 :20e70004 :20c60004 :20a50004 :20840004 :20420004 :0043082a :1420ff98 :54000000 :0bffff34 :54000000 :23bdfff8 :afaa0000 :0c003de0 :54000000 :0800003c :54000000 :21080004 :21290001 :8d100000 :00099820 :08000028 :54000000 :23bdfff8 :3c150001 :26b50c0c :afb50000 :8d010000 :afa10004 :0c003e24 :54000000 :23bd0008 :66010000 :14200018 :54000000 :21080004 :21290001 :012e082a :1420fce8 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffcb44 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcb1c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c28 :afb50000 :0c003d90 :54000000 :23bd0008 :0c000c64 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffcac8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcaa0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c48 :afb50000 :0c003d14 :54000000 :23bd0008 :0fffb7a4 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffca4c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffca24 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c64 :afb50000 :0c003c98 :54000000 :23bd0008 :0fffd2f4 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc9d0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc9a8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50c80 :afb50000 :0c003c1c :54000000 :23bd0008 :0c00127c :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc954 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc92c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50ca0 :afb50000 :0c003ba0 :54000000 :23bd0008 :0c001f08 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc8d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc8b0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50ccc :afb50000 :0c003b24 :54000000 :23bd0008 :23c2ff80 :23c3ffe3 :20150061 :a0550000 :20420001 :0043082c :1420ffec :54000000 :23bdfff8 :3c150001 :26b50cec :afb50000 :20150002 :afb50004 :0fffa1a8 :54000000 :00014820 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc824 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc7fc :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c150001 :26b50cf0 :afb50000 :afa90004 :0c003a6c :54000000 :23bd0008 :23bdfff0 :afa90000 :20150000 :afb50004 :afb50008 :0fffa770 :54000000 :afa90000 :23c1ff80 :afa10004 :20150050 :afb50008 :0fffa658 :54000000 :afa90000 :0fffa448 :54000000 :23bd0010 :66010000 :102000c4 :54000000 :00134820 :026e082a :10200044 :54000000 :23c4fff8 :51210002 :00341820 :01331022 :7041000a :10200028 :54000000 :50410002 :00240820 :8c750000 :ac35ff58 :20630004 :21290001 :012e082a :1420ffd0 :54000000 :23bdffd0 :8fd5ff50 :afb50000 :8fc1ff54 :afa10004 :8fd5ff58 :afb50008 :8fd5ff5c :afb5000c :8fd5ff60 :afb50010 :8fd5ff64 :afb50014 :8fd5ff68 :afb50018 :8fd5ff6c :afb5001c :8fd5ff70 :afb50020 :8fd5ff74 :afb50024 :8fd5ff78 :afb50028 :8fd5ff7c :afb5002c :0c000220 :54000000 :23bd0030 :0c003834 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc690 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc668 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b50d08 :afb50000 :0c0038dc :54000000 :23bd0008 :23bdfff8 :3c030001 :24630438 :8c750000 :afb50000 :0c001bfc :54000000 :3c020001 :24420d78 :afa20000 :20150069 :afb50004 :0fffc604 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc5dc :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c150001 :26b50d3c :afb50000 :8c610000 :afa10004 :0c003848 :54000000 :23bd0008 :0fff98d4 :54000000 :0c00381c :54000000 :0c003820 :54000000 00010d74:00000000 000078a8:afbefffc :001df020 :afbffff8 :2fbd0008 :3c010001 :24210d74 :98200000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :3c010001 :24210e40 :8c210000 :3c1f0001 :27ff0e74 :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :3c1f0001 :27ff0e74 :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0408 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :20040000 :8fc10000 :64210000 :1020005c :54000000 :23c5fc10 :001ef820 :20020000 :00851820 :8fe10000 :00220820 :80210000 :a0610000 :20420001 :20630001 :20840001 :8fe10000 :00410820 :9021ffff :64210000 :1420ffd0 :54000000 :23ff0004 :8fe10000 :64210000 :1420ffb4 :54000000 :23c3fc10 :00641020 :23c1fc11 :00240820 :20060000 :a0260000 :a0460000 :23bdfff0 :20060000 :afa60000 :afa30004 :8fc60000 :afa60008 :20060001 :afa6000c :0fffdb64 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0fffd0a0 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0c0035c8 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff967c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff9638 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff95f4 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011d74:496e6974 :69616c69 :7a696e67 :20717565 :7565206c :696e6b20 :25642e0a :00 00007fb0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :3c050001 :24a51de0 :afa50000 :0c0000e0 :54000000 :20030000 :23bd0008 :3c040001 :24840d78 :3c020001 :24421dec :23bdfff8 :afa40000 :20050069 :afa50004 :0fffbe20 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2005002b :afa50004 :0fffbdf8 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c050001 :24a51d74 :afa50000 :afa30004 :0c003068 :54000000 :23bd0008 :20050000 :ac450000 :23bdfff8 :afa20000 :0c000078 :54000000 :23bd0008 :20420010 :20630001 :7061018f :1420ff64 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :ac210000 :ac210004 :201f0000 :ac3f0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011d94:25733a20 :25730a00 00011d9c:51756575 :65467265 :654c696e :6b00 00011dac:4c696e6b :206e6f74 :20656d70 :747900 000080fc:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8c610000 :64210000 :10200038 :54000000 :23bdfff0 :3c040001 :24841d94 :afa40000 :3c010001 :24211d9c :afa10004 :3c040001 :24841dac :afa40008 :0c002f78 :54000000 :23bd0010 :3c020001 :24421de0 :8c410004 :ac620008 :ac610004 :8c240000 :ac640000 :ac230000 :8c610000 :ac230004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011dbc:51756575 :65416c6c :6f634c69 :6e6b00 00011dcc:4c696e6b :206e6f74 :20616c6c :6f636174 :65642100 000081b4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24421de0 :8c410008 :60210000 :14200054 :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c640000 :ac240000 :8c610000 :8c640004 :ac240004 :8c620008 :8c410008 :2021ffff :ac410008 :20040000 :ac640000 :08000008 :54000000 :20030000 :64610000 :14200038 :54000000 :23bdfff0 :3c040001 :24841d94 :afa40000 :3c010001 :24211dbc :afa10004 :3c040001 :24841dcc :afa40008 :0c002e5c :54000000 :23bd0010 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff8ef0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff8eac :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8e68 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000136ec:456e7465 :72696e67 :2053796e :63684d6f :64756c65 :496e6974 :0a00 00013708:4c656176 :696e6720 :53796e63 :684d6f64 :756c6549 :6e69740a :00 0000873c:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :23bdfff8 :3c020001 :24420d78 :afa20000 :20030070 :afa30004 :0fffb6c4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb69c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :246336ec :afa30000 :0c002910 :54000000 :23bd0008 :3c1f0001 :27ff37d0 :23e2026c :20030000 :afe30010 :23ff0014 :03e2082c :1420ffec :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20030070 :afa30004 :0fffb62c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb604 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :24633708 :afa30000 :0c002878 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :23bdfff8 :afa20000 :0ffff81c :54000000 :ac43000c :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :2005000f :afa50000 :0fff8988 :54000000 :00012020 :23bd0008 :20030000 :3c1f0001 :27ff37d0 :001f1020 :8fe10010 :64210000 :10200078 :54000000 :205f0014 :20630001 :7061001f :1420ffdc :54000000 :23bdfff8 :afa40000 :0fff893c :54000000 :23bd0008 :60610020 :14200054 :54000000 :50610002 :00230820 :50210002 :3c050001 :24a537d0 :00251020 :23bdfff8 :afa20000 :0ffff740 :54000000 :8fc50000 :ac45000c :23bd0008 :00030820 :08000018 :54000000 :20050001 :afe50010 :0bffff94 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013724:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 00013744:50726f63 :20307825 :78207761 :6974696e :67206f6e :2073656d :20307825 :782c2063 :6f756e74 :3d25642e :0a00 00013770:53757370 :656e6469 :6e672063 :75727265 :6e742070 :726f6320 :28307825 :78292e0a :00 000089d8:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc40000 :23bdfff8 :2007000f :afa70000 :0fff8874 :54000000 :00013020 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070049 :afa70004 :0fffb3f8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb3d0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c070001 :24e73724 :afa70000 :afa60004 :0c002640 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070073 :afa70004 :0fffb380 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb358 :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070001 :24e73744 :afa70000 :3c010001 :24210e40 :8c210000 :afa10004 :afa40008 :8c87000c :afa7000c :0c0025b0 :54000000 :23bd0010 :8c81000c :2021ffff :ac81000c :68210000 :102000d8 :54000000 :0ffff670 :54000000 :00011020 :3c050001 :24a50e40 :8ca10000 :20070000 :ac470000 :ac41000c :23bdfff8 :3c030001 :24630d78 :afa30000 :20070073 :afa70004 :0fffb2b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0fffb28c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c070001 :24e73770 :afa70000 :8ca10000 :afa10004 :0c0024f8 :54000000 :23bd0008 :8c810004 :ac440008 :ac410004 :8c270000 :ac470000 :ac220000 :8c410000 :ac220004 :8c810008 :20210001 :ac810008 :0fff86c4 :54000000 :23bdfff8 :afa60000 :0fff8668 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244237d0 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffd2c :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013794:5369676e :616c6c69 :6e67206f :6e207365 :6d203078 :25782c20 :636f756e :743d2564 :2e0a00 000137b8:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 00008ce8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :23bdfff8 :2005000f :afa50000 :0fff856c :54000000 :00012020 :23bd0008 :23bdfff8 :3c030001 :24630d78 :afa30000 :20050073 :afa50004 :0fffb0f0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2005002b :afa50004 :0fffb0c8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c050001 :24a53794 :afa50000 :afa20004 :8c45000c :afa50008 :0c002330 :54000000 :23bd0010 :8c41000c :20210001 :ac41000c :70210000 :102000ec :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c650000 :ac250000 :8c610000 :8c650004 :ac250004 :8c620008 :8c410008 :2021ffff :ac410008 :20050000 :ac650000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20050073 :afa50004 :0fffb010 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2005002b :afa50004 :0fffafe8 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c050001 :24a537b8 :afa50000 :8c61000c :afa10004 :0c002254 :54000000 :23bd0008 :23bdfff8 :8c65000c :afa50000 :0fffc2e4 :54000000 :afa30000 :0ffff25c :54000000 :23bd0008 :23bdfff8 :afa40000 :0fff83d4 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244237d0 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffdb0 :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013a50:3a207472 :6170732e :632c7620 :312e3120 :32303030 :2f30392f :32302030 :313a3530 :3a313920 :656c6d20 :45787020 :656c6d20 :303030 00008f74:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff821c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff81d8 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8194 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :24210010 :8fdf0000 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :242101c0 :201f0001 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013a84:46617461 :6c3a2043 :756d756c :61746976 :65206c65 :6e677468 :206f6620 :616c6c20 :61726775 :6d656e74 :73203e20 :3130300a :00 00009478:afbefffc :001df020 :afbffff8 :2fbd06a0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc40000 :8fc60004 :23c2fbf8 :23c3fc5b :200c0000 :a04c0000 :20420001 :0043082c :1420ffec :54000000 :20050000 :64c10000 :142000a0 :54000000 :23bdfff0 :3c020001 :24420e40 :8c4c0000 :afac0000 :afa40004 :23c1f990 :afa10008 :200c0200 :afac000c :0fffa06c :54000000 :23bd0010 :23c4fb8f :23c3fb90 :23bdfff0 :8c4c0000 :afac0000 :8fc1f990 :00250820 :afa10004 :afa30008 :200c0001 :afac000c :0fffa034 :54000000 :20840001 :20630001 :20a50001 :23bd0010 :70a10063 :10200060 :54000000 :90810000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1f990 :afa10004 :200c0200 :afac0008 :0fffac20 :54000000 :8fccf990 :afac0000 :23c1fb90 :afa10004 :200c0064 :afac0008 :0fffa414 :54000000 :23bd0010 :200c0000 :a3ccfbf3 :20050000 :64c10000 :142000b0 :54000000 :3c080001 :25080e40 :23cbfbf8 :23cafbf7 :23c6fff8 :23c90020 :8cc1f998 :64210000 :1020012c :54000000 :20020000 :00063820 :00aa2020 :00ab1820 :23bdfff0 :8d0c0000 :afac0000 :8ce1f998 :00220820 :afa10004 :afa30008 :200c0001 :afac000c :0fff9f40 :54000000 :20840001 :20630001 :20a50001 :20420001 :23bd0010 :70a103ff :10200014 :54000000 :90810000 :64210000 :1420ffa8 :54000000 :20c60004 :00c9082c :102000b0 :54000000 :0bffff70 :54000000 :23c5fbf8 :00053820 :23c3fff8 :23c60020 :2064f998 :8c820000 :64410000 :10200084 :54000000 :23bdfff8 :afa20000 :0fffa504 :54000000 :00a11020 :00470822 :23bd0008 :6c210064 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c3a84 :afac0000 :0c0019e0 :54000000 :0c0019c0 :54000000 :23bd0008 :23bdfff8 :afa50000 :8c810000 :afa10004 :0fffa260 :54000000 :200c0000 :a04c0000 :23bd0008 :20630004 :0066082c :1420ff70 :54000000 :200c0000 :a3ccfff7 :23bdfff0 :200c0000 :afac0000 :23c1fbf8 :afa10004 :23c1fb90 :afa10008 :200c0001 :afac000c :0fffbe68 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd00d0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :8fc40000 :8fc10004 :20080000 :00081820 :64210000 :142000a0 :54000000 :23bdfff0 :3c020001 :24420e40 :8c4b0000 :afab0000 :afa40004 :23c1ff58 :afa10008 :200b0028 :afab000c :0fff9d58 :54000000 :23bd0010 :23c5ffa7 :23c4ffa8 :23bdfff0 :8c4b0000 :afab0000 :8fc1ff58 :00230820 :afa10004 :afa40008 :200b0001 :afab000c :0fff9d20 :54000000 :20a50001 :20840001 :20630001 :23bd0010 :7061004f :10200060 :54000000 :90a10000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1ff58 :afa10004 :200b0028 :afab0008 :0fffa90c :54000000 :8fcbff58 :afab0000 :23c1ffa8 :afa10004 :200b0050 :afab0008 :0fffa100 :54000000 :23bd0010 :200b0000 :a3cbfff7 :23c3ffa8 :80620000 :304100ff :64210000 :102000f0 :54000000 :23cafff8 :23c9ff5c :51010002 :00293820 :002a3020 :304100ff :60210025 :102000b4 :54000000 :90610001 :60210025 :10200010 :54000000 :20630001 :08000098 :54000000 :8ceb0000 :accbff88 :51010002 :00292820 :002a2020 :20630001 :807f0000 :33e200ff :60410073 :14200060 :54000000 :6041006c :1420ffe0 :54000000 :23e1ff9a :302100ff :70210001 :14200010 :54000000 :60410065 :10200020 :54000000 :20e70004 :20c60004 :21080001 :8ca50004 :ac85ff8c :08000018 :54000000 :23e1ff9f :302100ff :70210019 :1020ff90 :54000000 :20e70004 :20c60004 :21080001 :20630001 :80620000 :304100ff :64210000 :1420ff2c :54000000 :23bdffd8 :23c1ffa8 :afa10000 :8fc1ff80 :afa10004 :8fcbff84 :afab0008 :8fcbff88 :afab000c :8fcbff8c :afab0010 :8fcbff90 :afab0014 :8fcbff94 :afab0018 :8fcbff98 :afab001c :8fcbff9c :afab0020 :0c001694 :54000000 :23bd0028 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013ab8:496e7465 :72727570 :74206361 :7573653d :30782578 :20696172 :3d307825 :78206973 :723d3078 :25782061 :7267733d :30782530 :38782e0a :00 00013af0:476f7420 :6120636f :6e746578 :74207377 :69746368 :20747261 :70210a00 00013b0c:476f7420 :616e2065 :78697420 :74726170 :210a00 00013b20:476f7420 :6120666f :726b2074 :72617021 :0a00 00013b34:476f7420 :61207072 :6f636573 :7320736c :65657020 :74726170 :210a00 00013b50:476f7420 :61207072 :696e7466 :20747261 :70210a00 00013b64:476f7420 :616e206f :70656e20 :77697468 :20706172 :616d6574 :65727320 :28272573 :272c3078 :2578290a :00 00013b90:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :74726170 :20283078 :25782920 :2d206578 :6974696e :67210a00 00013bbc:476f7420 :61207469 :6d657220 :696e7465 :72727570 :74210a00 00013bd4:476f7420 :61206b65 :79626f61 :72642069 :6e746572 :72757074 :20286368 :61723d30 :78257828 :2563292c :206e6c65 :66743d25 :6429210a :00 00013c0c:54726170 :20616363 :6573730a :00 00013c1c:43757272 :656e7420 :50524f43 :2025730a :00 00013c30:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c206164 :64726573 :73206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 00013c68:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c20696e :73747275 :6374696f :6e206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 00013ca4:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :73797374 :656d2069 :6e746572 :72757074 :20283078 :25782920 :2d206578 :6974696e :67210a00 00013cdc:41626f75 :7420746f :20726574 :75726e20 :66726f6d :20646f69 :6e746572 :72757074 :2e0a00 00009a80:afbefffc :001df020 :afbffff8 :2fbd0058 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc60004 :8fc50008 :8fc3000c :23bdfff8 :3c040001 :24840d78 :afa40000 :20070074 :afa70004 :0fffa360 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2007002b :afa70004 :0fffa338 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070001 :24e73ab8 :afa70000 :afa20004 :afa60008 :afa5000c :afa30010 :0c00159c :54000000 :23bd0018 :3c070800 :24e70000 :00470824 :64210000 :10200998 :54000000 :3c07f7ff :24e7ffff :00471024 :60410400 :14200110 :54000000 :6c410400 :14200074 :54000000 :60410212 :142006ac :54000000 :6c410212 :14200030 :54000000 :60410210 :14200580 :54000000 :6c410210 :142005d0 :54000000 :60410201 :10200924 :54000000 :08000350 :54000000 :60410214 :142004f8 :54000000 :68410214 :142003cc :54000000 :60410300 :102008f8 :54000000 :08000100 :54000000 :60410432 :142006cc :54000000 :6c410432 :14200030 :54000000 :60410430 :142001e8 :54000000 :6c410430 :14200674 :54000000 :60410410 :102008b4 :54000000 :08000240 :54000000 :60410451 :14200750 :54000000 :6c410451 :14200018 :54000000 :60410450 :10200888 :54000000 :08000688 :54000000 :60410452 :142007cc :54000000 :60410580 :10200868 :54000000 :0800055c :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa1a0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa178 :54000000 :23bd0008 :64210000 :10200908 :54000000 :23bdfff8 :3c070001 :24e73af0 :080008e4 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa134 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa10c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b0c :afa70000 :0c001380 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa0c0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa098 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b0c :afa70000 :0c00130c :54000000 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :0fffdcb4 :54000000 :08000958 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fffa028 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa000 :54000000 :23bd0008 :64210000 :10200904 :54000000 :23bdfff8 :3c070001 :24e73b20 :afa70000 :0c001274 :54000000 :080008e0 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff9fb0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9f88 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b34 :afa70000 :0c0011fc :54000000 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :0fffb0ec :54000000 :0fffac50 :54000000 :08000840 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff9f10 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9ee8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73b50 :afa70000 :0c00115c :54000000 :23bd0008 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff81c :54000000 :080007ac :54000000 :30a10040 :64210000 :1020001c :54000000 :8c670000 :afc7ffe8 :8c630004 :afc3ffec :0800006c :54000000 :23bdfff0 :3c020001 :24420e40 :8c470000 :afa70000 :afa30004 :23c1ffe8 :afa10008 :20070008 :afa7000c :0fff9594 :54000000 :8c420000 :afa20000 :8fc1ffe8 :afa10004 :23c2ffc8 :afa20008 :2007001f :afa7000c :0fff956c :54000000 :20070000 :a3c7ffe7 :afc2ffe8 :23bd0010 :23bdfff8 :20070000 :afa70000 :0fff724c :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :8fc1ffec :3c070001 :24e70000 :00270820 :afa10004 :0fffaaa4 :54000000 :23bdfff8 :3c070001 :24e73b64 :afa70000 :8fc1ffe8 :afa10004 :8fc7ffec :afa70008 :0c001034 :54000000 :23bd0010 :23bdfff8 :afa20000 :0fff71d8 :54000000 :0800068c :54000000 :23bdfff8 :20070000 :afa70000 :0fff71bc :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffaa20 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff717c :54000000 :08000630 :54000000 :23bdfff8 :20070000 :afa70000 :0fff7160 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa9c4 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7120 :54000000 :080005d4 :54000000 :23bdfff8 :20070000 :afa70000 :0fff7104 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa968 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff70c4 :54000000 :08000578 :54000000 :23bdfff8 :20070000 :afa70000 :0fff70a8 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa90c :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7068 :54000000 :0800051c :54000000 :23bdfff8 :20070000 :afa70000 :0fff704c :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa8b0 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff700c :54000000 :080004c0 :54000000 :0fffd64c :54000000 :00011020 :23bdfff8 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa868 :54000000 :0800048c :54000000 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff1a8 :54000000 :0800046c :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24210e40 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff926c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9e84 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe578 :54000000 :00011020 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa7a0 :54000000 :080003c4 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24210e40 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff91c4 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9ddc :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe854 :54000000 :00011020 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa6f8 :54000000 :0800031c :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24210e40 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff911c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9d34 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffea38 :54000000 :00011020 :3c010001 :24210e40 :8c210000 :afa10000 :afa20004 :0fffa650 :54000000 :08000274 :54000000 :23bdfff8 :3c070001 :24e73b90 :08000248 :54000000 :60410003 :14200148 :54000000 :6c410003 :14200024 :54000000 :60410001 :142001a8 :54000000 :60410002 :1020020c :54000000 :08000154 :54000000 :60410040 :14200038 :54000000 :6c410040 :14200018 :54000000 :60410020 :102001e0 :54000000 :080001c8 :54000000 :60410048 :102001cc :54000000 :08000088 :54000000 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff98b8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9890 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73bbc :afa70000 :0c000b04 :54000000 :23bd0008 :0fffa574 :54000000 :08000168 :54000000 :3c04fff0 :248401a0 :3c03fff0 :24630180 :8c820000 :8c610000 :23bdfff0 :3c070001 :24e73bd4 :afa70000 :afa10004 :afa10008 :afa2000c :0c000ab4 :54000000 :23bd0010 :6c410001 :1020011c :54000000 :0bffffc0 :54000000 :23bdfff8 :3c070001 :24e73c0c :afa70000 :0c000a84 :54000000 :3c010001 :24210e40 :8c210000 :afa10000 :0fffd434 :54000000 :080000d8 :54000000 :3c010001 :24210e40 :8c210000 :23bdfff8 :3c070001 :24e73c1c :afa70000 :20210010 :afa10004 :0c000a38 :54000000 :23bdfff8 :3c070001 :24e73c30 :0800003c :54000000 :3c010001 :24210e40 :8c210000 :23bdfff8 :3c070001 :24e73c1c :afa70000 :20210010 :afa10004 :0c0009f8 :54000000 :23bdfff8 :3c070001 :24e73c68 :afa70000 :afa60004 :afa50008 :0c0009d8 :54000000 :0c0009b8 :54000000 :23bd0010 :0800003c :54000000 :0fffd3b0 :54000000 :0800002c :54000000 :23bdfff8 :3c070001 :24e73ca4 :afa70000 :afa20004 :0c000998 :54000000 :0c000978 :54000000 :23bd0008 :23bdfff8 :3c020001 :24420d78 :afa20000 :20070074 :afa70004 :0fff96d0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff96a8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e73cdc :afa70000 :0c00091c :54000000 :23bd0008 :0fff69a8 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff69a0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff695c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff6918 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013d00:50726f63 :65737320 :2300 00013d0c:52756e6e :696e6720 :70726f63 :65737320 :25642028 :69746572 :6174696f :6e202564 :29210a00 0000ac8c:afbefffc :001df020 :afbffff8 :2fbd0078 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc60000 :2001000a :00c00035 :00200835 :0401000f :00001034 :50410002 :00220820 :50210001 :00c13822 :70c10063 :102000dc :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25083da4 :00280820 :afa10000 :20080001 :afa80004 :0fffdb64 :54000000 :20030001 :23bd0008 :23c4ffd0 :23c5ffa8 :00061020 :23bdfff8 :afa40000 :3c080001 :25083d00 :afa80004 :0fff8c2c :54000000 :afa30000 :afa50004 :0fff9158 :54000000 :afa40000 :afa50004 :0fff8cfc :54000000 :23bdfff8 :3c080000 :2508ac8c :afa80000 :50410005 :00220822 :50210002 :00220820 :50210003 :00260820 :afa10004 :afa40008 :20080000 :afa8000c :0fffa824 :54000000 :23bd0010 :00461020 :20630001 :70610006 :1420ff70 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25083da4 :00280820 :afa10000 :0fffdbf0 :54000000 :20030000 :23bd0008 :50c20001 :0062082a :10200070 :54000000 :200503e8 :00022020 :00600035 :00a00835 :0401000f :00001034 :50410005 :00220822 :50210002 :00220820 :50210003 :00610829 :14200028 :54000000 :23bdfff0 :3c080001 :25083d0c :afa80000 :afa60004 :afa30008 :0c000278 :54000000 :23bd0010 :20630001 :0064082a :1420ffa0 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25083da4 :00280820 :afa10000 :0fffde54 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013d30:63686173 :65746169 :6c00 00013d3c:43686173 :696e6720 :7461696c :2025642e :0a00 00013d50:4f70656e :206f6620 :2825732c :30782578 :29207265 :7475726e :73203078 :25782e0a :00 00013d74:43686173 :65546169 :6c00 0000aecc:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :24633d30 :23bdfff8 :3c050001 :24a53d3c :afa50000 :afa40004 :0c0001c0 :54000000 :afa30000 :20822000 :afa20004 :0c000158 :54000000 :23bdfff8 :3c050001 :24a53d50 :afa50000 :afa30004 :afa20008 :afa1000c :0c000188 :54000000 :23bd0010 :70810027 :1020003c :54000000 :23bdfff0 :3c050000 :24a5aecc :afa50000 :20810001 :afa10004 :3c050001 :24a53d74 :afa50008 :20050000 :afa5000c :0fffa640 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013d80:25642000 :52616e64 :6f6d206e :756d6265 :72202530 :32692069 :73203078 :25303878 :2e0a00 0000afb8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24423da4 :204300b4 :23bdfff8 :afa20000 :20040001 :afa40004 :0fffd888 :54000000 :23bd0008 :20420014 :0043082c :1420ffd8 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013e6c:00013e74 0000b02c:44000300 :4be00000 :54000000 :4be00000 :54000000 :44002013 :4be00000 :54000000 :44002014 :4be00000 :54000000 :44002010 :4be00000 :54000000 :44002011 :4be00000 :54000000 :44002012 :4be00000 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44002f00 :4be00000 :54000000 :44000300 :4be00000 :54000000 :44002001 :4be00000 :54000000

option1/lab4_2/execs/userprog1.dlx.obj

start:00001000 00002018 00001000 00000b38 00002000 00000018 00002000:496e2055 :73657270 :726f6731 :2c205375 :6d203a20 :25640a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :0c000b1c :54000000 :20030000 :3c040010 :24840000 :201f0000 :00041020 :a05f0000 :20422004 :23ff0001 :73e1000b :1420ffec :54000000 :0004f820 :3c050001 :24a5602c :03e51025 :83e50000 :00a31820 :23ff2004 :03e2082c :1420ffec :54000000 :23bdfff8 :3c050000 :24a52000 :afa50000 :306100ff :afa10004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

option1/lab4_2/execs/userprog.dlx.obj

start:00001000 00002070 00001000 00000bf8 00002000 00000070 00002000:54657374 :696e6720 :63617365 :2025640a :00 00002014:0a557361 :67653a20 :00 00002020:205b6361 :73652069 :645d0a00 0000202c:75736572 :70726f67 :312e646c :782e6f62 :6a00 00002040:75736572 :70726f67 :322e646c :782e6f62 :6a00 00002054:54657374 :20636173 :65202564 :206e6f74 :20737570 :706f7274 :65640a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :8fc20000 :8fc30004 :0c000bd0 :54000000 :60410002 :10200050 :54000000 :23bdfff0 :8c630004 :afa30000 :20040000 :afa40004 :2004000a :afa40008 :0c0008b4 :54000000 :00011020 :3c040000 :24842000 :afa40000 :afa20004 :0c000134 :54000000 :23bd0010 :08000048 :54000000 :23bdfff8 :3c040000 :24842014 :afa40000 :0c000110 :54000000 :8c630000 :afa30000 :0c000100 :54000000 :3c040000 :24842020 :afa40000 :0c0000ec :54000000 :0c000b28 :54000000 :60410001 :14200018 :54000000 :60410002 :1020005c :54000000 :0800002c :54000000 :23bdfff8 :3c040000 :2484202c :afa40000 :20040000 :afa40004 :0c0000bc :54000000 :08000048 :54000000 :23bdfff8 :3c040000 :24842040 :afa40000 :20040000 :afa40004 :0c000094 :54000000 :08000020 :54000000 :23bdfff8 :3c040000 :24842054 :afa40000 :afa20004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

option1/lab4_2/execs/userprog2.dlx.obj

start:00001000 0000201a 00001000 00000b40 00002000 0000001a 00002000:0a496e20 :55736572 :70726f67 :322c2053 :756d203a :2025640a :0a00 00001000:afbefffc :001df020 :afbffff8 :2fbd9c48 :0c000b24 :54000000 :20040000 :20020001 :3c05ffff :24a563c0 :23dffff8 :27e39c3c :03e50820 :ac220000 :20420001 :23ff07d0 :03e3082c :1420ffe8 :54000000 :3c03ffff :246363c0 :23dffff8 :27e29c3c :03e30820 :8c210000 :00812020 :23ff07d0 :03e2082c :1420ffe8 :54000000 :23bdfff8 :3c060000 :24c62000 :afa60000 :afa40004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

option1/lab4_1/dlxsim.cc

option1/lab4_1/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  This file contains the routines that manage higher-level
//  functionality.  Instruction execution is in a separate file.
//

/* Copyright (c) 1999-2004 by Ethan L. Miller

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.
*/

static   char  rcsid []   =
     "$Id: dlxsim.cc,v 1.16 2004/10/01 18:43:40 elm Exp $" ;
char  rcsDlxsimDate []   =   "$Date: 2004/10/01 18:43:40 $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   < time . h >
#include   < signal . h >
#include   < fcntl . h >
#include   "dlx.h"
#include   "dlx-inlines.h"

extern   int  errno ;
char  debug [ 100 ];
//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu ( int  msize ) : debugger ( NULL )
{
     int  i ;
     struct  timeval t ;

    flags  =   0 ;
    usElapsed  =   0 ;
    tickCounter  =   0 ;
    instrsExecuted  =   0 ;
    instPerUs  =   1 ;
     for   ( =   0 ;  i  <   32 ;  i ++ )   {
        sreg [ i ]   =   0 ;
        ireg [ i ]   =   0 ;
        freg [ i ]   =   0 ;
     }
     SetStatusBit ( DLX_STATUS_PAGE_TABLE );
     SetStatusBit ( DLX_STATUS_SYSMODE );
     EnableInterrupts ();
    timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
    memSize  =  msize ;
    memory  =   new  uint32 [ msize  /   sizeof ( uint32 )];
    basicBlockStart  =   1 ;          // basic block can never start at address 1!
     // Initialize the keyboard I/O stuff.
    kbdbufferedchars  =   0 ;
    kbdrpos  =  kbdwpos  =   0 ;
    kbdcounter  =   0 ;
    diskIntrTime  =   1e60 ;
     SetupRawIo ();
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =   ( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
  Cpu :: TraceFile ( char   * name )
{
     if   (( name  ==  NULL )   ||   ( ! strcmp ( name ,   "-" )))   {
        tracefp  =  stdout ;
         return   ( 1 );
     }   else   if   (( tracefp  =  fopen ( name ,   "w" ))   ==  NULL )   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int   Cpu :: CauseException ( int  excType )
{
    uint32 ivec ;

    DBPRINTF ( 't' ,   "Exception being done (cause=0x%x @ pc=0x%x).\n" ,
             excType ,  PC ()   -   4 );
    ivec  =   GetSreg ( DLX_SREG_INTRVEC );
     OutputBasicBlock ( ivec );
     if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
        fprintf ( tracefp ,   "X %x %x\n" ,  excType ,  PC ()   -   4 );
     }
     PutSreg ( DLX_SREG_CAUSE ,  excType );
     // PC has already been incremented, so decrement it first.  If this
     // is a trap or interrupt, the PC will have already been incremented
     // (if necessary) so the IAR points to the next instruction to
     // execute.
     PutSreg ( DLX_SREG_IAR ,  PC ()   -   4 );
     // Save the current status register
     PutSreg ( DLX_SREG_ISR ,   GetSreg ( DLX_SREG_STATUS ));
     // Save the current value of register 31.  This is necessary to give
     // the interrupt handler a temporary register that can be used to
     // switch to a system stack (rather than user stack)
     PutSreg ( DLX_SREG_IR31 ,   GetIreg ( 31 ));
     // Set the next instruction to be run to be the interrupt vector.
     SetPC ( ivec );
     // Set the status register to be system mode
     PutSreg ( DLX_SREG_STATUS ,
             GetSreg ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
     // Turn off interrupts
     DisableInterrupts ();
     return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
     int
     Cpu :: VaddrToPaddr ( uint32 vaddr ,  uint32  &  paddr ,  uint32 op ,
                      uint32 pteflags )
{

     if   (( vaddr  &   0x3 )   !=   0 )   {
         CauseException ( DLX_EXC_ADDRESS );
         return   ( 0 );
     }
     // For system references, physical address is the same
     // as virtual address.  Also, if no translation bits are set, physical
     // address is set to virtual address.
    paddr  =  vaddr ;
     if   ( UserMode ())   {
         // For user mode addresses, translate using 
         if   ( StatusBit ( DLX_STATUS_PAGE_TABLE ))   {
            uint32 pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
            uint32 pteaddr ;
            uint32 offsetinpage ,  entrynum ;
            uint32 pagemask ;

            DBPRINTF ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
            pt1base  =   GetSreg ( DLX_SREG_PGTBL_BASE );
            pt1pagebits  =   GetSreg ( DLX_SREG_PGTBL_BITS );
            pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
            pt1pagebits  &=   0xffff ;
            pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
            offsetinpage  =  vaddr  &  pagemask ;
             // Mask off the low bits
            vaddr  &=   ~ pagemask ;
             if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
                 GetSreg ( DLX_SREG_PGTBL_SIZE ))   {
                DBPRINTF ( 'm' ,
                          "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
                         pt1pagebits ,  pt2pagebits ,
                          GetSreg ( DLX_SREG_PGTBL_SIZE ),  entrynum );
                 CauseException ( DLX_EXC_ACCESS );
                 return   ( 0 );
             }
            pteaddr  =  pt1base  +   4   *  entrynum ;
            paddr  =   Memory ( pteaddr );
             // If the L2 page size is the same as the L1 page size, there's
             // no L2 page table!
             if   ( pt1pagebits  !=  pt2pagebits )   {
                pt2base  =  paddr ;
                 if   ( pt2base  ==   0 )   {
                    DBPRINTF ( 'm' ,
                              "No L2 table at entry %d! (base = 0x%x)\n" ,
                             entrynum ,  pt1base );
                     CauseException ( DLX_EXC_PAGEFAULT );
                     return   ( 0 );
                 }
                pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                                          (( 1   <<
                                            ( pt1pagebits  -  pt2pagebits ))   -
                                           1 ));
                paddr  =   Memory ( pteaddr );
             }
            DBPRINTF ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
             if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
                DBPRINTF ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_PAGEFAULT );
                 return   ( 0 );
             }
             if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
                 SetMemory ( pteaddr ,
                          paddr  |   ( pteflags  &
                                    ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
             }
            paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
            paddr  |=  offsetinpage ;
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
                     vaddr  |  offsetinpage ,  paddr ,
                      Memory ( paddr ),  pt1base ,  pt1pagebits ,  entrynum );
             // Fall through for address range check
         }   else   if   ( StatusBit ( DLX_STATUS_TLB ))   {
             // TLB is fully associative
             int  tlbLine ,  gotAddr  =   0 ;
            uint32 tlbVpage ,  tlbPpage ,  pageSize ,  pageMask ,  entryBits ;

            DBPRINTF ( 'm' ,   "Translating addr 0x%x with TLB.\n" ,  vaddr );
             for   ( tlbLine  =   0 ;  tlbLine  <  DLX_TLB_NENTRIES ;  tlbLine ++ )   {
                 GetTlb ( tlbLine ,  tlbVpage ,  tlbPpage );
                pageSize  =   1   <<   ( tlbPpage  &  DLX_TLB_ENTRY_PAGESIZE_MASK );
                pageMask  =   ~ ( pageSize  -   1 );
                entryBits  =  tlbVpage  &  DLX_PTE_MASK ;
                tlbVpage  &=  pageMask ;
                 if   (( vaddr  >=   ( tlbVpage  &  pageMask ))   &&
                     ( vaddr  <   ( tlbVpage  +  pageSize ))   &&
                     ( entryBits  &  DLX_PTE_VALID ))   {
                     // Got a match!
                    gotAddr  =   1 ;
                     break ;
                 }
             }
             if   ( ! gotAddr )   {
                DBPRINTF ( 'm' ,   "No TLB entry for vaddr 0x%x.\n" ,  vaddr );
                 // Cause a TLB exception if we didn't find the page
                 PutSreg ( DLX_SREG_FAULT_ADDR ,  vaddr );
                 CauseException ( DLX_EXC_TLBFAULT );
                 return   ( 0 );
             }
             AccessTlb ( tlbLine ,  DLX_PTE_REFERENCED  |
                       (( op  ==  DLX_MEM_WRITE )   ?  DLX_PTE_DIRTY  :   0 ));
            paddr  =   ( tlbPpage  &  pageMask )   |   ( vaddr  &   ~ pageMask );
            DBPRINTF ( 'm' ,
                      "0x%x => 0x%x (=%08x) using tlb entry %d (v=%08x,p=%08x)\n" ,
                     vaddr ,  paddr ,   Memory ( paddr ),  tlbLine ,  tlbVpage ,
                     tlbPpage );
             // Fall through for address range check
         }
     }
     if   (( paddr  <=  memSize )   ||   (( paddr  >=  DLX_IO_BASE )   &&
                                ( paddr  <=   ( DLX_IO_BASE  +  DLX_IO_SIZE ))))   {
         return   ( 1 );
     }   else   {
        DBPRINTF ( 't' ,   "Illegal system address: 0x%x.\n" ,  vaddr );
         CauseException ( DLX_EXC_ACCESS );
         return   ( 0 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
  Cpu :: ReadWord ( uint32 vaddr ,  uint32  &  val ,  uint32 op )
{
    uint32 paddr ;
     int  i ;
     int  done  =   0 ;

    DBPRINTF ( 'l' ,   "Trying to read virtual address: 0x%x.\n" ,  vaddr );
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
        val  =   Memory ( paddr );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_STATUS  +   ( *   0x10 ))   {
                 if   ( disk [ i ]   !=  NULL )   {
                    val  =  disk [ i ] -> GetStatus ();
                 }   else   {
                    val  =   0 ;
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
        DBPRINTF ( 'l' ,   "Trying to load special address: 0x%x.\n" ,  paddr );
         switch   ( paddr )   {
         case  DLX_KBD_NCHARSIN :
            val  =   KbdNumInChars ();
             break ;
         case  DLX_KBD_NCHARSOUT :
            val  =   KbdNumOutChars ();
             break ;
         case  DLX_KBD_GETCHAR :
            val  =   KbdGetChar ();
             break ;
         case  DLX_GETMEMSIZE :
            val  =  memSize ;
             break ;
         case  DLX_TIMER_GETTIMER :
            val  =   GetTimer ();
             break ;
         case  DLX_TIME_MICROSECONDS :
            val  =   ( int )   ( usElapsed  %   1000000L );
             break ;
         case  DLX_TIME_SECONDS :
            val  =   ( int )   ( usElapsed  /   1000000L );
             break ;
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: WriteWord ( uint32 vaddr ,  uint32 val )
{
    uint32 paddr ;
     int  done  =   0 ;
     int  i ;

     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
                      DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
         return   ( 0 );
     }
     if   ( paddr  <=  memSize )   {
         SetMemory ( paddr ,  val );
     }   else   if   (( paddr  >=  DLX_DISK_ADDR_MIN )   &&
                ( paddr  <=  DLX_DISK_ADDR_MAX ))   {
         for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
             if   ( paddr  ==  DLX_DISK_REQ  +   ( *   0x10 ))   {
                 if   (( disk [ i ]   !=  NULL ))   {
                    val  =  disk [ i ] -> StartIo ( val ,   this );
                     if   ( disk [ i ] -> FinishTime ()   <  diskIntrTime )   {
                        diskIntrTime  =  disk [ i ] -> FinishTime ();
                     }
                 }
                done  =   1 ;
                 break ;
             }
         }
         if   ( ! done )   {
            DBPRINTF ( 'x' ,   "Illegal disk address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
         }
     }   else   {
         switch   ( paddr )   {
         case  DLX_KBD_PUTCHAR :
             KbdPutChar ( val );
             break ;
         case  DLX_KBD_INTR :
             if   ( val  ==   0 )   {
                flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
             }   else   {
                flags  |=  DLX_FLAG_KBD_INTERRUPT ;
             }
             break ;
         case  DLX_TIMER_SETTIMER :
            DBPRINTF ( 'o' ,   "Setting timer to %d us.\n" ,  val );
             SetTimer ( val );
             break ;
#if   0
         case  DLX_DISK_REQUEST :
            diskReq  =  val ;
             StartDiskIo ();
             break ;
         case  DLX_DISK_BLOCK :
            diskBlock  =  val ;
             break ;
         case  DLX_DISK_ADDR :
            diskAddr  =  val ;
             break ;
#endif
         default :
            DBPRINTF ( 'x' ,   "Illegal address: 0x%x.\n" ,  paddr );
             CauseException ( DLX_EXC_ACCESS );
             break ;
         }
     }
     return   ( 1 );
}

int   Cpu :: TestWriteWord ( uint32 vaddr )
{
    uint32 paddr ;
     if   ( ! VaddrToPaddr ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
         return   ( 0 );
     }   else   {
         return   ( 1 );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void   Cpu :: Open ()
{
    uint32 name ;
     char  nameBuf [ 100 ];
     char   * tp ;
     int  accessType ;
     int  i ;

    name  =   GetParam ( 0 );
    accessType  =   GetParam ( 1 );
    DBPRINTF ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * )  memory  +  name ,
             accessType );
     switch   ( accessType )   {
     case   1 :
        tp  =   "r" ;
         break ;
     case   2 :
        tp  =   "w" ;
         break ;
     case   3 :
        tp  =   "r+" ;
         break ;
     default :
         SetResult ( 0xffffffff );
         return ;
         break ;
     }
     for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
         if   ( fp [ i ]   ==  NULL )   {
             if   ( ! CheckAddr ( name ))   {
                 SetResult ( 0xffffffff );
                 return ;
             }
            strncpy ( nameBuf ,   ( char   * )  memory  +  name ,   98 );
             // If fopen fails, it returns NULL, so it looks like no open
             // was done.
            fp [ i ]   =  fopen ( nameBuf ,  tp );
             break ;
         }
     }
     if   ( >=  DLX_MAX_FILES )   {
        i  =   - 1 ;
     }   else   if   ( fp [ i ]   ==  NULL )   {
        i  =   - errno ;
     }
    DBPRINTF ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
     SetResult ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void   Cpu :: Read ()
{
     FileIo ( DLX_FILE_READ );
}

void   Cpu :: Write ()
{
     FileIo ( DLX_FILE_WRITE );
}

void   Cpu :: FileIo ( int  kind )
{
     int  fd ;
    uint32 buf ;
     int  size ;
     int  n ;

    fd  =   GetParam ( 0 );
    buf  =   GetParam ( 1 );
    size  =   GetParam ( 2 );
    DBPRINTF ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
              ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,  fd ,  size ,  buf );
     if   ( ! CheckAddr ( buf )   ||   ( ! CheckFd ( fd )))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   ( kind  ==  DLX_FILE_WRITE )   {
        n  =  fwrite (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }   else   {
        n  =  fread (( unsigned   char   * )  memory  +  buf ,   1 ,  size ,  fp [ fd ]);
     }
     if   ( >   0 )   {
         SetResult ( n );
     }   else   if   ( feof ( fp [ fd ]))   {
         SetResult ( 0 );
     }   else   {
         SetResult ( - errno );
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void   Cpu :: Seek ()
{
     int  fd ;
     int  offset ;
     int  whence ;
     int  rv ;

    fd  =   GetParam ( 0 );
    offset  =   GetParam ( 1 );
    whence  =   GetParam ( 2 );
     if   ( ! CheckFd ( fd ))   {
         SetResult ( 0xffffffff );
         return ;
     }
     if   (( rv  =  fseek ( fp [ fd ],  offset ,  whence ))   <   0 )   {
         SetResult ( rv );
     }   else   {
         SetResult ( ftell ( fp [ fd ]));
     }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void   Cpu :: Close ()
{
     int  fd ;
    uint32 retval ;

    fd  =   GetParam ( 0 );
     if   ( ! CheckFd ( fd ))   {
        retval  =   0xffffffff ;
     }   else   {
        retval  =  fclose ( fp [ fd ]);
     }
    DBPRINTF ( 'F' ,   "Closing file %d.\n" ,  fd );
    fp [ fd ]   =  NULL ;
     SetResult ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void   Cpu :: Random ()
{
     int  n ;

    n  =  random ();
     SetResult ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void   Cpu :: Srandom ()
{
    uint32 seed ;

    seed  =   GetParam ( 0 );
    srandom ( seed );
     SetResult ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetTime
//
//  Get the current (real world) time.
//
//----------------------------------------------------------------------
void   Cpu :: GetTime ()
{
     SetResult ( time (( time_t  * )   0 ));
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32  Cpu :: GetParam ( int  p )
{
    uint32 stackPtr ;

    stackPtr  =   GetIreg ( 29 );
     return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void   Cpu :: SetResult ( uint32 r )
{
     PutIreg ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void   Cpu :: Printf ()
{
    uint32 fmtaddr ;
     char   * c ;
    uint32 args [ 10 ];
     int  nargs  =   0 ;

    fmtaddr  =   GetParam ( 0 );
     // 
     for   ( =  fmtaddr  +   ( char   * )  memory ;   * !=   '\0' ;  c ++ )   {
         if   ( * ==   '%' )   {
             // if this is a %%, skip past second %
             if   ( * ( +   1 )   ==   '%' )   {
                c ++ ;
                 continue ;
             }
             // Get the current argument off the stack
            args [ nargs ]   =   GetParam ( nargs  +   1 );
            DBPRINTF ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
                     args [ nargs ],  args [ nargs ]);
             while   ( 1 )   {
                c ++ ;
                 if   ( * ==   's' )   {
                     // If it's a string, the address is relative to the
                     // start of emulated memory.
                    args [ nargs ]   +=   ( uint32 )  memory ;
                     break ;
                 }   else   if   ( * ==   'l' )   {
                     continue ;
                 }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
                     // If it's a floating point number, it'll be passed as
                     // a double, so grab the second word also.
                    nargs  +=   1 ;
                    args [ nargs ]   =   GetParam ( nargs  +   1 );
                     break ;
                 }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
                     // If it's another formatting character, it's not
                     // a string, but we can leave the loop anyway.
                     break ;
                 }
             }
            nargs  +=   1 ;
         }
     }
    printf ( fmtaddr  +   ( char   * )  memory ,
           args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
           args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
    fflush ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void   Cpu :: Exit ()
{
     struct  timeval t ;

    printf ( "Exiting at program request.\n" );
    printf ( "Instructions executed: %.0lf\n" ,   ( double )  instrsExecuted );
    printf ( "Time simulated: %.03lf secs\n" ,   ( double )  usElapsed  /   1e6 );
    gettimeofday ( & t ,   ( struct  timezone  * )   0 );
    realElapsed  =
         (( double )  t . tv_sec  +   (( double )  t . tv_usec )   *   1e-6 )   -  realElapsed ;
    printf ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
    printf
         ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
          ( double )  instrsExecuted  *   1e-6   /  realElapsed );
     ClearRawIo ();
    exit ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int   Cpu :: ExecOne ()
{
     int  i ;
    uint32 curInst ;
    uint32 tmpPc ;
    uint32 curOp ;
    uint32 retval ;
    uint32 funcCode ;              // subcode for RRR & FP ops
     static   int  kbdIntrPending  =   0 ;

     if   ( ++ tickCounter  >=  instPerUs )   {
        tickCounter  =   0 ;
        usElapsed  +=   1 ;
        instrsExecuted  +=  instPerUs ;
     }
     // Increment PC before checking for interrupts because CauseException
     // will subtract 4 off the PC before placing the value into the IAR.
     // By incrementing here, we ensure that the current instruction is
     // the one whose address goes into the IAR.
     SetPC ( PC ()   +   4 );
     // Check for an input character.  If we got one, remember it so that
     // we can interrupt next time interrupts are enabled.
     if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
        kbdcounter  =   0 ;
        kbdIntrPending  |=   GetCharIfAvail ();
        stopnext  =   ( debugger  &&  debugger -> HasData ());
     }

     if   ( IntrLevel ()   <   8 )   {
         // Check for previous keyboard interrupt
         if   ( kbdIntrPending )   {
            DBPRINTF ( 't' ,   "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
            kbdIntrPending  =   0 ;   // Reset to no pending interrupt
             CauseException ( DLX_EXC_KBD );
             return   ( 0 );
         }   else   if   ( diskIntrTime  <  usElapsed )   {
             int  nextDisk  =   - 1 ;
            DBPRINTF ( 't' ,   "Disk interrupt at PC=0x%x, t=%.0fus\n" ,
                     PC ()   -   4 ,  usElapsed );
             CauseException ( DLX_EXC_DISK );
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  usElapsed ))   {
                    disk [ i ] -> FinishIo ( this );
                 }
             }
            diskIntrTime  =   1e60 ;
             for   ( =   0 ;  i  <  DLX_DISK_MAX_DISKS ;  i ++ )   {
                 if   (( disk [ i ]   !=  NULL )
                     &&   ( disk [ i ] -> FinishTime ()   <  diskIntrTime ))   {
                    diskIntrTime  =  disk [ i ] -> FinishTime ();
                    nextDisk  =  i ;
                 }
             }
            DBPRINTF ( 'K' ,   "Disk interrupt time (disk %d) is %g.\n" ,
                     nextDisk ,  diskIntrTime );
             return   ( 0 );
         }   else   if   ( timerInterrupt  <  usElapsed )   {
            DBPRINTF ( 't' ,
                      "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
                     PC ()   -   4 ,   ( double )  usElapsed ,
                      ( double )  timerInterrupt );
            timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
             CauseException ( DLX_EXC_TIMER );
             return   ( 0 );
         }
     }

     if   ( ! ReadWord ( PC ()   -   4 ,  curInst ,  DLX_MEM_INSTR ))   {
        DBPRINTF ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC ()   -   4 );
         return   ( 0 );
     }
    curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
    DBPRINTF ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
              ( int )  instrsExecuted  %   1000000 ,
             curInst ,  PC ()   -   4 ,  curOp ,
              ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
             DLX_ALU_FUNC_CODE_MASK );
     switch   ( curOp )   {
     case   0x00 :                    // ALU and other R-R operations
        funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
                    DLX_ALU_FUNC_CODE_MASK );
        retval  =   ( rrrInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     case   0x01 :                    // FP operations
        funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
                    DLX_FPU_FUNC_CODE_MASK );
        retval  =   ( fpInstrs [ funcCode ]. handler )   ( curInst ,   this );
         break ;
     default :
        retval  =   ( regInstrs [ curOp ]. handler )   ( curInst ,   this );
         break ;
     }
     if   ( stopnext )   {
        stopnext  =   false ;
         DebugControl ();
     }
     return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format is elf.
//  basically hands just hands control to the elf stuff
//
//----------------------------------------------------------------------


extern   "C"   {
#include   "elf.h"
     int   Cpu :: LoadMemory ( const   char   * file ,  uint32  &  startAt )   {
         Elf32_EHdr  hdr ;
        FILE  * fp ;

         if   (( fp  =  fopen ( file ,   "r" ))   ==  NULL )   {
            fprintf ( stderr ,   "Couldn't open file\n" );
             return   ( 0 );
         }

         if   ( - 1   ==  read_elfheader ( fp ,   & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to readelf header\n\n\n" );
             return   ( 0 );
         }
        startAt  =  ntohl ( hdr . e_entry );

         if   ( - 1   ==
            load_program ( fp ,   (( unsigned   char   * )   (( void   * )  memory )),
                          & hdr ))   {
            fclose ( fp );
            fprintf ( stderr ,   "Failed to load program\n\n\n" );
             return   ( 0 );
         }

        fclose ( fp );
         return   ( 1 );
     }
}


//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void   Cpu :: SetTimer ( uint32 usecs )
{
    timerInterrupt  =  usElapsed  +  usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::GetTimer
//
//----------------------------------------------------------------------
uint32  Cpu :: GetTimer ()
{
     return   (( uint32 )   ( timerInterrupt  -  usElapsed ));
}


//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32  Cpu :: KbdGetChar ()
{
    uint32 v ;

     if   ( kbdbufferedchars  ==   0 )   {
         return   ( 0 );
     }
    v  =  kbdbuffer [ kbdrpos ++ ];
    kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
    kbdbufferedchars -- ;
     return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void   Cpu :: IgnoreExit ( int  ignore )
{
    flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
     if   ( ignore )   {
        flags  |=  DLX_FLAG_IGNORE_EXIT ;
     }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void   Cpu :: OutputBasicBlockActual ()
{
     int  i ,  ninstrs ;

    ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
     // Print out the basic block information here
     if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
        fprintf ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
     }
     if   ( flags  &  DLX_TRACE_MEMORY )   {
         for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
            fprintf ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,
                    accesses [ i ]. reg ,  accesses [ i ]. addr ,  accesses [ i ]. value );
         }
     }
    naccesses  =   0 ;
}

//----------------------------------------------------------------------
//
//  Cpu::DebugControl
//
//  Hands control to the debugger
//
//----------------------------------------------------------------------
void   Cpu :: DebugControl ()
{
     if   ( debugger )
        stopnext  =  debugger -> TakeControl ();
}

option1/lab4_1/src/userprog2.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 25 4 ; Text size: 2864 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a20696e .ascii "\n in Userprog2, Sum : %d\000" 12 00002004 20557365 12 00002008 7270726f 12 0000200c 67322c20 12 00002010 53756d20 12 00002014 3a202564 12 00002018 00 13 00002019 .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 0 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 23 00001010 0c000b14 jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20030000 addi r3,r0,(#0x0)&0xff 26 0000101c 201f0000 addi r31,r0,#0 27 00001020 20027000 addi r2,r0,#28672 28 00001024 L16_LF0: 29 00001024 a05f0000 sb (r2),r31 30 00001028 20422000 addi r2,r2,#8192 31 0000102c 23ff0001 addi r31,r31,#1 32 00001030 73e1000c slei r1,r31,#12 33 00001034 1420ffec bnez r1,L16_LF0 34 00001038 54000000 nop; not filled. 35 0000103c 201f7000 addi r31,r0,#28672 36 00001040 3c040001 lhi r4,#1 37 00001044 24848000 addui r4,r4,#32768 38 00001048 03e41025 or r2,r31,r4 39 0000104c L21_LF0: 40 0000104c 83e40000 lb r4,(r31) 41 00001050 00831820 add r3,r4,r3 42 00001054 23ff2000 addi r31,r31,#8192 43 00001058 03e2082c sle r1,r31,r2 44 0000105c 1420ffec bnez r1,L21_LF0 45 00001060 54000000 nop; not filled. 46 00001064 23bdfff8 addi r29,r29,#-8 47 00001068 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 48 0000106c 24842000 addui r4,r4,(LC0_LF0)&0xffff 49 00001070 afa40000 sw (r29),r4 50 00001074 306100ff andi r1,r3,#0x00ff 51 00001078 afa10004 sw 4(r29),r1 52 0000107c 0c000058 jal _Printf 53 00001080 54000000 nop; not filled. 54 00001084 23bd0008 addi r29,r29,#8 55 00001088 0c000a90 jal _exit 56 0000108c 54000000 nop 57 00001090 .endproc _main 58 ;;; 59 ;;; Stub functions for DLX traps. 60 ;;; 61 ;;; Ethan L. Miller, 1999. Released to the public domain. 62 ;;; 63 ;;; The traps such as Open and Close 64 ;;; (note the capital letters) are for use by user programs. The traps 65 ;;; with names such as open and close (lower case) are for use by the OS. 66 ;;; 69 00001090 .align 2 71 ;;; The following are the traps to be used by user-level programs 72 ;;; 74 00001090 .align 2 75 00001090 .proc _Open 76 00001090 .global _Open 77 00001090 _Open: 78 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 79 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 80 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 81 00001090 44000213 trap #0x213 82 00001094 4be00000 jr r31 83 00001098 54000000 nop 84 0000109c .endproc _Open 86 0000109c .proc _Close 87 0000109c .global _Close 88 0000109c _Close: 89 0000109c 44000214 trap #0x214 90 000010a0 4be00000 jr r31 91 000010a4 54000000 nop 92 000010a8 .endproc _Close 94 000010a8 .proc _Read 95 000010a8 .global _Read 96 000010a8 _Read: 97 000010a8 44000210 trap #0x210 98 000010ac 4be00000 jr r31 99 000010b0 54000000 nop 100 000010b4 .endproc _Read 102 000010b4 .proc _Write 103 000010b4 .global _Write 104 000010b4 _Write: 105 000010b4 44000211 trap #0x211 106 000010b8 4be00000 jr r31 107 000010bc 54000000 nop 108 000010c0 .endproc _Write 110 000010c0 .proc _Lseek 111 000010c0 .global _Lseek 112 000010c0 _Lseek: 113 000010c0 44000212 trap #0x212 114 000010c4 4be00000 jr r31 115 000010c8 54000000 nop 116 000010cc .endproc _Lseek 118 000010cc .proc _Putchar 119 000010cc .global _Putchar 120 000010cc _Putchar: 121 000010cc 44000280 trap #0x280 122 000010d0 4be00000 jr r31 123 000010d4 54000000 nop 124 000010d8 .endproc _Putchar 126 000010d8 .proc _Printf 127 000010d8 .global _Printf 128 000010d8 _Printf: 129 000010d8 44000201 trap #0x201 130 000010dc 4be00000 jr r31 131 000010e0 54000000 nop 132 000010e4 .endproc _Printf 134 000010e4 .proc _getpid 135 000010e4 .global _getpid 136 000010e4 _getpid: 137 000010e4 44000431 trap #0x431 138 000010e8 4be00000 jr r31 139 000010ec 54000000 nop 140 000010f0 .endproc _getpid 142 000010f0 .proc _process_create 143 000010f0 .global _process_create 144 000010f0 _process_create: 145 000010f0 44000432 trap #0x432 146 000010f4 4be00000 jr r31 147 000010f8 54000000 nop 148 000010fc .endproc _process_create 151 000010fc .proc _sem_create 152 000010fc .global _sem_create 153 000010fc _sem_create: 154 000010fc 44000450 trap #0x450 155 00001100 4be00000 jr r31 156 00001104 54000000 nop 157 00001108 .endproc _sem_create 159 00001108 .proc _sem_wait 160 00001108 .global _sem_wait 161 00001108 _sem_wait: 162 00001108 44000451 trap #0x451 163 0000110c 4be00000 jr r31 164 00001110 54000000 nop 165 00001114 .endproc _sem_wait 167 00001114 .proc _sem_signal 168 00001114 .global _sem_signal 169 00001114 _sem_signal: 170 00001114 44000452 trap #0x452 171 00001118 4be00000 jr r31 172 0000111c 54000000 nop 173 00001120 .endproc _sem_signal 176 ; Compiled by GCC 178 00001120 .align 2 179 00001120 .proc _isspace 180 00001120 .global _isspace 181 00001120 _isspace: 182 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 183 00001120 afbefffc sw -4(r29),r30; push fp 184 00001124 001df020 add r30,r0,r29; fp = sp 185 00001128 afbffff8 sw -8(r29),r31; push ret addr 186 0000112c 2fbd0010 subui r29,r29,#16; alloc local storage 187 00001130 afa20000 sw 0(r29),r2 188 00001134 83c20003 lb r2,3(r30) 189 00001138 201f0000 addi r31,r0,#0 190 0000113c 304100ff andi r1,r2,#0x00ff 191 00001140 60210020 seqi r1,r1,#32 192 00001144 14200018 bnez r1,L6_LF2 193 00001148 54000000 nop; not filled. 194 0000114c 2041fff7 addi r1,r2,#-9 195 00001150 302100ff andi r1,r1,#0x00ff 196 00001154 70210001 sleui r1,r1,#1 197 00001158 10200008 beqz r1,L5_LF2 198 0000115c 54000000 nop; not filled. 199 00001160 L6_LF2: 200 00001160 201f0001 addi r31,r0,#1 201 00001164 L5_LF2: 202 00001164 001f0820 add r1,r0,r31 203 00001168 8fa20000 lw r2,0(r29) 204 0000116c 8fdffff8 lw r31,-8(r30) 205 00001170 001ee820 add r29,r0,r30 206 00001174 8fdefffc lw r30,-4(r30) 207 00001178 4be00000 jr r31 208 0000117c 54000000 nop 209 00001180 .endproc _isspace 210 00001180 .align 2 211 00001180 .proc _isxdigit 212 00001180 .global _isxdigit 213 00001180 _isxdigit: 214 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 215 00001180 afbefffc sw -4(r29),r30; push fp 216 00001184 001df020 add r30,r0,r29; fp = sp 217 00001188 afbffff8 sw -8(r29),r31; push ret addr 218 0000118c 2fbd0010 subui r29,r29,#16; alloc local storage 219 00001190 afa20000 sw 0(r29),r2 220 00001194 83df0003 lb r31,3(r30) 221 00001198 20020000 addi r2,r0,#0 222 0000119c 23e1ffd0 addi r1,r31,#-48 223 000011a0 302100ff andi r1,r1,#0x00ff 224 000011a4 70210009 sleui r1,r1,#9 225 000011a8 14200028 bnez r1,L12_LF2 226 000011ac 54000000 nop; not filled. 227 000011b0 23e1ff9f addi r1,r31,#-97 228 000011b4 302100ff andi r1,r1,#0x00ff 229 000011b8 70210005 sleui r1,r1,#5 230 000011bc 14200014 bnez r1,L12_LF2 231 000011c0 54000000 nop; not filled. 232 000011c4 33e100ff andi r1,r31,#0x00ff 233 000011c8 64210041 snei r1,r1,#65 234 000011cc 14200008 bnez r1,L11_LF2 235 000011d0 54000000 nop; not filled. 236 000011d4 L12_LF2: 237 000011d4 20020001 addi r2,r0,#1 238 000011d8 L11_LF2: 239 000011d8 00020820 add r1,r0,r2 240 000011dc 8fa20000 lw r2,0(r29) 241 000011e0 8fdffff8 lw r31,-8(r30) 242 000011e4 001ee820 add r29,r0,r30 243 000011e8 8fdefffc lw r30,-4(r30) 244 000011ec 4be00000 jr r31 245 000011f0 54000000 nop 246 000011f4 .endproc _isxdigit 247 000011f4 .align 2 248 000011f4 .proc _dstrcpy 249 000011f4 .global _dstrcpy 250 000011f4 _dstrcpy: 251 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 252 000011f4 afbefffc sw -4(r29),r30; push fp 253 000011f8 001df020 add r30,r0,r29; fp = sp 254 000011fc afbffff8 sw -8(r29),r31; push ret addr 255 00001200 2fbd0010 subui r29,r29,#16; alloc local storage 256 00001204 afa20000 sw 0(r29),r2 257 00001208 afa30004 sw 4(r29),r3 258 0000120c 8fdf0000 lw r31,(r30) 259 00001210 8fc20004 lw r2,4(r30) 260 00001214 001f1820 add r3,r0,r31 261 00001218 L19_LF2: 262 00001218 80410000 lb r1,(r2) 263 0000121c a3e10000 sb (r31),r1 264 00001220 20420001 addi r2,r2,#1 265 00001224 23ff0001 addi r31,r31,#1 266 00001228 302100ff andi r1,r1,#0x00ff 267 0000122c 64210000 snei r1,r1,#0 268 00001230 1420ffe4 bnez r1,L19_LF2 269 00001234 54000000 nop; not filled. 270 00001238 00030820 add r1,r0,r3 271 0000123c 8fa20000 lw r2,0(r29) 272 00001240 8fa30004 lw r3,4(r29) 273 00001244 8fdffff8 lw r31,-8(r30) 274 00001248 001ee820 add r29,r0,r30 275 0000124c 8fdefffc lw r30,-4(r30) 276 00001250 4be00000 jr r31 277 00001254 54000000 nop 278 00001258 .endproc _dstrcpy 279 00001258 .align 2 280 00001258 .proc _dstrncpy 281 00001258 .global _dstrncpy 282 00001258 _dstrncpy: 283 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 284 00001258 afbefffc sw -4(r29),r30; push fp 285 0000125c 001df020 add r30,r0,r29; fp = sp 286 00001260 afbffff8 sw -8(r29),r31; push ret addr 287 00001264 2fbd0018 subui r29,r29,#24; alloc local storage 288 00001268 afa20000 sw 0(r29),r2 289 0000126c afa30004 sw 4(r29),r3 290 00001270 afa40008 sw 8(r29),r4 291 00001274 8fc20000 lw r2,(r30) 292 00001278 8fc30004 lw r3,4(r30) 293 0000127c 8fdf0008 lw r31,8(r30) 294 00001280 00022020 add r4,r0,r2 295 00001284 08000024 j L37_LF2 296 00001288 54000000 nop; not filled. 297 0000128c L34_LF2: 298 0000128c 80610000 lb r1,(r3) 299 00001290 a0410000 sb (r2),r1 300 00001294 20630001 addi r3,r3,#1 301 00001298 20420001 addi r2,r2,#1 302 0000129c 302100ff andi r1,r1,#0x00ff 303 000012a0 64210000 snei r1,r1,#0 304 000012a4 10200018 beqz r1,L32_LF2 305 000012a8 54000000 nop; not filled. 306 000012ac L37_LF2: 307 000012ac 001f0820 add r1,r0,r31 308 000012b0 23ffffff addi r31,r31,#-1 309 000012b4 70210000 slei r1,r1,#0 310 000012b8 1020ffd0 beqz r1,L34_LF2 311 000012bc 54000000 nop; not filled. 312 000012c0 L32_LF2: 313 000012c0 00040820 add r1,r0,r4 314 000012c4 8fa20000 lw r2,0(r29) 315 000012c8 8fa30004 lw r3,4(r29) 316 000012cc 8fa40008 lw r4,8(r29) 317 000012d0 8fdffff8 lw r31,-8(r30) 318 000012d4 001ee820 add r29,r0,r30 319 000012d8 8fdefffc lw r30,-4(r30) 320 000012dc 4be00000 jr r31 321 000012e0 54000000 nop 322 000012e4 .endproc _dstrncpy 323 000012e4 .align 2 324 000012e4 .proc _dstrcat 325 000012e4 .global _dstrcat 326 000012e4 _dstrcat: 327 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 328 000012e4 afbefffc sw -4(r29),r30; push fp 329 000012e8 001df020 add r30,r0,r29; fp = sp 330 000012ec afbffff8 sw -8(r29),r31; push ret addr 331 000012f0 2fbd0010 subui r29,r29,#16; alloc local storage 332 000012f4 afa20000 sw 0(r29),r2 333 000012f8 afa30004 sw 4(r29),r3 334 000012fc 8fdf0000 lw r31,(r30) 335 00001300 001f1820 add r3,r0,r31 336 00001304 90610000 lbu r1,(r3) 337 00001308 64210000 snei r1,r1,#0 338 0000130c 10200018 beqz r1,L50_LF2 339 00001310 54000000 nop; not filled. 340 00001314 L51_LF2: 341 00001314 23ff0001 addi r31,r31,#1 342 00001318 93e10000 lbu r1,(r31) 343 0000131c 64210000 snei r1,r1,#0 344 00001320 1420fff0 bnez r1,L51_LF2 345 00001324 54000000 nop; not filled. 346 00001328 L50_LF2: 347 00001328 001f1020 add r2,r0,r31 348 0000132c 8fdf0004 lw r31,4(r30) 349 00001330 L54_LF2: 350 00001330 83e10000 lb r1,(r31) 351 00001334 a0410000 sb (r2),r1 352 00001338 23ff0001 addi r31,r31,#1 353 0000133c 20420001 addi r2,r2,#1 354 00001340 302100ff andi r1,r1,#0x00ff 355 00001344 64210000 snei r1,r1,#0 356 00001348 1420ffe4 bnez r1,L54_LF2 357 0000134c 54000000 nop; not filled. 358 00001350 00030820 add r1,r0,r3 359 00001354 8fa20000 lw r2,0(r29) 360 00001358 8fa30004 lw r3,4(r29) 361 0000135c 8fdffff8 lw r31,-8(r30) 362 00001360 001ee820 add r29,r0,r30 363 00001364 8fdefffc lw r30,-4(r30) 364 00001368 4be00000 jr r31 365 0000136c 54000000 nop 366 00001370 .endproc _dstrcat 367 00001370 .align 2 368 00001370 .proc _dstrncmp 369 00001370 .global _dstrncmp 370 00001370 _dstrncmp: 371 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 372 00001370 afbefffc sw -4(r29),r30; push fp 373 00001374 001df020 add r30,r0,r29; fp = sp 374 00001378 afbffff8 sw -8(r29),r31; push ret addr 375 0000137c 2fbd0018 subui r29,r29,#24; alloc local storage 376 00001380 afa20000 sw 0(r29),r2 377 00001384 afa30004 sw 4(r29),r3 378 00001388 afa40008 sw 8(r29),r4 379 0000138c afa5000c sw 12(r29),r5 380 00001390 8fc30000 lw r3,(r30) 381 00001394 8fc40004 lw r4,4(r30) 382 00001398 8fc50008 lw r5,8(r30) 383 0000139c 20020000 addi r2,r0,#0 384 000013a0 0045082a slt r1,r2,r5 385 000013a4 1020003c beqz r1,L73_LF2 386 000013a8 54000000 nop; not filled. 387 000013ac L75_LF2: 388 000013ac 909f0000 lbu r31,(r4) 389 000013b0 67e10000 snei r1,r31,#0 390 000013b4 10200038 beqz r1,L86_LF2 391 000013b8 54000000 nop; not filled. 392 000013bc 90610000 lbu r1,(r3) 393 000013c0 003f0829 sne r1,r1,r31 394 000013c4 1420001c bnez r1,L73_LF2 395 000013c8 54000000 nop; not filled. 396 000013cc 20630001 addi r3,r3,#1 397 000013d0 20840001 addi r4,r4,#1 398 000013d4 20420001 addi r2,r2,#1 399 000013d8 0045082a slt r1,r2,r5 400 000013dc 1420ffcc bnez r1,L75_LF2 401 000013e0 54000000 nop; not filled. 402 000013e4 L73_LF2: 403 000013e4 00450828 seq r1,r2,r5 404 000013e8 10200010 beqz r1,L80_LF2 405 000013ec 54000000 nop; not filled. 406 000013f0 L86_LF2: 407 000013f0 20010000 addi r1,r0,#0 408 000013f4 08000028 j L84_LF2 409 000013f8 54000000 nop; not filled. 410 000013fc L80_LF2: 411 000013fc 907f0000 lbu r31,(r3) 412 00001400 90830000 lbu r3,(r4) 413 00001404 03e30822 sub r1,r31,r3 414 00001408 74210000 sgei r1,r1,#0 415 0000140c 2002ffff addi r2,r0,#-1 416 00001410 10200008 beqz r1,L82_LF2 417 00001414 54000000 nop; not filled. 418 00001418 03e31029 sne r2,r31,r3 419 0000141c L82_LF2: 420 0000141c 00020820 add r1,r0,r2 421 00001420 L84_LF2: 422 00001420 8fa20000 lw r2,0(r29) 423 00001424 8fa30004 lw r3,4(r29) 424 00001428 8fa40008 lw r4,8(r29) 425 0000142c 8fa5000c lw r5,12(r29) 426 00001430 8fdffff8 lw r31,-8(r30) 427 00001434 001ee820 add r29,r0,r30 428 00001438 8fdefffc lw r30,-4(r30) 429 0000143c 4be00000 jr r31 430 00001440 54000000 nop 431 00001444 .endproc _dstrncmp 432 00001444 .align 2 433 00001444 .proc _dstrlen 434 00001444 .global _dstrlen 435 00001444 _dstrlen: 436 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 437 00001444 afbefffc sw -4(r29),r30; push fp 438 00001448 001df020 add r30,r0,r29; fp = sp 439 0000144c afbffff8 sw -8(r29),r31; push ret addr 440 00001450 2fbd0010 subui r29,r29,#16; alloc local storage 441 00001454 afa20000 sw 0(r29),r2 442 00001458 8fdf0000 lw r31,(r30) 443 0000145c 20020000 addi r2,r0,#0 444 00001460 08000008 j L97_LF2 445 00001464 54000000 nop; not filled. 446 00001468 L95_LF2: 447 00001468 20420001 addi r2,r2,#1 448 0000146c L97_LF2: 449 0000146c 93e10000 lbu r1,(r31) 450 00001470 23ff0001 addi r31,r31,#1 451 00001474 64210000 snei r1,r1,#0 452 00001478 1420ffec bnez r1,L95_LF2 453 0000147c 54000000 nop; not filled. 454 00001480 00020820 add r1,r0,r2 455 00001484 8fa20000 lw r2,0(r29) 456 00001488 8fdffff8 lw r31,-8(r30) 457 0000148c 001ee820 add r29,r0,r30 458 00001490 8fdefffc lw r30,-4(r30) 459 00001494 4be00000 jr r31 460 00001498 54000000 nop 461 0000149c .endproc _dstrlen 462 0000149c .align 2 463 0000149c .proc _dstrstr 464 0000149c .global _dstrstr 465 0000149c _dstrstr: 466 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 467 0000149c afbefffc sw -4(r29),r30; push fp 468 000014a0 001df020 add r30,r0,r29; fp = sp 469 000014a4 afbffff8 sw -8(r29),r31; push ret addr 470 000014a8 2fbd0020 subui r29,r29,#32; alloc local storage 471 000014ac afa20000 sw 0(r29),r2 472 000014b0 afa30004 sw 4(r29),r3 473 000014b4 afa40008 sw 8(r29),r4 474 000014b8 afa5000c sw 12(r29),r5 475 000014bc afa60010 sw 16(r29),r6 476 000014c0 afa70014 sw 20(r29),r7 477 000014c4 8fc50000 lw r5,(r30) 478 000014c8 8fc70004 lw r7,4(r30) 479 000014cc 20030000 addi r3,r0,#0 480 000014d0 90e10000 lbu r1,(r7) 481 000014d4 20e20001 addi r2,r7,#1 482 000014d8 64210000 snei r1,r1,#0 483 000014dc 1020001c beqz r1,L125_LF2 484 000014e0 54000000 nop; not filled. 485 000014e4 L126_LF2: 486 000014e4 20630001 addi r3,r3,#1 487 000014e8 90410000 lbu r1,(r2) 488 000014ec 20420001 addi r2,r2,#1 489 000014f0 64210000 snei r1,r1,#0 490 000014f4 1420ffec bnez r1,L126_LF2 491 000014f8 54000000 nop; not filled. 492 000014fc L125_LF2: 493 000014fc 00033020 add r6,r0,r3 494 00001500 080000ac j L149_LF2 495 00001504 54000000 nop; not filled. 496 00001508 L130_LF2: 497 00001508 00051820 add r3,r0,r5 498 0000150c 00072020 add r4,r0,r7 499 00001510 20020000 addi r2,r0,#0 500 00001514 0046082a slt r1,r2,r6 501 00001518 1020003c beqz r1,L134_LF2 502 0000151c 54000000 nop; not filled. 503 00001520 L136_LF2: 504 00001520 909f0000 lbu r31,(r4) 505 00001524 67e10000 snei r1,r31,#0 506 00001528 10200038 beqz r1,L150_LF2 507 0000152c 54000000 nop; not filled. 508 00001530 90610000 lbu r1,(r3) 509 00001534 003f0829 sne r1,r1,r31 510 00001538 1420001c bnez r1,L134_LF2 511 0000153c 54000000 nop; not filled. 512 00001540 20630001 addi r3,r3,#1 513 00001544 20840001 addi r4,r4,#1 514 00001548 20420001 addi r2,r2,#1 515 0000154c 0046082a slt r1,r2,r6 516 00001550 1420ffcc bnez r1,L136_LF2 517 00001554 54000000 nop; not filled. 518 00001558 L134_LF2: 519 00001558 00460828 seq r1,r2,r6 520 0000155c 10200010 beqz r1,L141_LF2 521 00001560 54000000 nop; not filled. 522 00001564 L150_LF2: 523 00001564 20010000 addi r1,r0,#0 524 00001568 08000028 j L132_LF2 525 0000156c 54000000 nop; not filled. 526 00001570 L141_LF2: 527 00001570 90630000 lbu r3,(r3) 528 00001574 90820000 lbu r2,(r4) 529 00001578 00620822 sub r1,r3,r2 530 0000157c 74210000 sgei r1,r1,#0 531 00001580 201fffff addi r31,r0,#-1 532 00001584 10200008 beqz r1,L143_LF2 533 00001588 54000000 nop; not filled. 534 0000158c 0062f829 sne r31,r3,r2 535 00001590 L143_LF2: 536 00001590 001f0820 add r1,r0,r31 537 00001594 L132_LF2: 538 00001594 64210000 snei r1,r1,#0 539 00001598 14200010 bnez r1,L131_LF2 540 0000159c 54000000 nop; not filled. 541 000015a0 00050820 add r1,r0,r5 542 000015a4 0800001c j L146_LF2 543 000015a8 54000000 nop; not filled. 544 000015ac L131_LF2: 545 000015ac 20a50001 addi r5,r5,#1 546 000015b0 L149_LF2: 547 000015b0 90a10000 lbu r1,(r5) 548 000015b4 64210000 snei r1,r1,#0 549 000015b8 1420ff4c bnez r1,L130_LF2 550 000015bc 54000000 nop; not filled. 551 000015c0 20010000 addi r1,r0,#0 552 000015c4 L146_LF2: 553 000015c4 8fa20000 lw r2,0(r29) 554 000015c8 8fa30004 lw r3,4(r29) 555 000015cc 8fa40008 lw r4,8(r29) 556 000015d0 8fa5000c lw r5,12(r29) 557 000015d4 8fa60010 lw r6,16(r29) 558 000015d8 8fa70014 lw r7,20(r29) 559 000015dc 8fdffff8 lw r31,-8(r30) 560 000015e0 001ee820 add r29,r0,r30 561 000015e4 8fdefffc lw r30,-4(r30) 562 000015e8 4be00000 jr r31 563 000015ec 54000000 nop 564 000015f0 .endproc _dstrstr 565 000015f0 .align 2 566 000015f0 .proc _dmindex 567 000015f0 .global _dmindex 568 000015f0 _dmindex: 569 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 570 000015f0 afbefffc sw -4(r29),r30; push fp 571 000015f4 001df020 add r30,r0,r29; fp = sp 572 000015f8 afbffff8 sw -8(r29),r31; push ret addr 573 000015fc 2fbd0020 subui r29,r29,#32; alloc local storage 574 00001600 afa20000 sw 0(r29),r2 575 00001604 afa30004 sw 4(r29),r3 576 00001608 afa40008 sw 8(r29),r4 577 0000160c afa5000c sw 12(r29),r5 578 00001610 afa60010 sw 16(r29),r6 579 00001614 8fc40000 lw r4,(r30) 580 00001618 8fc60004 lw r6,4(r30) 581 0000161c 90810000 lbu r1,(r4) 582 00001620 64210000 snei r1,r1,#0 583 00001624 10200060 beqz r1,L164_LF2 584 00001628 54000000 nop; not filled. 585 0000162c 00012820 add r5,r0,r1 586 00001630 L165_LF2: 587 00001630 00061020 add r2,r0,r6 588 00001634 80df0000 lb r31,(r6) 589 00001638 33e100ff andi r1,r31,#0x00ff 590 0000163c 64210000 snei r1,r1,#0 591 00001640 1020003c beqz r1,L163_LF2 592 00001644 54000000 nop; not filled. 593 00001648 90830000 lbu r3,(r4) 594 0000164c L169_LF2: 595 0000164c 33e100ff andi r1,r31,#0x00ff 596 00001650 00610828 seq r1,r3,r1 597 00001654 10200010 beqz r1,L168_LF2 598 00001658 54000000 nop; not filled. 599 0000165c 00040820 add r1,r0,r4 600 00001660 08000028 j L173_LF2 601 00001664 54000000 nop; not filled. 602 00001668 L168_LF2: 603 00001668 20420001 addi r2,r2,#1 604 0000166c 805f0000 lb r31,(r2) 605 00001670 33e100ff andi r1,r31,#0x00ff 606 00001674 64210000 snei r1,r1,#0 607 00001678 1420ffd0 bnez r1,L169_LF2 608 0000167c 54000000 nop; not filled. 609 00001680 L163_LF2: 610 00001680 14a0ffac bnez r5,L165_LF2 611 00001684 54000000 nop; not filled. 612 00001688 L164_LF2: 613 00001688 20010000 addi r1,r0,#0 614 0000168c L173_LF2: 615 0000168c 8fa20000 lw r2,0(r29) 616 00001690 8fa30004 lw r3,4(r29) 617 00001694 8fa40008 lw r4,8(r29) 618 00001698 8fa5000c lw r5,12(r29) 619 0000169c 8fa60010 lw r6,16(r29) 620 000016a0 8fdffff8 lw r31,-8(r30) 621 000016a4 001ee820 add r29,r0,r30 622 000016a8 8fdefffc lw r30,-4(r30) 623 000016ac 4be00000 jr r31 624 000016b0 54000000 nop 625 000016b4 .endproc _dmindex 626 000016b4 .align 2 627 000016b4 .proc _dindex 628 000016b4 .global _dindex 629 000016b4 _dindex: 630 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 631 000016b4 afbefffc sw -4(r29),r30; push fp 632 000016b8 001df020 add r30,r0,r29; fp = sp 633 000016bc afbffff8 sw -8(r29),r31; push ret addr 634 000016c0 2fbd0010 subui r29,r29,#16; alloc local storage 635 000016c4 afa20000 sw 0(r29),r2 636 000016c8 afa30004 sw 4(r29),r3 637 000016cc 8fc20000 lw r2,(r30) 638 000016d0 8fc30004 lw r3,4(r30) 639 000016d4 08000024 j L187_LF2 640 000016d8 54000000 nop; not filled. 641 000016dc L183_LF2: 642 000016dc 33e100ff andi r1,r31,#0x00ff 643 000016e0 00230828 seq r1,r1,r3 644 000016e4 10200010 beqz r1,L184_LF2 645 000016e8 54000000 nop; not filled. 646 000016ec 00020820 add r1,r0,r2 647 000016f0 08000020 j L186_LF2 648 000016f4 54000000 nop; not filled. 649 000016f8 L184_LF2: 650 000016f8 20420001 addi r2,r2,#1 651 000016fc L187_LF2: 652 000016fc 805f0000 lb r31,(r2) 653 00001700 33e100ff andi r1,r31,#0x00ff 654 00001704 64210000 snei r1,r1,#0 655 00001708 1420ffd0 bnez r1,L183_LF2 656 0000170c 54000000 nop; not filled. 657 00001710 20010000 addi r1,r0,#0 658 00001714 L186_LF2: 659 00001714 8fa20000 lw r2,0(r29) 660 00001718 8fa30004 lw r3,4(r29) 661 0000171c 8fdffff8 lw r31,-8(r30) 662 00001720 001ee820 add r29,r0,r30 663 00001724 8fdefffc lw r30,-4(r30) 664 00001728 4be00000 jr r31 665 0000172c 54000000 nop 666 00001730 .endproc _dindex 667 00001730 .align 2 668 00001730 .proc _ditoa 669 00001730 .global _ditoa 670 00001730 _ditoa: 671 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 672 00001730 afbefffc sw -4(r29),r30; push fp 673 00001734 001df020 add r30,r0,r29; fp = sp 674 00001738 afbffff8 sw -8(r29),r31; push ret addr 675 0000173c 2fbd0020 subui r29,r29,#32; alloc local storage 676 00001740 afa20000 sw 0(r29),r2 677 00001744 afa30004 sw 4(r29),r3 678 00001748 afa40008 sw 8(r29),r4 679 0000174c afa5000c sw 12(r29),r5 680 00001750 afa60010 sw 16(r29),r6 681 00001754 8fc30000 lw r3,(r30) 682 00001758 8fc40004 lw r4,4(r30) 683 0000175c 68610000 slti r1,r3,#0 684 00001760 10200010 beqz r1,L203_LF2 685 00001764 54000000 nop; not filled. 686 00001768 2006002d addi r6,r0,(#0x2d)&0xff 687 0000176c 08000014 j L216_LF2 688 00001770 54000000 nop; not filled. 689 00001774 L203_LF2: 690 00001774 64610000 snei r1,r3,#0 691 00001778 14200018 bnez r1,L205_LF2 692 0000177c 54000000 nop; not filled. 693 00001780 20060030 addi r6,r0,(#0x30)&0xff 694 00001784 L216_LF2: 695 00001784 a0860000 sb (r4),r6 696 00001788 20840001 addi r4,r4,#1 697 0000178c 0800007c j L204_LF2 698 00001790 54000000 nop; not filled. 699 00001794 L205_LF2: 700 00001794 201f0001 addi r31,r0,#1 701 00001798 03e3082c sle r1,r31,r3 702 0000179c 1020001c beqz r1,L208_LF2 703 000017a0 54000000 nop; not filled. 704 000017a4 L209_LF2: 705 000017a4 53e10002 slli r1,r31,#0x2 706 000017a8 003f0820 add r1,r1,r31 707 000017ac 503f0001 slli r31,r1,#0x1 708 000017b0 03e3082c sle r1,r31,r3 709 000017b4 1420ffec bnez r1,L209_LF2 710 000017b8 54000000 nop; not filled. 711 000017bc L208_LF2: 712 000017bc 2005000a addi r5,r0,#10 713 000017c0 L212_LF2: 714 000017c0 03e00035 movi2fp f0,r31 715 000017c4 00a00835 movi2fp f1,r5 716 000017c8 0401000f div f0,f0,f1 717 000017cc 0000f834 movfp2i r31,f0 718 000017d0 00600035 movi2fp f0,r3 719 000017d4 03e00835 movi2fp f1,r31 720 000017d8 0401000f div f0,f0,f1 721 000017dc 00001034 movfp2i r2,f0 722 000017e0 20410030 addi r1,r2,#48 723 000017e4 a0810000 sb (r4),r1 724 000017e8 20840001 addi r4,r4,#1 725 000017ec 00400035 movi2fp f0,r2 726 000017f0 03e00835 movi2fp f1,r31 727 000017f4 0401000e mult f0,f0,f1 728 000017f8 00000834 movfp2i r1,f0 729 000017fc 00611822 sub r3,r3,r1 730 00001800 6fe10001 sgti r1,r31,#1 731 00001804 1420ffb8 bnez r1,L212_LF2 732 00001808 54000000 nop; not filled. 733 0000180c L204_LF2: 734 0000180c 20060000 addi r6,r0,(#0x0)&0xff 735 00001810 a0860000 sb (r4),r6 736 00001814 8fa20000 lw r2,0(r29) 737 00001818 8fa30004 lw r3,4(r29) 738 0000181c 8fa40008 lw r4,8(r29) 739 00001820 8fa5000c lw r5,12(r29) 740 00001824 8fa60010 lw r6,16(r29) 741 00001828 8fdffff8 lw r31,-8(r30) 742 0000182c 001ee820 add r29,r0,r30 743 00001830 8fdefffc lw r30,-4(r30) 744 00001834 4be00000 jr r31 745 00001838 54000000 nop 746 0000183c .endproc _ditoa 747 0000183c .align 2 748 0000183c .proc _dstrtol 749 0000183c .global _dstrtol 750 0000183c _dstrtol: 751 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 752 0000183c afbefffc sw -4(r29),r30; push fp 753 00001840 001df020 add r30,r0,r29; fp = sp 754 00001844 afbffff8 sw -8(r29),r31; push ret addr 755 00001848 2fbd0020 subui r29,r29,#32; alloc local storage 756 0000184c afa20000 sw 0(r29),r2 757 00001850 afa30004 sw 4(r29),r3 758 00001854 afa40008 sw 8(r29),r4 759 00001858 afa5000c sw 12(r29),r5 760 0000185c afa60010 sw 16(r29),r6 761 00001860 8fc20000 lw r2,(r30) 762 00001864 8fc50004 lw r5,4(r30) 763 00001868 8fc40008 lw r4,8(r30) 764 0000186c 20030000 addi r3,r0,#0 765 00001870 08000008 j L247_LF2 766 00001874 54000000 nop; not filled. 767 00001878 L220_LF2: 768 00001878 20420001 addi r2,r2,#1 769 0000187c L247_LF2: 770 0000187c 805f0000 lb r31,(r2) 771 00001880 33e100ff andi r1,r31,#0x00ff 772 00001884 60210020 seqi r1,r1,#32 773 00001888 1420ffec bnez r1,L220_LF2 774 0000188c 54000000 nop; not filled. 775 00001890 23e1fff7 addi r1,r31,#-9 776 00001894 302100ff andi r1,r1,#0x00ff 777 00001898 70210001 sleui r1,r1,#1 778 0000189c 1420ffd8 bnez r1,L220_LF2 779 000018a0 54000000 nop; not filled. 780 000018a4 64a10000 snei r1,r5,#0 781 000018a8 10200008 beqz r1,L222_LF2 782 000018ac 54000000 nop; not filled. 783 000018b0 aca20000 sw (r5),r2 784 000018b4 L222_LF2: 785 000018b4 905f0000 lbu r31,(r2) 786 000018b8 67e10000 snei r1,r31,#0 787 000018bc 10200090 beqz r1,L248_LF2 788 000018c0 54000000 nop; not filled. 789 000018c4 63e1002d seqi r1,r31,#45 790 000018c8 10200014 beqz r1,L224_LF2 791 000018cc 54000000 nop; not filled. 792 000018d0 2006ffff addi r6,r0,#-1 793 000018d4 20420001 addi r2,r2,#1 794 000018d8 08000008 j L225_LF2 795 000018dc 54000000 nop; not filled. 796 000018e0 L224_LF2: 797 000018e0 20060001 addi r6,r0,#1 798 000018e4 L225_LF2: 799 000018e4 64810000 snei r1,r4,#0 800 000018e8 14200054 bnez r1,L226_LF2 801 000018ec 54000000 nop; not filled. 802 000018f0 90410000 lbu r1,(r2) 803 000018f4 60210030 seqi r1,r1,#48 804 000018f8 10200040 beqz r1,L227_LF2 805 000018fc 54000000 nop; not filled. 806 00001900 20420001 addi r2,r2,#1 807 00001904 905f0000 lbu r31,(r2) 808 00001908 63e10078 seqi r1,r31,#120 809 0000190c 14200010 bnez r1,L229_LF2 810 00001910 54000000 nop; not filled. 811 00001914 63e10058 seqi r1,r31,#88 812 00001918 10200014 beqz r1,L228_LF2 813 0000191c 54000000 nop; not filled. 814 00001920 L229_LF2: 815 00001920 20040010 addi r4,r0,#16 816 00001924 20420001 addi r2,r2,#1 817 00001928 08000014 j L226_LF2 818 0000192c 54000000 nop; not filled. 819 00001930 L228_LF2: 820 00001930 20040008 addi r4,r0,#8 821 00001934 08000008 j L226_LF2 822 00001938 54000000 nop; not filled. 823 0000193c L227_LF2: 824 0000193c 2004000a addi r4,r0,#10 825 00001940 L226_LF2: 826 00001940 2081ffff addi r1,r4,#-1 827 00001944 6c21000f sgtui r1,r1,#15 828 00001948 10200010 beqz r1,L233_LF2 829 0000194c 54000000 nop; not filled. 830 00001950 L248_LF2: 831 00001950 00030820 add r1,r0,r3 832 00001954 080000c4 j L245_LF2 833 00001958 54000000 nop; not filled. 834 0000195c L233_LF2: 835 0000195c 805f0000 lb r31,(r2) 836 00001960 23e1ffd0 addi r1,r31,#-48 837 00001964 302100ff andi r1,r1,#0x00ff 838 00001968 70210009 sleui r1,r1,#9 839 0000196c 10200014 beqz r1,L236_LF2 840 00001970 54000000 nop; not filled. 841 00001974 33e100ff andi r1,r31,#0x00ff 842 00001978 2021ffd0 addi r1,r1,#-48 843 0000197c 08000050 j L237_LF2 844 00001980 54000000 nop; not filled. 845 00001984 L236_LF2: 846 00001984 23e1ff9f addi r1,r31,#-97 847 00001988 302100ff andi r1,r1,#0x00ff 848 0000198c 70210019 sleui r1,r1,#25 849 00001990 10200014 beqz r1,L238_LF2 850 00001994 54000000 nop; not filled. 851 00001998 33e100ff andi r1,r31,#0x00ff 852 0000199c 2021ffa9 addi r1,r1,#-87 853 000019a0 0800002c j L237_LF2 854 000019a4 54000000 nop; not filled. 855 000019a8 L238_LF2: 856 000019a8 23e1ffbf addi r1,r31,#-65 857 000019ac 302100ff andi r1,r1,#0x00ff 858 000019b0 70210019 sleui r1,r1,#25 859 000019b4 10200014 beqz r1,L240_LF2 860 000019b8 54000000 nop; not filled. 861 000019bc 33e100ff andi r1,r31,#0x00ff 862 000019c0 2021ffc9 addi r1,r1,#-55 863 000019c4 08000008 j L237_LF2 864 000019c8 54000000 nop; not filled. 865 000019cc L240_LF2: 866 000019cc 200103e8 addi r1,r0,#1000 867 000019d0 L237_LF2: 868 000019d0 0024f82a slt r31,r1,r4 869 000019d4 13e00024 beqz r31,L246_LF2 870 000019d8 54000000 nop; not filled. 871 000019dc 00600035 movi2fp f0,r3 872 000019e0 00800835 movi2fp f1,r4 873 000019e4 0401000e mult f0,f0,f1 874 000019e8 00001834 movfp2i r3,f0 875 000019ec 00611820 add r3,r3,r1 876 000019f0 20420001 addi r2,r2,#1 877 000019f4 17e0ff64 bnez r31,L233_LF2 878 000019f8 54000000 nop; not filled. 879 000019fc L246_LF2: 880 000019fc 64a10000 snei r1,r5,#0 881 00001a00 10200008 beqz r1,L244_LF2 882 00001a04 54000000 nop; not filled. 883 00001a08 aca20000 sw (r5),r2 884 00001a0c L244_LF2: 885 00001a0c 00600035 movi2fp f0,r3 886 00001a10 00c00835 movi2fp f1,r6 887 00001a14 0401000e mult f0,f0,f1 888 00001a18 00000834 movfp2i r1,f0 889 00001a1c L245_LF2: 890 00001a1c 8fa20000 lw r2,0(r29) 891 00001a20 8fa30004 lw r3,4(r29) 892 00001a24 8fa40008 lw r4,8(r29) 893 00001a28 8fa5000c lw r5,12(r29) 894 00001a2c 8fa60010 lw r6,16(r29) 895 00001a30 8fdffff8 lw r31,-8(r30) 896 00001a34 001ee820 add r29,r0,r30 897 00001a38 8fdefffc lw r30,-4(r30) 898 00001a3c 4be00000 jr r31 899 00001a40 54000000 nop 900 00001a44 .endproc _dstrtol 901 00001a44 .align 2 902 00001a44 .proc _bcopy 903 00001a44 .global _bcopy 904 00001a44 _bcopy: 905 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 906 00001a44 afbefffc sw -4(r29),r30; push fp 907 00001a48 001df020 add r30,r0,r29; fp = sp 908 00001a4c afbffff8 sw -8(r29),r31; push ret addr 909 00001a50 2fbd0018 subui r29,r29,#24; alloc local storage 910 00001a54 afa20000 sw 0(r29),r2 911 00001a58 afa30004 sw 4(r29),r3 912 00001a5c afa40008 sw 8(r29),r4 913 00001a60 8fc30000 lw r3,(r30) 914 00001a64 8fc20004 lw r2,4(r30) 915 00001a68 8fdf0008 lw r31,8(r30) 916 00001a6c 08000014 j L259_LF2 917 00001a70 54000000 nop; not filled. 918 00001a74 L257_LF2: 919 00001a74 80640000 lb r4,(r3) 920 00001a78 a0440000 sb (r2),r4 921 00001a7c 20630001 addi r3,r3,#1 922 00001a80 20420001 addi r2,r2,#1 923 00001a84 L259_LF2: 924 00001a84 001f0820 add r1,r0,r31 925 00001a88 23ffffff addi r31,r31,#-1 926 00001a8c 6c210000 sgti r1,r1,#0 927 00001a90 1420ffe0 bnez r1,L257_LF2 928 00001a94 54000000 nop; not filled. 929 00001a98 8fa20000 lw r2,0(r29) 930 00001a9c 8fa30004 lw r3,4(r29) 931 00001aa0 8fa40008 lw r4,8(r29) 932 00001aa4 8fdffff8 lw r31,-8(r30) 933 00001aa8 001ee820 add r29,r0,r30 934 00001aac 8fdefffc lw r30,-4(r30) 935 00001ab0 4be00000 jr r31 936 00001ab4 54000000 nop 937 00001ab8 .endproc _bcopy 938 00001ab8 .align 2 939 00001ab8 .proc _bzero 940 00001ab8 .global _bzero 941 00001ab8 _bzero: 942 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 943 00001ab8 afbefffc sw -4(r29),r30; push fp 944 00001abc 001df020 add r30,r0,r29; fp = sp 945 00001ac0 afbffff8 sw -8(r29),r31; push ret addr 946 00001ac4 2fbd0010 subui r29,r29,#16; alloc local storage 947 00001ac8 afa20000 sw 0(r29),r2 948 00001acc afa30004 sw 4(r29),r3 949 00001ad0 8fc20000 lw r2,(r30) 950 00001ad4 8fdf0004 lw r31,4(r30) 951 00001ad8 08000010 j L270_LF2 952 00001adc 54000000 nop; not filled. 953 00001ae0 L268_LF2: 954 00001ae0 20030000 addi r3,r0,(#0x0)&0xff 955 00001ae4 a0430000 sb (r2),r3 956 00001ae8 20420001 addi r2,r2,#1 957 00001aec L270_LF2: 958 00001aec 001f0820 add r1,r0,r31 959 00001af0 23ffffff addi r31,r31,#-1 960 00001af4 6c210000 sgti r1,r1,#0 961 00001af8 1420ffe4 bnez r1,L268_LF2 962 00001afc 54000000 nop; not filled. 963 00001b00 8fa20000 lw r2,0(r29) 964 00001b04 8fa30004 lw r3,4(r29) 965 00001b08 8fdffff8 lw r31,-8(r30) 966 00001b0c 001ee820 add r29,r0,r30 967 00001b10 8fdefffc lw r30,-4(r30) 968 00001b14 4be00000 jr r31 969 00001b18 54000000 nop 970 00001b1c .endproc _bzero 971 ;;; Ethan L. Miller, 1999. Released to the public domain 972 ;;; 973 ;;; Most of the traps are called in files from libtraps. 976 00001b1c .align 2 977 00001b1c .proc _exit 978 00001b1c .global _exit 979 00001b1c _exit: 980 00001b1c 44000300 trap #0x300 981 00001b20 4be00000 jr r31 982 00001b24 54000000 nop 983 00001b28 .endproc _exit 985 ; for the benefit of gcc. 986 00001b28 .proc ___main 987 00001b28 .global ___main 988 00001b28 ___main: 989 00001b28 4be00000 jr r31 990 00001b2c 54000000 nop 991 00001b30 .endproc ___main 992 00001b30 .text 993 00001b30 .global _etext 994 00001b30 _etext: 995 00001b30 .align 3 996 00001b30 .data 997 00002019 .global _edata 998 00002019 _edata:

option1/lab4_1/src/queue.h

// // queue.h // // Definitions for routines used to manage queues. The queues are // doubly-linked lists so it's easier to add and remove from them. // Also, the links themselves have pointers to objects so that objects // may be on more than one queue. // #ifndef _queue_h_ #define _queue_h_ #ifndef NULL #define NULL ((void *)0) #endif #define QUEUE_MAX_LINKS 400 typedef struct Link { struct Link *next; struct Link *prev; struct Queue *queue; void *object; } Link; typedef struct Queue { struct Link *first; struct Link *last; int nitems; } Queue; inline void QueueLinkInit (Link *l, void *obj) { l->next = NULL; l->object = obj; } inline Link * QueueNext (Link *l) { return (l->next); } inline Link * QueuePrev (Link *l) { return (l->prev); } inline Link * QueueFirst (Queue *q) { return (q->first); } inline Link * QueueLast (Queue *q) { return (q->last); } inline void QueueInsertAfter (Queue *q, Link *after, Link *l) { l->queue = q; l->prev = after; l->next = after->next; after->next = l; l->next->prev = l; q->nitems += 1; } inline void QueueInsertFirst (Queue *q, Link *l) { QueueInsertAfter (q, (Link *)q, l); } inline void QueueInsertLast (Queue *q, Link *l) { QueueInsertAfter (q, QueueLast(q), l); } inline void QueueRemove (Link *l) { if (l->queue->nitems > 0) { l->prev->next = l->next; l->next->prev = l->prev; l->queue->nitems -= 1; } l->next = NULL; } inline int QueueLength (Queue *q) { return (q->nitems); } inline int QueueEmpty (Queue *q) { return (QueueLength (q) == 0); } extern void QueueModuleInit (); extern void QueueFreeLink (Link *l); extern Link *QueueAllocLink (); extern void QueueInit (Queue *q); #endif // _queue_h_

option1/lab4_1/src/userprog2.c

/* This test program touches a character pointer in 13 different pages.. This will generate 13 page faults and the output should display " You have run out of memory, killing the process" */ main() { int i; char Sum=0; char * charPtr=(char *)0x7000; for(i=0;i<13;i++) *(charPtr + 8192*i)=(char )i; for(i=0;i<13;i++) Sum+= *(charPtr + 8192 * i); Printf("\n in Userprog2, Sum : %d",Sum); }

option1/lab4_1/src/userprog1.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 27 ; Text size: 2864 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\n\nIn Userprog1, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal ___main nop; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16_LF0: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16_LF0 nop; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#24576 add r2,r31,r4 L21_LF0: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_1/src/process.h

// // process.h // // Definitions for process creation and manipulation. These include // the process control block (PCB) structure as well as information // about the stack format for a saved process. // #ifndef _process_h__ #define _process_h_ #include "dlxos.h" #include "memory.h" #include "queue.h" //#include "share_memory.h" #define PROCESS_MAX_PROCS 32 // Maximum number of active processes #define PROCESS_INIT_ISR_SYS 0x140 // Initial status reg value for system processes #define PROCESS_INIT_ISR_USER 0x100 // Initial status reg value for user processes #define PROCESS_STATUS_FREE 0x1 #define PROCESS_STATUS_RUNNABLE 0x2 #define PROCESS_STATUS_WAITING 0x4 #define PROCESS_STATUS_STARTING 0x8 #define PROCESS_STATUS_ZOMBIE 0x10 #define PROCESS_STATUS_MASK 0x3f #define PROCESS_TYPE_SYSTEM 0x100 #define PROCESS_TYPE_USER 0x200 typedef void (*VoidFunc)(); // Process control block typedef struct PCB { uint32 *currentSavedFrame; // -> current saved frame. MUST BE 1ST! uint32 *sysStackPtr; // Current system stack pointer. MUST BE 2ND! uint32 sysStackArea; // System stack area for this process unsigned int flags; char name[80]; // Process name uint32 pagetable[L1_MAX_ENTRIES]; // Statically allocated page table int npages; // Number of pages allocated to this process Link l; // Used for keeping PCB in queues } PCB; // Offsets of various registers from the stack pointer in the register // save frame. Offsets are in WORDS (4 byte chunks) #define PROCESS_STACK_IREG 10 // Offset of r0 (grows upwards) // NOTE: r0 isn't actually stored! This is for convenience - r1 is the // first stored register, and is at location PROCESS_STACK_IREG+1 #define PROCESS_STACK_FREG (PROCESS_STACK_IREG+32) // Offset of f0 #define PROCESS_STACK_IAR (PROCESS_STACK_FREG+32) // Offset of IAR #define PROCESS_STACK_ISR (PROCESS_STACK_IAR+1) #define PROCESS_STACK_CAUSE (PROCESS_STACK_IAR+2) #define PROCESS_STACK_FAULT (PROCESS_STACK_IAR+3) #define PROCESS_STACK_PTBASE (PROCESS_STACK_IAR+4) #define PROCESS_STACK_PTSIZE (PROCESS_STACK_IAR+5) #define PROCESS_STACK_PTBITS (PROCESS_STACK_IAR+6) #define PROCESS_STACK_PREV_FRAME 10 // points to previous interrupt frame #define PROCESS_STACK_FRAME_SIZE 85 // interrupt frame is 85 words #define SIZE_ARG_BUFF 1024 // Max number of characters in the // command-line arguments #define MAX_ARGS 128 // Max number of command-line // arguments extern PCB *currentPCB; extern int ProcessFork (VoidFunc, unsigned int, char *, int); extern void ProcessSchedule (); extern void ContextSwitch(void *, void *, int); extern void ProcessSuspend (PCB *); extern void ProcessWakeup (PCB *); extern void ProcessSetResult (PCB *, uint32); extern void ProcessSleep (); extern unsigned GetCurrentPid(); extern unsigned getpid(); void process_create(char *name, ...); void ProcessKill (PCB *pcb); void PageFaultHandler(); #endif /* _process_h_ */

option1/lab4_1/src/Makefile.depend

filesys.o: filesys.c dlxos.h misc.h process.h memory.h queue.h \ filesys.h memory.o: memory.c dlxos.h misc.h memory.h process.h queue.h misc.o: misc.c misc.h process.o: process.c dlxos.h misc.h memory.h process.h queue.h synch.h \ filesys.h queue.o: queue.c dlxos.h misc.h queue.h synch.o: synch.c dlxos.h misc.h process.h memory.h queue.h synch.h traps.o: traps.c dlx.h dlxos.h misc.h traps.h process.h memory.h \ queue.h sysproc.o: sysproc.c process.h dlxos.h misc.h memory.h queue.h synch.h

option1/lab4_1/src/synch.working.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // Lock // Condition // // Semaphores are the only "native" synchronization primitive. // Condition variables and locks are implemented using semaphores. // #ifndef _synch_h_ #define _synch_h_ #include "queue.h" typedef struct Sem { Queue waiting; int count; } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); typedef struct Lock { Sem mutex; // Overall mutex for the Lock. Sem pri; // Semaphore on which "high-priority" processes wait int npri; // Number of high-priority processes waiting } Lock; typedef struct Cond { Lock *condLock; Sem condSem; // Semaphore on which condition variables wait int nwaiters; // Number of processes waiting for this condition } Cond; extern void LockInit (Lock *); extern void LockAcquire (Lock *); extern void LockRelease (Lock *); extern void CondInit (Cond *, Lock *); extern void CondWait (Cond *); extern void CondSignal (Cond *); extern void CondBroadcast (Cond *); #endif //_synch_h_

option1/lab4_1/src/os.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 86016 3 ; Data size: 32260 4 ; Text size: 40952 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0xb000 8 ;;; 9 ;;; Initialization code for programs running in the DLX simulator. 10 ;;; Copyright (c) 1999 by Ethan Miller 11 ;;; 12 ;;; 14 0000b000 .text 15 00001000 .align 2 17 ;;;---------------------------------------------------------------------- 18 ;;; osinit 19 ;;; 20 ;;; This is the first function called by the simulator, even before main. 21 ;;; Since it's called BEFORE any "real" routines, we can use any registers 22 ;;; we want as long as we don't mess up the stack or frame pointers. 23 ;;; 24 ;;; This routine loads the interrupt vector to point to the interrupt 25 ;;; handler later in this file. It should never return, because _main 26 ;;; should call exitsim() or exit() rather than returning here. 27 ;;; 28 ;;; After initialization is done, this routine jumps to _main to start the 29 ;;; C code portion of the operating system. 30 ;;;---------------------------------------------------------------------- 31 00001000 .proc _osinit 32 00001000 .global _osinit 33 00001000 _osinit: 34 ;; Set up the interrupt handler 35 00001000 3c010000 lhi r1,(_intrhandler>>16)&0xffff 36 00001004 24211010 addui r1,r1,_intrhandler&0xffff 37 00001008 00204030 movi2s intrvec,r1 38 ;; Never returns because exitsim is called first 39 0000100c 08005e34 j _main 40 00001010 .endproc _osinit 42 ;;;---------------------------------------------------------------------- 43 ;;; intrhandler 44 ;;; 45 ;;; Called when an interrupt or trap is received by the CPU. It stores the 46 ;;; current register set on the system stack. It then pushes the parameters 47 ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE 48 ;;; registers along with the original stack pointer. The C interrupt 49 ;;; handler can then copy arguments from the original stack, performing 50 ;;; user -> system translations if necessary. 51 ;;; 52 ;;;---------------------------------------------------------------------- 53 00001010 .proc _intrhandler 54 00001010 .global _intrhandler 55 00001010 _intrhandler: 56 ;; We can use r31 as scratch space because its value was saved in 57 ;; ir31. However, we must save the "real" value of r31 on the 58 ;; stack. 60 ;; Always store the registers on the system stack. This way, we don't 61 ;; have to worry about translating things from user -> system. We 62 ;; use r31 as the base register because its value was saved in ir31. 64 ;; If this was a user process, load r29 with the current system 65 ;; stack pointer. If it was a system process, just use the 66 ;; current stack pointer. 67 00001010 0060f831 movs2i r31,isr 68 00001014 33ff0040 andi r31,r31,0x40 69 00001018 17e0001c bnez r31,intrSystem_LF0 70 0000101c 3c1f0000 lhi r31,(_currentPCB>>16)&0xffff 71 00001020 27fffe28 addui r31,r31,_currentPCB&0xffff 72 00001024 8fff0000 lw r31,(r31) 73 00001028 8fff0004 lw r31,4(r31) 74 ;; Save the original (user) stack pointer 75 0000102c affdff48 sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 76 ;; Copy the system stack pointer into r29 (current stack pointer) 77 00001030 37fd0000 ori r29,r31,0 78 00001034 10000004 beqz r0,intrSaveReg_LF0; skip over the system part.... 79 00001038 intrSystem_LF0: 80 ;; Use the stack pointer we're already using 81 ;; Save r29 because we won't save it later 82 00001038 afbdff48 sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 83 0000103c intrSaveReg_LF0: 84 ;; Adjust stack pointer for all the stuff we're going to push. This 85 ;; is a bit more space than we need currently, but it leaves room 86 ;; for more stuff if needed. 87 0000103c 2fbd0154 subui r29,r29,#340 88 ;; Push all the stuff onto the stack 89 00001040 afa1002c sw 44(r29),r1 90 00001044 afa20030 sw 48(r29),r2 91 00001048 afa30034 sw 52(r29),r3 92 0000104c afa40038 sw 56(r29),r4 93 00001050 afa5003c sw 60(r29),r5 94 00001054 afa60040 sw 64(r29),r6 95 00001058 afa70044 sw 68(r29),r7 96 0000105c afa80048 sw 72(r29),r8 97 00001060 afa9004c sw 76(r29),r9 98 00001064 afaa0050 sw 80(r29),r10 99 00001068 afab0054 sw 84(r29),r11 100 0000106c afac0058 sw 88(r29),r12 101 00001070 afad005c sw 92(r29),r13 102 00001074 afae0060 sw 96(r29),r14 103 00001078 afaf0064 sw 100(r29),r15 104 0000107c afb00068 sw 104(r29),r16 105 00001080 afb1006c sw 108(r29),r17 106 00001084 afb20070 sw 112(r29),r18 107 00001088 afb30074 sw 116(r29),r19 108 0000108c afb40078 sw 120(r29),r20 109 00001090 afb5007c sw 124(r29),r21 110 00001094 afb60080 sw 128(r29),r22 111 00001098 afb70084 sw 132(r29),r23 112 0000109c afb80088 sw 136(r29),r24 113 000010a0 afb9008c sw 140(r29),r25 114 000010a4 afba0090 sw 144(r29),r26 115 000010a8 afbb0094 sw 148(r29),r27 116 000010ac afbc0098 sw 152(r29),r28 117 ;; Skip r29 - stored earlier! 118 000010b0 afbe00a0 sw 160(r29),r30 119 ;; Load the value of r31 from the special register and then save it 120 000010b4 00401831 movs2i r3,ir31 121 000010b8 afa300a4 sw 164(r29),r3 122 ;; Store the floating-point registers 123 000010bc bfa000a8 sd 168(r29),f0 124 000010c0 bfa200b0 sd 176(r29),f2 125 000010c4 bfa400b8 sd 184(r29),f4 126 000010c8 bfa600c0 sd 192(r29),f6 127 000010cc bfa800c8 sd 200(r29),f8 128 000010d0 bfaa00d0 sd 208(r29),f10 129 000010d4 bfac00d8 sd 216(r29),f12 130 000010d8 bfae00e0 sd 224(r29),f14 131 000010dc bfb000e8 sd 232(r29),f16 132 000010e0 bfb200f0 sd 240(r29),f18 133 000010e4 bfb400f8 sd 248(r29),f20 134 000010e8 bfb60100 sd 256(r29),f22 135 000010ec bfb80108 sd 264(r29),f24 136 000010f0 bfba0110 sd 272(r29),f26 137 000010f4 bfbc0118 sd 280(r29),f28 138 000010f8 bfbe0120 sd 288(r29),f30 139 ;; NOTE: we don't save the interrupt vector register because it 140 ;; doesn't change from process to process. 141 ;; NOTE: we don't save the status register because most of the flags 142 ;; are the same from process to process if they're in the interrupt 143 ;; handler. Of course, we DO save the ISR. 144 000010fc 00802031 movs2i r4,iar 145 00001100 afa40128 sw 296(r29),r4 146 00001104 00602831 movs2i r5,isr 147 00001108 afa5012c sw 300(r29),r5 148 0000110c 00c03031 movs2i r6,cause 149 00001110 afa60130 sw 304(r29),r6 150 00001114 01201831 movs2i r3,fault 151 00001118 afa30134 sw 308(r29),r3 152 0000111c 01801831 movs2i r3,ptbase 153 00001120 afa30138 sw 312(r29),r3 154 00001124 01a01831 movs2i r3,ptsize 155 00001128 afa3013c sw 316(r29),r3 156 0000112c 01c01831 movs2i r3,ptbits 157 00001130 afa30140 sw 320(r29),r3 159 ;; Push the interrupt information onto the stack 160 00001134 afa60000 sw 0(r29),r6; push CAUSE 161 00001138 afa40004 sw 4(r29),r4; push IAR 162 0000113c afa50008 sw 8(r29),r5; push ISR 163 ;; Get the original stack pointer 164 00001140 8fa1009c lw r1,156(r29) 165 00001144 afa1000c sw 12(r29),r1 166 ;; Save the previous interrupt stack frame address in the current frame 167 00001148 3c010000 lhi r1,(_currentPCB>>16)&0xffff 168 0000114c 2421fe28 addui r1,r1,_currentPCB&0xffff 169 00001150 8c210000 lw r1,(r1) 170 00001154 8c220000 lw r2,0(r1) 171 00001158 afa20028 sw 40(r29),r2 172 ;; Save this frame address in the PCB. This is used so the OS can 173 ;; easily access the current interrupt save frame 174 0000115c ac3d0000 sw 0(r1),r29 175 ;; Call the "real" interrupt handler. This will possibly switch 176 ;; contexts. This call never returns; instead, a separate routine 177 ;; (_intrreturn) is called to return from interrupts after restoring 178 ;; the current context. 179 00001160 08008908 j _dointerrupt 180 00001164 54000000 nop 181 00001168 .endproc _intrhandler 183 ;;;---------------------------------------------------------------------- 184 ;;; intrreturn 185 ;;; 186 ;;; Return from an interrupt or trap. This restores all of the previously 187 ;;; saved registers and then returns to where the program left off. The 188 ;;; current contents of the registers are destroyed. This routine uses 189 ;;; the saved interrupt frame pointer, so the stack pointer need not 190 ;;; be correct. Note, though, that the register contents from the previous 191 ;;; process must have previously been saved - in other words, call this 192 ;;; routine from a trap or interrupt handler. 193 ;;;---------------------------------------------------------------------- 194 00001168 .proc _intrreturn 195 00001168 .global _intrreturn 196 00001168 _intrreturn: 197 ;; Disable interrupts - this routine must be atomic, and interrupts 198 ;; may not be currently disabled. Don't worry about saving registers 199 ;; because we're about to reload them anyway. 200 00001168 0c009674 jal _DisableIntrs 201 ;; Get our interrupt stack frame location and load it into the stack 202 ;; pointer. 203 0000116c 3c010000 lhi r1,(_currentPCB>>16)&0xffff 204 00001170 2421fe28 addui r1,r1,_currentPCB&0xffff 205 00001174 8c210000 lw r1,0(r1) 206 00001178 8c3d0000 lw r29,0(r1) 207 ;; Get the previous interrupt stack frame location and make it the 208 ;; current interrupt save frame. 209 0000117c 8fa20028 lw r2,40(r29) 210 00001180 ac220000 sw 0(r1),r2 212 ;; Reload the registers for the new process. We don't have to 213 ;; load in the exact opposite order as long as we're careful to 214 ;; get the right values back in. 215 00001184 8fa30128 lw r3,296(r29) 216 00001188 00602030 movi2s iar,r3 217 0000118c 8fa3012c lw r3,300(r29) 218 00001190 00601830 movi2s isr,r3 219 00001194 8fa30130 lw r3,304(r29) 220 00001198 00603030 movi2s cause,r3 221 0000119c 8fa30134 lw r3,308(r29) 222 000011a0 00604830 movi2s fault,r3 223 000011a4 8fa30138 lw r3,312(r29) 224 000011a8 00606030 movi2s ptbase,r3 225 000011ac 8fa3013c lw r3,316(r29) 226 000011b0 00606830 movi2s ptsize,r3 227 000011b4 8fa30140 lw r3,320(r29) 228 000011b8 00607030 movi2s ptbits,r3 230 ;; Reload the floating point registers 231 000011bc 9fa000a8 ld f0,168(r29) 232 000011c0 9fa200b0 ld f2,176(r29) 233 000011c4 9fa400b8 ld f4,184(r29) 234 000011c8 9fa600c0 ld f6,192(r29) 235 000011cc 9fa800c8 ld f8,200(r29) 236 000011d0 9faa00d0 ld f10,208(r29) 237 000011d4 9fac00d8 ld f12,216(r29) 238 000011d8 9fae00e0 ld f14,224(r29) 239 000011dc 9fb000e8 ld f16,232(r29) 240 000011e0 9fb200f0 ld f18,240(r29) 241 000011e4 9fb400f8 ld f20,248(r29) 242 000011e8 9fb60100 ld f22,256(r29) 243 000011ec 9fb80108 ld f24,264(r29) 244 000011f0 9fba0110 ld f26,272(r29) 245 000011f4 9fbc0118 ld f28,280(r29) 246 000011f8 9fbe0120 ld f30,288(r29) 248 ;; Reload the integer registers. We don't reload r0 because it's 249 ;; always 0. We won't reload r29 here because we're using it as 250 ;; the stack pointer. The same goes for r1, which we'll use as 251 ;; scratch so we can store r29. 252 ;; Skip r1 - restored later 253 000011fc 8fa20030 lw r2,48(r29) 254 00001200 8fa30034 lw r3,52(r29) 255 00001204 8fa40038 lw r4,56(r29) 256 00001208 8fa5003c lw r5,60(r29) 257 0000120c 8fa60040 lw r6,64(r29) 258 00001210 8fa70044 lw r7,68(r29) 259 00001214 8fa80048 lw r8,72(r29) 260 00001218 8fa9004c lw r9,76(r29) 261 0000121c 8faa0050 lw r10,80(r29) 262 00001220 8fab0054 lw r11,84(r29) 263 00001224 8fac0058 lw r12,88(r29) 264 00001228 8fad005c lw r13,92(r29) 265 0000122c 8fae0060 lw r14,96(r29) 266 00001230 8faf0064 lw r15,100(r29) 267 00001234 8fb00068 lw r16,104(r29) 268 00001238 8fb1006c lw r17,108(r29) 269 0000123c 8fb20070 lw r18,112(r29) 270 00001240 8fb30074 lw r19,116(r29) 271 00001244 8fb40078 lw r20,120(r29) 272 00001248 8fb5007c lw r21,124(r29) 273 0000124c 8fb60080 lw r22,128(r29) 274 00001250 8fb70084 lw r23,132(r29) 275 00001254 8fb80088 lw r24,136(r29) 276 00001258 8fb9008c lw r25,140(r29) 277 0000125c 8fba0090 lw r26,144(r29) 278 00001260 8fbb0094 lw r27,148(r29) 279 00001264 8fbc0098 lw r28,152(r29) 280 ;; Skip r29 - restored later 281 00001268 8fbe00a0 lw r30,160(r29) 282 0000126c 8fbf00a4 lw r31,164(r29) 284 00001270 27bd0154 addui r29,r29,#340 285 ;; Save the current value of the stack pointer after adjusting it 286 ;; Note that this will "destroy" the stack values below this interrupt 287 ;; stack frame. This is exactly what we want! 288 00001274 ac3d0004 sw 4(r1),r29 289 00001278 37a10000 ori r1,r29,#0 290 0000127c 8c3dff48 lw r29,-184(r1); 156-340 = -184 291 00001280 8c21fed8 lw r1,-296(r1); 44-340 = -296 292 00001284 40000000 rfe 293 00001288 .endproc _intrreturn 295 ;;;---------------------------------------------------------------------- 296 ;;; SetIntrs 297 ;;; 298 ;;; This routine sets the interrupt level to the value passed (0 -> all 299 ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the 300 ;;; former value for the interrupt flags. 301 ;;;---------------------------------------------------------------------- 302 00001288 .proc _SetIntrs 303 00001288 .global _SetIntrs 304 00001288 _SetIntrs: 305 00001288 2fbd0010 subui r29,r29,#16 306 0000128c afa2000c sw 12(r29),r2; save r2 307 00001290 8fa20010 lw r2,16(r29); Get the new interrupt level 308 00001294 3042000f andi r2,r2,#0x0f; Mask off interrupt levels 309 00001298 00a00831 movs2i r1,status 310 0000129c afa10008 sw 8(r29),r1; Store the old interrupt values 311 000012a0 3021fff0 andi r1,r1,#0xfff0; Mask off old interrupt level 312 000012a4 00410825 or r1,r2,r1; OR in new interrupt level 313 000012a8 00202830 movi2s status,r1 314 000012ac 8fa10008 lw r1,8(r29); Get back the original interrupt level 315 000012b0 3021000f andi r1,r1,#0x0f; Mask off all but interrupt levels 316 000012b4 8fa2000c lw r2,12(r29); restore r2 317 000012b8 27bd0010 addui r29,r29,#16; restore stack pointer 318 000012bc 4be00000 jr r31 319 000012c0 54000000 nop 320 000012c4 .endproc _SetIntrs 322 000012c4 .proc _CurrentIntrs 323 000012c4 .global _CurrentIntrs 324 000012c4 _CurrentIntrs: 325 000012c4 00a00831 movs2i r1,status 326 000012c8 3021000f andi r1,r1,#0xf 327 000012cc 4be00000 jr r31 328 000012d0 54000000 nop 329 000012d4 .endproc _CurrentIntrs 330 ;;;---------------------------------------------------------------------- 331 ;;; _ProcessSleep 332 ;;; 333 ;;; If a context switch from elsewhere in the kernel is desired, take a 334 ;;; trap and call this routine from the trap handler. 335 ;;;---------------------------------------------------------------------- 336 000012d4 .proc _ProcessSleep 337 000012d4 .global _ProcessSleep 338 000012d4 _ProcessSleep: 339 000012d4 44000410 trap #0x410; This is a process sleep trap 340 000012d8 54000000 nop 341 000012dc 4be00000 jr r31 342 000012e0 54000000 nop 343 000012e4 .endproc _ProcessSleep 344 ; 345 ; Stub functions for DLX traps. 346 ; 347 ; Aaron Sawdey 1996; released to the Public Domain. 348 ; 350 000012e4 .align 2 351 000012e4 .proc _random 352 000012e4 .global _random 353 000012e4 _random: 354 000012e4 44002020 trap #0x2020 355 000012e8 4be00000 jr r31 356 000012ec 54000000 nop 357 000012f0 .endproc _random 359 000012f0 .proc _srandom 360 000012f0 .global _srandom 361 000012f0 _srandom: 362 000012f0 44002021 trap #0x2021 363 000012f4 4be00000 jr r31 364 000012f8 54000000 nop 365 000012fc .endproc _srandom 367 ; Compiled by GCC 368 000012fc .data 369 0000b000 .align 2 370 0000b000 _rcsid_LF2: 371 0000b000 3a206669 .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 371 0000b004 6c657379 371 0000b008 732e632c 371 0000b00c 7620312e 371 0000b010 31203230 371 0000b014 30302f30 371 0000b018 392f3230 371 0000b01c 2030313a 371 0000b020 35303a31 371 0000b024 3920656c 371 0000b028 6d204578 371 0000b02c 7020656c 371 0000b030 6d203030 371 0000b034 30 372 0000b035 .text 373 000012fc .align 2 374 000012fc .proc _isspace 375 000012fc .global _isspace 376 000012fc _isspace: 377 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 378 000012fc afbefffc sw -4(r29),r30; push fp 379 00001300 001df020 add r30,r0,r29; fp = sp 380 00001304 afbffff8 sw -8(r29),r31; push ret addr 381 00001308 2fbd0010 subui r29,r29,#16; alloc local storage 382 0000130c afa20000 sw 0(r29),r2 383 00001310 83c20003 lb r2,3(r30) 384 00001314 201f0000 addi r31,r0,#0 385 00001318 304100ff andi r1,r2,#0x00ff 386 0000131c 60210020 seqi r1,r1,#32 387 00001320 14200018 bnez r1,L6_LF2 388 00001324 54000000 nop; not filled. 389 00001328 2041fff7 addi r1,r2,#-9 390 0000132c 302100ff andi r1,r1,#0x00ff 391 00001330 70210001 sleui r1,r1,#1 392 00001334 10200008 beqz r1,L5_LF2 393 00001338 54000000 nop; not filled. 394 0000133c L6_LF2: 395 0000133c 201f0001 addi r31,r0,#1 396 00001340 L5_LF2: 397 00001340 001f0820 add r1,r0,r31 398 00001344 8fa20000 lw r2,0(r29) 399 00001348 8fdffff8 lw r31,-8(r30) 400 0000134c 001ee820 add r29,r0,r30 401 00001350 8fdefffc lw r30,-4(r30) 402 00001354 4be00000 jr r31 403 00001358 54000000 nop 404 0000135c .endproc _isspace 405 0000135c .align 2 406 0000135c .proc _isxdigit 407 0000135c .global _isxdigit 408 0000135c _isxdigit: 409 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 410 0000135c afbefffc sw -4(r29),r30; push fp 411 00001360 001df020 add r30,r0,r29; fp = sp 412 00001364 afbffff8 sw -8(r29),r31; push ret addr 413 00001368 2fbd0010 subui r29,r29,#16; alloc local storage 414 0000136c afa20000 sw 0(r29),r2 415 00001370 83df0003 lb r31,3(r30) 416 00001374 20020000 addi r2,r0,#0 417 00001378 23e1ffd0 addi r1,r31,#-48 418 0000137c 302100ff andi r1,r1,#0x00ff 419 00001380 70210009 sleui r1,r1,#9 420 00001384 14200028 bnez r1,L12_LF2 421 00001388 54000000 nop; not filled. 422 0000138c 23e1ff9f addi r1,r31,#-97 423 00001390 302100ff andi r1,r1,#0x00ff 424 00001394 70210005 sleui r1,r1,#5 425 00001398 14200014 bnez r1,L12_LF2 426 0000139c 54000000 nop; not filled. 427 000013a0 33e100ff andi r1,r31,#0x00ff 428 000013a4 64210041 snei r1,r1,#65 429 000013a8 14200008 bnez r1,L11_LF2 430 000013ac 54000000 nop; not filled. 431 000013b0 L12_LF2: 432 000013b0 20020001 addi r2,r0,#1 433 000013b4 L11_LF2: 434 000013b4 00020820 add r1,r0,r2 435 000013b8 8fa20000 lw r2,0(r29) 436 000013bc 8fdffff8 lw r31,-8(r30) 437 000013c0 001ee820 add r29,r0,r30 438 000013c4 8fdefffc lw r30,-4(r30) 439 000013c8 4be00000 jr r31 440 000013cc 54000000 nop 441 000013d0 .endproc _isxdigit 442 000013d0 .align 2 443 000013d0 .proc _DisableIntrs 444 000013d0 .global _DisableIntrs 445 000013d0 _DisableIntrs: 446 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 447 000013d0 afbefffc sw -4(r29),r30; push fp 448 000013d4 001df020 add r30,r0,r29; fp = sp 449 000013d8 afbffff8 sw -8(r29),r31; push ret addr 450 000013dc 2fbd0010 subui r29,r29,#16; alloc local storage 451 000013e0 afa20000 sw 0(r29),r2 452 000013e4 23bdfff8 addi r29,r29,#-8 453 000013e8 2002000f addi r2,r0,#15 454 000013ec afa20000 sw (r29),r2 455 000013f0 0ffffe94 jal _SetIntrs 456 000013f4 54000000 nop; not filled. 457 000013f8 23bd0008 addi r29,r29,#8 458 000013fc 8fa20000 lw r2,0(r29) 459 00001400 8fdffff8 lw r31,-8(r30) 460 00001404 001ee820 add r29,r0,r30 461 00001408 8fdefffc lw r30,-4(r30) 462 0000140c 4be00000 jr r31 463 00001410 54000000 nop 464 00001414 .endproc _DisableIntrs 465 00001414 .align 2 466 00001414 .proc _EnableIntrs 467 00001414 .global _EnableIntrs 468 00001414 _EnableIntrs: 469 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 470 00001414 afbefffc sw -4(r29),r30; push fp 471 00001418 001df020 add r30,r0,r29; fp = sp 472 0000141c afbffff8 sw -8(r29),r31; push ret addr 473 00001420 2fbd0010 subui r29,r29,#16; alloc local storage 474 00001424 afa20000 sw 0(r29),r2 475 00001428 23bdfff8 addi r29,r29,#-8 476 0000142c 20020000 addi r2,r0,#0 477 00001430 afa20000 sw (r29),r2 478 00001434 0ffffe50 jal _SetIntrs 479 00001438 54000000 nop; not filled. 480 0000143c 23bd0008 addi r29,r29,#8 481 00001440 8fa20000 lw r2,0(r29) 482 00001444 8fdffff8 lw r31,-8(r30) 483 00001448 001ee820 add r29,r0,r30 484 0000144c 8fdefffc lw r30,-4(r30) 485 00001450 4be00000 jr r31 486 00001454 54000000 nop 487 00001458 .endproc _EnableIntrs 488 00001458 .align 2 489 00001458 .proc _RestoreIntrs 490 00001458 .global _RestoreIntrs 491 00001458 _RestoreIntrs: 492 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 493 00001458 afbefffc sw -4(r29),r30; push fp 494 0000145c 001df020 add r30,r0,r29; fp = sp 495 00001460 afbffff8 sw -8(r29),r31; push ret addr 496 00001464 2fbd0010 subui r29,r29,#16; alloc local storage 497 00001468 afa20000 sw 0(r29),r2 498 0000146c 23bdfff8 addi r29,r29,#-8 499 00001470 8fc20000 lw r2,(r30) 500 00001474 afa20000 sw (r29),r2 501 00001478 0ffffe0c jal _SetIntrs 502 0000147c 54000000 nop; not filled. 503 00001480 23bd0008 addi r29,r29,#8 504 00001484 8fa20000 lw r2,0(r29) 505 00001488 8fdffff8 lw r31,-8(r30) 506 0000148c 001ee820 add r29,r0,r30 507 00001490 8fdefffc lw r30,-4(r30) 508 00001494 4be00000 jr r31 509 00001498 54000000 nop 510 0000149c .endproc _RestoreIntrs 511 0000149c .align 2 512 0000149c .proc _QueueLinkInit 513 0000149c .global _QueueLinkInit 514 0000149c _QueueLinkInit: 515 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 516 0000149c afbefffc sw -4(r29),r30; push fp 517 000014a0 001df020 add r30,r0,r29; fp = sp 518 000014a4 afbffff8 sw -8(r29),r31; push ret addr 519 000014a8 2fbd0010 subui r29,r29,#16; alloc local storage 520 000014ac afa20000 sw 0(r29),r2 521 000014b0 8fc10000 lw r1,(r30) 522 000014b4 8fc20004 lw r2,4(r30) 523 000014b8 201f0000 addi r31,r0,#0 524 000014bc ac3f0000 sw (r1),r31 525 000014c0 ac22000c sw 12(r1),r2 526 000014c4 8fa20000 lw r2,0(r29) 527 000014c8 8fdffff8 lw r31,-8(r30) 528 000014cc 001ee820 add r29,r0,r30 529 000014d0 8fdefffc lw r30,-4(r30) 530 000014d4 4be00000 jr r31 531 000014d8 54000000 nop 532 000014dc .endproc _QueueLinkInit 533 000014dc .align 2 534 000014dc .proc _QueueNext 535 000014dc .global _QueueNext 536 000014dc _QueueNext: 537 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 538 000014dc afbefffc sw -4(r29),r30; push fp 539 000014e0 001df020 add r30,r0,r29; fp = sp 540 000014e4 afbffff8 sw -8(r29),r31; push ret addr 541 000014e8 2fbd0008 subui r29,r29,#8; alloc local storage 542 000014ec 8fc10000 lw r1,(r30) 543 000014f0 8c210000 lw r1,(r1) 544 000014f4 8fdffff8 lw r31,-8(r30) 545 000014f8 001ee820 add r29,r0,r30 546 000014fc 8fdefffc lw r30,-4(r30) 547 00001500 4be00000 jr r31 548 00001504 54000000 nop 549 00001508 .endproc _QueueNext 550 00001508 .align 2 551 00001508 .proc _QueuePrev 552 00001508 .global _QueuePrev 553 00001508 _QueuePrev: 554 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 555 00001508 afbefffc sw -4(r29),r30; push fp 556 0000150c 001df020 add r30,r0,r29; fp = sp 557 00001510 afbffff8 sw -8(r29),r31; push ret addr 558 00001514 2fbd0008 subui r29,r29,#8; alloc local storage 559 00001518 8fc10000 lw r1,(r30) 560 0000151c 8c210004 lw r1,4(r1) 561 00001520 8fdffff8 lw r31,-8(r30) 562 00001524 001ee820 add r29,r0,r30 563 00001528 8fdefffc lw r30,-4(r30) 564 0000152c 4be00000 jr r31 565 00001530 54000000 nop 566 00001534 .endproc _QueuePrev 567 00001534 .align 2 568 00001534 .proc _QueueFirst 569 00001534 .global _QueueFirst 570 00001534 _QueueFirst: 571 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 572 00001534 afbefffc sw -4(r29),r30; push fp 573 00001538 001df020 add r30,r0,r29; fp = sp 574 0000153c afbffff8 sw -8(r29),r31; push ret addr 575 00001540 2fbd0008 subui r29,r29,#8; alloc local storage 576 00001544 8fc10000 lw r1,(r30) 577 00001548 8c210000 lw r1,(r1) 578 0000154c 8fdffff8 lw r31,-8(r30) 579 00001550 001ee820 add r29,r0,r30 580 00001554 8fdefffc lw r30,-4(r30) 581 00001558 4be00000 jr r31 582 0000155c 54000000 nop 583 00001560 .endproc _QueueFirst 584 00001560 .align 2 585 00001560 .proc _QueueLast 586 00001560 .global _QueueLast 587 00001560 _QueueLast: 588 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 589 00001560 afbefffc sw -4(r29),r30; push fp 590 00001564 001df020 add r30,r0,r29; fp = sp 591 00001568 afbffff8 sw -8(r29),r31; push ret addr 592 0000156c 2fbd0008 subui r29,r29,#8; alloc local storage 593 00001570 8fc10000 lw r1,(r30) 594 00001574 8c210004 lw r1,4(r1) 595 00001578 8fdffff8 lw r31,-8(r30) 596 0000157c 001ee820 add r29,r0,r30 597 00001580 8fdefffc lw r30,-4(r30) 598 00001584 4be00000 jr r31 599 00001588 54000000 nop 600 0000158c .endproc _QueueLast 601 0000158c .align 2 602 0000158c .proc _QueueInsertAfter 603 0000158c .global _QueueInsertAfter 604 0000158c _QueueInsertAfter: 605 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 606 0000158c afbefffc sw -4(r29),r30; push fp 607 00001590 001df020 add r30,r0,r29; fp = sp 608 00001594 afbffff8 sw -8(r29),r31; push ret addr 609 00001598 2fbd0010 subui r29,r29,#16; alloc local storage 610 0000159c afa20000 sw 0(r29),r2 611 000015a0 afa30004 sw 4(r29),r3 612 000015a4 8fc30000 lw r3,(r30) 613 000015a8 8fc20004 lw r2,4(r30) 614 000015ac 8fc10008 lw r1,8(r30) 615 000015b0 ac230008 sw 8(r1),r3 616 000015b4 ac220004 sw 4(r1),r2 617 000015b8 8c5f0000 lw r31,(r2) 618 000015bc ac3f0000 sw (r1),r31 619 000015c0 ac410000 sw (r2),r1 620 000015c4 8c220000 lw r2,(r1) 621 000015c8 ac410004 sw 4(r2),r1 622 000015cc 8c610008 lw r1,8(r3) 623 000015d0 20210001 addi r1,r1,#1 624 000015d4 ac610008 sw 8(r3),r1 625 000015d8 8fa20000 lw r2,0(r29) 626 000015dc 8fa30004 lw r3,4(r29) 627 000015e0 8fdffff8 lw r31,-8(r30) 628 000015e4 001ee820 add r29,r0,r30 629 000015e8 8fdefffc lw r30,-4(r30) 630 000015ec 4be00000 jr r31 631 000015f0 54000000 nop 632 000015f4 .endproc _QueueInsertAfter 633 000015f4 .align 2 634 000015f4 .proc _QueueInsertFirst 635 000015f4 .global _QueueInsertFirst 636 000015f4 _QueueInsertFirst: 637 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 638 000015f4 afbefffc sw -4(r29),r30; push fp 639 000015f8 001df020 add r30,r0,r29; fp = sp 640 000015fc afbffff8 sw -8(r29),r31; push ret addr 641 00001600 2fbd0010 subui r29,r29,#16; alloc local storage 642 00001604 afa20000 sw 0(r29),r2 643 00001608 afa30004 sw 4(r29),r3 644 0000160c 8fc30000 lw r3,(r30) 645 00001610 8fc10004 lw r1,4(r30) 646 00001614 ac230008 sw 8(r1),r3 647 00001618 ac230004 sw 4(r1),r3 648 0000161c 8c7f0000 lw r31,(r3) 649 00001620 ac3f0000 sw (r1),r31 650 00001624 ac610000 sw (r3),r1 651 00001628 8c220000 lw r2,(r1) 652 0000162c ac410004 sw 4(r2),r1 653 00001630 8c610008 lw r1,8(r3) 654 00001634 20210001 addi r1,r1,#1 655 00001638 ac610008 sw 8(r3),r1 656 0000163c 8fa20000 lw r2,0(r29) 657 00001640 8fa30004 lw r3,4(r29) 658 00001644 8fdffff8 lw r31,-8(r30) 659 00001648 001ee820 add r29,r0,r30 660 0000164c 8fdefffc lw r30,-4(r30) 661 00001650 4be00000 jr r31 662 00001654 54000000 nop 663 00001658 .endproc _QueueInsertFirst 664 00001658 .align 2 665 00001658 .proc _QueueInsertLast 666 00001658 .global _QueueInsertLast 667 00001658 _QueueInsertLast: 668 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 669 00001658 afbefffc sw -4(r29),r30; push fp 670 0000165c 001df020 add r30,r0,r29; fp = sp 671 00001660 afbffff8 sw -8(r29),r31; push ret addr 672 00001664 2fbd0010 subui r29,r29,#16; alloc local storage 673 00001668 afa20000 sw 0(r29),r2 674 0000166c afa30004 sw 4(r29),r3 675 00001670 8fc30000 lw r3,(r30) 676 00001674 8fc10004 lw r1,4(r30) 677 00001678 8c620004 lw r2,4(r3) 678 0000167c ac230008 sw 8(r1),r3 679 00001680 ac220004 sw 4(r1),r2 680 00001684 8c5f0000 lw r31,(r2) 681 00001688 ac3f0000 sw (r1),r31 682 0000168c ac410000 sw (r2),r1 683 00001690 8c220000 lw r2,(r1) 684 00001694 ac410004 sw 4(r2),r1 685 00001698 8c610008 lw r1,8(r3) 686 0000169c 20210001 addi r1,r1,#1 687 000016a0 ac610008 sw 8(r3),r1 688 000016a4 8fa20000 lw r2,0(r29) 689 000016a8 8fa30004 lw r3,4(r29) 690 000016ac 8fdffff8 lw r31,-8(r30) 691 000016b0 001ee820 add r29,r0,r30 692 000016b4 8fdefffc lw r30,-4(r30) 693 000016b8 4be00000 jr r31 694 000016bc 54000000 nop 695 000016c0 .endproc _QueueInsertLast 696 000016c0 .align 2 697 000016c0 .proc _QueueRemove 698 000016c0 .global _QueueRemove 699 000016c0 _QueueRemove: 700 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 701 000016c0 afbefffc sw -4(r29),r30; push fp 702 000016c4 001df020 add r30,r0,r29; fp = sp 703 000016c8 afbffff8 sw -8(r29),r31; push ret addr 704 000016cc 2fbd0010 subui r29,r29,#16; alloc local storage 705 000016d0 afa20000 sw 0(r29),r2 706 000016d4 afa30004 sw 4(r29),r3 707 000016d8 8fdf0000 lw r31,(r30) 708 000016dc 8fe10008 lw r1,8(r31) 709 000016e0 8c210008 lw r1,8(r1) 710 000016e4 6c210000 sgti r1,r1,#0 711 000016e8 1020002c beqz r1,L44_LF2 712 000016ec 54000000 nop; not filled. 713 000016f0 8fe10004 lw r1,4(r31) 714 000016f4 8fe30000 lw r3,(r31) 715 000016f8 ac230000 sw (r1),r3 716 000016fc 8fe10000 lw r1,(r31) 717 00001700 8fe30004 lw r3,4(r31) 718 00001704 ac230004 sw 4(r1),r3 719 00001708 8fe20008 lw r2,8(r31) 720 0000170c 8c410008 lw r1,8(r2) 721 00001710 2021ffff addi r1,r1,#-1 722 00001714 ac410008 sw 8(r2),r1 723 00001718 L44_LF2: 724 00001718 20030000 addi r3,r0,#0 725 0000171c afe30000 sw (r31),r3 726 00001720 8fa20000 lw r2,0(r29) 727 00001724 8fa30004 lw r3,4(r29) 728 00001728 8fdffff8 lw r31,-8(r30) 729 0000172c 001ee820 add r29,r0,r30 730 00001730 8fdefffc lw r30,-4(r30) 731 00001734 4be00000 jr r31 732 00001738 54000000 nop 733 0000173c .endproc _QueueRemove 734 0000173c .align 2 735 0000173c .proc _QueueLength 736 0000173c .global _QueueLength 737 0000173c _QueueLength: 738 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 739 0000173c afbefffc sw -4(r29),r30; push fp 740 00001740 001df020 add r30,r0,r29; fp = sp 741 00001744 afbffff8 sw -8(r29),r31; push ret addr 742 00001748 2fbd0008 subui r29,r29,#8; alloc local storage 743 0000174c 8fc10000 lw r1,(r30) 744 00001750 8c210008 lw r1,8(r1) 745 00001754 8fdffff8 lw r31,-8(r30) 746 00001758 001ee820 add r29,r0,r30 747 0000175c 8fdefffc lw r30,-4(r30) 748 00001760 4be00000 jr r31 749 00001764 54000000 nop 750 00001768 .endproc _QueueLength 751 00001768 .align 2 752 00001768 .proc _QueueEmpty 753 00001768 .global _QueueEmpty 754 00001768 _QueueEmpty: 755 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 756 00001768 afbefffc sw -4(r29),r30; push fp 757 0000176c 001df020 add r30,r0,r29; fp = sp 758 00001770 afbffff8 sw -8(r29),r31; push ret addr 759 00001774 2fbd0008 subui r29,r29,#8; alloc local storage 760 00001778 8fc10000 lw r1,(r30) 761 0000177c 8c210008 lw r1,8(r1) 762 00001780 60210000 seqi r1,r1,#0 763 00001784 8fdffff8 lw r31,-8(r30) 764 00001788 001ee820 add r29,r0,r30 765 0000178c 8fdefffc lw r30,-4(r30) 766 00001790 4be00000 jr r31 767 00001794 54000000 nop 768 00001798 .endproc _QueueEmpty 769 00001798 .data 770 0000b035 .align 2 771 0000b038 LC0_LF2: 772 0000b038 41747465 .ascii "Attepmting to open %s mode=%d.\n\000" 772 0000b03c 706d7469 772 0000b040 6e672074 772 0000b044 6f206f70 772 0000b048 656e2025 772 0000b04c 73206d6f 772 0000b050 64653d25 772 0000b054 642e0a00 773 0000b058 .align 2 774 0000b058 LC1_LF2: 775 0000b058 646c783a .ascii "dlx:\000" 775 0000b05c 00 776 0000b05d .align 2 777 0000b060 LC2_LF2: 778 0000b060 46696c65 .ascii "File %s opening in file system %d.\n\000" 778 0000b064 20257320 778 0000b068 6f70656e 778 0000b06c 696e6720 778 0000b070 696e2066 778 0000b074 696c6520 778 0000b078 73797374 778 0000b07c 656d2025 778 0000b080 642e0a00 779 0000b084 .align 2 780 0000b084 LC3_LF2: 781 0000b084 4f70656e .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" 781 0000b088 65642025 781 0000b08c 7320696e 781 0000b090 20465320 781 0000b094 25642c20 781 0000b098 6d6f6465 781 0000b09c 3d256420 781 0000b0a0 736c6f74 781 0000b0a4 3d25642e 781 0000b0a8 0a00 782 0000b0aa .text 783 00001798 .align 2 784 00001798 .proc _FsOpen 785 00001798 .global _FsOpen 786 00001798 _FsOpen: 787 ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. 788 00001798 afbefffc sw -4(r29),r30; push fp 789 0000179c 001df020 add r30,r0,r29; fp = sp 790 000017a0 afbffff8 sw -8(r29),r31; push ret addr 791 000017a4 2fbd0028 subui r29,r29,#40; alloc local storage 792 000017a8 afa20000 sw 0(r29),r2 793 000017ac afa30004 sw 4(r29),r3 794 000017b0 afa40008 sw 8(r29),r4 795 000017b4 afa5000c sw 12(r29),r5 796 000017b8 afa60010 sw 16(r29),r6 797 000017bc afa70014 sw 20(r29),r7 798 000017c0 afa80018 sw 24(r29),r8 799 000017c4 8fc40000 lw r4,(r30) 800 000017c8 8fc50004 lw r5,4(r30) 801 000017cc 23bdfff8 addi r29,r29,#-8 802 000017d0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 803 000017d4 2442fd60 addui r2,r2,(_debugstr)&0xffff 804 000017d8 afa20000 sw (r29),r2 805 000017dc 20080066 addi r8,r0,#102 806 000017e0 afa80004 sw 4(r29),r8 807 000017e4 0c00264c jal _dindex 808 000017e8 54000000 nop; not filled. 809 000017ec 23bd0008 addi r29,r29,#8 810 000017f0 64210000 snei r1,r1,#0 811 000017f4 1420002c bnez r1,L56_LF2 812 000017f8 54000000 nop; not filled. 813 000017fc 23bdfff8 addi r29,r29,#-8 814 00001800 afa20000 sw (r29),r2 815 00001804 2008002b addi r8,r0,#43 816 00001808 afa80004 sw 4(r29),r8 817 0000180c 0c002624 jal _dindex 818 00001810 54000000 nop; not filled. 819 00001814 23bd0008 addi r29,r29,#8 820 00001818 64210000 snei r1,r1,#0 821 0000181c 10200028 beqz r1,L55_LF2 822 00001820 54000000 nop; not filled. 823 00001824 L56_LF2: 824 00001824 23bdfff0 addi r29,r29,#-16 825 00001828 3c080000 lhi r8,((LC0_LF2)>>16)&0xffff 826 0000182c 2508b038 addui r8,r8,(LC0_LF2)&0xffff 827 00001830 afa80000 sw (r29),r8 828 00001834 afa40004 sw 4(r29),r4 829 00001838 afa50008 sw 8(r29),r5 830 0000183c 0c0097ac jal _printf 831 00001840 54000000 nop; not filled. 832 00001844 23bd0010 addi r29,r29,#16 833 00001848 L55_LF2: 834 00001848 30a50003 andi r5,r5,#3 835 0000184c 64a10000 snei r1,r5,#0 836 00001850 10200044 beqz r1,L74_LF2 837 00001854 54000000 nop; not filled. 838 00001858 20030000 addi r3,r0,#0 839 0000185c 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 840 00001860 24c6b110 addui r6,r6,(_openfiles_LF2)&0xffff 841 00001864 00061020 add r2,r0,r6 842 00001868 L61_LF2: 843 00001868 8c410004 lw r1,4(r2) 844 0000186c 64210000 snei r1,r1,#0 845 00001870 10200018 beqz r1,L59_LF2 846 00001874 54000000 nop; not filled. 847 00001878 2042010c addi r2,r2,#268 848 0000187c 20630001 addi r3,r3,#1 849 00001880 7061001f slei r1,r3,#31 850 00001884 1420ffe0 bnez r1,L61_LF2 851 00001888 54000000 nop; not filled. 852 0000188c L59_LF2: 853 0000188c 6c61001f sgti r1,r3,#31 854 00001890 10200010 beqz r1,L64_LF2 855 00001894 54000000 nop; not filled. 856 00001898 L74_LF2: 857 00001898 2001ffff addi r1,r0,#-1 858 0000189c 08000224 j L73_LF2 859 000018a0 54000000 nop; not filled. 860 000018a4 L64_LF2: 861 000018a4 50610004 slli r1,r3,#0x4 862 000018a8 00230820 add r1,r1,r3 863 000018ac 50210002 slli r1,r1,#0x2 864 000018b0 00230822 sub r1,r1,r3 865 000018b4 50210002 slli r1,r1,#0x2 866 000018b8 00261020 add r2,r1,r6 867 000018bc ac450004 sw 4(r2),r5 868 000018c0 23bdfff0 addi r29,r29,#-16 869 000018c4 afa40000 sw (r29),r4 870 000018c8 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 871 000018cc 2421b058 addui r1,r1,(LC1_LF2)&0xffff 872 000018d0 afa10004 sw 4(r29),r1 873 000018d4 20080004 addi r8,r0,#4 874 000018d8 afa80008 sw 8(r29),r8 875 000018dc 0c002210 jal _dstrncmp 876 000018e0 54000000 nop; not filled. 877 000018e4 23bd0010 addi r29,r29,#16 878 000018e8 64210000 snei r1,r1,#0 879 000018ec 14200014 bnez r1,L65_LF2 880 000018f0 54000000 nop; not filled. 881 000018f4 20840004 addi r4,r4,#4 882 000018f8 20080001 addi r8,r0,#1 883 000018fc 08000008 j L75_LF2 884 00001900 54000000 nop; not filled. 885 00001904 L65_LF2: 886 00001904 20080000 addi r8,r0,#0 887 00001908 L75_LF2: 888 00001908 ac480000 sw (r2),r8 889 0000190c 23bdfff8 addi r29,r29,#-8 890 00001910 3c020000 lhi r2,((_debugstr)>>16)&0xffff 891 00001914 2442fd60 addui r2,r2,(_debugstr)&0xffff 892 00001918 afa20000 sw (r29),r2 893 0000191c 20080066 addi r8,r0,#102 894 00001920 afa80004 sw 4(r29),r8 895 00001924 0c00250c jal _dindex 896 00001928 54000000 nop; not filled. 897 0000192c 23bd0008 addi r29,r29,#8 898 00001930 64210000 snei r1,r1,#0 899 00001934 1420002c bnez r1,L68_LF2 900 00001938 54000000 nop; not filled. 901 0000193c 23bdfff8 addi r29,r29,#-8 902 00001940 afa20000 sw (r29),r2 903 00001944 2008002b addi r8,r0,#43 904 00001948 afa80004 sw 4(r29),r8 905 0000194c 0c0024e4 jal _dindex 906 00001950 54000000 nop; not filled. 907 00001954 23bd0008 addi r29,r29,#8 908 00001958 64210000 snei r1,r1,#0 909 0000195c 1020004c beqz r1,L67_LF2 910 00001960 54000000 nop; not filled. 911 00001964 L68_LF2: 912 00001964 23bdfff0 addi r29,r29,#-16 913 00001968 3c080000 lhi r8,((LC2_LF2)>>16)&0xffff 914 0000196c 2508b060 addui r8,r8,(LC2_LF2)&0xffff 915 00001970 afa80000 sw (r29),r8 916 00001974 afa40004 sw 4(r29),r4 917 00001978 50610004 slli r1,r3,#0x4 918 0000197c 00230820 add r1,r1,r3 919 00001980 50210002 slli r1,r1,#0x2 920 00001984 00230822 sub r1,r1,r3 921 00001988 50210002 slli r1,r1,#0x2 922 0000198c 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 923 00001990 2508b110 addui r8,r8,(_openfiles_LF2)&0xffff 924 00001994 00280820 add r1,r1,r8 925 00001998 8c210000 lw r1,(r1) 926 0000199c afa10008 sw 8(r29),r1 927 000019a0 0c009648 jal _printf 928 000019a4 54000000 nop; not filled. 929 000019a8 23bd0010 addi r29,r29,#16 930 000019ac L67_LF2: 931 000019ac 23bdfff0 addi r29,r29,#-16 932 000019b0 50610004 slli r1,r3,#0x4 933 000019b4 00230820 add r1,r1,r3 934 000019b8 50210002 slli r1,r1,#0x2 935 000019bc 00230822 sub r1,r1,r3 936 000019c0 50260002 slli r6,r1,#0x2 937 000019c4 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 938 000019c8 2508b110 addui r8,r8,(_openfiles_LF2)&0xffff 939 000019cc 00c83820 add r7,r6,r8 940 000019d0 8ce20000 lw r2,(r7) 941 000019d4 50410001 slli r1,r2,#0x1 942 000019d8 00220820 add r1,r1,r2 943 000019dc 50210003 slli r1,r1,#0x3 944 000019e0 3c080000 lhi r8,((_fs_LF2)>>16)&0xffff 945 000019e4 2508b0e0 addui r8,r8,(_fs_LF2)&0xffff 946 000019e8 00280820 add r1,r1,r8 947 000019ec afa30000 sw (r29),r3 948 000019f0 afa40004 sw 4(r29),r4 949 000019f4 afa50008 sw 8(r29),r5 950 000019f8 8c210000 lw r1,(r1) 951 000019fc 4c200000 jalr r1 952 00001a00 54000000 nop; not filled. 953 00001a04 00011020 add r2,r0,r1 954 00001a08 23bd0010 addi r29,r29,#16 955 00001a0c 68410000 slti r1,r2,#0 956 00001a10 10200024 beqz r1,L69_LF2 957 00001a14 54000000 nop; not filled. 958 00001a18 3c080000 lhi r8,((_openfiles_LF2)>>16)&0xffff 959 00001a1c 2508b110 addui r8,r8,(_openfiles_LF2)&0xffff 960 00001a20 00c80820 add r1,r6,r8 961 00001a24 20080000 addi r8,r0,#0 962 00001a28 ac280004 sw 4(r1),r8 963 00001a2c 00020820 add r1,r0,r2 964 00001a30 08000090 j L73_LF2 965 00001a34 54000000 nop; not filled. 966 00001a38 L69_LF2: 967 00001a38 23bdfff8 addi r29,r29,#-8 968 00001a3c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 969 00001a40 2442fd60 addui r2,r2,(_debugstr)&0xffff 970 00001a44 afa20000 sw (r29),r2 971 00001a48 20080066 addi r8,r0,#102 972 00001a4c afa80004 sw 4(r29),r8 973 00001a50 0c0023e0 jal _dindex 974 00001a54 54000000 nop; not filled. 975 00001a58 23bd0008 addi r29,r29,#8 976 00001a5c 64210000 snei r1,r1,#0 977 00001a60 1420002c bnez r1,L72_LF2 978 00001a64 54000000 nop; not filled. 979 00001a68 23bdfff8 addi r29,r29,#-8 980 00001a6c afa20000 sw (r29),r2 981 00001a70 2008002b addi r8,r0,#43 982 00001a74 afa80004 sw 4(r29),r8 983 00001a78 0c0023b8 jal _dindex 984 00001a7c 54000000 nop; not filled. 985 00001a80 23bd0008 addi r29,r29,#8 986 00001a84 64210000 snei r1,r1,#0 987 00001a88 10200034 beqz r1,L71_LF2 988 00001a8c 54000000 nop; not filled. 989 00001a90 L72_LF2: 990 00001a90 23bdffe8 addi r29,r29,#-24 991 00001a94 3c080000 lhi r8,((LC3_LF2)>>16)&0xffff 992 00001a98 2508b084 addui r8,r8,(LC3_LF2)&0xffff 993 00001a9c afa80000 sw (r29),r8 994 00001aa0 afa40004 sw 4(r29),r4 995 00001aa4 8ce70000 lw r7,(r7) 996 00001aa8 afa70008 sw 8(r29),r7 997 00001aac afa5000c sw 12(r29),r5 998 00001ab0 afa30010 sw 16(r29),r3 999 00001ab4 0c009534 jal _printf 1000 00001ab8 54000000 nop; not filled. 1001 00001abc 23bd0018 addi r29,r29,#24 1002 00001ac0 L71_LF2: 1003 00001ac0 00030820 add r1,r0,r3 1004 00001ac4 L73_LF2: 1005 00001ac4 8fa20000 lw r2,0(r29) 1006 00001ac8 8fa30004 lw r3,4(r29) 1007 00001acc 8fa40008 lw r4,8(r29) 1008 00001ad0 8fa5000c lw r5,12(r29) 1009 00001ad4 8fa60010 lw r6,16(r29) 1010 00001ad8 8fa70014 lw r7,20(r29) 1011 00001adc 8fa80018 lw r8,24(r29) 1012 00001ae0 8fdffff8 lw r31,-8(r30) 1013 00001ae4 001ee820 add r29,r0,r30 1014 00001ae8 8fdefffc lw r30,-4(r30) 1015 00001aec 4be00000 jr r31 1016 00001af0 54000000 nop 1017 00001af4 .endproc _FsOpen 1018 00001af4 .align 2 1019 00001af4 .proc _FsClose 1020 00001af4 .global _FsClose 1021 00001af4 _FsClose: 1022 ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. 1023 00001af4 afbefffc sw -4(r29),r30; push fp 1024 00001af8 001df020 add r30,r0,r29; fp = sp 1025 00001afc afbffff8 sw -8(r29),r31; push ret addr 1026 00001b00 2fbd0018 subui r29,r29,#24; alloc local storage 1027 00001b04 afa20000 sw 0(r29),r2 1028 00001b08 afa30004 sw 4(r29),r3 1029 00001b0c afa40008 sw 8(r29),r4 1030 00001b10 8fdf0000 lw r31,(r30) 1031 00001b14 20020000 addi r2,r0,#0 1032 00001b18 23e1ffff addi r1,r31,#-1 1033 00001b1c 7021001e sleui r1,r1,#30 1034 00001b20 10200038 beqz r1,L84_LF2 1035 00001b24 54000000 nop; not filled. 1036 00001b28 53e10004 slli r1,r31,#0x4 1037 00001b2c 003f0820 add r1,r1,r31 1038 00001b30 50210002 slli r1,r1,#0x2 1039 00001b34 003f0822 sub r1,r1,r31 1040 00001b38 50210002 slli r1,r1,#0x2 1041 00001b3c 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1042 00001b40 2484b110 addui r4,r4,(_openfiles_LF2)&0xffff 1043 00001b44 00240820 add r1,r1,r4 1044 00001b48 8c210004 lw r1,4(r1) 1045 00001b4c 64210000 snei r1,r1,#0 1046 00001b50 10200008 beqz r1,L84_LF2 1047 00001b54 54000000 nop; not filled. 1048 00001b58 20020001 addi r2,r0,#1 1049 00001b5c L84_LF2: 1050 00001b5c 64410000 snei r1,r2,#0 1051 00001b60 10200074 beqz r1,L82_LF2 1052 00001b64 54000000 nop; not filled. 1053 00001b68 23bdfff8 addi r29,r29,#-8 1054 00001b6c 53e10004 slli r1,r31,#0x4 1055 00001b70 003f0820 add r1,r1,r31 1056 00001b74 50210002 slli r1,r1,#0x2 1057 00001b78 003f0822 sub r1,r1,r31 1058 00001b7c 50230002 slli r3,r1,#0x2 1059 00001b80 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1060 00001b84 2484b110 addui r4,r4,(_openfiles_LF2)&0xffff 1061 00001b88 00640820 add r1,r3,r4 1062 00001b8c 8c220000 lw r2,(r1) 1063 00001b90 50410001 slli r1,r2,#0x1 1064 00001b94 00220820 add r1,r1,r2 1065 00001b98 50210003 slli r1,r1,#0x3 1066 00001b9c 3c040000 lhi r4,((_fs_LF2)>>16)&0xffff 1067 00001ba0 2484b0e0 addui r4,r4,(_fs_LF2)&0xffff 1068 00001ba4 00240820 add r1,r1,r4 1069 00001ba8 afbf0000 sw (r29),r31 1070 00001bac 8c210010 lw r1,16(r1) 1071 00001bb0 4c200000 jalr r1 1072 00001bb4 54000000 nop; not filled. 1073 00001bb8 23bd0008 addi r29,r29,#8 1074 00001bbc 3c040000 lhi r4,((_openfiles_LF2)>>16)&0xffff 1075 00001bc0 2484b110 addui r4,r4,(_openfiles_LF2)&0xffff 1076 00001bc4 00641020 add r2,r3,r4 1077 00001bc8 20040000 addi r4,r0,#0 1078 00001bcc ac440004 sw 4(r2),r4 1079 00001bd0 08000008 j L86_LF2 1080 00001bd4 54000000 nop; not filled. 1081 00001bd8 L82_LF2: 1082 00001bd8 2001ffff addi r1,r0,#-1 1083 00001bdc L86_LF2: 1084 00001bdc 8fa20000 lw r2,0(r29) 1085 00001be0 8fa30004 lw r3,4(r29) 1086 00001be4 8fa40008 lw r4,8(r29) 1087 00001be8 8fdffff8 lw r31,-8(r30) 1088 00001bec 001ee820 add r29,r0,r30 1089 00001bf0 8fdefffc lw r30,-4(r30) 1090 00001bf4 4be00000 jr r31 1091 00001bf8 54000000 nop 1092 00001bfc .endproc _FsClose 1093 00001bfc .align 2 1094 00001bfc .proc _FsRead 1095 00001bfc .global _FsRead 1096 00001bfc _FsRead: 1097 ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. 1098 00001bfc afbefffc sw -4(r29),r30; push fp 1099 00001c00 001df020 add r30,r0,r29; fp = sp 1100 00001c04 afbffff8 sw -8(r29),r31; push ret addr 1101 00001c08 2fbd0010 subui r29,r29,#16; alloc local storage 1102 00001c0c afa20000 sw 0(r29),r2 1103 00001c10 afa30004 sw 4(r29),r3 1104 00001c14 8fdf0000 lw r31,(r30) 1105 00001c18 20020000 addi r2,r0,#0 1106 00001c1c 23e1ffff addi r1,r31,#-1 1107 00001c20 7021001e sleui r1,r1,#30 1108 00001c24 10200038 beqz r1,L94_LF2 1109 00001c28 54000000 nop; not filled. 1110 00001c2c 53e10004 slli r1,r31,#0x4 1111 00001c30 003f0820 add r1,r1,r31 1112 00001c34 50210002 slli r1,r1,#0x2 1113 00001c38 003f0822 sub r1,r1,r31 1114 00001c3c 50210002 slli r1,r1,#0x2 1115 00001c40 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1116 00001c44 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1117 00001c48 00230820 add r1,r1,r3 1118 00001c4c 8c210004 lw r1,4(r1) 1119 00001c50 64210000 snei r1,r1,#0 1120 00001c54 10200008 beqz r1,L94_LF2 1121 00001c58 54000000 nop; not filled. 1122 00001c5c 20020001 addi r2,r0,#1 1123 00001c60 L94_LF2: 1124 00001c60 64410000 snei r1,r2,#0 1125 00001c64 10200070 beqz r1,L92_LF2 1126 00001c68 54000000 nop; not filled. 1127 00001c6c 23bdfff0 addi r29,r29,#-16 1128 00001c70 53e10004 slli r1,r31,#0x4 1129 00001c74 003f0820 add r1,r1,r31 1130 00001c78 50210002 slli r1,r1,#0x2 1131 00001c7c 003f0822 sub r1,r1,r31 1132 00001c80 50210002 slli r1,r1,#0x2 1133 00001c84 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1134 00001c88 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1135 00001c8c 00230820 add r1,r1,r3 1136 00001c90 8c220000 lw r2,(r1) 1137 00001c94 50410001 slli r1,r2,#0x1 1138 00001c98 00220820 add r1,r1,r2 1139 00001c9c 50210003 slli r1,r1,#0x3 1140 00001ca0 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1141 00001ca4 2463b0e0 addui r3,r3,(_fs_LF2)&0xffff 1142 00001ca8 00230820 add r1,r1,r3 1143 00001cac afbf0000 sw (r29),r31 1144 00001cb0 8fc30004 lw r3,4(r30) 1145 00001cb4 afa30004 sw 4(r29),r3 1146 00001cb8 8fc30008 lw r3,8(r30) 1147 00001cbc afa30008 sw 8(r29),r3 1148 00001cc0 8c210004 lw r1,4(r1) 1149 00001cc4 4c200000 jalr r1 1150 00001cc8 54000000 nop; not filled. 1151 00001ccc 23bd0010 addi r29,r29,#16 1152 00001cd0 08000008 j L91_LF2 1153 00001cd4 54000000 nop; not filled. 1154 00001cd8 L92_LF2: 1155 00001cd8 2001ffff addi r1,r0,#-1 1156 00001cdc L91_LF2: 1157 00001cdc 8fa20000 lw r2,0(r29) 1158 00001ce0 8fa30004 lw r3,4(r29) 1159 00001ce4 8fdffff8 lw r31,-8(r30) 1160 00001ce8 001ee820 add r29,r0,r30 1161 00001cec 8fdefffc lw r30,-4(r30) 1162 00001cf0 4be00000 jr r31 1163 00001cf4 54000000 nop 1164 00001cf8 .endproc _FsRead 1165 00001cf8 .align 2 1166 00001cf8 .proc _FsWrite 1167 00001cf8 .global _FsWrite 1168 00001cf8 _FsWrite: 1169 ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. 1170 00001cf8 afbefffc sw -4(r29),r30; push fp 1171 00001cfc 001df020 add r30,r0,r29; fp = sp 1172 00001d00 afbffff8 sw -8(r29),r31; push ret addr 1173 00001d04 2fbd0010 subui r29,r29,#16; alloc local storage 1174 00001d08 afa20000 sw 0(r29),r2 1175 00001d0c afa30004 sw 4(r29),r3 1176 00001d10 8fdf0000 lw r31,(r30) 1177 00001d14 20020000 addi r2,r0,#0 1178 00001d18 23e1ffff addi r1,r31,#-1 1179 00001d1c 7021001e sleui r1,r1,#30 1180 00001d20 10200038 beqz r1,L103_LF2 1181 00001d24 54000000 nop; not filled. 1182 00001d28 53e10004 slli r1,r31,#0x4 1183 00001d2c 003f0820 add r1,r1,r31 1184 00001d30 50210002 slli r1,r1,#0x2 1185 00001d34 003f0822 sub r1,r1,r31 1186 00001d38 50210002 slli r1,r1,#0x2 1187 00001d3c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1188 00001d40 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1189 00001d44 00230820 add r1,r1,r3 1190 00001d48 8c210004 lw r1,4(r1) 1191 00001d4c 64210000 snei r1,r1,#0 1192 00001d50 10200008 beqz r1,L103_LF2 1193 00001d54 54000000 nop; not filled. 1194 00001d58 20020001 addi r2,r0,#1 1195 00001d5c L103_LF2: 1196 00001d5c 64410000 snei r1,r2,#0 1197 00001d60 10200070 beqz r1,L101_LF2 1198 00001d64 54000000 nop; not filled. 1199 00001d68 23bdfff0 addi r29,r29,#-16 1200 00001d6c 53e10004 slli r1,r31,#0x4 1201 00001d70 003f0820 add r1,r1,r31 1202 00001d74 50210002 slli r1,r1,#0x2 1203 00001d78 003f0822 sub r1,r1,r31 1204 00001d7c 50210002 slli r1,r1,#0x2 1205 00001d80 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1206 00001d84 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1207 00001d88 00230820 add r1,r1,r3 1208 00001d8c 8c220000 lw r2,(r1) 1209 00001d90 50410001 slli r1,r2,#0x1 1210 00001d94 00220820 add r1,r1,r2 1211 00001d98 50210003 slli r1,r1,#0x3 1212 00001d9c 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1213 00001da0 2463b0e0 addui r3,r3,(_fs_LF2)&0xffff 1214 00001da4 00230820 add r1,r1,r3 1215 00001da8 afbf0000 sw (r29),r31 1216 00001dac 8fc30004 lw r3,4(r30) 1217 00001db0 afa30004 sw 4(r29),r3 1218 00001db4 8fc30008 lw r3,8(r30) 1219 00001db8 afa30008 sw 8(r29),r3 1220 00001dbc 8c210008 lw r1,8(r1) 1221 00001dc0 4c200000 jalr r1 1222 00001dc4 54000000 nop; not filled. 1223 00001dc8 23bd0010 addi r29,r29,#16 1224 00001dcc 08000008 j L100_LF2 1225 00001dd0 54000000 nop; not filled. 1226 00001dd4 L101_LF2: 1227 00001dd4 2001ffff addi r1,r0,#-1 1228 00001dd8 L100_LF2: 1229 00001dd8 8fa20000 lw r2,0(r29) 1230 00001ddc 8fa30004 lw r3,4(r29) 1231 00001de0 8fdffff8 lw r31,-8(r30) 1232 00001de4 001ee820 add r29,r0,r30 1233 00001de8 8fdefffc lw r30,-4(r30) 1234 00001dec 4be00000 jr r31 1235 00001df0 54000000 nop 1236 00001df4 .endproc _FsWrite 1237 00001df4 .align 2 1238 00001df4 .proc _FsSeek 1239 00001df4 .global _FsSeek 1240 00001df4 _FsSeek: 1241 ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. 1242 00001df4 afbefffc sw -4(r29),r30; push fp 1243 00001df8 001df020 add r30,r0,r29; fp = sp 1244 00001dfc afbffff8 sw -8(r29),r31; push ret addr 1245 00001e00 2fbd0010 subui r29,r29,#16; alloc local storage 1246 00001e04 afa20000 sw 0(r29),r2 1247 00001e08 afa30004 sw 4(r29),r3 1248 00001e0c 8fdf0000 lw r31,(r30) 1249 00001e10 20020000 addi r2,r0,#0 1250 00001e14 23e1ffff addi r1,r31,#-1 1251 00001e18 7021001e sleui r1,r1,#30 1252 00001e1c 10200038 beqz r1,L112_LF2 1253 00001e20 54000000 nop; not filled. 1254 00001e24 53e10004 slli r1,r31,#0x4 1255 00001e28 003f0820 add r1,r1,r31 1256 00001e2c 50210002 slli r1,r1,#0x2 1257 00001e30 003f0822 sub r1,r1,r31 1258 00001e34 50210002 slli r1,r1,#0x2 1259 00001e38 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1260 00001e3c 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1261 00001e40 00230820 add r1,r1,r3 1262 00001e44 8c210004 lw r1,4(r1) 1263 00001e48 64210000 snei r1,r1,#0 1264 00001e4c 10200008 beqz r1,L112_LF2 1265 00001e50 54000000 nop; not filled. 1266 00001e54 20020001 addi r2,r0,#1 1267 00001e58 L112_LF2: 1268 00001e58 64410000 snei r1,r2,#0 1269 00001e5c 10200070 beqz r1,L110_LF2 1270 00001e60 54000000 nop; not filled. 1271 00001e64 23bdfff0 addi r29,r29,#-16 1272 00001e68 53e10004 slli r1,r31,#0x4 1273 00001e6c 003f0820 add r1,r1,r31 1274 00001e70 50210002 slli r1,r1,#0x2 1275 00001e74 003f0822 sub r1,r1,r31 1276 00001e78 50210002 slli r1,r1,#0x2 1277 00001e7c 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1278 00001e80 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1279 00001e84 00230820 add r1,r1,r3 1280 00001e88 8c220000 lw r2,(r1) 1281 00001e8c 50410001 slli r1,r2,#0x1 1282 00001e90 00220820 add r1,r1,r2 1283 00001e94 50210003 slli r1,r1,#0x3 1284 00001e98 3c030000 lhi r3,((_fs_LF2)>>16)&0xffff 1285 00001e9c 2463b0e0 addui r3,r3,(_fs_LF2)&0xffff 1286 00001ea0 00230820 add r1,r1,r3 1287 00001ea4 afbf0000 sw (r29),r31 1288 00001ea8 8fc30004 lw r3,4(r30) 1289 00001eac afa30004 sw 4(r29),r3 1290 00001eb0 8fc30008 lw r3,8(r30) 1291 00001eb4 afa30008 sw 8(r29),r3 1292 00001eb8 8c21000c lw r1,12(r1) 1293 00001ebc 4c200000 jalr r1 1294 00001ec0 54000000 nop; not filled. 1295 00001ec4 23bd0010 addi r29,r29,#16 1296 00001ec8 08000008 j L109_LF2 1297 00001ecc 54000000 nop; not filled. 1298 00001ed0 L110_LF2: 1299 00001ed0 2001ffff addi r1,r0,#-1 1300 00001ed4 L109_LF2: 1301 00001ed4 8fa20000 lw r2,0(r29) 1302 00001ed8 8fa30004 lw r3,4(r29) 1303 00001edc 8fdffff8 lw r31,-8(r30) 1304 00001ee0 001ee820 add r29,r0,r30 1305 00001ee4 8fdefffc lw r30,-4(r30) 1306 00001ee8 4be00000 jr r31 1307 00001eec 54000000 nop 1308 00001ef0 .endproc _FsSeek 1309 00001ef0 .align 2 1310 00001ef0 .proc _FsDelete 1311 00001ef0 .global _FsDelete 1312 00001ef0 _FsDelete: 1313 ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. 1314 00001ef0 afbefffc sw -4(r29),r30; push fp 1315 00001ef4 001df020 add r30,r0,r29; fp = sp 1316 00001ef8 afbffff8 sw -8(r29),r31; push ret addr 1317 00001efc 2fbd0010 subui r29,r29,#16; alloc local storage 1318 00001f00 afa20000 sw 0(r29),r2 1319 00001f04 afa30004 sw 4(r29),r3 1320 00001f08 8fc20000 lw r2,(r30) 1321 00001f0c 23bdfff0 addi r29,r29,#-16 1322 00001f10 afa20000 sw (r29),r2 1323 00001f14 3c010000 lhi r1,((LC1_LF2)>>16)&0xffff 1324 00001f18 2421b058 addui r1,r1,(LC1_LF2)&0xffff 1325 00001f1c afa10004 sw 4(r29),r1 1326 00001f20 20030004 addi r3,r0,#4 1327 00001f24 afa30008 sw 8(r29),r3 1328 00001f28 0c001bc4 jal _dstrncmp 1329 00001f2c 54000000 nop; not filled. 1330 00001f30 23bd0010 addi r29,r29,#16 1331 00001f34 64210000 snei r1,r1,#0 1332 00001f38 1420001c bnez r1,L118_LF2 1333 00001f3c 54000000 nop; not filled. 1334 00001f40 20420004 addi r2,r2,#4 1335 00001f44 23bdfff8 addi r29,r29,#-8 1336 00001f48 3c010000 lhi r1,((_fs_LF2+44)>>16)&0xffff 1337 00001f4c 2421b10c addui r1,r1,(_fs_LF2+44)&0xffff 1338 00001f50 08000010 j L120_LF2 1339 00001f54 54000000 nop; not filled. 1340 00001f58 L118_LF2: 1341 00001f58 23bdfff8 addi r29,r29,#-8 1342 00001f5c 3c010000 lhi r1,((_fs_LF2+20)>>16)&0xffff 1343 00001f60 2421b0f4 addui r1,r1,(_fs_LF2+20)&0xffff 1344 00001f64 L120_LF2: 1345 00001f64 afa20000 sw (r29),r2 1346 00001f68 8c210000 lw r1,(r1) 1347 00001f6c 4c200000 jalr r1 1348 00001f70 54000000 nop; not filled. 1349 00001f74 23bd0008 addi r29,r29,#8 1350 00001f78 8fa20000 lw r2,0(r29) 1351 00001f7c 8fa30004 lw r3,4(r29) 1352 00001f80 8fdffff8 lw r31,-8(r30) 1353 00001f84 001ee820 add r29,r0,r30 1354 00001f88 8fdefffc lw r30,-4(r30) 1355 00001f8c 4be00000 jr r31 1356 00001f90 54000000 nop 1357 00001f94 .endproc _FsDelete 1358 00001f94 .data 1359 0000b0aa .align 2 1360 0000b0ac LC4_LF2: 1361 0000b0ac 41747465 .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" 1361 0000b0b0 6d707469 1361 0000b0b4 6e672074 1361 0000b0b8 6f206f70 1361 0000b0bc 656e2066 1361 0000b0c0 696c6520 1361 0000b0c4 25732069 1361 0000b0c8 6e746f20 1361 0000b0cc 64657363 1361 0000b0d0 2025642c 1361 0000b0d4 206d6f64 1361 0000b0d8 65202564 1361 0000b0dc 2e0a00 1362 0000b0df .text 1363 00001f94 .align 2 1364 00001f94 .proc _FsUnixOpen 1365 00001f94 .global _FsUnixOpen 1366 00001f94 _FsUnixOpen: 1367 ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. 1368 00001f94 afbefffc sw -4(r29),r30; push fp 1369 00001f98 001df020 add r30,r0,r29; fp = sp 1370 00001f9c afbffff8 sw -8(r29),r31; push ret addr 1371 00001fa0 2fbd0020 subui r29,r29,#32; alloc local storage 1372 00001fa4 afa20000 sw 0(r29),r2 1373 00001fa8 afa30004 sw 4(r29),r3 1374 00001fac afa40008 sw 8(r29),r4 1375 00001fb0 afa5000c sw 12(r29),r5 1376 00001fb4 afa60010 sw 16(r29),r6 1377 00001fb8 8fc40000 lw r4,(r30) 1378 00001fbc 8fc30004 lw r3,4(r30) 1379 00001fc0 8fc50008 lw r5,8(r30) 1380 00001fc4 23bdfff8 addi r29,r29,#-8 1381 00001fc8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 1382 00001fcc 2442fd60 addui r2,r2,(_debugstr)&0xffff 1383 00001fd0 afa20000 sw (r29),r2 1384 00001fd4 20060066 addi r6,r0,#102 1385 00001fd8 afa60004 sw 4(r29),r6 1386 00001fdc 0c001e54 jal _dindex 1387 00001fe0 54000000 nop; not filled. 1388 00001fe4 23bd0008 addi r29,r29,#8 1389 00001fe8 64210000 snei r1,r1,#0 1390 00001fec 1420002c bnez r1,L127_LF2 1391 00001ff0 54000000 nop; not filled. 1392 00001ff4 23bdfff8 addi r29,r29,#-8 1393 00001ff8 afa20000 sw (r29),r2 1394 00001ffc 2006002b addi r6,r0,#43 1395 00002000 afa60004 sw 4(r29),r6 1396 00002004 0c001e2c jal _dindex 1397 00002008 54000000 nop; not filled. 1398 0000200c 23bd0008 addi r29,r29,#8 1399 00002010 64210000 snei r1,r1,#0 1400 00002014 1020002c beqz r1,L126_LF2 1401 00002018 54000000 nop; not filled. 1402 0000201c L127_LF2: 1403 0000201c 23bdfff0 addi r29,r29,#-16 1404 00002020 3c060000 lhi r6,((LC4_LF2)>>16)&0xffff 1405 00002024 24c6b0ac addui r6,r6,(LC4_LF2)&0xffff 1406 00002028 afa60000 sw (r29),r6 1407 0000202c afa30004 sw 4(r29),r3 1408 00002030 afa40008 sw 8(r29),r4 1409 00002034 afa5000c sw 12(r29),r5 1410 00002038 0c008fb0 jal _printf 1411 0000203c 54000000 nop; not filled. 1412 00002040 23bd0010 addi r29,r29,#16 1413 00002044 L126_LF2: 1414 00002044 23bdfff8 addi r29,r29,#-8 1415 00002048 afa30000 sw (r29),r3 1416 0000204c afa50004 sw 4(r29),r5 1417 00002050 0c008f08 jal _open 1418 00002054 54000000 nop; not filled. 1419 00002058 00011820 add r3,r0,r1 1420 0000205c 50810004 slli r1,r4,#0x4 1421 00002060 00240820 add r1,r1,r4 1422 00002064 50210002 slli r1,r1,#0x2 1423 00002068 00240822 sub r1,r1,r4 1424 0000206c 50210002 slli r1,r1,#0x2 1425 00002070 3c060000 lhi r6,((_openfiles_LF2)>>16)&0xffff 1426 00002074 24c6b110 addui r6,r6,(_openfiles_LF2)&0xffff 1427 00002078 00260820 add r1,r1,r6 1428 0000207c ac230108 sw 264(r1),r3 1429 00002080 23bd0008 addi r29,r29,#8 1430 00002084 68620000 slti r2,r3,#0 1431 00002088 00030820 add r1,r0,r3 1432 0000208c 14400008 bnez r2,L128_LF2 1433 00002090 54000000 nop; not filled. 1434 00002094 20010001 addi r1,r0,#1 1435 00002098 L128_LF2: 1436 00002098 8fa20000 lw r2,0(r29) 1437 0000209c 8fa30004 lw r3,4(r29) 1438 000020a0 8fa40008 lw r4,8(r29) 1439 000020a4 8fa5000c lw r5,12(r29) 1440 000020a8 8fa60010 lw r6,16(r29) 1441 000020ac 8fdffff8 lw r31,-8(r30) 1442 000020b0 001ee820 add r29,r0,r30 1443 000020b4 8fdefffc lw r30,-4(r30) 1444 000020b8 4be00000 jr r31 1445 000020bc 54000000 nop 1446 000020c0 .endproc _FsUnixOpen 1447 000020c0 .align 2 1448 000020c0 .proc _FsUnixRead 1449 000020c0 .global _FsUnixRead 1450 000020c0 _FsUnixRead: 1451 ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. 1452 000020c0 afbefffc sw -4(r29),r30; push fp 1453 000020c4 001df020 add r30,r0,r29; fp = sp 1454 000020c8 afbffff8 sw -8(r29),r31; push ret addr 1455 000020cc 2fbd0018 subui r29,r29,#24; alloc local storage 1456 000020d0 afa20000 sw 0(r29),r2 1457 000020d4 afa30004 sw 4(r29),r3 1458 000020d8 afa40008 sw 8(r29),r4 1459 000020dc afa5000c sw 12(r29),r5 1460 000020e0 8fc20000 lw r2,(r30) 1461 000020e4 8fc30004 lw r3,4(r30) 1462 000020e8 8fc40008 lw r4,8(r30) 1463 000020ec 23bdfff0 addi r29,r29,#-16 1464 000020f0 50410004 slli r1,r2,#0x4 1465 000020f4 00220820 add r1,r1,r2 1466 000020f8 50210002 slli r1,r1,#0x2 1467 000020fc 00220822 sub r1,r1,r2 1468 00002100 50210002 slli r1,r1,#0x2 1469 00002104 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1470 00002108 24a5b110 addui r5,r5,(_openfiles_LF2)&0xffff 1471 0000210c 00250820 add r1,r1,r5 1472 00002110 8c210108 lw r1,264(r1) 1473 00002114 afa10000 sw (r29),r1 1474 00002118 afa30004 sw 4(r29),r3 1475 0000211c afa40008 sw 8(r29),r4 1476 00002120 0c008e50 jal _read 1477 00002124 54000000 nop; not filled. 1478 00002128 23bd0010 addi r29,r29,#16 1479 0000212c 8fa20000 lw r2,0(r29) 1480 00002130 8fa30004 lw r3,4(r29) 1481 00002134 8fa40008 lw r4,8(r29) 1482 00002138 8fa5000c lw r5,12(r29) 1483 0000213c 8fdffff8 lw r31,-8(r30) 1484 00002140 001ee820 add r29,r0,r30 1485 00002144 8fdefffc lw r30,-4(r30) 1486 00002148 4be00000 jr r31 1487 0000214c 54000000 nop 1488 00002150 .endproc _FsUnixRead 1489 00002150 .align 2 1490 00002150 .proc _FsUnixWrite 1491 00002150 .global _FsUnixWrite 1492 00002150 _FsUnixWrite: 1493 ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. 1494 00002150 afbefffc sw -4(r29),r30; push fp 1495 00002154 001df020 add r30,r0,r29; fp = sp 1496 00002158 afbffff8 sw -8(r29),r31; push ret addr 1497 0000215c 2fbd0018 subui r29,r29,#24; alloc local storage 1498 00002160 afa20000 sw 0(r29),r2 1499 00002164 afa30004 sw 4(r29),r3 1500 00002168 afa40008 sw 8(r29),r4 1501 0000216c afa5000c sw 12(r29),r5 1502 00002170 8fc20000 lw r2,(r30) 1503 00002174 8fc30004 lw r3,4(r30) 1504 00002178 8fc40008 lw r4,8(r30) 1505 0000217c 23bdfff0 addi r29,r29,#-16 1506 00002180 50410004 slli r1,r2,#0x4 1507 00002184 00220820 add r1,r1,r2 1508 00002188 50210002 slli r1,r1,#0x2 1509 0000218c 00220822 sub r1,r1,r2 1510 00002190 50210002 slli r1,r1,#0x2 1511 00002194 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1512 00002198 24a5b110 addui r5,r5,(_openfiles_LF2)&0xffff 1513 0000219c 00250820 add r1,r1,r5 1514 000021a0 8c210108 lw r1,264(r1) 1515 000021a4 afa10000 sw (r29),r1 1516 000021a8 afa30004 sw 4(r29),r3 1517 000021ac afa40008 sw 8(r29),r4 1518 000021b0 0c008dcc jal _write 1519 000021b4 54000000 nop; not filled. 1520 000021b8 23bd0010 addi r29,r29,#16 1521 000021bc 8fa20000 lw r2,0(r29) 1522 000021c0 8fa30004 lw r3,4(r29) 1523 000021c4 8fa40008 lw r4,8(r29) 1524 000021c8 8fa5000c lw r5,12(r29) 1525 000021cc 8fdffff8 lw r31,-8(r30) 1526 000021d0 001ee820 add r29,r0,r30 1527 000021d4 8fdefffc lw r30,-4(r30) 1528 000021d8 4be00000 jr r31 1529 000021dc 54000000 nop 1530 000021e0 .endproc _FsUnixWrite 1531 000021e0 .align 2 1532 000021e0 .proc _FsUnixSeek 1533 000021e0 .global _FsUnixSeek 1534 000021e0 _FsUnixSeek: 1535 ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. 1536 000021e0 afbefffc sw -4(r29),r30; push fp 1537 000021e4 001df020 add r30,r0,r29; fp = sp 1538 000021e8 afbffff8 sw -8(r29),r31; push ret addr 1539 000021ec 2fbd0018 subui r29,r29,#24; alloc local storage 1540 000021f0 afa20000 sw 0(r29),r2 1541 000021f4 afa30004 sw 4(r29),r3 1542 000021f8 afa40008 sw 8(r29),r4 1543 000021fc afa5000c sw 12(r29),r5 1544 00002200 8fc20000 lw r2,(r30) 1545 00002204 8fc30004 lw r3,4(r30) 1546 00002208 8fc40008 lw r4,8(r30) 1547 0000220c 23bdfff0 addi r29,r29,#-16 1548 00002210 50410004 slli r1,r2,#0x4 1549 00002214 00220820 add r1,r1,r2 1550 00002218 50210002 slli r1,r1,#0x2 1551 0000221c 00220822 sub r1,r1,r2 1552 00002220 50210002 slli r1,r1,#0x2 1553 00002224 3c050000 lhi r5,((_openfiles_LF2)>>16)&0xffff 1554 00002228 24a5b110 addui r5,r5,(_openfiles_LF2)&0xffff 1555 0000222c 00250820 add r1,r1,r5 1556 00002230 8c210108 lw r1,264(r1) 1557 00002234 afa10000 sw (r29),r1 1558 00002238 afa30004 sw 4(r29),r3 1559 0000223c afa40008 sw 8(r29),r4 1560 00002240 0c008d48 jal _lseek 1561 00002244 54000000 nop; not filled. 1562 00002248 23bd0010 addi r29,r29,#16 1563 0000224c 8fa20000 lw r2,0(r29) 1564 00002250 8fa30004 lw r3,4(r29) 1565 00002254 8fa40008 lw r4,8(r29) 1566 00002258 8fa5000c lw r5,12(r29) 1567 0000225c 8fdffff8 lw r31,-8(r30) 1568 00002260 001ee820 add r29,r0,r30 1569 00002264 8fdefffc lw r30,-4(r30) 1570 00002268 4be00000 jr r31 1571 0000226c 54000000 nop 1572 00002270 .endproc _FsUnixSeek 1573 00002270 .align 2 1574 00002270 .proc _FsUnixClose 1575 00002270 .global _FsUnixClose 1576 00002270 _FsUnixClose: 1577 ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. 1578 00002270 afbefffc sw -4(r29),r30; push fp 1579 00002274 001df020 add r30,r0,r29; fp = sp 1580 00002278 afbffff8 sw -8(r29),r31; push ret addr 1581 0000227c 2fbd0010 subui r29,r29,#16; alloc local storage 1582 00002280 afa20000 sw 0(r29),r2 1583 00002284 afa30004 sw 4(r29),r3 1584 00002288 8fc20000 lw r2,(r30) 1585 0000228c 23bdfff8 addi r29,r29,#-8 1586 00002290 50410004 slli r1,r2,#0x4 1587 00002294 00220820 add r1,r1,r2 1588 00002298 50210002 slli r1,r1,#0x2 1589 0000229c 00220822 sub r1,r1,r2 1590 000022a0 50210002 slli r1,r1,#0x2 1591 000022a4 3c030000 lhi r3,((_openfiles_LF2)>>16)&0xffff 1592 000022a8 2463b110 addui r3,r3,(_openfiles_LF2)&0xffff 1593 000022ac 00230820 add r1,r1,r3 1594 000022b0 8c210108 lw r1,264(r1) 1595 000022b4 afa10000 sw (r29),r1 1596 000022b8 0c008cac jal _close 1597 000022bc 54000000 nop; not filled. 1598 000022c0 23bd0008 addi r29,r29,#8 1599 000022c4 8fa20000 lw r2,0(r29) 1600 000022c8 8fa30004 lw r3,4(r29) 1601 000022cc 8fdffff8 lw r31,-8(r30) 1602 000022d0 001ee820 add r29,r0,r30 1603 000022d4 8fdefffc lw r30,-4(r30) 1604 000022d8 4be00000 jr r31 1605 000022dc 54000000 nop 1606 000022e0 .endproc _FsUnixClose 1607 000022e0 .align 2 1608 000022e0 .proc _FsUnixDelete 1609 000022e0 .global _FsUnixDelete 1610 000022e0 _FsUnixDelete: 1611 ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. 1612 000022e0 afbefffc sw -4(r29),r30; push fp 1613 000022e4 001df020 add r30,r0,r29; fp = sp 1614 000022e8 afbffff8 sw -8(r29),r31; push ret addr 1615 000022ec 2fbd0008 subui r29,r29,#8; alloc local storage 1616 000022f0 2001ffff addi r1,r0,#-1 1617 000022f4 8fdffff8 lw r31,-8(r30) 1618 000022f8 001ee820 add r29,r0,r30 1619 000022fc 8fdefffc lw r30,-4(r30) 1620 00002300 4be00000 jr r31 1621 00002304 54000000 nop 1622 00002308 .endproc _FsUnixDelete 1623 00002308 .align 2 1624 00002308 .proc _FsDlxIo 1625 00002308 .global _FsDlxIo 1626 00002308 _FsDlxIo: 1627 ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. 1628 00002308 afbefffc sw -4(r29),r30; push fp 1629 0000230c 001df020 add r30,r0,r29; fp = sp 1630 00002310 afbffff8 sw -8(r29),r31; push ret addr 1631 00002314 2fbd0008 subui r29,r29,#8; alloc local storage 1632 00002318 20010001 addi r1,r0,#1 1633 0000231c 8fdffff8 lw r31,-8(r30) 1634 00002320 001ee820 add r29,r0,r30 1635 00002324 8fdefffc lw r30,-4(r30) 1636 00002328 4be00000 jr r31 1637 0000232c 54000000 nop 1638 00002330 .endproc _FsDlxIo 1639 00002330 .align 2 1640 00002330 .proc _FsDlxRead 1641 00002330 .global _FsDlxRead 1642 00002330 _FsDlxRead: 1643 ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. 1644 00002330 afbefffc sw -4(r29),r30; push fp 1645 00002334 001df020 add r30,r0,r29; fp = sp 1646 00002338 afbffff8 sw -8(r29),r31; push ret addr 1647 0000233c 2fbd0008 subui r29,r29,#8; alloc local storage 1648 00002340 20010001 addi r1,r0,#1 1649 00002344 8fdffff8 lw r31,-8(r30) 1650 00002348 001ee820 add r29,r0,r30 1651 0000234c 8fdefffc lw r30,-4(r30) 1652 00002350 4be00000 jr r31 1653 00002354 54000000 nop 1654 00002358 .endproc _FsDlxRead 1655 00002358 .align 2 1656 00002358 .proc _FsDlxWrite 1657 00002358 .global _FsDlxWrite 1658 00002358 _FsDlxWrite: 1659 ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. 1660 00002358 afbefffc sw -4(r29),r30; push fp 1661 0000235c 001df020 add r30,r0,r29; fp = sp 1662 00002360 afbffff8 sw -8(r29),r31; push ret addr 1663 00002364 2fbd0008 subui r29,r29,#8; alloc local storage 1664 00002368 20010001 addi r1,r0,#1 1665 0000236c 8fdffff8 lw r31,-8(r30) 1666 00002370 001ee820 add r29,r0,r30 1667 00002374 8fdefffc lw r30,-4(r30) 1668 00002378 4be00000 jr r31 1669 0000237c 54000000 nop 1670 00002380 .endproc _FsDlxWrite 1671 00002380 .align 2 1672 00002380 .proc _FsDlxOpen 1673 00002380 .global _FsDlxOpen 1674 00002380 _FsDlxOpen: 1675 ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. 1676 00002380 afbefffc sw -4(r29),r30; push fp 1677 00002384 001df020 add r30,r0,r29; fp = sp 1678 00002388 afbffff8 sw -8(r29),r31; push ret addr 1679 0000238c 2fbd0010 subui r29,r29,#16; alloc local storage 1680 00002390 afa20000 sw 0(r29),r2 1681 00002394 8fc10000 lw r1,(r30) 1682 00002398 50220004 slli r2,r1,#0x4 1683 0000239c 00411020 add r2,r2,r1 1684 000023a0 50420002 slli r2,r2,#0x2 1685 000023a4 00410822 sub r1,r2,r1 1686 000023a8 50210002 slli r1,r1,#0x2 1687 000023ac 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1688 000023b0 27ffb110 addui r31,r31,(_openfiles_LF2)&0xffff 1689 000023b4 003f0820 add r1,r1,r31 1690 000023b8 201f0000 addi r31,r0,#0 1691 000023bc ac3f0108 sw 264(r1),r31 1692 000023c0 20010001 addi r1,r0,#1 1693 000023c4 8fa20000 lw r2,0(r29) 1694 000023c8 8fdffff8 lw r31,-8(r30) 1695 000023cc 001ee820 add r29,r0,r30 1696 000023d0 8fdefffc lw r30,-4(r30) 1697 000023d4 4be00000 jr r31 1698 000023d8 54000000 nop 1699 000023dc .endproc _FsDlxOpen 1700 000023dc .align 2 1701 000023dc .proc _FsDlxSeek 1702 000023dc .global _FsDlxSeek 1703 000023dc _FsDlxSeek: 1704 ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. 1705 000023dc afbefffc sw -4(r29),r30; push fp 1706 000023e0 001df020 add r30,r0,r29; fp = sp 1707 000023e4 afbffff8 sw -8(r29),r31; push ret addr 1708 000023e8 2fbd0010 subui r29,r29,#16; alloc local storage 1709 000023ec afa20000 sw 0(r29),r2 1710 000023f0 8fc10000 lw r1,(r30) 1711 000023f4 50220004 slli r2,r1,#0x4 1712 000023f8 00411020 add r2,r2,r1 1713 000023fc 50420002 slli r2,r2,#0x2 1714 00002400 00410822 sub r1,r2,r1 1715 00002404 50210002 slli r1,r1,#0x2 1716 00002408 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1717 0000240c 27ffb110 addui r31,r31,(_openfiles_LF2)&0xffff 1718 00002410 003f0820 add r1,r1,r31 1719 00002414 8c210108 lw r1,264(r1) 1720 00002418 8fa20000 lw r2,0(r29) 1721 0000241c 8fdffff8 lw r31,-8(r30) 1722 00002420 001ee820 add r29,r0,r30 1723 00002424 8fdefffc lw r30,-4(r30) 1724 00002428 4be00000 jr r31 1725 0000242c 54000000 nop 1726 00002430 .endproc _FsDlxSeek 1727 00002430 .align 2 1728 00002430 .proc _FsDlxClose 1729 00002430 .global _FsDlxClose 1730 00002430 _FsDlxClose: 1731 ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. 1732 00002430 afbefffc sw -4(r29),r30; push fp 1733 00002434 001df020 add r30,r0,r29; fp = sp 1734 00002438 afbffff8 sw -8(r29),r31; push ret addr 1735 0000243c 2fbd0008 subui r29,r29,#8; alloc local storage 1736 00002440 20010001 addi r1,r0,#1 1737 00002444 8fdffff8 lw r31,-8(r30) 1738 00002448 001ee820 add r29,r0,r30 1739 0000244c 8fdefffc lw r30,-4(r30) 1740 00002450 4be00000 jr r31 1741 00002454 54000000 nop 1742 00002458 .endproc _FsDlxClose 1743 00002458 .align 2 1744 00002458 .proc _FsDlxDelete 1745 00002458 .global _FsDlxDelete 1746 00002458 _FsDlxDelete: 1747 ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. 1748 00002458 afbefffc sw -4(r29),r30; push fp 1749 0000245c 001df020 add r30,r0,r29; fp = sp 1750 00002460 afbffff8 sw -8(r29),r31; push ret addr 1751 00002464 2fbd0008 subui r29,r29,#8; alloc local storage 1752 00002468 20010001 addi r1,r0,#1 1753 0000246c 8fdffff8 lw r31,-8(r30) 1754 00002470 001ee820 add r29,r0,r30 1755 00002474 8fdefffc lw r30,-4(r30) 1756 00002478 4be00000 jr r31 1757 0000247c 54000000 nop 1758 00002480 .endproc _FsDlxDelete 1759 00002480 .align 2 1760 00002480 .proc _FsModuleInit 1761 00002480 .global _FsModuleInit 1762 00002480 _FsModuleInit: 1763 ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. 1764 00002480 afbefffc sw -4(r29),r30; push fp 1765 00002484 001df020 add r30,r0,r29; fp = sp 1766 00002488 afbffff8 sw -8(r29),r31; push ret addr 1767 0000248c 2fbd0010 subui r29,r29,#16; alloc local storage 1768 00002490 afa20000 sw 0(r29),r2 1769 00002494 afa30004 sw 4(r29),r3 1770 00002498 3c1f0000 lhi r31,((_openfiles_LF2)>>16)&0xffff 1771 0000249c 27ffb110 addui r31,r31,(_openfiles_LF2)&0xffff 1772 000024a0 23e22074 addi r2,r31,#8308 1773 000024a4 L182_LF2: 1774 000024a4 20030000 addi r3,r0,#0 1775 000024a8 afe30004 sw 4(r31),r3 1776 000024ac 23ff010c addi r31,r31,#268 1777 000024b0 03e2082c sle r1,r31,r2 1778 000024b4 1420ffec bnez r1,L182_LF2 1779 000024b8 54000000 nop; not filled. 1780 000024bc 3c010000 lhi r1,((_fs_LF2)>>16)&0xffff 1781 000024c0 2421b0e0 addui r1,r1,(_fs_LF2)&0xffff 1782 000024c4 3c030000 lhi r3,((_FsUnixOpen)>>16)&0xffff 1783 000024c8 24631f94 addui r3,r3,(_FsUnixOpen)&0xffff 1784 000024cc ac230000 sw (r1),r3 1785 000024d0 3c030000 lhi r3,((_FsUnixClose)>>16)&0xffff 1786 000024d4 24632270 addui r3,r3,(_FsUnixClose)&0xffff 1787 000024d8 ac230010 sw 16(r1),r3 1788 000024dc 3c030000 lhi r3,((_FsUnixRead)>>16)&0xffff 1789 000024e0 246320c0 addui r3,r3,(_FsUnixRead)&0xffff 1790 000024e4 ac230004 sw 4(r1),r3 1791 000024e8 3c030000 lhi r3,((_FsUnixWrite)>>16)&0xffff 1792 000024ec 24632150 addui r3,r3,(_FsUnixWrite)&0xffff 1793 000024f0 ac230008 sw 8(r1),r3 1794 000024f4 3c030000 lhi r3,((_FsUnixSeek)>>16)&0xffff 1795 000024f8 246321e0 addui r3,r3,(_FsUnixSeek)&0xffff 1796 000024fc ac23000c sw 12(r1),r3 1797 00002500 3c030000 lhi r3,((_FsUnixDelete)>>16)&0xffff 1798 00002504 246322e0 addui r3,r3,(_FsUnixDelete)&0xffff 1799 00002508 ac230014 sw 20(r1),r3 1800 0000250c 3c030000 lhi r3,((_FsDlxOpen)>>16)&0xffff 1801 00002510 24632380 addui r3,r3,(_FsDlxOpen)&0xffff 1802 00002514 ac230018 sw 24(r1),r3 1803 00002518 3c030000 lhi r3,((_FsDlxClose)>>16)&0xffff 1804 0000251c 24632430 addui r3,r3,(_FsDlxClose)&0xffff 1805 00002520 ac230028 sw 40(r1),r3 1806 00002524 3c030000 lhi r3,((_FsDlxRead)>>16)&0xffff 1807 00002528 24632330 addui r3,r3,(_FsDlxRead)&0xffff 1808 0000252c ac23001c sw 28(r1),r3 1809 00002530 3c030000 lhi r3,((_FsDlxWrite)>>16)&0xffff 1810 00002534 24632358 addui r3,r3,(_FsDlxWrite)&0xffff 1811 00002538 ac230020 sw 32(r1),r3 1812 0000253c 3c030000 lhi r3,((_FsDlxSeek)>>16)&0xffff 1813 00002540 246323dc addui r3,r3,(_FsDlxSeek)&0xffff 1814 00002544 ac230024 sw 36(r1),r3 1815 00002548 3c030000 lhi r3,((_FsDlxDelete)>>16)&0xffff 1816 0000254c 24632458 addui r3,r3,(_FsDlxDelete)&0xffff 1817 00002550 ac23002c sw 44(r1),r3 1818 00002554 8fa20000 lw r2,0(r29) 1819 00002558 8fa30004 lw r3,4(r29) 1820 0000255c 8fdffff8 lw r31,-8(r30) 1821 00002560 001ee820 add r29,r0,r30 1822 00002564 8fdefffc lw r30,-4(r30) 1823 00002568 4be00000 jr r31 1824 0000256c 54000000 nop 1825 00002570 .endproc _FsModuleInit 1826 00002570 .data 1827 0000b0df .align 2 1828 0000b0e0 _fs_LF2: 1829 0000b0e0 .space 48 1830 0000b110 .align 2 1831 0000b110 _openfiles_LF2: 1832 0000b110 .space 8576 1833 ; Compiled by GCC 1835 0000d290 .align 2 1836 0000d290 _rcsid_LF3: 1837 0000d290 3a206d65 .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 1837 0000d294 6d6f7279 1837 0000d298 2e632c76 1837 0000d29c 20312e31 1837 0000d2a0 20323030 1837 0000d2a4 302f3039 1837 0000d2a8 2f323020 1837 0000d2ac 30313a35 1837 0000d2b0 303a3139 1837 0000d2b4 20656c6d 1837 0000d2b8 20457870 1837 0000d2bc 20656c6d 1837 0000d2c0 20303030 1838 0000d2c4 .text 1839 00002570 .align 2 1840 00002570 .proc _isspace 1841 00002570 .global _isspace 1842 00002570 _isspace: 1843 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 1844 00002570 afbefffc sw -4(r29),r30; push fp 1845 00002574 001df020 add r30,r0,r29; fp = sp 1846 00002578 afbffff8 sw -8(r29),r31; push ret addr 1847 0000257c 2fbd0010 subui r29,r29,#16; alloc local storage 1848 00002580 afa20000 sw 0(r29),r2 1849 00002584 83c20003 lb r2,3(r30) 1850 00002588 201f0000 addi r31,r0,#0 1851 0000258c 304100ff andi r1,r2,#0x00ff 1852 00002590 60210020 seqi r1,r1,#32 1853 00002594 14200018 bnez r1,L6_LF3 1854 00002598 54000000 nop; not filled. 1855 0000259c 2041fff7 addi r1,r2,#-9 1856 000025a0 302100ff andi r1,r1,#0x00ff 1857 000025a4 70210001 sleui r1,r1,#1 1858 000025a8 10200008 beqz r1,L5_LF3 1859 000025ac 54000000 nop; not filled. 1860 000025b0 L6_LF3: 1861 000025b0 201f0001 addi r31,r0,#1 1862 000025b4 L5_LF3: 1863 000025b4 001f0820 add r1,r0,r31 1864 000025b8 8fa20000 lw r2,0(r29) 1865 000025bc 8fdffff8 lw r31,-8(r30) 1866 000025c0 001ee820 add r29,r0,r30 1867 000025c4 8fdefffc lw r30,-4(r30) 1868 000025c8 4be00000 jr r31 1869 000025cc 54000000 nop 1870 000025d0 .endproc _isspace 1871 000025d0 .align 2 1872 000025d0 .proc _isxdigit 1873 000025d0 .global _isxdigit 1874 000025d0 _isxdigit: 1875 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 1876 000025d0 afbefffc sw -4(r29),r30; push fp 1877 000025d4 001df020 add r30,r0,r29; fp = sp 1878 000025d8 afbffff8 sw -8(r29),r31; push ret addr 1879 000025dc 2fbd0010 subui r29,r29,#16; alloc local storage 1880 000025e0 afa20000 sw 0(r29),r2 1881 000025e4 83df0003 lb r31,3(r30) 1882 000025e8 20020000 addi r2,r0,#0 1883 000025ec 23e1ffd0 addi r1,r31,#-48 1884 000025f0 302100ff andi r1,r1,#0x00ff 1885 000025f4 70210009 sleui r1,r1,#9 1886 000025f8 14200028 bnez r1,L12_LF3 1887 000025fc 54000000 nop; not filled. 1888 00002600 23e1ff9f addi r1,r31,#-97 1889 00002604 302100ff andi r1,r1,#0x00ff 1890 00002608 70210005 sleui r1,r1,#5 1891 0000260c 14200014 bnez r1,L12_LF3 1892 00002610 54000000 nop; not filled. 1893 00002614 33e100ff andi r1,r31,#0x00ff 1894 00002618 64210041 snei r1,r1,#65 1895 0000261c 14200008 bnez r1,L11_LF3 1896 00002620 54000000 nop; not filled. 1897 00002624 L12_LF3: 1898 00002624 20020001 addi r2,r0,#1 1899 00002628 L11_LF3: 1900 00002628 00020820 add r1,r0,r2 1901 0000262c 8fa20000 lw r2,0(r29) 1902 00002630 8fdffff8 lw r31,-8(r30) 1903 00002634 001ee820 add r29,r0,r30 1904 00002638 8fdefffc lw r30,-4(r30) 1905 0000263c 4be00000 jr r31 1906 00002640 54000000 nop 1907 00002644 .endproc _isxdigit 1908 00002644 .align 2 1909 00002644 .proc _DisableIntrs 1910 00002644 .global _DisableIntrs 1911 00002644 _DisableIntrs: 1912 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 1913 00002644 afbefffc sw -4(r29),r30; push fp 1914 00002648 001df020 add r30,r0,r29; fp = sp 1915 0000264c afbffff8 sw -8(r29),r31; push ret addr 1916 00002650 2fbd0010 subui r29,r29,#16; alloc local storage 1917 00002654 afa20000 sw 0(r29),r2 1918 00002658 23bdfff8 addi r29,r29,#-8 1919 0000265c 2002000f addi r2,r0,#15 1920 00002660 afa20000 sw (r29),r2 1921 00002664 0fffec20 jal _SetIntrs 1922 00002668 54000000 nop; not filled. 1923 0000266c 23bd0008 addi r29,r29,#8 1924 00002670 8fa20000 lw r2,0(r29) 1925 00002674 8fdffff8 lw r31,-8(r30) 1926 00002678 001ee820 add r29,r0,r30 1927 0000267c 8fdefffc lw r30,-4(r30) 1928 00002680 4be00000 jr r31 1929 00002684 54000000 nop 1930 00002688 .endproc _DisableIntrs 1931 00002688 .align 2 1932 00002688 .proc _EnableIntrs 1933 00002688 .global _EnableIntrs 1934 00002688 _EnableIntrs: 1935 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 1936 00002688 afbefffc sw -4(r29),r30; push fp 1937 0000268c 001df020 add r30,r0,r29; fp = sp 1938 00002690 afbffff8 sw -8(r29),r31; push ret addr 1939 00002694 2fbd0010 subui r29,r29,#16; alloc local storage 1940 00002698 afa20000 sw 0(r29),r2 1941 0000269c 23bdfff8 addi r29,r29,#-8 1942 000026a0 20020000 addi r2,r0,#0 1943 000026a4 afa20000 sw (r29),r2 1944 000026a8 0fffebdc jal _SetIntrs 1945 000026ac 54000000 nop; not filled. 1946 000026b0 23bd0008 addi r29,r29,#8 1947 000026b4 8fa20000 lw r2,0(r29) 1948 000026b8 8fdffff8 lw r31,-8(r30) 1949 000026bc 001ee820 add r29,r0,r30 1950 000026c0 8fdefffc lw r30,-4(r30) 1951 000026c4 4be00000 jr r31 1952 000026c8 54000000 nop 1953 000026cc .endproc _EnableIntrs 1954 000026cc .align 2 1955 000026cc .proc _RestoreIntrs 1956 000026cc .global _RestoreIntrs 1957 000026cc _RestoreIntrs: 1958 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 1959 000026cc afbefffc sw -4(r29),r30; push fp 1960 000026d0 001df020 add r30,r0,r29; fp = sp 1961 000026d4 afbffff8 sw -8(r29),r31; push ret addr 1962 000026d8 2fbd0010 subui r29,r29,#16; alloc local storage 1963 000026dc afa20000 sw 0(r29),r2 1964 000026e0 23bdfff8 addi r29,r29,#-8 1965 000026e4 8fc20000 lw r2,(r30) 1966 000026e8 afa20000 sw (r29),r2 1967 000026ec 0fffeb98 jal _SetIntrs 1968 000026f0 54000000 nop; not filled. 1969 000026f4 23bd0008 addi r29,r29,#8 1970 000026f8 8fa20000 lw r2,0(r29) 1971 000026fc 8fdffff8 lw r31,-8(r30) 1972 00002700 001ee820 add r29,r0,r30 1973 00002704 8fdefffc lw r30,-4(r30) 1974 00002708 4be00000 jr r31 1975 0000270c 54000000 nop 1976 00002710 .endproc _RestoreIntrs 1977 00002710 .align 2 1978 00002710 .proc _QueueLinkInit 1979 00002710 .global _QueueLinkInit 1980 00002710 _QueueLinkInit: 1981 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 1982 00002710 afbefffc sw -4(r29),r30; push fp 1983 00002714 001df020 add r30,r0,r29; fp = sp 1984 00002718 afbffff8 sw -8(r29),r31; push ret addr 1985 0000271c 2fbd0010 subui r29,r29,#16; alloc local storage 1986 00002720 afa20000 sw 0(r29),r2 1987 00002724 8fc10000 lw r1,(r30) 1988 00002728 8fc20004 lw r2,4(r30) 1989 0000272c 201f0000 addi r31,r0,#0 1990 00002730 ac3f0000 sw (r1),r31 1991 00002734 ac22000c sw 12(r1),r2 1992 00002738 8fa20000 lw r2,0(r29) 1993 0000273c 8fdffff8 lw r31,-8(r30) 1994 00002740 001ee820 add r29,r0,r30 1995 00002744 8fdefffc lw r30,-4(r30) 1996 00002748 4be00000 jr r31 1997 0000274c 54000000 nop 1998 00002750 .endproc _QueueLinkInit 1999 00002750 .align 2 2000 00002750 .proc _QueueNext 2001 00002750 .global _QueueNext 2002 00002750 _QueueNext: 2003 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 2004 00002750 afbefffc sw -4(r29),r30; push fp 2005 00002754 001df020 add r30,r0,r29; fp = sp 2006 00002758 afbffff8 sw -8(r29),r31; push ret addr 2007 0000275c 2fbd0008 subui r29,r29,#8; alloc local storage 2008 00002760 8fc10000 lw r1,(r30) 2009 00002764 8c210000 lw r1,(r1) 2010 00002768 8fdffff8 lw r31,-8(r30) 2011 0000276c 001ee820 add r29,r0,r30 2012 00002770 8fdefffc lw r30,-4(r30) 2013 00002774 4be00000 jr r31 2014 00002778 54000000 nop 2015 0000277c .endproc _QueueNext 2016 0000277c .align 2 2017 0000277c .proc _QueuePrev 2018 0000277c .global _QueuePrev 2019 0000277c _QueuePrev: 2020 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 2021 0000277c afbefffc sw -4(r29),r30; push fp 2022 00002780 001df020 add r30,r0,r29; fp = sp 2023 00002784 afbffff8 sw -8(r29),r31; push ret addr 2024 00002788 2fbd0008 subui r29,r29,#8; alloc local storage 2025 0000278c 8fc10000 lw r1,(r30) 2026 00002790 8c210004 lw r1,4(r1) 2027 00002794 8fdffff8 lw r31,-8(r30) 2028 00002798 001ee820 add r29,r0,r30 2029 0000279c 8fdefffc lw r30,-4(r30) 2030 000027a0 4be00000 jr r31 2031 000027a4 54000000 nop 2032 000027a8 .endproc _QueuePrev 2033 000027a8 .align 2 2034 000027a8 .proc _QueueFirst 2035 000027a8 .global _QueueFirst 2036 000027a8 _QueueFirst: 2037 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 2038 000027a8 afbefffc sw -4(r29),r30; push fp 2039 000027ac 001df020 add r30,r0,r29; fp = sp 2040 000027b0 afbffff8 sw -8(r29),r31; push ret addr 2041 000027b4 2fbd0008 subui r29,r29,#8; alloc local storage 2042 000027b8 8fc10000 lw r1,(r30) 2043 000027bc 8c210000 lw r1,(r1) 2044 000027c0 8fdffff8 lw r31,-8(r30) 2045 000027c4 001ee820 add r29,r0,r30 2046 000027c8 8fdefffc lw r30,-4(r30) 2047 000027cc 4be00000 jr r31 2048 000027d0 54000000 nop 2049 000027d4 .endproc _QueueFirst 2050 000027d4 .align 2 2051 000027d4 .proc _QueueLast 2052 000027d4 .global _QueueLast 2053 000027d4 _QueueLast: 2054 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 2055 000027d4 afbefffc sw -4(r29),r30; push fp 2056 000027d8 001df020 add r30,r0,r29; fp = sp 2057 000027dc afbffff8 sw -8(r29),r31; push ret addr 2058 000027e0 2fbd0008 subui r29,r29,#8; alloc local storage 2059 000027e4 8fc10000 lw r1,(r30) 2060 000027e8 8c210004 lw r1,4(r1) 2061 000027ec 8fdffff8 lw r31,-8(r30) 2062 000027f0 001ee820 add r29,r0,r30 2063 000027f4 8fdefffc lw r30,-4(r30) 2064 000027f8 4be00000 jr r31 2065 000027fc 54000000 nop 2066 00002800 .endproc _QueueLast 2067 00002800 .align 2 2068 00002800 .proc _QueueInsertAfter 2069 00002800 .global _QueueInsertAfter 2070 00002800 _QueueInsertAfter: 2071 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 2072 00002800 afbefffc sw -4(r29),r30; push fp 2073 00002804 001df020 add r30,r0,r29; fp = sp 2074 00002808 afbffff8 sw -8(r29),r31; push ret addr 2075 0000280c 2fbd0010 subui r29,r29,#16; alloc local storage 2076 00002810 afa20000 sw 0(r29),r2 2077 00002814 afa30004 sw 4(r29),r3 2078 00002818 8fc30000 lw r3,(r30) 2079 0000281c 8fc20004 lw r2,4(r30) 2080 00002820 8fc10008 lw r1,8(r30) 2081 00002824 ac230008 sw 8(r1),r3 2082 00002828 ac220004 sw 4(r1),r2 2083 0000282c 8c5f0000 lw r31,(r2) 2084 00002830 ac3f0000 sw (r1),r31 2085 00002834 ac410000 sw (r2),r1 2086 00002838 8c220000 lw r2,(r1) 2087 0000283c ac410004 sw 4(r2),r1 2088 00002840 8c610008 lw r1,8(r3) 2089 00002844 20210001 addi r1,r1,#1 2090 00002848 ac610008 sw 8(r3),r1 2091 0000284c 8fa20000 lw r2,0(r29) 2092 00002850 8fa30004 lw r3,4(r29) 2093 00002854 8fdffff8 lw r31,-8(r30) 2094 00002858 001ee820 add r29,r0,r30 2095 0000285c 8fdefffc lw r30,-4(r30) 2096 00002860 4be00000 jr r31 2097 00002864 54000000 nop 2098 00002868 .endproc _QueueInsertAfter 2099 00002868 .align 2 2100 00002868 .proc _QueueInsertFirst 2101 00002868 .global _QueueInsertFirst 2102 00002868 _QueueInsertFirst: 2103 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 2104 00002868 afbefffc sw -4(r29),r30; push fp 2105 0000286c 001df020 add r30,r0,r29; fp = sp 2106 00002870 afbffff8 sw -8(r29),r31; push ret addr 2107 00002874 2fbd0010 subui r29,r29,#16; alloc local storage 2108 00002878 afa20000 sw 0(r29),r2 2109 0000287c afa30004 sw 4(r29),r3 2110 00002880 8fc30000 lw r3,(r30) 2111 00002884 8fc10004 lw r1,4(r30) 2112 00002888 ac230008 sw 8(r1),r3 2113 0000288c ac230004 sw 4(r1),r3 2114 00002890 8c7f0000 lw r31,(r3) 2115 00002894 ac3f0000 sw (r1),r31 2116 00002898 ac610000 sw (r3),r1 2117 0000289c 8c220000 lw r2,(r1) 2118 000028a0 ac410004 sw 4(r2),r1 2119 000028a4 8c610008 lw r1,8(r3) 2120 000028a8 20210001 addi r1,r1,#1 2121 000028ac ac610008 sw 8(r3),r1 2122 000028b0 8fa20000 lw r2,0(r29) 2123 000028b4 8fa30004 lw r3,4(r29) 2124 000028b8 8fdffff8 lw r31,-8(r30) 2125 000028bc 001ee820 add r29,r0,r30 2126 000028c0 8fdefffc lw r30,-4(r30) 2127 000028c4 4be00000 jr r31 2128 000028c8 54000000 nop 2129 000028cc .endproc _QueueInsertFirst 2130 000028cc .align 2 2131 000028cc .proc _QueueInsertLast 2132 000028cc .global _QueueInsertLast 2133 000028cc _QueueInsertLast: 2134 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 2135 000028cc afbefffc sw -4(r29),r30; push fp 2136 000028d0 001df020 add r30,r0,r29; fp = sp 2137 000028d4 afbffff8 sw -8(r29),r31; push ret addr 2138 000028d8 2fbd0010 subui r29,r29,#16; alloc local storage 2139 000028dc afa20000 sw 0(r29),r2 2140 000028e0 afa30004 sw 4(r29),r3 2141 000028e4 8fc30000 lw r3,(r30) 2142 000028e8 8fc10004 lw r1,4(r30) 2143 000028ec 8c620004 lw r2,4(r3) 2144 000028f0 ac230008 sw 8(r1),r3 2145 000028f4 ac220004 sw 4(r1),r2 2146 000028f8 8c5f0000 lw r31,(r2) 2147 000028fc ac3f0000 sw (r1),r31 2148 00002900 ac410000 sw (r2),r1 2149 00002904 8c220000 lw r2,(r1) 2150 00002908 ac410004 sw 4(r2),r1 2151 0000290c 8c610008 lw r1,8(r3) 2152 00002910 20210001 addi r1,r1,#1 2153 00002914 ac610008 sw 8(r3),r1 2154 00002918 8fa20000 lw r2,0(r29) 2155 0000291c 8fa30004 lw r3,4(r29) 2156 00002920 8fdffff8 lw r31,-8(r30) 2157 00002924 001ee820 add r29,r0,r30 2158 00002928 8fdefffc lw r30,-4(r30) 2159 0000292c 4be00000 jr r31 2160 00002930 54000000 nop 2161 00002934 .endproc _QueueInsertLast 2162 00002934 .align 2 2163 00002934 .proc _QueueRemove 2164 00002934 .global _QueueRemove 2165 00002934 _QueueRemove: 2166 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 2167 00002934 afbefffc sw -4(r29),r30; push fp 2168 00002938 001df020 add r30,r0,r29; fp = sp 2169 0000293c afbffff8 sw -8(r29),r31; push ret addr 2170 00002940 2fbd0010 subui r29,r29,#16; alloc local storage 2171 00002944 afa20000 sw 0(r29),r2 2172 00002948 afa30004 sw 4(r29),r3 2173 0000294c 8fdf0000 lw r31,(r30) 2174 00002950 8fe10008 lw r1,8(r31) 2175 00002954 8c210008 lw r1,8(r1) 2176 00002958 6c210000 sgti r1,r1,#0 2177 0000295c 1020002c beqz r1,L44_LF3 2178 00002960 54000000 nop; not filled. 2179 00002964 8fe10004 lw r1,4(r31) 2180 00002968 8fe30000 lw r3,(r31) 2181 0000296c ac230000 sw (r1),r3 2182 00002970 8fe10000 lw r1,(r31) 2183 00002974 8fe30004 lw r3,4(r31) 2184 00002978 ac230004 sw 4(r1),r3 2185 0000297c 8fe20008 lw r2,8(r31) 2186 00002980 8c410008 lw r1,8(r2) 2187 00002984 2021ffff addi r1,r1,#-1 2188 00002988 ac410008 sw 8(r2),r1 2189 0000298c L44_LF3: 2190 0000298c 20030000 addi r3,r0,#0 2191 00002990 afe30000 sw (r31),r3 2192 00002994 8fa20000 lw r2,0(r29) 2193 00002998 8fa30004 lw r3,4(r29) 2194 0000299c 8fdffff8 lw r31,-8(r30) 2195 000029a0 001ee820 add r29,r0,r30 2196 000029a4 8fdefffc lw r30,-4(r30) 2197 000029a8 4be00000 jr r31 2198 000029ac 54000000 nop 2199 000029b0 .endproc _QueueRemove 2200 000029b0 .align 2 2201 000029b0 .proc _QueueLength 2202 000029b0 .global _QueueLength 2203 000029b0 _QueueLength: 2204 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 2205 000029b0 afbefffc sw -4(r29),r30; push fp 2206 000029b4 001df020 add r30,r0,r29; fp = sp 2207 000029b8 afbffff8 sw -8(r29),r31; push ret addr 2208 000029bc 2fbd0008 subui r29,r29,#8; alloc local storage 2209 000029c0 8fc10000 lw r1,(r30) 2210 000029c4 8c210008 lw r1,8(r1) 2211 000029c8 8fdffff8 lw r31,-8(r30) 2212 000029cc 001ee820 add r29,r0,r30 2213 000029d0 8fdefffc lw r30,-4(r30) 2214 000029d4 4be00000 jr r31 2215 000029d8 54000000 nop 2216 000029dc .endproc _QueueLength 2217 000029dc .align 2 2218 000029dc .proc _QueueEmpty 2219 000029dc .global _QueueEmpty 2220 000029dc _QueueEmpty: 2221 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 2222 000029dc afbefffc sw -4(r29),r30; push fp 2223 000029e0 001df020 add r30,r0,r29; fp = sp 2224 000029e4 afbffff8 sw -8(r29),r31; push ret addr 2225 000029e8 2fbd0008 subui r29,r29,#8; alloc local storage 2226 000029ec 8fc10000 lw r1,(r30) 2227 000029f0 8c210008 lw r1,8(r1) 2228 000029f4 60210000 seqi r1,r1,#0 2229 000029f8 8fdffff8 lw r31,-8(r30) 2230 000029fc 001ee820 add r29,r0,r30 2231 00002a00 8fdefffc lw r30,-4(r30) 2232 00002a04 4be00000 jr r31 2233 00002a08 54000000 nop 2234 00002a0c .endproc _QueueEmpty 2235 00002a0c .data 2236 0000d2c4 .align 2 2237 0000d2c4 _negativeone_LF3: 2238 0000d2c4 ffffffff .word -1 2239 0000d2c8 .text 2240 00002a0c .align 2 2241 00002a0c .proc _MemoryGetSize 2242 00002a0c .global _MemoryGetSize 2243 00002a0c _MemoryGetSize: 2244 ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. 2245 00002a0c afbefffc sw -4(r29),r30; push fp 2246 00002a10 001df020 add r30,r0,r29; fp = sp 2247 00002a14 afbffff8 sw -8(r29),r31; push ret addr 2248 00002a18 2fbd0008 subui r29,r29,#8; alloc local storage 2249 00002a1c 3c01ffff lhi r1,#-1 2250 00002a20 24210000 addui r1,r1,#0 2251 00002a24 8c210000 lw r1,(r1) 2252 00002a28 8fdffff8 lw r31,-8(r30) 2253 00002a2c 001ee820 add r29,r0,r30 2254 00002a30 8fdefffc lw r30,-4(r30) 2255 00002a34 4be00000 jr r31 2256 00002a38 54000000 nop 2257 00002a3c .endproc _MemoryGetSize 2258 00002a3c .data 2259 0000d2c8 .align 2 2260 0000d2c8 LC0_LF3: 2261 0000d2c8 53657420 .ascii "Set freemap entry %d to 0x%x.\n\000" 2261 0000d2cc 66726565 2261 0000d2d0 6d617020 2261 0000d2d4 656e7472 2261 0000d2d8 79202564 2261 0000d2dc 20746f20 2261 0000d2e0 30782578 2261 0000d2e4 2e0a00 2262 0000d2e7 .text 2263 00002a3c .align 2 2264 00002a3c .proc _MemorySetFreemap 2265 00002a3c .global _MemorySetFreemap 2266 00002a3c _MemorySetFreemap: 2267 ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. 2268 00002a3c afbefffc sw -4(r29),r30; push fp 2269 00002a40 001df020 add r30,r0,r29; fp = sp 2270 00002a44 afbffff8 sw -8(r29),r31; push ret addr 2271 00002a48 2fbd0020 subui r29,r29,#32; alloc local storage 2272 00002a4c afa20000 sw 0(r29),r2 2273 00002a50 afa30004 sw 4(r29),r3 2274 00002a54 afa40008 sw 8(r29),r4 2275 00002a58 afa5000c sw 12(r29),r5 2276 00002a5c afa60010 sw 16(r29),r6 2277 00002a60 8fc30000 lw r3,(r30) 2278 00002a64 8fdf0004 lw r31,4(r30) 2279 00002a68 00031020 add r2,r0,r3 2280 00002a6c 74610000 sgei r1,r3,#0 2281 00002a70 14200008 bnez r1,L61_LF3 2282 00002a74 54000000 nop; not filled. 2283 00002a78 2062001f addi r2,r3,#31 2284 00002a7c L61_LF3: 2285 00002a7c 5c450005 srai r5,r2,#0x5 2286 00002a80 50a10005 slli r1,r5,#0x5 2287 00002a84 00611822 sub r3,r3,r1 2288 00002a88 20010001 addi r1,r0,#1 2289 00002a8c 00231004 sll r2,r1,r3 2290 00002a90 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2291 00002a94 2421d2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2292 00002a98 8c210000 lw r1,(r1) 2293 00002a9c 00411026 xor r2,r2,r1 2294 00002aa0 50a10002 slli r1,r5,#0x2 2295 00002aa4 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2296 00002aa8 24c6d438 addui r6,r6,(_freepages_LF3)&0xffff 2297 00002aac 00262020 add r4,r1,r6 2298 00002ab0 8c810000 lw r1,(r4) 2299 00002ab4 00221024 and r2,r1,r2 2300 00002ab8 03e30804 sll r1,r31,r3 2301 00002abc 00410825 or r1,r2,r1 2302 00002ac0 ac810000 sw (r4),r1 2303 00002ac4 23bdfff8 addi r29,r29,#-8 2304 00002ac8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2305 00002acc 2442fd60 addui r2,r2,(_debugstr)&0xffff 2306 00002ad0 afa20000 sw (r29),r2 2307 00002ad4 2006006d addi r6,r0,#109 2308 00002ad8 afa60004 sw 4(r29),r6 2309 00002adc 0c001354 jal _dindex 2310 00002ae0 54000000 nop; not filled. 2311 00002ae4 23bd0008 addi r29,r29,#8 2312 00002ae8 64210000 snei r1,r1,#0 2313 00002aec 1420002c bnez r1,L65_LF3 2314 00002af0 54000000 nop; not filled. 2315 00002af4 23bdfff8 addi r29,r29,#-8 2316 00002af8 afa20000 sw (r29),r2 2317 00002afc 2006002b addi r6,r0,#43 2318 00002b00 afa60004 sw 4(r29),r6 2319 00002b04 0c00132c jal _dindex 2320 00002b08 54000000 nop; not filled. 2321 00002b0c 23bd0008 addi r29,r29,#8 2322 00002b10 64210000 snei r1,r1,#0 2323 00002b14 1020002c beqz r1,L64_LF3 2324 00002b18 54000000 nop; not filled. 2325 00002b1c L65_LF3: 2326 00002b1c 23bdfff0 addi r29,r29,#-16 2327 00002b20 3c060000 lhi r6,((LC0_LF3)>>16)&0xffff 2328 00002b24 24c6d2c8 addui r6,r6,(LC0_LF3)&0xffff 2329 00002b28 afa60000 sw (r29),r6 2330 00002b2c afa50004 sw 4(r29),r5 2331 00002b30 8c840000 lw r4,(r4) 2332 00002b34 afa40008 sw 8(r29),r4 2333 00002b38 0c0084b0 jal _printf 2334 00002b3c 54000000 nop; not filled. 2335 00002b40 23bd0010 addi r29,r29,#16 2336 00002b44 L64_LF3: 2337 00002b44 8fa20000 lw r2,0(r29) 2338 00002b48 8fa30004 lw r3,4(r29) 2339 00002b4c 8fa40008 lw r4,8(r29) 2340 00002b50 8fa5000c lw r5,12(r29) 2341 00002b54 8fa60010 lw r6,16(r29) 2342 00002b58 8fdffff8 lw r31,-8(r30) 2343 00002b5c 001ee820 add r29,r0,r30 2344 00002b60 8fdefffc lw r30,-4(r30) 2345 00002b64 4be00000 jr r31 2346 00002b68 54000000 nop 2347 00002b6c .endproc _MemorySetFreemap 2348 00002b6c .data 2349 0000d2e7 .align 2 2350 0000d2e8 LC1_LF3: 2351 0000d2e8 4d617020 .ascii "Map has %d entries, memory size is 0x%x.\n\000" 2351 0000d2ec 68617320 2351 0000d2f0 25642065 2351 0000d2f4 6e747269 2351 0000d2f8 65732c20 2351 0000d2fc 6d656d6f 2351 0000d300 72792073 2351 0000d304 697a6520 2351 0000d308 69732030 2351 0000d30c 7825782e 2351 0000d310 0a00 2352 0000d312 .align 2 2353 0000d314 LC2_LF3: 2354 0000d314 46726565 .ascii "Free pages start with page # 0x%x.\n\000" 2354 0000d318 20706167 2354 0000d31c 65732073 2354 0000d320 74617274 2354 0000d324 20776974 2354 0000d328 68207061 2354 0000d32c 67652023 2354 0000d330 20307825 2354 0000d334 782e0a00 2355 0000d338 .align 2 2356 0000d338 LC3_LF3: 2357 0000d338 496e6974 .ascii "Initialized %d free pages.\n\000" 2357 0000d33c 69616c69 2357 0000d340 7a656420 2357 0000d344 25642066 2357 0000d348 72656520 2357 0000d34c 70616765 2357 0000d350 732e0a00 2358 0000d354 .text 2359 00002b6c .align 2 2360 00002b6c .proc _MemoryModuleInit 2361 00002b6c .global _MemoryModuleInit 2362 00002b6c _MemoryModuleInit: 2363 ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. 2364 00002b6c afbefffc sw -4(r29),r30; push fp 2365 00002b70 001df020 add r30,r0,r29; fp = sp 2366 00002b74 afbffff8 sw -8(r29),r31; push ret addr 2367 00002b78 2fbd0030 subui r29,r29,#48; alloc local storage 2368 00002b7c afa20000 sw 0(r29),r2 2369 00002b80 afa30004 sw 4(r29),r3 2370 00002b84 afa40008 sw 8(r29),r4 2371 00002b88 afa5000c sw 12(r29),r5 2372 00002b8c afa60010 sw 16(r29),r6 2373 00002b90 afa70014 sw 20(r29),r7 2374 00002b94 afa80018 sw 24(r29),r8 2375 00002b98 afa9001c sw 28(r29),r9 2376 00002b9c afaa0020 sw 32(r29),r10 2377 00002ba0 afab0024 sw 36(r29),r11 2378 00002ba4 3c01ffff lhi r1,#-1 2379 00002ba8 24210000 addui r1,r1,#0 2380 00002bac 8c220000 lw r2,(r1) 2381 00002bb0 74410000 sgei r1,r2,#0 2382 00002bb4 14200008 bnez r1,L68_LF3 2383 00002bb8 54000000 nop; not filled. 2384 00002bbc 2442ffff addui r2,r2,#65535 2385 00002bc0 L68_LF3: 2386 00002bc0 5c480010 srai r8,r2,#0x10 2387 00002bc4 3c030000 lhi r3,((_pagestart_LF3)>>16)&0xffff 2388 00002bc8 2463d42c addui r3,r3,(_pagestart_LF3)&0xffff 2389 00002bcc 3c010001 lhi r1,((_lastosaddress)>>16)&0xffff 2390 00002bd0 24212df8 addui r1,r1,(_lastosaddress)&0xffff 2391 00002bd4 8c210000 lw r1,(r1) 2392 00002bd8 2422fffc addui r2,r1,#65532 2393 00002bdc 74410000 sgei r1,r2,#0 2394 00002be0 14200008 bnez r1,L69_LF3 2395 00002be4 54000000 nop; not filled. 2396 00002be8 2442ffff addui r2,r2,#65535 2397 00002bec L69_LF3: 2398 00002bec 5c410010 srai r1,r2,#0x10 2399 00002bf0 ac610000 sw (r3),r1 2400 00002bf4 3c030000 lhi r3,((_freemapmax_LF3)>>16)&0xffff 2401 00002bf8 2463d430 addui r3,r3,(_freemapmax_LF3)&0xffff 2402 00002bfc 2102001f addi r2,r8,#31 2403 00002c00 74410000 sgei r1,r2,#0 2404 00002c04 14200008 bnez r1,L70_LF3 2405 00002c08 54000000 nop; not filled. 2406 00002c0c 2102003e addi r2,r8,#62 2407 00002c10 L70_LF3: 2408 00002c10 5c410005 srai r1,r2,#0x5 2409 00002c14 ac610000 sw (r3),r1 2410 00002c18 23bdfff8 addi r29,r29,#-8 2411 00002c1c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2412 00002c20 2442fd60 addui r2,r2,(_debugstr)&0xffff 2413 00002c24 afa20000 sw (r29),r2 2414 00002c28 200b006d addi r11,r0,#109 2415 00002c2c afab0004 sw 4(r29),r11 2416 00002c30 0c001200 jal _dindex 2417 00002c34 54000000 nop; not filled. 2418 00002c38 23bd0008 addi r29,r29,#8 2419 00002c3c 64210000 snei r1,r1,#0 2420 00002c40 1420002c bnez r1,L72_LF3 2421 00002c44 54000000 nop; not filled. 2422 00002c48 23bdfff8 addi r29,r29,#-8 2423 00002c4c afa20000 sw (r29),r2 2424 00002c50 200b002b addi r11,r0,#43 2425 00002c54 afab0004 sw 4(r29),r11 2426 00002c58 0c0011d8 jal _dindex 2427 00002c5c 54000000 nop; not filled. 2428 00002c60 23bd0008 addi r29,r29,#8 2429 00002c64 64210000 snei r1,r1,#0 2430 00002c68 1020002c beqz r1,L71_LF3 2431 00002c6c 54000000 nop; not filled. 2432 00002c70 L72_LF3: 2433 00002c70 23bdfff0 addi r29,r29,#-16 2434 00002c74 3c0b0000 lhi r11,((LC1_LF3)>>16)&0xffff 2435 00002c78 256bd2e8 addui r11,r11,(LC1_LF3)&0xffff 2436 00002c7c afab0000 sw (r29),r11 2437 00002c80 8c610000 lw r1,(r3) 2438 00002c84 afa10004 sw 4(r29),r1 2439 00002c88 afa80008 sw 8(r29),r8 2440 00002c8c 0c00835c jal _printf 2441 00002c90 54000000 nop; not filled. 2442 00002c94 23bd0010 addi r29,r29,#16 2443 00002c98 L71_LF3: 2444 00002c98 23bdfff8 addi r29,r29,#-8 2445 00002c9c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2446 00002ca0 2442fd60 addui r2,r2,(_debugstr)&0xffff 2447 00002ca4 afa20000 sw (r29),r2 2448 00002ca8 200b006d addi r11,r0,#109 2449 00002cac afab0004 sw 4(r29),r11 2450 00002cb0 0c001180 jal _dindex 2451 00002cb4 54000000 nop; not filled. 2452 00002cb8 23bd0008 addi r29,r29,#8 2453 00002cbc 64210000 snei r1,r1,#0 2454 00002cc0 1420002c bnez r1,L74_LF3 2455 00002cc4 54000000 nop; not filled. 2456 00002cc8 23bdfff8 addi r29,r29,#-8 2457 00002ccc afa20000 sw (r29),r2 2458 00002cd0 200b002b addi r11,r0,#43 2459 00002cd4 afab0004 sw 4(r29),r11 2460 00002cd8 0c001158 jal _dindex 2461 00002cdc 54000000 nop; not filled. 2462 00002ce0 23bd0008 addi r29,r29,#8 2463 00002ce4 64210000 snei r1,r1,#0 2464 00002ce8 10200030 beqz r1,L73_LF3 2465 00002cec 54000000 nop; not filled. 2466 00002cf0 L74_LF3: 2467 00002cf0 23bdfff8 addi r29,r29,#-8 2468 00002cf4 3c0b0000 lhi r11,((LC2_LF3)>>16)&0xffff 2469 00002cf8 256bd314 addui r11,r11,(LC2_LF3)&0xffff 2470 00002cfc afab0000 sw (r29),r11 2471 00002d00 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2472 00002d04 2421d42c addui r1,r1,(_pagestart_LF3)&0xffff 2473 00002d08 8c210000 lw r1,(r1) 2474 00002d0c afa10004 sw 4(r29),r1 2475 00002d10 0c0082d8 jal _printf 2476 00002d14 54000000 nop; not filled. 2477 00002d18 23bd0008 addi r29,r29,#8 2478 00002d1c L73_LF3: 2479 00002d1c 20020000 addi r2,r0,#0 2480 00002d20 3c040000 lhi r4,((_freemapmax_LF3)>>16)&0xffff 2481 00002d24 2484d430 addui r4,r4,(_freemapmax_LF3)&0xffff 2482 00002d28 8c810000 lw r1,(r4) 2483 00002d2c 0041082a slt r1,r2,r1 2484 00002d30 1020002c beqz r1,L76_LF3 2485 00002d34 54000000 nop; not filled. 2486 00002d38 3c030000 lhi r3,((_freepages_LF3)>>16)&0xffff 2487 00002d3c 2463d438 addui r3,r3,(_freepages_LF3)&0xffff 2488 00002d40 L78_LF3: 2489 00002d40 200b0000 addi r11,r0,#0 2490 00002d44 ac6b0000 sw (r3),r11 2491 00002d48 20630004 addi r3,r3,#4 2492 00002d4c 20420001 addi r2,r2,#1 2493 00002d50 8c810000 lw r1,(r4) 2494 00002d54 0041082a slt r1,r2,r1 2495 00002d58 1420ffe4 bnez r1,L78_LF3 2496 00002d5c 54000000 nop; not filled. 2497 00002d60 L76_LF3: 2498 00002d60 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2499 00002d64 2442d434 addui r2,r2,(_nfreepages_LF3)&0xffff 2500 00002d68 200b0000 addi r11,r0,#0 2501 00002d6c ac4b0000 sw (r2),r11 2502 00002d70 3c010000 lhi r1,((_pagestart_LF3)>>16)&0xffff 2503 00002d74 2421d42c addui r1,r1,(_pagestart_LF3)&0xffff 2504 00002d78 8c240000 lw r4,(r1) 2505 00002d7c 0088082a slt r1,r4,r8 2506 00002d80 10200104 beqz r1,L81_LF3 2507 00002d84 54000000 nop; not filled. 2508 00002d88 00023820 add r7,r0,r2 2509 00002d8c 200a0001 addi r10,r0,#1 2510 00002d90 3c090000 lhi r9,((_negativeone_LF3)>>16)&0xffff 2511 00002d94 2529d2c4 addui r9,r9,(_negativeone_LF3)&0xffff 2512 00002d98 L83_LF3: 2513 00002d98 8ce10000 lw r1,(r7) 2514 00002d9c 20210001 addi r1,r1,#1 2515 00002da0 ace10000 sw (r7),r1 2516 00002da4 00041020 add r2,r0,r4 2517 00002da8 74810000 sgei r1,r4,#0 2518 00002dac 14200008 bnez r1,L85_LF3 2519 00002db0 54000000 nop; not filled. 2520 00002db4 2082001f addi r2,r4,#31 2521 00002db8 L85_LF3: 2522 00002db8 5c460005 srai r6,r2,#0x5 2523 00002dbc 50c10005 slli r1,r6,#0x5 2524 00002dc0 00810822 sub r1,r4,r1 2525 00002dc4 01411804 sll r3,r10,r1 2526 00002dc8 8d210000 lw r1,(r9) 2527 00002dcc 00611026 xor r2,r3,r1 2528 00002dd0 50c10002 slli r1,r6,#0x2 2529 00002dd4 3c0b0000 lhi r11,((_freepages_LF3)>>16)&0xffff 2530 00002dd8 256bd438 addui r11,r11,(_freepages_LF3)&0xffff 2531 00002ddc 002b2820 add r5,r1,r11 2532 00002de0 8ca10000 lw r1,(r5) 2533 00002de4 00220824 and r1,r1,r2 2534 00002de8 00230825 or r1,r1,r3 2535 00002dec aca10000 sw (r5),r1 2536 00002df0 23bdfff8 addi r29,r29,#-8 2537 00002df4 3c0b0000 lhi r11,((_debugstr)>>16)&0xffff 2538 00002df8 256bfd60 addui r11,r11,(_debugstr)&0xffff 2539 00002dfc afab0000 sw (r29),r11 2540 00002e00 200b006d addi r11,r0,#109 2541 00002e04 afab0004 sw 4(r29),r11 2542 00002e08 0c001028 jal _dindex 2543 00002e0c 54000000 nop; not filled. 2544 00002e10 23bd0008 addi r29,r29,#8 2545 00002e14 64210000 snei r1,r1,#0 2546 00002e18 14200034 bnez r1,L89_LF3 2547 00002e1c 54000000 nop; not filled. 2548 00002e20 23bdfff8 addi r29,r29,#-8 2549 00002e24 3c0b0000 lhi r11,((_debugstr)>>16)&0xffff 2550 00002e28 256bfd60 addui r11,r11,(_debugstr)&0xffff 2551 00002e2c afab0000 sw (r29),r11 2552 00002e30 200b002b addi r11,r0,#43 2553 00002e34 afab0004 sw 4(r29),r11 2554 00002e38 0c000ff8 jal _dindex 2555 00002e3c 54000000 nop; not filled. 2556 00002e40 23bd0008 addi r29,r29,#8 2557 00002e44 64210000 snei r1,r1,#0 2558 00002e48 1020002c beqz r1,L82_LF3 2559 00002e4c 54000000 nop; not filled. 2560 00002e50 L89_LF3: 2561 00002e50 23bdfff0 addi r29,r29,#-16 2562 00002e54 3c0b0000 lhi r11,((LC0_LF3)>>16)&0xffff 2563 00002e58 256bd2c8 addui r11,r11,(LC0_LF3)&0xffff 2564 00002e5c afab0000 sw (r29),r11 2565 00002e60 afa60004 sw 4(r29),r6 2566 00002e64 8ca50000 lw r5,(r5) 2567 00002e68 afa50008 sw 8(r29),r5 2568 00002e6c 0c00817c jal _printf 2569 00002e70 54000000 nop; not filled. 2570 00002e74 23bd0010 addi r29,r29,#16 2571 00002e78 L82_LF3: 2572 00002e78 20840001 addi r4,r4,#1 2573 00002e7c 0088082a slt r1,r4,r8 2574 00002e80 1420ff14 bnez r1,L83_LF3 2575 00002e84 54000000 nop; not filled. 2576 00002e88 L81_LF3: 2577 00002e88 23bdfff8 addi r29,r29,#-8 2578 00002e8c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2579 00002e90 2442fd60 addui r2,r2,(_debugstr)&0xffff 2580 00002e94 afa20000 sw (r29),r2 2581 00002e98 200b006d addi r11,r0,#109 2582 00002e9c afab0004 sw 4(r29),r11 2583 00002ea0 0c000f90 jal _dindex 2584 00002ea4 54000000 nop; not filled. 2585 00002ea8 23bd0008 addi r29,r29,#8 2586 00002eac 64210000 snei r1,r1,#0 2587 00002eb0 1420002c bnez r1,L92_LF3 2588 00002eb4 54000000 nop; not filled. 2589 00002eb8 23bdfff8 addi r29,r29,#-8 2590 00002ebc afa20000 sw (r29),r2 2591 00002ec0 200b002b addi r11,r0,#43 2592 00002ec4 afab0004 sw 4(r29),r11 2593 00002ec8 0c000f68 jal _dindex 2594 00002ecc 54000000 nop; not filled. 2595 00002ed0 23bd0008 addi r29,r29,#8 2596 00002ed4 64210000 snei r1,r1,#0 2597 00002ed8 10200030 beqz r1,L91_LF3 2598 00002edc 54000000 nop; not filled. 2599 00002ee0 L92_LF3: 2600 00002ee0 23bdfff8 addi r29,r29,#-8 2601 00002ee4 3c0b0000 lhi r11,((LC3_LF3)>>16)&0xffff 2602 00002ee8 256bd338 addui r11,r11,(LC3_LF3)&0xffff 2603 00002eec afab0000 sw (r29),r11 2604 00002ef0 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2605 00002ef4 2421d434 addui r1,r1,(_nfreepages_LF3)&0xffff 2606 00002ef8 8c210000 lw r1,(r1) 2607 00002efc afa10004 sw 4(r29),r1 2608 00002f00 0c0080e8 jal _printf 2609 00002f04 54000000 nop; not filled. 2610 00002f08 23bd0008 addi r29,r29,#8 2611 00002f0c L91_LF3: 2612 00002f0c 8fa20000 lw r2,0(r29) 2613 00002f10 8fa30004 lw r3,4(r29) 2614 00002f14 8fa40008 lw r4,8(r29) 2615 00002f18 8fa5000c lw r5,12(r29) 2616 00002f1c 8fa60010 lw r6,16(r29) 2617 00002f20 8fa70014 lw r7,20(r29) 2618 00002f24 8fa80018 lw r8,24(r29) 2619 00002f28 8fa9001c lw r9,28(r29) 2620 00002f2c 8faa0020 lw r10,32(r29) 2621 00002f30 8fab0024 lw r11,36(r29) 2622 00002f34 8fdffff8 lw r31,-8(r30) 2623 00002f38 001ee820 add r29,r0,r30 2624 00002f3c 8fdefffc lw r30,-4(r30) 2625 00002f40 4be00000 jr r31 2626 00002f44 54000000 nop 2627 00002f48 .endproc _MemoryModuleInit 2628 00002f48 .data 2629 0000d354 .align 2 2630 0000d354 _mapnum42_LF3: 2631 0000d354 00000000 .word 0 2632 0000d358 .align 2 2633 0000d358 LC4_LF3: 2634 0000d358 4552524f .ascii "ERROR AT THIS POINT\n\000" 2634 0000d35c 52204154 2634 0000d360 20544849 2634 0000d364 5320504f 2634 0000d368 494e540a 2634 0000d36c 00 2635 0000d36d .align 2 2636 0000d370 LC5_LF3: 2637 0000d370 416c6c6f .ascii "Allocating memory, starting with page %d\n\000" 2637 0000d374 63617469 2637 0000d378 6e67206d 2637 0000d37c 656d6f72 2637 0000d380 792c2073 2637 0000d384 74617274 2637 0000d388 696e6720 2637 0000d38c 77697468 2637 0000d390 20706167 2637 0000d394 65202564 2637 0000d398 0a00 2638 0000d39a .align 2 2639 0000d39c LC6_LF3: 2640 0000d39c 416c6c6f .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" 2640 0000d3a0 63617465 2640 0000d3a4 64206d65 2640 0000d3a8 6d6f7279 2640 0000d3ac 2c206672 2640 0000d3b0 6f6d206d 2640 0000d3b4 61702025 2640 0000d3b8 642c2070 2640 0000d3bc 61676520 2640 0000d3c0 25642c20 2640 0000d3c4 6d61703d 2640 0000d3c8 30782578 2640 0000d3cc 2e0a00 2641 0000d3cf .text 2642 00002f48 .align 2 2643 00002f48 .proc _MemoryAllocPage 2644 00002f48 .global _MemoryAllocPage 2645 00002f48 _MemoryAllocPage: 2646 ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. 2647 00002f48 afbefffc sw -4(r29),r30; push fp 2648 00002f4c 001df020 add r30,r0,r29; fp = sp 2649 00002f50 afbffff8 sw -8(r29),r31; push ret addr 2650 00002f54 2fbd0020 subui r29,r29,#32; alloc local storage 2651 00002f58 afa20000 sw 0(r29),r2 2652 00002f5c afa30004 sw 4(r29),r3 2653 00002f60 afa40008 sw 8(r29),r4 2654 00002f64 afa5000c sw 12(r29),r5 2655 00002f68 afa60010 sw 16(r29),r6 2656 00002f6c afa70014 sw 20(r29),r7 2657 00002f70 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2658 00002f74 2421d434 addui r1,r1,(_nfreepages_LF3)&0xffff 2659 00002f78 8c210000 lw r1,(r1) 2660 00002f7c 64210000 snei r1,r1,#0 2661 00002f80 1420002c bnez r1,L111_LF3 2662 00002f84 54000000 nop; not filled. 2663 00002f88 23bdfff8 addi r29,r29,#-8 2664 00002f8c 3c070000 lhi r7,((LC4_LF3)>>16)&0xffff 2665 00002f90 24e7d358 addui r7,r7,(LC4_LF3)&0xffff 2666 00002f94 afa70000 sw (r29),r7 2667 00002f98 0c008050 jal _printf 2668 00002f9c 54000000 nop; not filled. 2669 00002fa0 20010000 addi r1,r0,#0 2670 00002fa4 23bd0008 addi r29,r29,#8 2671 00002fa8 08000238 j L110_LF3 2672 00002fac 54000000 nop; not filled. 2673 00002fb0 L111_LF3: 2674 00002fb0 23bdfff8 addi r29,r29,#-8 2675 00002fb4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2676 00002fb8 2442fd60 addui r2,r2,(_debugstr)&0xffff 2677 00002fbc afa20000 sw (r29),r2 2678 00002fc0 2007006d addi r7,r0,#109 2679 00002fc4 afa70004 sw 4(r29),r7 2680 00002fc8 0c000e68 jal _dindex 2681 00002fcc 54000000 nop; not filled. 2682 00002fd0 23bd0008 addi r29,r29,#8 2683 00002fd4 64210000 snei r1,r1,#0 2684 00002fd8 1420002c bnez r1,L113_LF3 2685 00002fdc 54000000 nop; not filled. 2686 00002fe0 23bdfff8 addi r29,r29,#-8 2687 00002fe4 afa20000 sw (r29),r2 2688 00002fe8 2007002b addi r7,r0,#43 2689 00002fec afa70004 sw 4(r29),r7 2690 00002ff0 0c000e40 jal _dindex 2691 00002ff4 54000000 nop; not filled. 2692 00002ff8 23bd0008 addi r29,r29,#8 2693 00002ffc 64210000 snei r1,r1,#0 2694 00003000 10200030 beqz r1,L112_LF3 2695 00003004 54000000 nop; not filled. 2696 00003008 L113_LF3: 2697 00003008 23bdfff8 addi r29,r29,#-8 2698 0000300c 3c070000 lhi r7,((LC5_LF3)>>16)&0xffff 2699 00003010 24e7d370 addui r7,r7,(LC5_LF3)&0xffff 2700 00003014 afa70000 sw (r29),r7 2701 00003018 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2702 0000301c 2421d354 addui r1,r1,(_mapnum42_LF3)&0xffff 2703 00003020 8c210000 lw r1,(r1) 2704 00003024 afa10004 sw 4(r29),r1 2705 00003028 0c007fc0 jal _printf 2706 0000302c 54000000 nop; not filled. 2707 00003030 23bd0008 addi r29,r29,#8 2708 00003034 L112_LF3: 2709 00003034 3c020000 lhi r2,((_mapnum42_LF3)>>16)&0xffff 2710 00003038 2442d354 addui r2,r2,(_mapnum42_LF3)&0xffff 2711 0000303c 8c410000 lw r1,(r2) 2712 00003040 3c040000 lhi r4,((_freepages_LF3)>>16)&0xffff 2713 00003044 2484d438 addui r4,r4,(_freepages_LF3)&0xffff 2714 00003048 50210002 slli r1,r1,#0x2 2715 0000304c 00240820 add r1,r1,r4 2716 00003050 8c210000 lw r1,(r1) 2717 00003054 64210000 snei r1,r1,#0 2718 00003058 1420004c bnez r1,L115_LF3 2719 0000305c 54000000 nop; not filled. 2720 00003060 3c010000 lhi r1,((_freemapmax_LF3)>>16)&0xffff 2721 00003064 2421d430 addui r1,r1,(_freemapmax_LF3)&0xffff 2722 00003068 8c230000 lw r3,(r1) 2723 0000306c L116_LF3: 2724 0000306c 8c410000 lw r1,(r2) 2725 00003070 20210001 addi r1,r1,#1 2726 00003074 ac410000 sw (r2),r1 2727 00003078 0023082d sge r1,r1,r3 2728 0000307c 1020000c beqz r1,L114_LF3 2729 00003080 54000000 nop; not filled. 2730 00003084 20070000 addi r7,r0,#0 2731 00003088 ac470000 sw (r2),r7 2732 0000308c L114_LF3: 2733 0000308c 8c410000 lw r1,(r2) 2734 00003090 50210002 slli r1,r1,#0x2 2735 00003094 00240820 add r1,r1,r4 2736 00003098 8c210000 lw r1,(r1) 2737 0000309c 64210000 snei r1,r1,#0 2738 000030a0 1020ffc8 beqz r1,L116_LF3 2739 000030a4 54000000 nop; not filled. 2740 000030a8 L115_LF3: 2741 000030a8 3c010000 lhi r1,((_mapnum42_LF3)>>16)&0xffff 2742 000030ac 2421d354 addui r1,r1,(_mapnum42_LF3)&0xffff 2743 000030b0 8c210000 lw r1,(r1) 2744 000030b4 50210002 slli r1,r1,#0x2 2745 000030b8 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2746 000030bc 24e7d438 addui r7,r7,(_freepages_LF3)&0xffff 2747 000030c0 00270820 add r1,r1,r7 2748 000030c4 8c230000 lw r3,(r1) 2749 000030c8 201f0000 addi r31,r0,#0 2750 000030cc 30610001 andi r1,r3,#1 2751 000030d0 14200020 bnez r1,L120_LF3 2752 000030d4 54000000 nop; not filled. 2753 000030d8 20020001 addi r2,r0,#1 2754 000030dc L121_LF3: 2755 000030dc 23ff0001 addi r31,r31,#1 2756 000030e0 005f0804 sll r1,r2,r31 2757 000030e4 00610824 and r1,r3,r1 2758 000030e8 64210000 snei r1,r1,#0 2759 000030ec 1020ffec beqz r1,L121_LF3 2760 000030f0 54000000 nop; not filled. 2761 000030f4 L120_LF3: 2762 000030f4 20010001 addi r1,r0,#1 2763 000030f8 003f1004 sll r2,r1,r31 2764 000030fc 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2765 00003100 2421d2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2766 00003104 8c210000 lw r1,(r1) 2767 00003108 00412026 xor r4,r2,r1 2768 0000310c 3c050000 lhi r5,((_mapnum42_LF3)>>16)&0xffff 2769 00003110 24a5d354 addui r5,r5,(_mapnum42_LF3)&0xffff 2770 00003114 8ca30000 lw r3,(r5) 2771 00003118 3c060000 lhi r6,((_freepages_LF3)>>16)&0xffff 2772 0000311c 24c6d438 addui r6,r6,(_freepages_LF3)&0xffff 2773 00003120 50610002 slli r1,r3,#0x2 2774 00003124 00261020 add r2,r1,r6 2775 00003128 8c410000 lw r1,(r2) 2776 0000312c 00240824 and r1,r1,r4 2777 00003130 ac410000 sw (r2),r1 2778 00003134 50610005 slli r1,r3,#0x5 2779 00003138 003f1820 add r3,r1,r31 2780 0000313c 23bdfff8 addi r29,r29,#-8 2781 00003140 3c020000 lhi r2,((_debugstr)>>16)&0xffff 2782 00003144 2442fd60 addui r2,r2,(_debugstr)&0xffff 2783 00003148 afa20000 sw (r29),r2 2784 0000314c 2007006d addi r7,r0,#109 2785 00003150 afa70004 sw 4(r29),r7 2786 00003154 0c000cdc jal _dindex 2787 00003158 54000000 nop; not filled. 2788 0000315c 23bd0008 addi r29,r29,#8 2789 00003160 64210000 snei r1,r1,#0 2790 00003164 1420002c bnez r1,L126_LF3 2791 00003168 54000000 nop; not filled. 2792 0000316c 23bdfff8 addi r29,r29,#-8 2793 00003170 afa20000 sw (r29),r2 2794 00003174 2007002b addi r7,r0,#43 2795 00003178 afa70004 sw 4(r29),r7 2796 0000317c 0c000cb4 jal _dindex 2797 00003180 54000000 nop; not filled. 2798 00003184 23bd0008 addi r29,r29,#8 2799 00003188 64210000 snei r1,r1,#0 2800 0000318c 1020003c beqz r1,L125_LF3 2801 00003190 54000000 nop; not filled. 2802 00003194 L126_LF3: 2803 00003194 23bdfff0 addi r29,r29,#-16 2804 00003198 3c070000 lhi r7,((LC6_LF3)>>16)&0xffff 2805 0000319c 24e7d39c addui r7,r7,(LC6_LF3)&0xffff 2806 000031a0 afa70000 sw (r29),r7 2807 000031a4 8ca10000 lw r1,(r5) 2808 000031a8 afa10004 sw 4(r29),r1 2809 000031ac afa30008 sw 8(r29),r3 2810 000031b0 50210002 slli r1,r1,#0x2 2811 000031b4 00260820 add r1,r1,r6 2812 000031b8 8c210000 lw r1,(r1) 2813 000031bc afa1000c sw 12(r29),r1 2814 000031c0 0c007e28 jal _printf 2815 000031c4 54000000 nop; not filled. 2816 000031c8 23bd0010 addi r29,r29,#16 2817 000031cc L125_LF3: 2818 000031cc 3c010000 lhi r1,((_nfreepages_LF3)>>16)&0xffff 2819 000031d0 2421d434 addui r1,r1,(_nfreepages_LF3)&0xffff 2820 000031d4 8c220000 lw r2,(r1) 2821 000031d8 2042ffff addi r2,r2,#-1 2822 000031dc ac220000 sw (r1),r2 2823 000031e0 00030820 add r1,r0,r3 2824 000031e4 L110_LF3: 2825 000031e4 8fa20000 lw r2,0(r29) 2826 000031e8 8fa30004 lw r3,4(r29) 2827 000031ec 8fa40008 lw r4,8(r29) 2828 000031f0 8fa5000c lw r5,12(r29) 2829 000031f4 8fa60010 lw r6,16(r29) 2830 000031f8 8fa70014 lw r7,20(r29) 2831 000031fc 8fdffff8 lw r31,-8(r30) 2832 00003200 001ee820 add r29,r0,r30 2833 00003204 8fdefffc lw r30,-4(r30) 2834 00003208 4be00000 jr r31 2835 0000320c 54000000 nop 2836 00003210 .endproc _MemoryAllocPage 2837 00003210 .data 2838 0000d3cf .align 2 2839 0000d3d0 LC7_LF3: 2840 0000d3d0 46726565 .ascii "Freed page 0x%x, %d remaining.\n\000" 2840 0000d3d4 64207061 2840 0000d3d8 67652030 2840 0000d3dc 7825782c 2840 0000d3e0 20256420 2840 0000d3e4 72656d61 2840 0000d3e8 696e696e 2840 0000d3ec 672e0a00 2841 0000d3f0 .text 2842 00003210 .align 2 2843 00003210 .proc _MemoryFreePage 2844 00003210 .global _MemoryFreePage 2845 00003210 _MemoryFreePage: 2846 ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. 2847 00003210 afbefffc sw -4(r29),r30; push fp 2848 00003214 001df020 add r30,r0,r29; fp = sp 2849 00003218 afbffff8 sw -8(r29),r31; push ret addr 2850 0000321c 2fbd0020 subui r29,r29,#32; alloc local storage 2851 00003220 afa20000 sw 0(r29),r2 2852 00003224 afa30004 sw 4(r29),r3 2853 00003228 afa40008 sw 8(r29),r4 2854 0000322c afa5000c sw 12(r29),r5 2855 00003230 afa60010 sw 16(r29),r6 2856 00003234 afa70014 sw 20(r29),r7 2857 00003238 8fc60000 lw r6,(r30) 2858 0000323c 20030001 addi r3,r0,#1 2859 00003240 00061020 add r2,r0,r6 2860 00003244 74c10000 sgei r1,r6,#0 2861 00003248 14200008 bnez r1,L129_LF3 2862 0000324c 54000000 nop; not filled. 2863 00003250 20c2001f addi r2,r6,#31 2864 00003254 L129_LF3: 2865 00003254 5c450005 srai r5,r2,#0x5 2866 00003258 50a10005 slli r1,r5,#0x5 2867 0000325c 00c10822 sub r1,r6,r1 2868 00003260 00611804 sll r3,r3,r1 2869 00003264 3c010000 lhi r1,((_negativeone_LF3)>>16)&0xffff 2870 00003268 2421d2c4 addui r1,r1,(_negativeone_LF3)&0xffff 2871 0000326c 8c210000 lw r1,(r1) 2872 00003270 00611026 xor r2,r3,r1 2873 00003274 50a10002 slli r1,r5,#0x2 2874 00003278 3c070000 lhi r7,((_freepages_LF3)>>16)&0xffff 2875 0000327c 24e7d438 addui r7,r7,(_freepages_LF3)&0xffff 2876 00003280 00272020 add r4,r1,r7 2877 00003284 8c810000 lw r1,(r4) 2878 00003288 00220824 and r1,r1,r2 2879 0000328c 00230825 or r1,r1,r3 2880 00003290 ac810000 sw (r4),r1 2881 00003294 23bdfff8 addi r29,r29,#-8 2882 00003298 3c070000 lhi r7,((_debugstr)>>16)&0xffff 2883 0000329c 24e7fd60 addui r7,r7,(_debugstr)&0xffff 2884 000032a0 afa70000 sw (r29),r7 2885 000032a4 2007006d addi r7,r0,#109 2886 000032a8 afa70004 sw 4(r29),r7 2887 000032ac 0c000b84 jal _dindex 2888 000032b0 54000000 nop; not filled. 2889 000032b4 23bd0008 addi r29,r29,#8 2890 000032b8 64210000 snei r1,r1,#0 2891 000032bc 14200034 bnez r1,L133_LF3 2892 000032c0 54000000 nop; not filled. 2893 000032c4 23bdfff8 addi r29,r29,#-8 2894 000032c8 3c070000 lhi r7,((_debugstr)>>16)&0xffff 2895 000032cc 24e7fd60 addui r7,r7,(_debugstr)&0xffff 2896 000032d0 afa70000 sw (r29),r7 2897 000032d4 2007002b addi r7,r0,#43 2898 000032d8 afa70004 sw 4(r29),r7 2899 000032dc 0c000b54 jal _dindex 2900 000032e0 54000000 nop; not filled. 2901 000032e4 23bd0008 addi r29,r29,#8 2902 000032e8 64210000 snei r1,r1,#0 2903 000032ec 1020002c beqz r1,L128_LF3 2904 000032f0 54000000 nop; not filled. 2905 000032f4 L133_LF3: 2906 000032f4 23bdfff0 addi r29,r29,#-16 2907 000032f8 3c070000 lhi r7,((LC0_LF3)>>16)&0xffff 2908 000032fc 24e7d2c8 addui r7,r7,(LC0_LF3)&0xffff 2909 00003300 afa70000 sw (r29),r7 2910 00003304 afa50004 sw 4(r29),r5 2911 00003308 8c840000 lw r4,(r4) 2912 0000330c afa40008 sw 8(r29),r4 2913 00003310 0c007cd8 jal _printf 2914 00003314 54000000 nop; not filled. 2915 00003318 23bd0010 addi r29,r29,#16 2916 0000331c L128_LF3: 2917 0000331c 3c020000 lhi r2,((_nfreepages_LF3)>>16)&0xffff 2918 00003320 2442d434 addui r2,r2,(_nfreepages_LF3)&0xffff 2919 00003324 8c410000 lw r1,(r2) 2920 00003328 20210001 addi r1,r1,#1 2921 0000332c ac410000 sw (r2),r1 2922 00003330 23bdfff8 addi r29,r29,#-8 2923 00003334 3c030000 lhi r3,((_debugstr)>>16)&0xffff 2924 00003338 2463fd60 addui r3,r3,(_debugstr)&0xffff 2925 0000333c afa30000 sw (r29),r3 2926 00003340 2007006d addi r7,r0,#109 2927 00003344 afa70004 sw 4(r29),r7 2928 00003348 0c000ae8 jal _dindex 2929 0000334c 54000000 nop; not filled. 2930 00003350 23bd0008 addi r29,r29,#8 2931 00003354 64210000 snei r1,r1,#0 2932 00003358 1420002c bnez r1,L135_LF3 2933 0000335c 54000000 nop; not filled. 2934 00003360 23bdfff8 addi r29,r29,#-8 2935 00003364 afa30000 sw (r29),r3 2936 00003368 2007002b addi r7,r0,#43 2937 0000336c afa70004 sw 4(r29),r7 2938 00003370 0c000ac0 jal _dindex 2939 00003374 54000000 nop; not filled. 2940 00003378 23bd0008 addi r29,r29,#8 2941 0000337c 64210000 snei r1,r1,#0 2942 00003380 1020002c beqz r1,L134_LF3 2943 00003384 54000000 nop; not filled. 2944 00003388 L135_LF3: 2945 00003388 23bdfff0 addi r29,r29,#-16 2946 0000338c 3c070000 lhi r7,((LC7_LF3)>>16)&0xffff 2947 00003390 24e7d3d0 addui r7,r7,(LC7_LF3)&0xffff 2948 00003394 afa70000 sw (r29),r7 2949 00003398 afa60004 sw 4(r29),r6 2950 0000339c 8c420000 lw r2,(r2) 2951 000033a0 afa20008 sw 8(r29),r2 2952 000033a4 0c007c44 jal _printf 2953 000033a8 54000000 nop; not filled. 2954 000033ac 23bd0010 addi r29,r29,#16 2955 000033b0 L134_LF3: 2956 000033b0 8fa20000 lw r2,0(r29) 2957 000033b4 8fa30004 lw r3,4(r29) 2958 000033b8 8fa40008 lw r4,8(r29) 2959 000033bc 8fa5000c lw r5,12(r29) 2960 000033c0 8fa60010 lw r6,16(r29) 2961 000033c4 8fa70014 lw r7,20(r29) 2962 000033c8 8fdffff8 lw r31,-8(r30) 2963 000033cc 001ee820 add r29,r0,r30 2964 000033d0 8fdefffc lw r30,-4(r30) 2965 000033d4 4be00000 jr r31 2966 000033d8 54000000 nop 2967 000033dc .endproc _MemoryFreePage 2968 000033dc .align 2 2969 000033dc .proc _MemoryTranslateUserToSystem 2970 000033dc .global _MemoryTranslateUserToSystem 2971 000033dc _MemoryTranslateUserToSystem: 2972 ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. 2973 000033dc afbefffc sw -4(r29),r30; push fp 2974 000033e0 001df020 add r30,r0,r29; fp = sp 2975 000033e4 afbffff8 sw -8(r29),r31; push ret addr 2976 000033e8 2fbd0018 subui r29,r29,#24; alloc local storage 2977 000033ec afa20000 sw 0(r29),r2 2978 000033f0 afa30004 sw 4(r29),r3 2979 000033f4 afa40008 sw 8(r29),r4 2980 000033f8 8fc30000 lw r3,(r30) 2981 000033fc 8fc10004 lw r1,4(r30) 2982 00003400 583f0010 srli r31,r1,#0x10 2983 00003404 3022ffff andi r2,r1,#0xffff 2984 00003408 8c610064 lw r1,100(r3) 2985 0000340c 03e1082b sgt r1,r31,r1 2986 00003410 14200024 bnez r1,L139_LF3 2987 00003414 54000000 nop; not filled. 2988 00003418 53e10002 slli r1,r31,#0x2 2989 0000341c 00230820 add r1,r1,r3 2990 00003420 8c210060 lw r1,96(r1) 2991 00003424 2004fff8 addi r4,r0,#-8 2992 00003428 00240824 and r1,r1,r4 2993 0000342c 00220820 add r1,r1,r2 2994 00003430 08000008 j L140_LF3 2995 00003434 54000000 nop; not filled. 2996 00003438 L139_LF3: 2997 00003438 20010000 addi r1,r0,#0 2998 0000343c L140_LF3: 2999 0000343c 8fa20000 lw r2,0(r29) 3000 00003440 8fa30004 lw r3,4(r29) 3001 00003444 8fa40008 lw r4,8(r29) 3002 00003448 8fdffff8 lw r31,-8(r30) 3003 0000344c 001ee820 add r29,r0,r30 3004 00003450 8fdefffc lw r30,-4(r30) 3005 00003454 4be00000 jr r31 3006 00003458 54000000 nop 3007 0000345c .endproc _MemoryTranslateUserToSystem 3008 0000345c .align 2 3009 0000345c .proc _MemoryCopySystemToUser 3010 0000345c .global _MemoryCopySystemToUser 3011 0000345c _MemoryCopySystemToUser: 3012 ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. 3013 0000345c afbefffc sw -4(r29),r30; push fp 3014 00003460 001df020 add r30,r0,r29; fp = sp 3015 00003464 afbffff8 sw -8(r29),r31; push ret addr 3016 00003468 2fbd0028 subui r29,r29,#40; alloc local storage 3017 0000346c afa20000 sw 0(r29),r2 3018 00003470 afa30004 sw 4(r29),r3 3019 00003474 afa40008 sw 8(r29),r4 3020 00003478 afa5000c sw 12(r29),r5 3021 0000347c afa60010 sw 16(r29),r6 3022 00003480 afa70014 sw 20(r29),r7 3023 00003484 afa80018 sw 24(r29),r8 3024 00003488 afa9001c sw 28(r29),r9 3025 0000348c 8fc70000 lw r7,(r30) 3026 00003490 8fc50004 lw r5,4(r30) 3027 00003494 8fc40008 lw r4,8(r30) 3028 00003498 8fc3000c lw r3,12(r30) 3029 0000349c 20060000 addi r6,r0,#0 3030 000034a0 6c610000 sgti r1,r3,#0 3031 000034a4 102000a4 beqz r1,L167_LF3 3032 000034a8 54000000 nop; not filled. 3033 000034ac 3c080001 lhi r8,#1 3034 000034b0 25080000 addui r8,r8,#0 3035 000034b4 L168_LF3: 3036 000034b4 58820010 srli r2,r4,#0x10 3037 000034b8 309fffff andi r31,r4,#0xffff 3038 000034bc 8ce10064 lw r1,100(r7) 3039 000034c0 0041082b sgt r1,r2,r1 3040 000034c4 10200010 beqz r1,L170_LF3 3041 000034c8 54000000 nop; not filled. 3042 000034cc 201f0000 addi r31,r0,#0 3043 000034d0 0800001c j L169_LF3 3044 000034d4 54000000 nop; not filled. 3045 000034d8 L170_LF3: 3046 000034d8 50410002 slli r1,r2,#0x2 3047 000034dc 00270820 add r1,r1,r7 3048 000034e0 8c210060 lw r1,96(r1) 3049 000034e4 2009fff8 addi r9,r0,#-8 3050 000034e8 00290824 and r1,r1,r9 3051 000034ec 003ff820 add r31,r1,r31 3052 000034f0 L169_LF3: 3053 000034f0 67e10000 snei r1,r31,#0 3054 000034f4 10200054 beqz r1,L167_LF3 3055 000034f8 54000000 nop; not filled. 3056 000034fc 33e1ffff andi r1,r31,#65535 3057 00003500 01011022 sub r2,r8,r1 3058 00003504 0043082b sgt r1,r2,r3 3059 00003508 10200008 beqz r1,L172_LF3 3060 0000350c 54000000 nop; not filled. 3061 00003510 00031020 add r2,r0,r3 3062 00003514 L172_LF3: 3063 00003514 23bdfff0 addi r29,r29,#-16 3064 00003518 afa50000 sw (r29),r5 3065 0000351c afbf0004 sw 4(r29),r31 3066 00003520 afa20008 sw 8(r29),r2 3067 00003524 0c000c9c jal _bcopy 3068 00003528 54000000 nop; not filled. 3069 0000352c 23bd0010 addi r29,r29,#16 3070 00003530 00621822 sub r3,r3,r2 3071 00003534 00c23020 add r6,r6,r2 3072 00003538 00a22820 add r5,r5,r2 3073 0000353c 00822020 add r4,r4,r2 3074 00003540 6c610000 sgti r1,r3,#0 3075 00003544 1420ff6c bnez r1,L168_LF3 3076 00003548 54000000 nop; not filled. 3077 0000354c L167_LF3: 3078 0000354c 00060820 add r1,r0,r6 3079 00003550 8fa20000 lw r2,0(r29) 3080 00003554 8fa30004 lw r3,4(r29) 3081 00003558 8fa40008 lw r4,8(r29) 3082 0000355c 8fa5000c lw r5,12(r29) 3083 00003560 8fa60010 lw r6,16(r29) 3084 00003564 8fa70014 lw r7,20(r29) 3085 00003568 8fa80018 lw r8,24(r29) 3086 0000356c 8fa9001c lw r9,28(r29) 3087 00003570 8fdffff8 lw r31,-8(r30) 3088 00003574 001ee820 add r29,r0,r30 3089 00003578 8fdefffc lw r30,-4(r30) 3090 0000357c 4be00000 jr r31 3091 00003580 54000000 nop 3092 00003584 .endproc _MemoryCopySystemToUser 3093 00003584 .align 2 3094 00003584 .proc _MemoryCopyUserToSystem 3095 00003584 .global _MemoryCopyUserToSystem 3096 00003584 _MemoryCopyUserToSystem: 3097 ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. 3098 00003584 afbefffc sw -4(r29),r30; push fp 3099 00003588 001df020 add r30,r0,r29; fp = sp 3100 0000358c afbffff8 sw -8(r29),r31; push ret addr 3101 00003590 2fbd0028 subui r29,r29,#40; alloc local storage 3102 00003594 afa20000 sw 0(r29),r2 3103 00003598 afa30004 sw 4(r29),r3 3104 0000359c afa40008 sw 8(r29),r4 3105 000035a0 afa5000c sw 12(r29),r5 3106 000035a4 afa60010 sw 16(r29),r6 3107 000035a8 afa70014 sw 20(r29),r7 3108 000035ac afa80018 sw 24(r29),r8 3109 000035b0 afa9001c sw 28(r29),r9 3110 000035b4 8fc70000 lw r7,(r30) 3111 000035b8 8fc50008 lw r5,8(r30) 3112 000035bc 8fc40004 lw r4,4(r30) 3113 000035c0 8fc3000c lw r3,12(r30) 3114 000035c4 20060000 addi r6,r0,#0 3115 000035c8 6c610000 sgti r1,r3,#0 3116 000035cc 102000a4 beqz r1,L191_LF3 3117 000035d0 54000000 nop; not filled. 3118 000035d4 3c080001 lhi r8,#1 3119 000035d8 25080000 addui r8,r8,#0 3120 000035dc L192_LF3: 3121 000035dc 58820010 srli r2,r4,#0x10 3122 000035e0 309fffff andi r31,r4,#0xffff 3123 000035e4 8ce10064 lw r1,100(r7) 3124 000035e8 0041082b sgt r1,r2,r1 3125 000035ec 10200010 beqz r1,L194_LF3 3126 000035f0 54000000 nop; not filled. 3127 000035f4 201f0000 addi r31,r0,#0 3128 000035f8 0800001c j L193_LF3 3129 000035fc 54000000 nop; not filled. 3130 00003600 L194_LF3: 3131 00003600 50410002 slli r1,r2,#0x2 3132 00003604 00270820 add r1,r1,r7 3133 00003608 8c210060 lw r1,96(r1) 3134 0000360c 2009fff8 addi r9,r0,#-8 3135 00003610 00290824 and r1,r1,r9 3136 00003614 003ff820 add r31,r1,r31 3137 00003618 L193_LF3: 3138 00003618 67e10000 snei r1,r31,#0 3139 0000361c 10200054 beqz r1,L191_LF3 3140 00003620 54000000 nop; not filled. 3141 00003624 33e1ffff andi r1,r31,#65535 3142 00003628 01011022 sub r2,r8,r1 3143 0000362c 0043082b sgt r1,r2,r3 3144 00003630 10200008 beqz r1,L197_LF3 3145 00003634 54000000 nop; not filled. 3146 00003638 00031020 add r2,r0,r3 3147 0000363c L197_LF3: 3148 0000363c 23bdfff0 addi r29,r29,#-16 3149 00003640 afbf0000 sw (r29),r31 3150 00003644 afa50004 sw 4(r29),r5 3151 00003648 afa20008 sw 8(r29),r2 3152 0000364c 0c000b74 jal _bcopy 3153 00003650 54000000 nop; not filled. 3154 00003654 23bd0010 addi r29,r29,#16 3155 00003658 00621822 sub r3,r3,r2 3156 0000365c 00c23020 add r6,r6,r2 3157 00003660 00a22820 add r5,r5,r2 3158 00003664 00822020 add r4,r4,r2 3159 00003668 6c610000 sgti r1,r3,#0 3160 0000366c 1420ff6c bnez r1,L192_LF3 3161 00003670 54000000 nop; not filled. 3162 00003674 L191_LF3: 3163 00003674 00060820 add r1,r0,r6 3164 00003678 8fa20000 lw r2,0(r29) 3165 0000367c 8fa30004 lw r3,4(r29) 3166 00003680 8fa40008 lw r4,8(r29) 3167 00003684 8fa5000c lw r5,12(r29) 3168 00003688 8fa60010 lw r6,16(r29) 3169 0000368c 8fa70014 lw r7,20(r29) 3170 00003690 8fa80018 lw r8,24(r29) 3171 00003694 8fa9001c lw r9,28(r29) 3172 00003698 8fdffff8 lw r31,-8(r30) 3173 0000369c 001ee820 add r29,r0,r30 3174 000036a0 8fdefffc lw r30,-4(r30) 3175 000036a4 4be00000 jr r31 3176 000036a8 54000000 nop 3177 000036ac .endproc _MemoryCopyUserToSystem 3178 000036ac .align 2 3179 000036ac .proc _MemorySetupPte 3180 000036ac .global _MemorySetupPte 3181 000036ac _MemorySetupPte: 3182 ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. 3183 000036ac afbefffc sw -4(r29),r30; push fp 3184 000036b0 001df020 add r30,r0,r29; fp = sp 3185 000036b4 afbffff8 sw -8(r29),r31; push ret addr 3186 000036b8 2fbd0008 subui r29,r29,#8; alloc local storage 3187 000036bc 8fc10000 lw r1,(r30) 3188 000036c0 50210010 slli r1,r1,#0x10 3189 000036c4 34210001 ori r1,r1,#1 3190 000036c8 8fdffff8 lw r31,-8(r30) 3191 000036cc 001ee820 add r29,r0,r30 3192 000036d0 8fdefffc lw r30,-4(r30) 3193 000036d4 4be00000 jr r31 3194 000036d8 54000000 nop 3195 000036dc .endproc _MemorySetupPte 3196 000036dc .align 2 3197 000036dc .proc _MemoryFreePte 3198 000036dc .global _MemoryFreePte 3199 000036dc _MemoryFreePte: 3200 ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. 3201 000036dc afbefffc sw -4(r29),r30; push fp 3202 000036e0 001df020 add r30,r0,r29; fp = sp 3203 000036e4 afbffff8 sw -8(r29),r31; push ret addr 3204 000036e8 2fbd0008 subui r29,r29,#8; alloc local storage 3205 000036ec 23bdfff8 addi r29,r29,#-8 3206 000036f0 97c10000 lhu r1,(r30) 3207 000036f4 afa10000 sw (r29),r1 3208 000036f8 0ffffb14 jal _MemoryFreePage 3209 000036fc 54000000 nop; not filled. 3210 00003700 23bd0008 addi r29,r29,#8 3211 00003704 8fdffff8 lw r31,-8(r30) 3212 00003708 001ee820 add r29,r0,r30 3213 0000370c 8fdefffc lw r30,-4(r30) 3214 00003710 4be00000 jr r31 3215 00003714 54000000 nop 3216 00003718 .endproc _MemoryFreePte 3217 00003718 .align 2 3218 00003718 .proc _MemoryPteToPage 3219 00003718 .global _MemoryPteToPage 3220 00003718 _MemoryPteToPage: 3221 ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. 3222 00003718 afbefffc sw -4(r29),r30; push fp 3223 0000371c 001df020 add r30,r0,r29; fp = sp 3224 00003720 afbffff8 sw -8(r29),r31; push ret addr 3225 00003724 2fbd0008 subui r29,r29,#8; alloc local storage 3226 00003728 8fc10000 lw r1,(r30) 3227 0000372c 201ffff8 addi r31,r0,#-8 3228 00003730 003f0824 and r1,r1,r31 3229 00003734 8fdffff8 lw r31,-8(r30) 3230 00003738 001ee820 add r29,r0,r30 3231 0000373c 8fdefffc lw r30,-4(r30) 3232 00003740 4be00000 jr r31 3233 00003744 54000000 nop 3234 00003748 .endproc _MemoryPteToPage 3235 00003748 .data 3236 0000d3f0 .align 2 3237 0000d3f0 _invalidOps61_LF3: 3238 0000d3f0 00003404 .word 13316 3239 0000d3f4 .align 2 3240 0000d3f4 LC8_LF3: 3241 0000d3f4 4f706572 .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" 3241 0000d3f8 616e6420 3241 0000d3fc 666f7220 3241 0000d400 696e7374 3241 0000d404 72756374 3241 0000d408 696f6e20 3241 0000d40c 25303878 3241 0000d410 20697320 3241 0000d414 30782578 3241 0000d418 20287265 3241 0000d41c 673d3c25 3241 0000d420 642c3078 3241 0000d424 25783e29 3241 0000d428 0a00 3242 0000d42a .text 3243 00003748 .align 2 3244 00003748 .proc _MemoryGetOperandAddress 3245 00003748 .global _MemoryGetOperandAddress 3246 00003748 _MemoryGetOperandAddress: 3247 ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. 3248 00003748 afbefffc sw -4(r29),r30; push fp 3249 0000374c 001df020 add r30,r0,r29; fp = sp 3250 00003750 afbffff8 sw -8(r29),r31; push ret addr 3251 00003754 2fbd0020 subui r29,r29,#32; alloc local storage 3252 00003758 afa20000 sw 0(r29),r2 3253 0000375c afa30004 sw 4(r29),r3 3254 00003760 afa40008 sw 8(r29),r4 3255 00003764 afa5000c sw 12(r29),r5 3256 00003768 afa60010 sw 16(r29),r6 3257 0000376c afa70014 sw 20(r29),r7 3258 00003770 8fc20000 lw r2,(r30) 3259 00003774 8fc50004 lw r5,4(r30) 3260 00003778 58a1001a srli r1,r5,#0x1a 3261 0000377c 203fffe0 addi r31,r1,#-32 3262 00003780 6fe1000f sgtui r1,r31,#15 3263 00003784 14200020 bnez r1,L214_LF3 3264 00003788 54000000 nop; not filled. 3265 0000378c 3c010000 lhi r1,((_invalidOps61_LF3)>>16)&0xffff 3266 00003790 2421d3f0 addui r1,r1,(_invalidOps61_LF3)&0xffff 3267 00003794 8c210000 lw r1,(r1) 3268 00003798 003f0806 srl r1,r1,r31 3269 0000379c 30210001 andi r1,r1,#1 3270 000037a0 10200010 beqz r1,L213_LF3 3271 000037a4 54000000 nop; not filled. 3272 000037a8 L214_LF3: 3273 000037a8 2001ffff addi r1,r0,#-1 3274 000037ac 080000c4 j L218_LF3 3275 000037b0 54000000 nop; not filled. 3276 000037b4 L213_LF3: 3277 000037b4 58a10015 srli r1,r5,#0x15 3278 000037b8 3026001f andi r6,r1,#31 3279 000037bc 30bfffff andi r31,r5,#0xffff 3280 000037c0 5be1000f srli r1,r31,#0xf 3281 000037c4 10200010 beqz r1,L215_LF3 3282 000037c8 54000000 nop; not filled. 3283 000037cc 3c07ffff lhi r7,#-1 3284 000037d0 24e70000 addui r7,r7,#0 3285 000037d4 03e7f825 or r31,r31,r7 3286 000037d8 L215_LF3: 3287 000037d8 8c420000 lw r2,(r2) 3288 000037dc 50c10002 slli r1,r6,#0x2 3289 000037e0 00220820 add r1,r1,r2 3290 000037e4 8c230028 lw r3,40(r1) 3291 000037e8 007f2020 add r4,r3,r31 3292 000037ec 23bdfff8 addi r29,r29,#-8 3293 000037f0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 3294 000037f4 2442fd60 addui r2,r2,(_debugstr)&0xffff 3295 000037f8 afa20000 sw (r29),r2 3296 000037fc 2007006d addi r7,r0,#109 3297 00003800 afa70004 sw 4(r29),r7 3298 00003804 0c00062c jal _dindex 3299 00003808 54000000 nop; not filled. 3300 0000380c 23bd0008 addi r29,r29,#8 3301 00003810 64210000 snei r1,r1,#0 3302 00003814 1420002c bnez r1,L217_LF3 3303 00003818 54000000 nop; not filled. 3304 0000381c 23bdfff8 addi r29,r29,#-8 3305 00003820 afa20000 sw (r29),r2 3306 00003824 2007002b addi r7,r0,#43 3307 00003828 afa70004 sw 4(r29),r7 3308 0000382c 0c000604 jal _dindex 3309 00003830 54000000 nop; not filled. 3310 00003834 23bd0008 addi r29,r29,#8 3311 00003838 64210000 snei r1,r1,#0 3312 0000383c 10200030 beqz r1,L216_LF3 3313 00003840 54000000 nop; not filled. 3314 00003844 L217_LF3: 3315 00003844 23bdffe8 addi r29,r29,#-24 3316 00003848 3c070000 lhi r7,((LC8_LF3)>>16)&0xffff 3317 0000384c 24e7d3f4 addui r7,r7,(LC8_LF3)&0xffff 3318 00003850 afa70000 sw (r29),r7 3319 00003854 afa50004 sw 4(r29),r5 3320 00003858 afa40008 sw 8(r29),r4 3321 0000385c afa6000c sw 12(r29),r6 3322 00003860 afa30010 sw 16(r29),r3 3323 00003864 0c007784 jal _printf 3324 00003868 54000000 nop; not filled. 3325 0000386c 23bd0018 addi r29,r29,#24 3326 00003870 L216_LF3: 3327 00003870 00040820 add r1,r0,r4 3328 00003874 L218_LF3: 3329 00003874 8fa20000 lw r2,0(r29) 3330 00003878 8fa30004 lw r3,4(r29) 3331 0000387c 8fa40008 lw r4,8(r29) 3332 00003880 8fa5000c lw r5,12(r29) 3333 00003884 8fa60010 lw r6,16(r29) 3334 00003888 8fa70014 lw r7,20(r29) 3335 0000388c 8fdffff8 lw r31,-8(r30) 3336 00003890 001ee820 add r29,r0,r30 3337 00003894 8fdefffc lw r30,-4(r30) 3338 00003898 4be00000 jr r31 3339 0000389c 54000000 nop 3340 000038a0 .endproc _MemoryGetOperandAddress 3341 000038a0 .data 3342 0000d42a .align 2 3343 0000d42c _pagestart_LF3: 3344 0000d42c .space 4 3345 0000d430 .align 2 3346 0000d430 _freemapmax_LF3: 3347 0000d430 .space 4 3348 0000d434 .align 2 3349 0000d434 _nfreepages_LF3: 3350 0000d434 .space 4 3351 0000d438 .align 2 3352 0000d438 _freepages_LF3: 3353 0000d438 .space 8192 3354 ; Compiled by GCC 3355 0000f438 .text 3356 000038a0 .align 2 3357 000038a0 .proc _isspace 3358 000038a0 .global _isspace 3359 000038a0 _isspace: 3360 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 3361 000038a0 afbefffc sw -4(r29),r30; push fp 3362 000038a4 001df020 add r30,r0,r29; fp = sp 3363 000038a8 afbffff8 sw -8(r29),r31; push ret addr 3364 000038ac 2fbd0010 subui r29,r29,#16; alloc local storage 3365 000038b0 afa20000 sw 0(r29),r2 3366 000038b4 83c20003 lb r2,3(r30) 3367 000038b8 201f0000 addi r31,r0,#0 3368 000038bc 304100ff andi r1,r2,#0x00ff 3369 000038c0 60210020 seqi r1,r1,#32 3370 000038c4 14200018 bnez r1,L6_LF4 3371 000038c8 54000000 nop; not filled. 3372 000038cc 2041fff7 addi r1,r2,#-9 3373 000038d0 302100ff andi r1,r1,#0x00ff 3374 000038d4 70210001 sleui r1,r1,#1 3375 000038d8 10200008 beqz r1,L5_LF4 3376 000038dc 54000000 nop; not filled. 3377 000038e0 L6_LF4: 3378 000038e0 201f0001 addi r31,r0,#1 3379 000038e4 L5_LF4: 3380 000038e4 001f0820 add r1,r0,r31 3381 000038e8 8fa20000 lw r2,0(r29) 3382 000038ec 8fdffff8 lw r31,-8(r30) 3383 000038f0 001ee820 add r29,r0,r30 3384 000038f4 8fdefffc lw r30,-4(r30) 3385 000038f8 4be00000 jr r31 3386 000038fc 54000000 nop 3387 00003900 .endproc _isspace 3388 00003900 .align 2 3389 00003900 .proc _isxdigit 3390 00003900 .global _isxdigit 3391 00003900 _isxdigit: 3392 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 3393 00003900 afbefffc sw -4(r29),r30; push fp 3394 00003904 001df020 add r30,r0,r29; fp = sp 3395 00003908 afbffff8 sw -8(r29),r31; push ret addr 3396 0000390c 2fbd0010 subui r29,r29,#16; alloc local storage 3397 00003910 afa20000 sw 0(r29),r2 3398 00003914 83df0003 lb r31,3(r30) 3399 00003918 20020000 addi r2,r0,#0 3400 0000391c 23e1ffd0 addi r1,r31,#-48 3401 00003920 302100ff andi r1,r1,#0x00ff 3402 00003924 70210009 sleui r1,r1,#9 3403 00003928 14200028 bnez r1,L12_LF4 3404 0000392c 54000000 nop; not filled. 3405 00003930 23e1ff9f addi r1,r31,#-97 3406 00003934 302100ff andi r1,r1,#0x00ff 3407 00003938 70210005 sleui r1,r1,#5 3408 0000393c 14200014 bnez r1,L12_LF4 3409 00003940 54000000 nop; not filled. 3410 00003944 33e100ff andi r1,r31,#0x00ff 3411 00003948 64210041 snei r1,r1,#65 3412 0000394c 14200008 bnez r1,L11_LF4 3413 00003950 54000000 nop; not filled. 3414 00003954 L12_LF4: 3415 00003954 20020001 addi r2,r0,#1 3416 00003958 L11_LF4: 3417 00003958 00020820 add r1,r0,r2 3418 0000395c 8fa20000 lw r2,0(r29) 3419 00003960 8fdffff8 lw r31,-8(r30) 3420 00003964 001ee820 add r29,r0,r30 3421 00003968 8fdefffc lw r30,-4(r30) 3422 0000396c 4be00000 jr r31 3423 00003970 54000000 nop 3424 00003974 .endproc _isxdigit 3425 00003974 .align 2 3426 00003974 .proc _dstrcpy 3427 00003974 .global _dstrcpy 3428 00003974 _dstrcpy: 3429 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 3430 00003974 afbefffc sw -4(r29),r30; push fp 3431 00003978 001df020 add r30,r0,r29; fp = sp 3432 0000397c afbffff8 sw -8(r29),r31; push ret addr 3433 00003980 2fbd0010 subui r29,r29,#16; alloc local storage 3434 00003984 afa20000 sw 0(r29),r2 3435 00003988 afa30004 sw 4(r29),r3 3436 0000398c 8fdf0000 lw r31,(r30) 3437 00003990 8fc20004 lw r2,4(r30) 3438 00003994 001f1820 add r3,r0,r31 3439 00003998 L19_LF4: 3440 00003998 80410000 lb r1,(r2) 3441 0000399c a3e10000 sb (r31),r1 3442 000039a0 20420001 addi r2,r2,#1 3443 000039a4 23ff0001 addi r31,r31,#1 3444 000039a8 302100ff andi r1,r1,#0x00ff 3445 000039ac 64210000 snei r1,r1,#0 3446 000039b0 1420ffe4 bnez r1,L19_LF4 3447 000039b4 54000000 nop; not filled. 3448 000039b8 00030820 add r1,r0,r3 3449 000039bc 8fa20000 lw r2,0(r29) 3450 000039c0 8fa30004 lw r3,4(r29) 3451 000039c4 8fdffff8 lw r31,-8(r30) 3452 000039c8 001ee820 add r29,r0,r30 3453 000039cc 8fdefffc lw r30,-4(r30) 3454 000039d0 4be00000 jr r31 3455 000039d4 54000000 nop 3456 000039d8 .endproc _dstrcpy 3457 000039d8 .align 2 3458 000039d8 .proc _dstrncpy 3459 000039d8 .global _dstrncpy 3460 000039d8 _dstrncpy: 3461 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 3462 000039d8 afbefffc sw -4(r29),r30; push fp 3463 000039dc 001df020 add r30,r0,r29; fp = sp 3464 000039e0 afbffff8 sw -8(r29),r31; push ret addr 3465 000039e4 2fbd0018 subui r29,r29,#24; alloc local storage 3466 000039e8 afa20000 sw 0(r29),r2 3467 000039ec afa30004 sw 4(r29),r3 3468 000039f0 afa40008 sw 8(r29),r4 3469 000039f4 8fc20000 lw r2,(r30) 3470 000039f8 8fc30004 lw r3,4(r30) 3471 000039fc 8fdf0008 lw r31,8(r30) 3472 00003a00 00022020 add r4,r0,r2 3473 00003a04 08000024 j L37_LF4 3474 00003a08 54000000 nop; not filled. 3475 00003a0c L34_LF4: 3476 00003a0c 80610000 lb r1,(r3) 3477 00003a10 a0410000 sb (r2),r1 3478 00003a14 20630001 addi r3,r3,#1 3479 00003a18 20420001 addi r2,r2,#1 3480 00003a1c 302100ff andi r1,r1,#0x00ff 3481 00003a20 64210000 snei r1,r1,#0 3482 00003a24 10200018 beqz r1,L32_LF4 3483 00003a28 54000000 nop; not filled. 3484 00003a2c L37_LF4: 3485 00003a2c 001f0820 add r1,r0,r31 3486 00003a30 23ffffff addi r31,r31,#-1 3487 00003a34 70210000 slei r1,r1,#0 3488 00003a38 1020ffd0 beqz r1,L34_LF4 3489 00003a3c 54000000 nop; not filled. 3490 00003a40 L32_LF4: 3491 00003a40 00040820 add r1,r0,r4 3492 00003a44 8fa20000 lw r2,0(r29) 3493 00003a48 8fa30004 lw r3,4(r29) 3494 00003a4c 8fa40008 lw r4,8(r29) 3495 00003a50 8fdffff8 lw r31,-8(r30) 3496 00003a54 001ee820 add r29,r0,r30 3497 00003a58 8fdefffc lw r30,-4(r30) 3498 00003a5c 4be00000 jr r31 3499 00003a60 54000000 nop 3500 00003a64 .endproc _dstrncpy 3501 00003a64 .align 2 3502 00003a64 .proc _dstrcat 3503 00003a64 .global _dstrcat 3504 00003a64 _dstrcat: 3505 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 3506 00003a64 afbefffc sw -4(r29),r30; push fp 3507 00003a68 001df020 add r30,r0,r29; fp = sp 3508 00003a6c afbffff8 sw -8(r29),r31; push ret addr 3509 00003a70 2fbd0010 subui r29,r29,#16; alloc local storage 3510 00003a74 afa20000 sw 0(r29),r2 3511 00003a78 afa30004 sw 4(r29),r3 3512 00003a7c 8fdf0000 lw r31,(r30) 3513 00003a80 001f1820 add r3,r0,r31 3514 00003a84 90610000 lbu r1,(r3) 3515 00003a88 64210000 snei r1,r1,#0 3516 00003a8c 10200018 beqz r1,L50_LF4 3517 00003a90 54000000 nop; not filled. 3518 00003a94 L51_LF4: 3519 00003a94 23ff0001 addi r31,r31,#1 3520 00003a98 93e10000 lbu r1,(r31) 3521 00003a9c 64210000 snei r1,r1,#0 3522 00003aa0 1420fff0 bnez r1,L51_LF4 3523 00003aa4 54000000 nop; not filled. 3524 00003aa8 L50_LF4: 3525 00003aa8 001f1020 add r2,r0,r31 3526 00003aac 8fdf0004 lw r31,4(r30) 3527 00003ab0 L54_LF4: 3528 00003ab0 83e10000 lb r1,(r31) 3529 00003ab4 a0410000 sb (r2),r1 3530 00003ab8 23ff0001 addi r31,r31,#1 3531 00003abc 20420001 addi r2,r2,#1 3532 00003ac0 302100ff andi r1,r1,#0x00ff 3533 00003ac4 64210000 snei r1,r1,#0 3534 00003ac8 1420ffe4 bnez r1,L54_LF4 3535 00003acc 54000000 nop; not filled. 3536 00003ad0 00030820 add r1,r0,r3 3537 00003ad4 8fa20000 lw r2,0(r29) 3538 00003ad8 8fa30004 lw r3,4(r29) 3539 00003adc 8fdffff8 lw r31,-8(r30) 3540 00003ae0 001ee820 add r29,r0,r30 3541 00003ae4 8fdefffc lw r30,-4(r30) 3542 00003ae8 4be00000 jr r31 3543 00003aec 54000000 nop 3544 00003af0 .endproc _dstrcat 3545 00003af0 .align 2 3546 00003af0 .proc _dstrncmp 3547 00003af0 .global _dstrncmp 3548 00003af0 _dstrncmp: 3549 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 3550 00003af0 afbefffc sw -4(r29),r30; push fp 3551 00003af4 001df020 add r30,r0,r29; fp = sp 3552 00003af8 afbffff8 sw -8(r29),r31; push ret addr 3553 00003afc 2fbd0018 subui r29,r29,#24; alloc local storage 3554 00003b00 afa20000 sw 0(r29),r2 3555 00003b04 afa30004 sw 4(r29),r3 3556 00003b08 afa40008 sw 8(r29),r4 3557 00003b0c afa5000c sw 12(r29),r5 3558 00003b10 8fc30000 lw r3,(r30) 3559 00003b14 8fc40004 lw r4,4(r30) 3560 00003b18 8fc50008 lw r5,8(r30) 3561 00003b1c 20020000 addi r2,r0,#0 3562 00003b20 0045082a slt r1,r2,r5 3563 00003b24 1020003c beqz r1,L73_LF4 3564 00003b28 54000000 nop; not filled. 3565 00003b2c L75_LF4: 3566 00003b2c 909f0000 lbu r31,(r4) 3567 00003b30 67e10000 snei r1,r31,#0 3568 00003b34 10200038 beqz r1,L86_LF4 3569 00003b38 54000000 nop; not filled. 3570 00003b3c 90610000 lbu r1,(r3) 3571 00003b40 003f0829 sne r1,r1,r31 3572 00003b44 1420001c bnez r1,L73_LF4 3573 00003b48 54000000 nop; not filled. 3574 00003b4c 20630001 addi r3,r3,#1 3575 00003b50 20840001 addi r4,r4,#1 3576 00003b54 20420001 addi r2,r2,#1 3577 00003b58 0045082a slt r1,r2,r5 3578 00003b5c 1420ffcc bnez r1,L75_LF4 3579 00003b60 54000000 nop; not filled. 3580 00003b64 L73_LF4: 3581 00003b64 00450828 seq r1,r2,r5 3582 00003b68 10200010 beqz r1,L80_LF4 3583 00003b6c 54000000 nop; not filled. 3584 00003b70 L86_LF4: 3585 00003b70 20010000 addi r1,r0,#0 3586 00003b74 08000028 j L84_LF4 3587 00003b78 54000000 nop; not filled. 3588 00003b7c L80_LF4: 3589 00003b7c 907f0000 lbu r31,(r3) 3590 00003b80 90830000 lbu r3,(r4) 3591 00003b84 03e30822 sub r1,r31,r3 3592 00003b88 74210000 sgei r1,r1,#0 3593 00003b8c 2002ffff addi r2,r0,#-1 3594 00003b90 10200008 beqz r1,L82_LF4 3595 00003b94 54000000 nop; not filled. 3596 00003b98 03e31029 sne r2,r31,r3 3597 00003b9c L82_LF4: 3598 00003b9c 00020820 add r1,r0,r2 3599 00003ba0 L84_LF4: 3600 00003ba0 8fa20000 lw r2,0(r29) 3601 00003ba4 8fa30004 lw r3,4(r29) 3602 00003ba8 8fa40008 lw r4,8(r29) 3603 00003bac 8fa5000c lw r5,12(r29) 3604 00003bb0 8fdffff8 lw r31,-8(r30) 3605 00003bb4 001ee820 add r29,r0,r30 3606 00003bb8 8fdefffc lw r30,-4(r30) 3607 00003bbc 4be00000 jr r31 3608 00003bc0 54000000 nop 3609 00003bc4 .endproc _dstrncmp 3610 00003bc4 .align 2 3611 00003bc4 .proc _dstrlen 3612 00003bc4 .global _dstrlen 3613 00003bc4 _dstrlen: 3614 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 3615 00003bc4 afbefffc sw -4(r29),r30; push fp 3616 00003bc8 001df020 add r30,r0,r29; fp = sp 3617 00003bcc afbffff8 sw -8(r29),r31; push ret addr 3618 00003bd0 2fbd0010 subui r29,r29,#16; alloc local storage 3619 00003bd4 afa20000 sw 0(r29),r2 3620 00003bd8 8fdf0000 lw r31,(r30) 3621 00003bdc 20020000 addi r2,r0,#0 3622 00003be0 08000008 j L97_LF4 3623 00003be4 54000000 nop; not filled. 3624 00003be8 L95_LF4: 3625 00003be8 20420001 addi r2,r2,#1 3626 00003bec L97_LF4: 3627 00003bec 93e10000 lbu r1,(r31) 3628 00003bf0 23ff0001 addi r31,r31,#1 3629 00003bf4 64210000 snei r1,r1,#0 3630 00003bf8 1420ffec bnez r1,L95_LF4 3631 00003bfc 54000000 nop; not filled. 3632 00003c00 00020820 add r1,r0,r2 3633 00003c04 8fa20000 lw r2,0(r29) 3634 00003c08 8fdffff8 lw r31,-8(r30) 3635 00003c0c 001ee820 add r29,r0,r30 3636 00003c10 8fdefffc lw r30,-4(r30) 3637 00003c14 4be00000 jr r31 3638 00003c18 54000000 nop 3639 00003c1c .endproc _dstrlen 3640 00003c1c .align 2 3641 00003c1c .proc _dstrstr 3642 00003c1c .global _dstrstr 3643 00003c1c _dstrstr: 3644 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 3645 00003c1c afbefffc sw -4(r29),r30; push fp 3646 00003c20 001df020 add r30,r0,r29; fp = sp 3647 00003c24 afbffff8 sw -8(r29),r31; push ret addr 3648 00003c28 2fbd0020 subui r29,r29,#32; alloc local storage 3649 00003c2c afa20000 sw 0(r29),r2 3650 00003c30 afa30004 sw 4(r29),r3 3651 00003c34 afa40008 sw 8(r29),r4 3652 00003c38 afa5000c sw 12(r29),r5 3653 00003c3c afa60010 sw 16(r29),r6 3654 00003c40 afa70014 sw 20(r29),r7 3655 00003c44 8fc50000 lw r5,(r30) 3656 00003c48 8fc70004 lw r7,4(r30) 3657 00003c4c 20030000 addi r3,r0,#0 3658 00003c50 90e10000 lbu r1,(r7) 3659 00003c54 20e20001 addi r2,r7,#1 3660 00003c58 64210000 snei r1,r1,#0 3661 00003c5c 1020001c beqz r1,L125_LF4 3662 00003c60 54000000 nop; not filled. 3663 00003c64 L126_LF4: 3664 00003c64 20630001 addi r3,r3,#1 3665 00003c68 90410000 lbu r1,(r2) 3666 00003c6c 20420001 addi r2,r2,#1 3667 00003c70 64210000 snei r1,r1,#0 3668 00003c74 1420ffec bnez r1,L126_LF4 3669 00003c78 54000000 nop; not filled. 3670 00003c7c L125_LF4: 3671 00003c7c 00033020 add r6,r0,r3 3672 00003c80 080000ac j L149_LF4 3673 00003c84 54000000 nop; not filled. 3674 00003c88 L130_LF4: 3675 00003c88 00051820 add r3,r0,r5 3676 00003c8c 00072020 add r4,r0,r7 3677 00003c90 20020000 addi r2,r0,#0 3678 00003c94 0046082a slt r1,r2,r6 3679 00003c98 1020003c beqz r1,L134_LF4 3680 00003c9c 54000000 nop; not filled. 3681 00003ca0 L136_LF4: 3682 00003ca0 909f0000 lbu r31,(r4) 3683 00003ca4 67e10000 snei r1,r31,#0 3684 00003ca8 10200038 beqz r1,L150_LF4 3685 00003cac 54000000 nop; not filled. 3686 00003cb0 90610000 lbu r1,(r3) 3687 00003cb4 003f0829 sne r1,r1,r31 3688 00003cb8 1420001c bnez r1,L134_LF4 3689 00003cbc 54000000 nop; not filled. 3690 00003cc0 20630001 addi r3,r3,#1 3691 00003cc4 20840001 addi r4,r4,#1 3692 00003cc8 20420001 addi r2,r2,#1 3693 00003ccc 0046082a slt r1,r2,r6 3694 00003cd0 1420ffcc bnez r1,L136_LF4 3695 00003cd4 54000000 nop; not filled. 3696 00003cd8 L134_LF4: 3697 00003cd8 00460828 seq r1,r2,r6 3698 00003cdc 10200010 beqz r1,L141_LF4 3699 00003ce0 54000000 nop; not filled. 3700 00003ce4 L150_LF4: 3701 00003ce4 20010000 addi r1,r0,#0 3702 00003ce8 08000028 j L132_LF4 3703 00003cec 54000000 nop; not filled. 3704 00003cf0 L141_LF4: 3705 00003cf0 90630000 lbu r3,(r3) 3706 00003cf4 90820000 lbu r2,(r4) 3707 00003cf8 00620822 sub r1,r3,r2 3708 00003cfc 74210000 sgei r1,r1,#0 3709 00003d00 201fffff addi r31,r0,#-1 3710 00003d04 10200008 beqz r1,L143_LF4 3711 00003d08 54000000 nop; not filled. 3712 00003d0c 0062f829 sne r31,r3,r2 3713 00003d10 L143_LF4: 3714 00003d10 001f0820 add r1,r0,r31 3715 00003d14 L132_LF4: 3716 00003d14 64210000 snei r1,r1,#0 3717 00003d18 14200010 bnez r1,L131_LF4 3718 00003d1c 54000000 nop; not filled. 3719 00003d20 00050820 add r1,r0,r5 3720 00003d24 0800001c j L146_LF4 3721 00003d28 54000000 nop; not filled. 3722 00003d2c L131_LF4: 3723 00003d2c 20a50001 addi r5,r5,#1 3724 00003d30 L149_LF4: 3725 00003d30 90a10000 lbu r1,(r5) 3726 00003d34 64210000 snei r1,r1,#0 3727 00003d38 1420ff4c bnez r1,L130_LF4 3728 00003d3c 54000000 nop; not filled. 3729 00003d40 20010000 addi r1,r0,#0 3730 00003d44 L146_LF4: 3731 00003d44 8fa20000 lw r2,0(r29) 3732 00003d48 8fa30004 lw r3,4(r29) 3733 00003d4c 8fa40008 lw r4,8(r29) 3734 00003d50 8fa5000c lw r5,12(r29) 3735 00003d54 8fa60010 lw r6,16(r29) 3736 00003d58 8fa70014 lw r7,20(r29) 3737 00003d5c 8fdffff8 lw r31,-8(r30) 3738 00003d60 001ee820 add r29,r0,r30 3739 00003d64 8fdefffc lw r30,-4(r30) 3740 00003d68 4be00000 jr r31 3741 00003d6c 54000000 nop 3742 00003d70 .endproc _dstrstr 3743 00003d70 .align 2 3744 00003d70 .proc _dmindex 3745 00003d70 .global _dmindex 3746 00003d70 _dmindex: 3747 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 3748 00003d70 afbefffc sw -4(r29),r30; push fp 3749 00003d74 001df020 add r30,r0,r29; fp = sp 3750 00003d78 afbffff8 sw -8(r29),r31; push ret addr 3751 00003d7c 2fbd0020 subui r29,r29,#32; alloc local storage 3752 00003d80 afa20000 sw 0(r29),r2 3753 00003d84 afa30004 sw 4(r29),r3 3754 00003d88 afa40008 sw 8(r29),r4 3755 00003d8c afa5000c sw 12(r29),r5 3756 00003d90 afa60010 sw 16(r29),r6 3757 00003d94 8fc40000 lw r4,(r30) 3758 00003d98 8fc60004 lw r6,4(r30) 3759 00003d9c 90810000 lbu r1,(r4) 3760 00003da0 64210000 snei r1,r1,#0 3761 00003da4 10200060 beqz r1,L164_LF4 3762 00003da8 54000000 nop; not filled. 3763 00003dac 00012820 add r5,r0,r1 3764 00003db0 L165_LF4: 3765 00003db0 00061020 add r2,r0,r6 3766 00003db4 80df0000 lb r31,(r6) 3767 00003db8 33e100ff andi r1,r31,#0x00ff 3768 00003dbc 64210000 snei r1,r1,#0 3769 00003dc0 1020003c beqz r1,L163_LF4 3770 00003dc4 54000000 nop; not filled. 3771 00003dc8 90830000 lbu r3,(r4) 3772 00003dcc L169_LF4: 3773 00003dcc 33e100ff andi r1,r31,#0x00ff 3774 00003dd0 00610828 seq r1,r3,r1 3775 00003dd4 10200010 beqz r1,L168_LF4 3776 00003dd8 54000000 nop; not filled. 3777 00003ddc 00040820 add r1,r0,r4 3778 00003de0 08000028 j L173_LF4 3779 00003de4 54000000 nop; not filled. 3780 00003de8 L168_LF4: 3781 00003de8 20420001 addi r2,r2,#1 3782 00003dec 805f0000 lb r31,(r2) 3783 00003df0 33e100ff andi r1,r31,#0x00ff 3784 00003df4 64210000 snei r1,r1,#0 3785 00003df8 1420ffd0 bnez r1,L169_LF4 3786 00003dfc 54000000 nop; not filled. 3787 00003e00 L163_LF4: 3788 00003e00 14a0ffac bnez r5,L165_LF4 3789 00003e04 54000000 nop; not filled. 3790 00003e08 L164_LF4: 3791 00003e08 20010000 addi r1,r0,#0 3792 00003e0c L173_LF4: 3793 00003e0c 8fa20000 lw r2,0(r29) 3794 00003e10 8fa30004 lw r3,4(r29) 3795 00003e14 8fa40008 lw r4,8(r29) 3796 00003e18 8fa5000c lw r5,12(r29) 3797 00003e1c 8fa60010 lw r6,16(r29) 3798 00003e20 8fdffff8 lw r31,-8(r30) 3799 00003e24 001ee820 add r29,r0,r30 3800 00003e28 8fdefffc lw r30,-4(r30) 3801 00003e2c 4be00000 jr r31 3802 00003e30 54000000 nop 3803 00003e34 .endproc _dmindex 3804 00003e34 .align 2 3805 00003e34 .proc _dindex 3806 00003e34 .global _dindex 3807 00003e34 _dindex: 3808 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 3809 00003e34 afbefffc sw -4(r29),r30; push fp 3810 00003e38 001df020 add r30,r0,r29; fp = sp 3811 00003e3c afbffff8 sw -8(r29),r31; push ret addr 3812 00003e40 2fbd0010 subui r29,r29,#16; alloc local storage 3813 00003e44 afa20000 sw 0(r29),r2 3814 00003e48 afa30004 sw 4(r29),r3 3815 00003e4c 8fc20000 lw r2,(r30) 3816 00003e50 8fc30004 lw r3,4(r30) 3817 00003e54 08000024 j L187_LF4 3818 00003e58 54000000 nop; not filled. 3819 00003e5c L183_LF4: 3820 00003e5c 33e100ff andi r1,r31,#0x00ff 3821 00003e60 00230828 seq r1,r1,r3 3822 00003e64 10200010 beqz r1,L184_LF4 3823 00003e68 54000000 nop; not filled. 3824 00003e6c 00020820 add r1,r0,r2 3825 00003e70 08000020 j L186_LF4 3826 00003e74 54000000 nop; not filled. 3827 00003e78 L184_LF4: 3828 00003e78 20420001 addi r2,r2,#1 3829 00003e7c L187_LF4: 3830 00003e7c 805f0000 lb r31,(r2) 3831 00003e80 33e100ff andi r1,r31,#0x00ff 3832 00003e84 64210000 snei r1,r1,#0 3833 00003e88 1420ffd0 bnez r1,L183_LF4 3834 00003e8c 54000000 nop; not filled. 3835 00003e90 20010000 addi r1,r0,#0 3836 00003e94 L186_LF4: 3837 00003e94 8fa20000 lw r2,0(r29) 3838 00003e98 8fa30004 lw r3,4(r29) 3839 00003e9c 8fdffff8 lw r31,-8(r30) 3840 00003ea0 001ee820 add r29,r0,r30 3841 00003ea4 8fdefffc lw r30,-4(r30) 3842 00003ea8 4be00000 jr r31 3843 00003eac 54000000 nop 3844 00003eb0 .endproc _dindex 3845 00003eb0 .align 2 3846 00003eb0 .proc _ditoa 3847 00003eb0 .global _ditoa 3848 00003eb0 _ditoa: 3849 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 3850 00003eb0 afbefffc sw -4(r29),r30; push fp 3851 00003eb4 001df020 add r30,r0,r29; fp = sp 3852 00003eb8 afbffff8 sw -8(r29),r31; push ret addr 3853 00003ebc 2fbd0020 subui r29,r29,#32; alloc local storage 3854 00003ec0 afa20000 sw 0(r29),r2 3855 00003ec4 afa30004 sw 4(r29),r3 3856 00003ec8 afa40008 sw 8(r29),r4 3857 00003ecc afa5000c sw 12(r29),r5 3858 00003ed0 afa60010 sw 16(r29),r6 3859 00003ed4 8fc30000 lw r3,(r30) 3860 00003ed8 8fc40004 lw r4,4(r30) 3861 00003edc 68610000 slti r1,r3,#0 3862 00003ee0 10200010 beqz r1,L203_LF4 3863 00003ee4 54000000 nop; not filled. 3864 00003ee8 2006002d addi r6,r0,(#0x2d)&0xff 3865 00003eec 08000014 j L216_LF4 3866 00003ef0 54000000 nop; not filled. 3867 00003ef4 L203_LF4: 3868 00003ef4 64610000 snei r1,r3,#0 3869 00003ef8 14200018 bnez r1,L205_LF4 3870 00003efc 54000000 nop; not filled. 3871 00003f00 20060030 addi r6,r0,(#0x30)&0xff 3872 00003f04 L216_LF4: 3873 00003f04 a0860000 sb (r4),r6 3874 00003f08 20840001 addi r4,r4,#1 3875 00003f0c 0800007c j L204_LF4 3876 00003f10 54000000 nop; not filled. 3877 00003f14 L205_LF4: 3878 00003f14 201f0001 addi r31,r0,#1 3879 00003f18 03e3082c sle r1,r31,r3 3880 00003f1c 1020001c beqz r1,L208_LF4 3881 00003f20 54000000 nop; not filled. 3882 00003f24 L209_LF4: 3883 00003f24 53e10002 slli r1,r31,#0x2 3884 00003f28 003f0820 add r1,r1,r31 3885 00003f2c 503f0001 slli r31,r1,#0x1 3886 00003f30 03e3082c sle r1,r31,r3 3887 00003f34 1420ffec bnez r1,L209_LF4 3888 00003f38 54000000 nop; not filled. 3889 00003f3c L208_LF4: 3890 00003f3c 2005000a addi r5,r0,#10 3891 00003f40 L212_LF4: 3892 00003f40 03e00035 movi2fp f0,r31 3893 00003f44 00a00835 movi2fp f1,r5 3894 00003f48 0401000f div f0,f0,f1 3895 00003f4c 0000f834 movfp2i r31,f0 3896 00003f50 00600035 movi2fp f0,r3 3897 00003f54 03e00835 movi2fp f1,r31 3898 00003f58 0401000f div f0,f0,f1 3899 00003f5c 00001034 movfp2i r2,f0 3900 00003f60 20410030 addi r1,r2,#48 3901 00003f64 a0810000 sb (r4),r1 3902 00003f68 20840001 addi r4,r4,#1 3903 00003f6c 00400035 movi2fp f0,r2 3904 00003f70 03e00835 movi2fp f1,r31 3905 00003f74 0401000e mult f0,f0,f1 3906 00003f78 00000834 movfp2i r1,f0 3907 00003f7c 00611822 sub r3,r3,r1 3908 00003f80 6fe10001 sgti r1,r31,#1 3909 00003f84 1420ffb8 bnez r1,L212_LF4 3910 00003f88 54000000 nop; not filled. 3911 00003f8c L204_LF4: 3912 00003f8c 20060000 addi r6,r0,(#0x0)&0xff 3913 00003f90 a0860000 sb (r4),r6 3914 00003f94 8fa20000 lw r2,0(r29) 3915 00003f98 8fa30004 lw r3,4(r29) 3916 00003f9c 8fa40008 lw r4,8(r29) 3917 00003fa0 8fa5000c lw r5,12(r29) 3918 00003fa4 8fa60010 lw r6,16(r29) 3919 00003fa8 8fdffff8 lw r31,-8(r30) 3920 00003fac 001ee820 add r29,r0,r30 3921 00003fb0 8fdefffc lw r30,-4(r30) 3922 00003fb4 4be00000 jr r31 3923 00003fb8 54000000 nop 3924 00003fbc .endproc _ditoa 3925 00003fbc .align 2 3926 00003fbc .proc _dstrtol 3927 00003fbc .global _dstrtol 3928 00003fbc _dstrtol: 3929 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 3930 00003fbc afbefffc sw -4(r29),r30; push fp 3931 00003fc0 001df020 add r30,r0,r29; fp = sp 3932 00003fc4 afbffff8 sw -8(r29),r31; push ret addr 3933 00003fc8 2fbd0020 subui r29,r29,#32; alloc local storage 3934 00003fcc afa20000 sw 0(r29),r2 3935 00003fd0 afa30004 sw 4(r29),r3 3936 00003fd4 afa40008 sw 8(r29),r4 3937 00003fd8 afa5000c sw 12(r29),r5 3938 00003fdc afa60010 sw 16(r29),r6 3939 00003fe0 8fc20000 lw r2,(r30) 3940 00003fe4 8fc50004 lw r5,4(r30) 3941 00003fe8 8fc40008 lw r4,8(r30) 3942 00003fec 20030000 addi r3,r0,#0 3943 00003ff0 08000008 j L247_LF4 3944 00003ff4 54000000 nop; not filled. 3945 00003ff8 L220_LF4: 3946 00003ff8 20420001 addi r2,r2,#1 3947 00003ffc L247_LF4: 3948 00003ffc 805f0000 lb r31,(r2) 3949 00004000 33e100ff andi r1,r31,#0x00ff 3950 00004004 60210020 seqi r1,r1,#32 3951 00004008 1420ffec bnez r1,L220_LF4 3952 0000400c 54000000 nop; not filled. 3953 00004010 23e1fff7 addi r1,r31,#-9 3954 00004014 302100ff andi r1,r1,#0x00ff 3955 00004018 70210001 sleui r1,r1,#1 3956 0000401c 1420ffd8 bnez r1,L220_LF4 3957 00004020 54000000 nop; not filled. 3958 00004024 64a10000 snei r1,r5,#0 3959 00004028 10200008 beqz r1,L222_LF4 3960 0000402c 54000000 nop; not filled. 3961 00004030 aca20000 sw (r5),r2 3962 00004034 L222_LF4: 3963 00004034 905f0000 lbu r31,(r2) 3964 00004038 67e10000 snei r1,r31,#0 3965 0000403c 10200090 beqz r1,L248_LF4 3966 00004040 54000000 nop; not filled. 3967 00004044 63e1002d seqi r1,r31,#45 3968 00004048 10200014 beqz r1,L224_LF4 3969 0000404c 54000000 nop; not filled. 3970 00004050 2006ffff addi r6,r0,#-1 3971 00004054 20420001 addi r2,r2,#1 3972 00004058 08000008 j L225_LF4 3973 0000405c 54000000 nop; not filled. 3974 00004060 L224_LF4: 3975 00004060 20060001 addi r6,r0,#1 3976 00004064 L225_LF4: 3977 00004064 64810000 snei r1,r4,#0 3978 00004068 14200054 bnez r1,L226_LF4 3979 0000406c 54000000 nop; not filled. 3980 00004070 90410000 lbu r1,(r2) 3981 00004074 60210030 seqi r1,r1,#48 3982 00004078 10200040 beqz r1,L227_LF4 3983 0000407c 54000000 nop; not filled. 3984 00004080 20420001 addi r2,r2,#1 3985 00004084 905f0000 lbu r31,(r2) 3986 00004088 63e10078 seqi r1,r31,#120 3987 0000408c 14200010 bnez r1,L229_LF4 3988 00004090 54000000 nop; not filled. 3989 00004094 63e10058 seqi r1,r31,#88 3990 00004098 10200014 beqz r1,L228_LF4 3991 0000409c 54000000 nop; not filled. 3992 000040a0 L229_LF4: 3993 000040a0 20040010 addi r4,r0,#16 3994 000040a4 20420001 addi r2,r2,#1 3995 000040a8 08000014 j L226_LF4 3996 000040ac 54000000 nop; not filled. 3997 000040b0 L228_LF4: 3998 000040b0 20040008 addi r4,r0,#8 3999 000040b4 08000008 j L226_LF4 4000 000040b8 54000000 nop; not filled. 4001 000040bc L227_LF4: 4002 000040bc 2004000a addi r4,r0,#10 4003 000040c0 L226_LF4: 4004 000040c0 2081ffff addi r1,r4,#-1 4005 000040c4 6c21000f sgtui r1,r1,#15 4006 000040c8 10200010 beqz r1,L233_LF4 4007 000040cc 54000000 nop; not filled. 4008 000040d0 L248_LF4: 4009 000040d0 00030820 add r1,r0,r3 4010 000040d4 080000c4 j L245_LF4 4011 000040d8 54000000 nop; not filled. 4012 000040dc L233_LF4: 4013 000040dc 805f0000 lb r31,(r2) 4014 000040e0 23e1ffd0 addi r1,r31,#-48 4015 000040e4 302100ff andi r1,r1,#0x00ff 4016 000040e8 70210009 sleui r1,r1,#9 4017 000040ec 10200014 beqz r1,L236_LF4 4018 000040f0 54000000 nop; not filled. 4019 000040f4 33e100ff andi r1,r31,#0x00ff 4020 000040f8 2021ffd0 addi r1,r1,#-48 4021 000040fc 08000050 j L237_LF4 4022 00004100 54000000 nop; not filled. 4023 00004104 L236_LF4: 4024 00004104 23e1ff9f addi r1,r31,#-97 4025 00004108 302100ff andi r1,r1,#0x00ff 4026 0000410c 70210019 sleui r1,r1,#25 4027 00004110 10200014 beqz r1,L238_LF4 4028 00004114 54000000 nop; not filled. 4029 00004118 33e100ff andi r1,r31,#0x00ff 4030 0000411c 2021ffa9 addi r1,r1,#-87 4031 00004120 0800002c j L237_LF4 4032 00004124 54000000 nop; not filled. 4033 00004128 L238_LF4: 4034 00004128 23e1ffbf addi r1,r31,#-65 4035 0000412c 302100ff andi r1,r1,#0x00ff 4036 00004130 70210019 sleui r1,r1,#25 4037 00004134 10200014 beqz r1,L240_LF4 4038 00004138 54000000 nop; not filled. 4039 0000413c 33e100ff andi r1,r31,#0x00ff 4040 00004140 2021ffc9 addi r1,r1,#-55 4041 00004144 08000008 j L237_LF4 4042 00004148 54000000 nop; not filled. 4043 0000414c L240_LF4: 4044 0000414c 200103e8 addi r1,r0,#1000 4045 00004150 L237_LF4: 4046 00004150 0024f82a slt r31,r1,r4 4047 00004154 13e00024 beqz r31,L246_LF4 4048 00004158 54000000 nop; not filled. 4049 0000415c 00600035 movi2fp f0,r3 4050 00004160 00800835 movi2fp f1,r4 4051 00004164 0401000e mult f0,f0,f1 4052 00004168 00001834 movfp2i r3,f0 4053 0000416c 00611820 add r3,r3,r1 4054 00004170 20420001 addi r2,r2,#1 4055 00004174 17e0ff64 bnez r31,L233_LF4 4056 00004178 54000000 nop; not filled. 4057 0000417c L246_LF4: 4058 0000417c 64a10000 snei r1,r5,#0 4059 00004180 10200008 beqz r1,L244_LF4 4060 00004184 54000000 nop; not filled. 4061 00004188 aca20000 sw (r5),r2 4062 0000418c L244_LF4: 4063 0000418c 00600035 movi2fp f0,r3 4064 00004190 00c00835 movi2fp f1,r6 4065 00004194 0401000e mult f0,f0,f1 4066 00004198 00000834 movfp2i r1,f0 4067 0000419c L245_LF4: 4068 0000419c 8fa20000 lw r2,0(r29) 4069 000041a0 8fa30004 lw r3,4(r29) 4070 000041a4 8fa40008 lw r4,8(r29) 4071 000041a8 8fa5000c lw r5,12(r29) 4072 000041ac 8fa60010 lw r6,16(r29) 4073 000041b0 8fdffff8 lw r31,-8(r30) 4074 000041b4 001ee820 add r29,r0,r30 4075 000041b8 8fdefffc lw r30,-4(r30) 4076 000041bc 4be00000 jr r31 4077 000041c0 54000000 nop 4078 000041c4 .endproc _dstrtol 4079 000041c4 .align 2 4080 000041c4 .proc _bcopy 4081 000041c4 .global _bcopy 4082 000041c4 _bcopy: 4083 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 4084 000041c4 afbefffc sw -4(r29),r30; push fp 4085 000041c8 001df020 add r30,r0,r29; fp = sp 4086 000041cc afbffff8 sw -8(r29),r31; push ret addr 4087 000041d0 2fbd0018 subui r29,r29,#24; alloc local storage 4088 000041d4 afa20000 sw 0(r29),r2 4089 000041d8 afa30004 sw 4(r29),r3 4090 000041dc afa40008 sw 8(r29),r4 4091 000041e0 8fc30000 lw r3,(r30) 4092 000041e4 8fc20004 lw r2,4(r30) 4093 000041e8 8fdf0008 lw r31,8(r30) 4094 000041ec 08000014 j L259_LF4 4095 000041f0 54000000 nop; not filled. 4096 000041f4 L257_LF4: 4097 000041f4 80640000 lb r4,(r3) 4098 000041f8 a0440000 sb (r2),r4 4099 000041fc 20630001 addi r3,r3,#1 4100 00004200 20420001 addi r2,r2,#1 4101 00004204 L259_LF4: 4102 00004204 001f0820 add r1,r0,r31 4103 00004208 23ffffff addi r31,r31,#-1 4104 0000420c 6c210000 sgti r1,r1,#0 4105 00004210 1420ffe0 bnez r1,L257_LF4 4106 00004214 54000000 nop; not filled. 4107 00004218 8fa20000 lw r2,0(r29) 4108 0000421c 8fa30004 lw r3,4(r29) 4109 00004220 8fa40008 lw r4,8(r29) 4110 00004224 8fdffff8 lw r31,-8(r30) 4111 00004228 001ee820 add r29,r0,r30 4112 0000422c 8fdefffc lw r30,-4(r30) 4113 00004230 4be00000 jr r31 4114 00004234 54000000 nop 4115 00004238 .endproc _bcopy 4116 00004238 .align 2 4117 00004238 .proc _bzero 4118 00004238 .global _bzero 4119 00004238 _bzero: 4120 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 4121 00004238 afbefffc sw -4(r29),r30; push fp 4122 0000423c 001df020 add r30,r0,r29; fp = sp 4123 00004240 afbffff8 sw -8(r29),r31; push ret addr 4124 00004244 2fbd0010 subui r29,r29,#16; alloc local storage 4125 00004248 afa20000 sw 0(r29),r2 4126 0000424c afa30004 sw 4(r29),r3 4127 00004250 8fc20000 lw r2,(r30) 4128 00004254 8fdf0004 lw r31,4(r30) 4129 00004258 08000010 j L270_LF4 4130 0000425c 54000000 nop; not filled. 4131 00004260 L268_LF4: 4132 00004260 20030000 addi r3,r0,(#0x0)&0xff 4133 00004264 a0430000 sb (r2),r3 4134 00004268 20420001 addi r2,r2,#1 4135 0000426c L270_LF4: 4136 0000426c 001f0820 add r1,r0,r31 4137 00004270 23ffffff addi r31,r31,#-1 4138 00004274 6c210000 sgti r1,r1,#0 4139 00004278 1420ffe4 bnez r1,L268_LF4 4140 0000427c 54000000 nop; not filled. 4141 00004280 8fa20000 lw r2,0(r29) 4142 00004284 8fa30004 lw r3,4(r29) 4143 00004288 8fdffff8 lw r31,-8(r30) 4144 0000428c 001ee820 add r29,r0,r30 4145 00004290 8fdefffc lw r30,-4(r30) 4146 00004294 4be00000 jr r31 4147 00004298 54000000 nop 4148 0000429c .endproc _bzero 4149 ; Compiled by GCC 4151 0000429c .align 2 4152 0000429c .proc _isspace 4153 0000429c .global _isspace 4154 0000429c _isspace: 4155 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 4156 0000429c afbefffc sw -4(r29),r30; push fp 4157 000042a0 001df020 add r30,r0,r29; fp = sp 4158 000042a4 afbffff8 sw -8(r29),r31; push ret addr 4159 000042a8 2fbd0010 subui r29,r29,#16; alloc local storage 4160 000042ac afa20000 sw 0(r29),r2 4161 000042b0 83c20003 lb r2,3(r30) 4162 000042b4 201f0000 addi r31,r0,#0 4163 000042b8 304100ff andi r1,r2,#0x00ff 4164 000042bc 60210020 seqi r1,r1,#32 4165 000042c0 14200018 bnez r1,L6_LF5 4166 000042c4 54000000 nop; not filled. 4167 000042c8 2041fff7 addi r1,r2,#-9 4168 000042cc 302100ff andi r1,r1,#0x00ff 4169 000042d0 70210001 sleui r1,r1,#1 4170 000042d4 10200008 beqz r1,L5_LF5 4171 000042d8 54000000 nop; not filled. 4172 000042dc L6_LF5: 4173 000042dc 201f0001 addi r31,r0,#1 4174 000042e0 L5_LF5: 4175 000042e0 001f0820 add r1,r0,r31 4176 000042e4 8fa20000 lw r2,0(r29) 4177 000042e8 8fdffff8 lw r31,-8(r30) 4178 000042ec 001ee820 add r29,r0,r30 4179 000042f0 8fdefffc lw r30,-4(r30) 4180 000042f4 4be00000 jr r31 4181 000042f8 54000000 nop 4182 000042fc .endproc _isspace 4183 000042fc .align 2 4184 000042fc .proc _isxdigit 4185 000042fc .global _isxdigit 4186 000042fc _isxdigit: 4187 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 4188 000042fc afbefffc sw -4(r29),r30; push fp 4189 00004300 001df020 add r30,r0,r29; fp = sp 4190 00004304 afbffff8 sw -8(r29),r31; push ret addr 4191 00004308 2fbd0010 subui r29,r29,#16; alloc local storage 4192 0000430c afa20000 sw 0(r29),r2 4193 00004310 83df0003 lb r31,3(r30) 4194 00004314 20020000 addi r2,r0,#0 4195 00004318 23e1ffd0 addi r1,r31,#-48 4196 0000431c 302100ff andi r1,r1,#0x00ff 4197 00004320 70210009 sleui r1,r1,#9 4198 00004324 14200028 bnez r1,L12_LF5 4199 00004328 54000000 nop; not filled. 4200 0000432c 23e1ff9f addi r1,r31,#-97 4201 00004330 302100ff andi r1,r1,#0x00ff 4202 00004334 70210005 sleui r1,r1,#5 4203 00004338 14200014 bnez r1,L12_LF5 4204 0000433c 54000000 nop; not filled. 4205 00004340 33e100ff andi r1,r31,#0x00ff 4206 00004344 64210041 snei r1,r1,#65 4207 00004348 14200008 bnez r1,L11_LF5 4208 0000434c 54000000 nop; not filled. 4209 00004350 L12_LF5: 4210 00004350 20020001 addi r2,r0,#1 4211 00004354 L11_LF5: 4212 00004354 00020820 add r1,r0,r2 4213 00004358 8fa20000 lw r2,0(r29) 4214 0000435c 8fdffff8 lw r31,-8(r30) 4215 00004360 001ee820 add r29,r0,r30 4216 00004364 8fdefffc lw r30,-4(r30) 4217 00004368 4be00000 jr r31 4218 0000436c 54000000 nop 4219 00004370 .endproc _isxdigit 4220 00004370 .align 2 4221 00004370 .proc _DisableIntrs 4222 00004370 .global _DisableIntrs 4223 00004370 _DisableIntrs: 4224 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 4225 00004370 afbefffc sw -4(r29),r30; push fp 4226 00004374 001df020 add r30,r0,r29; fp = sp 4227 00004378 afbffff8 sw -8(r29),r31; push ret addr 4228 0000437c 2fbd0010 subui r29,r29,#16; alloc local storage 4229 00004380 afa20000 sw 0(r29),r2 4230 00004384 23bdfff8 addi r29,r29,#-8 4231 00004388 2002000f addi r2,r0,#15 4232 0000438c afa20000 sw (r29),r2 4233 00004390 0fffcef4 jal _SetIntrs 4234 00004394 54000000 nop; not filled. 4235 00004398 23bd0008 addi r29,r29,#8 4236 0000439c 8fa20000 lw r2,0(r29) 4237 000043a0 8fdffff8 lw r31,-8(r30) 4238 000043a4 001ee820 add r29,r0,r30 4239 000043a8 8fdefffc lw r30,-4(r30) 4240 000043ac 4be00000 jr r31 4241 000043b0 54000000 nop 4242 000043b4 .endproc _DisableIntrs 4243 000043b4 .align 2 4244 000043b4 .proc _EnableIntrs 4245 000043b4 .global _EnableIntrs 4246 000043b4 _EnableIntrs: 4247 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 4248 000043b4 afbefffc sw -4(r29),r30; push fp 4249 000043b8 001df020 add r30,r0,r29; fp = sp 4250 000043bc afbffff8 sw -8(r29),r31; push ret addr 4251 000043c0 2fbd0010 subui r29,r29,#16; alloc local storage 4252 000043c4 afa20000 sw 0(r29),r2 4253 000043c8 23bdfff8 addi r29,r29,#-8 4254 000043cc 20020000 addi r2,r0,#0 4255 000043d0 afa20000 sw (r29),r2 4256 000043d4 0fffceb0 jal _SetIntrs 4257 000043d8 54000000 nop; not filled. 4258 000043dc 23bd0008 addi r29,r29,#8 4259 000043e0 8fa20000 lw r2,0(r29) 4260 000043e4 8fdffff8 lw r31,-8(r30) 4261 000043e8 001ee820 add r29,r0,r30 4262 000043ec 8fdefffc lw r30,-4(r30) 4263 000043f0 4be00000 jr r31 4264 000043f4 54000000 nop 4265 000043f8 .endproc _EnableIntrs 4266 000043f8 .align 2 4267 000043f8 .proc _RestoreIntrs 4268 000043f8 .global _RestoreIntrs 4269 000043f8 _RestoreIntrs: 4270 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 4271 000043f8 afbefffc sw -4(r29),r30; push fp 4272 000043fc 001df020 add r30,r0,r29; fp = sp 4273 00004400 afbffff8 sw -8(r29),r31; push ret addr 4274 00004404 2fbd0010 subui r29,r29,#16; alloc local storage 4275 00004408 afa20000 sw 0(r29),r2 4276 0000440c 23bdfff8 addi r29,r29,#-8 4277 00004410 8fc20000 lw r2,(r30) 4278 00004414 afa20000 sw (r29),r2 4279 00004418 0fffce6c jal _SetIntrs 4280 0000441c 54000000 nop; not filled. 4281 00004420 23bd0008 addi r29,r29,#8 4282 00004424 8fa20000 lw r2,0(r29) 4283 00004428 8fdffff8 lw r31,-8(r30) 4284 0000442c 001ee820 add r29,r0,r30 4285 00004430 8fdefffc lw r30,-4(r30) 4286 00004434 4be00000 jr r31 4287 00004438 54000000 nop 4288 0000443c .endproc _RestoreIntrs 4289 0000443c .align 2 4290 0000443c .proc _QueueLinkInit 4291 0000443c .global _QueueLinkInit 4292 0000443c _QueueLinkInit: 4293 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 4294 0000443c afbefffc sw -4(r29),r30; push fp 4295 00004440 001df020 add r30,r0,r29; fp = sp 4296 00004444 afbffff8 sw -8(r29),r31; push ret addr 4297 00004448 2fbd0010 subui r29,r29,#16; alloc local storage 4298 0000444c afa20000 sw 0(r29),r2 4299 00004450 8fc10000 lw r1,(r30) 4300 00004454 8fc20004 lw r2,4(r30) 4301 00004458 201f0000 addi r31,r0,#0 4302 0000445c ac3f0000 sw (r1),r31 4303 00004460 ac22000c sw 12(r1),r2 4304 00004464 8fa20000 lw r2,0(r29) 4305 00004468 8fdffff8 lw r31,-8(r30) 4306 0000446c 001ee820 add r29,r0,r30 4307 00004470 8fdefffc lw r30,-4(r30) 4308 00004474 4be00000 jr r31 4309 00004478 54000000 nop 4310 0000447c .endproc _QueueLinkInit 4311 0000447c .align 2 4312 0000447c .proc _QueueNext 4313 0000447c .global _QueueNext 4314 0000447c _QueueNext: 4315 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 4316 0000447c afbefffc sw -4(r29),r30; push fp 4317 00004480 001df020 add r30,r0,r29; fp = sp 4318 00004484 afbffff8 sw -8(r29),r31; push ret addr 4319 00004488 2fbd0008 subui r29,r29,#8; alloc local storage 4320 0000448c 8fc10000 lw r1,(r30) 4321 00004490 8c210000 lw r1,(r1) 4322 00004494 8fdffff8 lw r31,-8(r30) 4323 00004498 001ee820 add r29,r0,r30 4324 0000449c 8fdefffc lw r30,-4(r30) 4325 000044a0 4be00000 jr r31 4326 000044a4 54000000 nop 4327 000044a8 .endproc _QueueNext 4328 000044a8 .align 2 4329 000044a8 .proc _QueuePrev 4330 000044a8 .global _QueuePrev 4331 000044a8 _QueuePrev: 4332 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 4333 000044a8 afbefffc sw -4(r29),r30; push fp 4334 000044ac 001df020 add r30,r0,r29; fp = sp 4335 000044b0 afbffff8 sw -8(r29),r31; push ret addr 4336 000044b4 2fbd0008 subui r29,r29,#8; alloc local storage 4337 000044b8 8fc10000 lw r1,(r30) 4338 000044bc 8c210004 lw r1,4(r1) 4339 000044c0 8fdffff8 lw r31,-8(r30) 4340 000044c4 001ee820 add r29,r0,r30 4341 000044c8 8fdefffc lw r30,-4(r30) 4342 000044cc 4be00000 jr r31 4343 000044d0 54000000 nop 4344 000044d4 .endproc _QueuePrev 4345 000044d4 .align 2 4346 000044d4 .proc _QueueFirst 4347 000044d4 .global _QueueFirst 4348 000044d4 _QueueFirst: 4349 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 4350 000044d4 afbefffc sw -4(r29),r30; push fp 4351 000044d8 001df020 add r30,r0,r29; fp = sp 4352 000044dc afbffff8 sw -8(r29),r31; push ret addr 4353 000044e0 2fbd0008 subui r29,r29,#8; alloc local storage 4354 000044e4 8fc10000 lw r1,(r30) 4355 000044e8 8c210000 lw r1,(r1) 4356 000044ec 8fdffff8 lw r31,-8(r30) 4357 000044f0 001ee820 add r29,r0,r30 4358 000044f4 8fdefffc lw r30,-4(r30) 4359 000044f8 4be00000 jr r31 4360 000044fc 54000000 nop 4361 00004500 .endproc _QueueFirst 4362 00004500 .align 2 4363 00004500 .proc _QueueLast 4364 00004500 .global _QueueLast 4365 00004500 _QueueLast: 4366 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 4367 00004500 afbefffc sw -4(r29),r30; push fp 4368 00004504 001df020 add r30,r0,r29; fp = sp 4369 00004508 afbffff8 sw -8(r29),r31; push ret addr 4370 0000450c 2fbd0008 subui r29,r29,#8; alloc local storage 4371 00004510 8fc10000 lw r1,(r30) 4372 00004514 8c210004 lw r1,4(r1) 4373 00004518 8fdffff8 lw r31,-8(r30) 4374 0000451c 001ee820 add r29,r0,r30 4375 00004520 8fdefffc lw r30,-4(r30) 4376 00004524 4be00000 jr r31 4377 00004528 54000000 nop 4378 0000452c .endproc _QueueLast 4379 0000452c .align 2 4380 0000452c .proc _QueueInsertAfter 4381 0000452c .global _QueueInsertAfter 4382 0000452c _QueueInsertAfter: 4383 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 4384 0000452c afbefffc sw -4(r29),r30; push fp 4385 00004530 001df020 add r30,r0,r29; fp = sp 4386 00004534 afbffff8 sw -8(r29),r31; push ret addr 4387 00004538 2fbd0010 subui r29,r29,#16; alloc local storage 4388 0000453c afa20000 sw 0(r29),r2 4389 00004540 afa30004 sw 4(r29),r3 4390 00004544 8fc30000 lw r3,(r30) 4391 00004548 8fc20004 lw r2,4(r30) 4392 0000454c 8fc10008 lw r1,8(r30) 4393 00004550 ac230008 sw 8(r1),r3 4394 00004554 ac220004 sw 4(r1),r2 4395 00004558 8c5f0000 lw r31,(r2) 4396 0000455c ac3f0000 sw (r1),r31 4397 00004560 ac410000 sw (r2),r1 4398 00004564 8c220000 lw r2,(r1) 4399 00004568 ac410004 sw 4(r2),r1 4400 0000456c 8c610008 lw r1,8(r3) 4401 00004570 20210001 addi r1,r1,#1 4402 00004574 ac610008 sw 8(r3),r1 4403 00004578 8fa20000 lw r2,0(r29) 4404 0000457c 8fa30004 lw r3,4(r29) 4405 00004580 8fdffff8 lw r31,-8(r30) 4406 00004584 001ee820 add r29,r0,r30 4407 00004588 8fdefffc lw r30,-4(r30) 4408 0000458c 4be00000 jr r31 4409 00004590 54000000 nop 4410 00004594 .endproc _QueueInsertAfter 4411 00004594 .align 2 4412 00004594 .proc _QueueInsertFirst 4413 00004594 .global _QueueInsertFirst 4414 00004594 _QueueInsertFirst: 4415 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 4416 00004594 afbefffc sw -4(r29),r30; push fp 4417 00004598 001df020 add r30,r0,r29; fp = sp 4418 0000459c afbffff8 sw -8(r29),r31; push ret addr 4419 000045a0 2fbd0010 subui r29,r29,#16; alloc local storage 4420 000045a4 afa20000 sw 0(r29),r2 4421 000045a8 afa30004 sw 4(r29),r3 4422 000045ac 8fc30000 lw r3,(r30) 4423 000045b0 8fc10004 lw r1,4(r30) 4424 000045b4 ac230008 sw 8(r1),r3 4425 000045b8 ac230004 sw 4(r1),r3 4426 000045bc 8c7f0000 lw r31,(r3) 4427 000045c0 ac3f0000 sw (r1),r31 4428 000045c4 ac610000 sw (r3),r1 4429 000045c8 8c220000 lw r2,(r1) 4430 000045cc ac410004 sw 4(r2),r1 4431 000045d0 8c610008 lw r1,8(r3) 4432 000045d4 20210001 addi r1,r1,#1 4433 000045d8 ac610008 sw 8(r3),r1 4434 000045dc 8fa20000 lw r2,0(r29) 4435 000045e0 8fa30004 lw r3,4(r29) 4436 000045e4 8fdffff8 lw r31,-8(r30) 4437 000045e8 001ee820 add r29,r0,r30 4438 000045ec 8fdefffc lw r30,-4(r30) 4439 000045f0 4be00000 jr r31 4440 000045f4 54000000 nop 4441 000045f8 .endproc _QueueInsertFirst 4442 000045f8 .align 2 4443 000045f8 .proc _QueueInsertLast 4444 000045f8 .global _QueueInsertLast 4445 000045f8 _QueueInsertLast: 4446 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 4447 000045f8 afbefffc sw -4(r29),r30; push fp 4448 000045fc 001df020 add r30,r0,r29; fp = sp 4449 00004600 afbffff8 sw -8(r29),r31; push ret addr 4450 00004604 2fbd0010 subui r29,r29,#16; alloc local storage 4451 00004608 afa20000 sw 0(r29),r2 4452 0000460c afa30004 sw 4(r29),r3 4453 00004610 8fc30000 lw r3,(r30) 4454 00004614 8fc10004 lw r1,4(r30) 4455 00004618 8c620004 lw r2,4(r3) 4456 0000461c ac230008 sw 8(r1),r3 4457 00004620 ac220004 sw 4(r1),r2 4458 00004624 8c5f0000 lw r31,(r2) 4459 00004628 ac3f0000 sw (r1),r31 4460 0000462c ac410000 sw (r2),r1 4461 00004630 8c220000 lw r2,(r1) 4462 00004634 ac410004 sw 4(r2),r1 4463 00004638 8c610008 lw r1,8(r3) 4464 0000463c 20210001 addi r1,r1,#1 4465 00004640 ac610008 sw 8(r3),r1 4466 00004644 8fa20000 lw r2,0(r29) 4467 00004648 8fa30004 lw r3,4(r29) 4468 0000464c 8fdffff8 lw r31,-8(r30) 4469 00004650 001ee820 add r29,r0,r30 4470 00004654 8fdefffc lw r30,-4(r30) 4471 00004658 4be00000 jr r31 4472 0000465c 54000000 nop 4473 00004660 .endproc _QueueInsertLast 4474 00004660 .align 2 4475 00004660 .proc _QueueRemove 4476 00004660 .global _QueueRemove 4477 00004660 _QueueRemove: 4478 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 4479 00004660 afbefffc sw -4(r29),r30; push fp 4480 00004664 001df020 add r30,r0,r29; fp = sp 4481 00004668 afbffff8 sw -8(r29),r31; push ret addr 4482 0000466c 2fbd0010 subui r29,r29,#16; alloc local storage 4483 00004670 afa20000 sw 0(r29),r2 4484 00004674 afa30004 sw 4(r29),r3 4485 00004678 8fdf0000 lw r31,(r30) 4486 0000467c 8fe10008 lw r1,8(r31) 4487 00004680 8c210008 lw r1,8(r1) 4488 00004684 6c210000 sgti r1,r1,#0 4489 00004688 1020002c beqz r1,L44_LF5 4490 0000468c 54000000 nop; not filled. 4491 00004690 8fe10004 lw r1,4(r31) 4492 00004694 8fe30000 lw r3,(r31) 4493 00004698 ac230000 sw (r1),r3 4494 0000469c 8fe10000 lw r1,(r31) 4495 000046a0 8fe30004 lw r3,4(r31) 4496 000046a4 ac230004 sw 4(r1),r3 4497 000046a8 8fe20008 lw r2,8(r31) 4498 000046ac 8c410008 lw r1,8(r2) 4499 000046b0 2021ffff addi r1,r1,#-1 4500 000046b4 ac410008 sw 8(r2),r1 4501 000046b8 L44_LF5: 4502 000046b8 20030000 addi r3,r0,#0 4503 000046bc afe30000 sw (r31),r3 4504 000046c0 8fa20000 lw r2,0(r29) 4505 000046c4 8fa30004 lw r3,4(r29) 4506 000046c8 8fdffff8 lw r31,-8(r30) 4507 000046cc 001ee820 add r29,r0,r30 4508 000046d0 8fdefffc lw r30,-4(r30) 4509 000046d4 4be00000 jr r31 4510 000046d8 54000000 nop 4511 000046dc .endproc _QueueRemove 4512 000046dc .align 2 4513 000046dc .proc _QueueLength 4514 000046dc .global _QueueLength 4515 000046dc _QueueLength: 4516 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 4517 000046dc afbefffc sw -4(r29),r30; push fp 4518 000046e0 001df020 add r30,r0,r29; fp = sp 4519 000046e4 afbffff8 sw -8(r29),r31; push ret addr 4520 000046e8 2fbd0008 subui r29,r29,#8; alloc local storage 4521 000046ec 8fc10000 lw r1,(r30) 4522 000046f0 8c210008 lw r1,8(r1) 4523 000046f4 8fdffff8 lw r31,-8(r30) 4524 000046f8 001ee820 add r29,r0,r30 4525 000046fc 8fdefffc lw r30,-4(r30) 4526 00004700 4be00000 jr r31 4527 00004704 54000000 nop 4528 00004708 .endproc _QueueLength 4529 00004708 .align 2 4530 00004708 .proc _QueueEmpty 4531 00004708 .global _QueueEmpty 4532 00004708 _QueueEmpty: 4533 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 4534 00004708 afbefffc sw -4(r29),r30; push fp 4535 0000470c 001df020 add r30,r0,r29; fp = sp 4536 00004710 afbffff8 sw -8(r29),r31; push ret addr 4537 00004714 2fbd0008 subui r29,r29,#8; alloc local storage 4538 00004718 8fc10000 lw r1,(r30) 4539 0000471c 8c210008 lw r1,8(r1) 4540 00004720 60210000 seqi r1,r1,#0 4541 00004724 8fdffff8 lw r31,-8(r30) 4542 00004728 001ee820 add r29,r0,r30 4543 0000472c 8fdefffc lw r30,-4(r30) 4544 00004730 4be00000 jr r31 4545 00004734 54000000 nop 4546 00004738 .endproc _QueueEmpty 4547 00004738 .data 4548 0000f438 .align 2 4549 0000f438 _processQuantum_LF5: 4550 0000f438 00002710 .word 10000 4551 0000f43c .align 2 4552 0000f43c LC0_LF5: 4553 0000f43c 456e7465 .ascii "Entering ProcessModuleInit\n\000" 4553 0000f440 72696e67 4553 0000f444 2050726f 4553 0000f448 63657373 4553 0000f44c 4d6f6475 4553 0000f450 6c65496e 4553 0000f454 69740a00 4554 0000f458 .align 2 4555 0000f458 LC1_LF5: 4556 0000f458 496e6974 .ascii "Initializing PCB %d @ 0x%x.\n\000" 4556 0000f45c 69616c69 4556 0000f460 7a696e67 4556 0000f464 20504342 4556 0000f468 20256420 4556 0000f46c 40203078 4556 0000f470 25782e0a 4556 0000f474 00 4557 0000f475 .align 2 4558 0000f478 LC2_LF5: 4559 0000f478 4c656176 .ascii "Leaving ProcessModuleInit\n\000" 4559 0000f47c 696e6720 4559 0000f480 50726f63 4559 0000f484 6573734d 4559 0000f488 6f64756c 4559 0000f48c 65496e69 4559 0000f490 740a00 4560 0000f493 .text 4561 00004738 .align 2 4562 00004738 .proc _ProcessModuleInit 4563 00004738 .global _ProcessModuleInit 4564 00004738 _ProcessModuleInit: 4565 ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. 4566 00004738 afbefffc sw -4(r29),r30; push fp 4567 0000473c 001df020 add r30,r0,r29; fp = sp 4568 00004740 afbffff8 sw -8(r29),r31; push ret addr 4569 00004744 2fbd0028 subui r29,r29,#40; alloc local storage 4570 00004748 afa20000 sw 0(r29),r2 4571 0000474c afa30004 sw 4(r29),r3 4572 00004750 afa40008 sw 8(r29),r4 4573 00004754 afa5000c sw 12(r29),r5 4574 00004758 afa60010 sw 16(r29),r6 4575 0000475c afa70014 sw 20(r29),r7 4576 00004760 afa80018 sw 24(r29),r8 4577 00004764 23bdfff8 addi r29,r29,#-8 4578 00004768 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4579 0000476c 2442fd60 addui r2,r2,(_debugstr)&0xffff 4580 00004770 afa20000 sw (r29),r2 4581 00004774 20080070 addi r8,r0,#112 4582 00004778 afa80004 sw 4(r29),r8 4583 0000477c 0ffff6b4 jal _dindex 4584 00004780 54000000 nop; not filled. 4585 00004784 23bd0008 addi r29,r29,#8 4586 00004788 64210000 snei r1,r1,#0 4587 0000478c 1420002c bnez r1,L53_LF5 4588 00004790 54000000 nop; not filled. 4589 00004794 23bdfff8 addi r29,r29,#-8 4590 00004798 afa20000 sw (r29),r2 4591 0000479c 2008002b addi r8,r0,#43 4592 000047a0 afa80004 sw 4(r29),r8 4593 000047a4 0ffff68c jal _dindex 4594 000047a8 54000000 nop; not filled. 4595 000047ac 23bd0008 addi r29,r29,#8 4596 000047b0 64210000 snei r1,r1,#0 4597 000047b4 10200020 beqz r1,L52_LF5 4598 000047b8 54000000 nop; not filled. 4599 000047bc L53_LF5: 4600 000047bc 23bdfff8 addi r29,r29,#-8 4601 000047c0 3c080000 lhi r8,((LC0_LF5)>>16)&0xffff 4602 000047c4 2508f43c addui r8,r8,(LC0_LF5)&0xffff 4603 000047c8 afa80000 sw (r29),r8 4604 000047cc 0c00681c jal _printf 4605 000047d0 54000000 nop; not filled. 4606 000047d4 23bd0008 addi r29,r29,#8 4607 000047d8 L52_LF5: 4608 000047d8 23bdfff8 addi r29,r29,#-8 4609 000047dc 3c020000 lhi r2,((_freepcbs_LF5)>>16)&0xffff 4610 000047e0 2442fe2c addui r2,r2,(_freepcbs_LF5)&0xffff 4611 000047e4 afa20000 sw (r29),r2 4612 000047e8 0c0038c4 jal _QueueInit 4613 000047ec 54000000 nop; not filled. 4614 000047f0 3c080000 lhi r8,((_runQueue_LF5)>>16)&0xffff 4615 000047f4 2508fe38 addui r8,r8,(_runQueue_LF5)&0xffff 4616 000047f8 afa80000 sw (r29),r8 4617 000047fc 0c0038b0 jal _QueueInit 4618 00004800 54000000 nop; not filled. 4619 00004804 3c080000 lhi r8,((_waitQueue_LF5)>>16)&0xffff 4620 00004808 2508fe44 addui r8,r8,(_waitQueue_LF5)&0xffff 4621 0000480c afa80000 sw (r29),r8 4622 00004810 0c00389c jal _QueueInit 4623 00004814 54000000 nop; not filled. 4624 00004818 3c080000 lhi r8,((_zombieQueue_LF5)>>16)&0xffff 4625 0000481c 2508fe50 addui r8,r8,(_zombieQueue_LF5)&0xffff 4626 00004820 afa80000 sw (r29),r8 4627 00004824 0c003888 jal _QueueInit 4628 00004828 54000000 nop; not filled. 4629 0000482c 20040000 addi r4,r0,#0 4630 00004830 23bd0008 addi r29,r29,#8 4631 00004834 3c070000 lhi r7,((_debugstr)>>16)&0xffff 4632 00004838 24e7fd60 addui r7,r7,(_debugstr)&0xffff 4633 0000483c 3c010000 lhi r1,((_pcbs_LF5)>>16)&0xffff 4634 00004840 2421fe5c addui r1,r1,(_pcbs_LF5)&0xffff 4635 00004844 00022820 add r5,r0,r2 4636 00004848 20220068 addi r2,r1,#104 4637 0000484c 00011820 add r3,r0,r1 4638 00004850 00033020 add r6,r0,r3 4639 00004854 L57_LF5: 4640 00004854 23bdfff8 addi r29,r29,#-8 4641 00004858 afa70000 sw (r29),r7 4642 0000485c 20080070 addi r8,r0,#112 4643 00004860 afa80004 sw 4(r29),r8 4644 00004864 0ffff5cc jal _dindex 4645 00004868 54000000 nop; not filled. 4646 0000486c 23bd0008 addi r29,r29,#8 4647 00004870 64210000 snei r1,r1,#0 4648 00004874 1420002c bnez r1,L59_LF5 4649 00004878 54000000 nop; not filled. 4650 0000487c 23bdfff8 addi r29,r29,#-8 4651 00004880 afa70000 sw (r29),r7 4652 00004884 2008002b addi r8,r0,#43 4653 00004888 afa80004 sw 4(r29),r8 4654 0000488c 0ffff5a4 jal _dindex 4655 00004890 54000000 nop; not filled. 4656 00004894 23bd0008 addi r29,r29,#8 4657 00004898 64210000 snei r1,r1,#0 4658 0000489c 10200028 beqz r1,L58_LF5 4659 000048a0 54000000 nop; not filled. 4660 000048a4 L59_LF5: 4661 000048a4 23bdfff0 addi r29,r29,#-16 4662 000048a8 3c080000 lhi r8,((LC1_LF5)>>16)&0xffff 4663 000048ac 2508f458 addui r8,r8,(LC1_LF5)&0xffff 4664 000048b0 afa80000 sw (r29),r8 4665 000048b4 afa40004 sw 4(r29),r4 4666 000048b8 afa60008 sw 8(r29),r6 4667 000048bc 0c00672c jal _printf 4668 000048c0 54000000 nop; not filled. 4669 000048c4 23bd0010 addi r29,r29,#16 4670 000048c8 L58_LF5: 4671 000048c8 20080001 addi r8,r0,#1 4672 000048cc ac68000c sw 12(r3),r8 4673 000048d0 20080000 addi r8,r0,#0 4674 000048d4 ac480000 sw (r2),r8 4675 000048d8 ac43000c sw 12(r2),r3 4676 000048dc ac450008 sw 8(r2),r5 4677 000048e0 ac450004 sw 4(r2),r5 4678 000048e4 8ca80000 lw r8,(r5) 4679 000048e8 ac480000 sw (r2),r8 4680 000048ec aca20000 sw (r5),r2 4681 000048f0 8c410000 lw r1,(r2) 4682 000048f4 ac220004 sw 4(r1),r2 4683 000048f8 8ca10008 lw r1,8(r5) 4684 000048fc 20210001 addi r1,r1,#1 4685 00004900 aca10008 sw 8(r5),r1 4686 00004904 20420078 addi r2,r2,#120 4687 00004908 20630078 addi r3,r3,#120 4688 0000490c 20c60078 addi r6,r6,#120 4689 00004910 20840001 addi r4,r4,#1 4690 00004914 7081001f slei r1,r4,#31 4691 00004918 1420ff38 bnez r1,L57_LF5 4692 0000491c 54000000 nop; not filled. 4693 00004920 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4694 00004924 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4695 00004928 20080000 addi r8,r0,#0 4696 0000492c ac280000 sw (r1),r8 4697 00004930 23bdfff8 addi r29,r29,#-8 4698 00004934 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4699 00004938 2442fd60 addui r2,r2,(_debugstr)&0xffff 4700 0000493c afa20000 sw (r29),r2 4701 00004940 20080070 addi r8,r0,#112 4702 00004944 afa80004 sw 4(r29),r8 4703 00004948 0ffff4e8 jal _dindex 4704 0000494c 54000000 nop; not filled. 4705 00004950 23bd0008 addi r29,r29,#8 4706 00004954 64210000 snei r1,r1,#0 4707 00004958 1420002c bnez r1,L65_LF5 4708 0000495c 54000000 nop; not filled. 4709 00004960 23bdfff8 addi r29,r29,#-8 4710 00004964 afa20000 sw (r29),r2 4711 00004968 2008002b addi r8,r0,#43 4712 0000496c afa80004 sw 4(r29),r8 4713 00004970 0ffff4c0 jal _dindex 4714 00004974 54000000 nop; not filled. 4715 00004978 23bd0008 addi r29,r29,#8 4716 0000497c 64210000 snei r1,r1,#0 4717 00004980 10200020 beqz r1,L64_LF5 4718 00004984 54000000 nop; not filled. 4719 00004988 L65_LF5: 4720 00004988 23bdfff8 addi r29,r29,#-8 4721 0000498c 3c080000 lhi r8,((LC2_LF5)>>16)&0xffff 4722 00004990 2508f478 addui r8,r8,(LC2_LF5)&0xffff 4723 00004994 afa80000 sw (r29),r8 4724 00004998 0c006650 jal _printf 4725 0000499c 54000000 nop; not filled. 4726 000049a0 23bd0008 addi r29,r29,#8 4727 000049a4 L64_LF5: 4728 000049a4 8fa20000 lw r2,0(r29) 4729 000049a8 8fa30004 lw r3,4(r29) 4730 000049ac 8fa40008 lw r4,8(r29) 4731 000049b0 8fa5000c lw r5,12(r29) 4732 000049b4 8fa60010 lw r6,16(r29) 4733 000049b8 8fa70014 lw r7,20(r29) 4734 000049bc 8fa80018 lw r8,24(r29) 4735 000049c0 8fdffff8 lw r31,-8(r30) 4736 000049c4 001ee820 add r29,r0,r30 4737 000049c8 8fdefffc lw r30,-4(r30) 4738 000049cc 4be00000 jr r31 4739 000049d0 54000000 nop 4740 000049d4 .endproc _ProcessModuleInit 4741 000049d4 .align 2 4742 000049d4 .proc _ProcessSetStatus 4743 000049d4 .global _ProcessSetStatus 4744 000049d4 _ProcessSetStatus: 4745 ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. 4746 000049d4 afbefffc sw -4(r29),r30; push fp 4747 000049d8 001df020 add r30,r0,r29; fp = sp 4748 000049dc afbffff8 sw -8(r29),r31; push ret addr 4749 000049e0 2fbd0010 subui r29,r29,#16; alloc local storage 4750 000049e4 afa20000 sw 0(r29),r2 4751 000049e8 afa30004 sw 4(r29),r3 4752 000049ec 8fc30000 lw r3,(r30) 4753 000049f0 8fc20004 lw r2,4(r30) 4754 000049f4 8c61000c lw r1,12(r3) 4755 000049f8 201fffc0 addi r31,r0,#-64 4756 000049fc 003f0824 and r1,r1,r31 4757 00004a00 00220825 or r1,r1,r2 4758 00004a04 ac61000c sw 12(r3),r1 4759 00004a08 8fa20000 lw r2,0(r29) 4760 00004a0c 8fa30004 lw r3,4(r29) 4761 00004a10 8fdffff8 lw r31,-8(r30) 4762 00004a14 001ee820 add r29,r0,r30 4763 00004a18 8fdefffc lw r30,-4(r30) 4764 00004a1c 4be00000 jr r31 4765 00004a20 54000000 nop 4766 00004a24 .endproc _ProcessSetStatus 4767 00004a24 .align 2 4768 00004a24 .proc _ProcessFreeResources 4769 00004a24 .global _ProcessFreeResources 4770 00004a24 _ProcessFreeResources: 4771 ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. 4772 00004a24 afbefffc sw -4(r29),r30; push fp 4773 00004a28 001df020 add r30,r0,r29; fp = sp 4774 00004a2c afbffff8 sw -8(r29),r31; push ret addr 4775 00004a30 2fbd0018 subui r29,r29,#24; alloc local storage 4776 00004a34 afa20000 sw 0(r29),r2 4777 00004a38 afa30004 sw 4(r29),r3 4778 00004a3c afa40008 sw 8(r29),r4 4779 00004a40 afa5000c sw 12(r29),r5 4780 00004a44 8fc40000 lw r4,(r30) 4781 00004a48 3c030000 lhi r3,((_freepcbs_LF5)>>16)&0xffff 4782 00004a4c 2463fe2c addui r3,r3,(_freepcbs_LF5)&0xffff 4783 00004a50 20820068 addi r2,r4,#104 4784 00004a54 8c610004 lw r1,4(r3) 4785 00004a58 ac830070 sw 112(r4),r3 4786 00004a5c ac81006c sw 108(r4),r1 4787 00004a60 8c250000 lw r5,(r1) 4788 00004a64 ac450000 sw (r2),r5 4789 00004a68 ac220000 sw (r1),r2 4790 00004a6c 8c410000 lw r1,(r2) 4791 00004a70 ac220004 sw 4(r1),r2 4792 00004a74 8c610008 lw r1,8(r3) 4793 00004a78 20210001 addi r1,r1,#1 4794 00004a7c ac610008 sw 8(r3),r1 4795 00004a80 20020000 addi r2,r0,#0 4796 00004a84 8c810064 lw r1,100(r4) 4797 00004a88 0041082a slt r1,r2,r1 4798 00004a8c 10200038 beqz r1,L83_LF5 4799 00004a90 54000000 nop; not filled. 4800 00004a94 00041820 add r3,r0,r4 4801 00004a98 L85_LF5: 4802 00004a98 23bdfff8 addi r29,r29,#-8 4803 00004a9c 8c650060 lw r5,96(r3) 4804 00004aa0 afa50000 sw (r29),r5 4805 00004aa4 0fffec34 jal _MemoryFreePte 4806 00004aa8 54000000 nop; not filled. 4807 00004aac 23bd0008 addi r29,r29,#8 4808 00004ab0 20630004 addi r3,r3,#4 4809 00004ab4 20420001 addi r2,r2,#1 4810 00004ab8 8c810064 lw r1,100(r4) 4811 00004abc 0041082a slt r1,r2,r1 4812 00004ac0 1420ffd4 bnez r1,L85_LF5 4813 00004ac4 54000000 nop; not filled. 4814 00004ac8 L83_LF5: 4815 00004ac8 23bdfff8 addi r29,r29,#-8 4816 00004acc 94810008 lhu r1,8(r4) 4817 00004ad0 afa10000 sw (r29),r1 4818 00004ad4 0fffe738 jal _MemoryFreePage 4819 00004ad8 54000000 nop; not filled. 4820 00004adc 23bd0008 addi r29,r29,#8 4821 00004ae0 8c81000c lw r1,12(r4) 4822 00004ae4 2005ffc0 addi r5,r0,#-64 4823 00004ae8 00250824 and r1,r1,r5 4824 00004aec 34210001 ori r1,r1,#1 4825 00004af0 ac81000c sw 12(r4),r1 4826 00004af4 8fa20000 lw r2,0(r29) 4827 00004af8 8fa30004 lw r3,4(r29) 4828 00004afc 8fa40008 lw r4,8(r29) 4829 00004b00 8fa5000c lw r5,12(r29) 4830 00004b04 8fdffff8 lw r31,-8(r30) 4831 00004b08 001ee820 add r29,r0,r30 4832 00004b0c 8fdefffc lw r30,-4(r30) 4833 00004b10 4be00000 jr r31 4834 00004b14 54000000 nop 4835 00004b18 .endproc _ProcessFreeResources 4836 00004b18 .align 2 4837 00004b18 .proc _ProcessSetResult 4838 00004b18 .global _ProcessSetResult 4839 00004b18 _ProcessSetResult: 4840 ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. 4841 00004b18 afbefffc sw -4(r29),r30; push fp 4842 00004b1c 001df020 add r30,r0,r29; fp = sp 4843 00004b20 afbffff8 sw -8(r29),r31; push ret addr 4844 00004b24 2fbd0008 subui r29,r29,#8; alloc local storage 4845 00004b28 8fc10000 lw r1,(r30) 4846 00004b2c 8c210000 lw r1,(r1) 4847 00004b30 8fdf0004 lw r31,4(r30) 4848 00004b34 ac3f002c sw 44(r1),r31 4849 00004b38 8fdffff8 lw r31,-8(r30) 4850 00004b3c 001ee820 add r29,r0,r30 4851 00004b40 8fdefffc lw r30,-4(r30) 4852 00004b44 4be00000 jr r31 4853 00004b48 54000000 nop 4854 00004b4c .endproc _ProcessSetResult 4855 00004b4c .data 4856 0000f493 .align 2 4857 0000f494 LC3_LF5: 4858 0000f494 4e6f7720 .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" 4858 0000f498 656e7465 4858 0000f49c 72696e67 4858 0000f4a0 2050726f 4858 0000f4a4 63657373 4858 0000f4a8 53636865 4858 0000f4ac 64756c65 4858 0000f4b0 20286375 4858 0000f4b4 723d3078 4858 0000f4b8 25782c20 4858 0000f4bc 25642072 4858 0000f4c0 65616479 4858 0000f4c4 290a00 4859 0000f4c7 .align 2 4860 0000f4c8 LC4_LF5: 4861 0000f4c8 4e6f2072 .ascii "No runnable processes - exiting!\n\000" 4861 0000f4cc 756e6e61 4861 0000f4d0 626c6520 4861 0000f4d4 70726f63 4861 0000f4d8 65737365 4861 0000f4dc 73202d20 4861 0000f4e0 65786974 4861 0000f4e4 696e6721 4861 0000f4e8 0a00 4862 0000f4ea .align 2 4863 0000f4ec LC5_LF5: 4864 0000f4ec 41626f75 .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" 4864 0000f4f0 7420746f 4864 0000f4f4 20737769 4864 0000f4f8 74636820 4864 0000f4fc 746f2050 4864 0000f500 43422030 4864 0000f504 7825782c 4864 0000f508 666c6167 4864 0000f50c 733d3078 4864 0000f510 25782040 4864 0000f514 20307825 4864 0000f518 780a00 4865 0000f51b .align 2 4866 0000f51c LC6_LF5: 4867 0000f51c 46726565 .ascii "Freeing zombie PCB 0x%x.\n\000" 4867 0000f520 696e6720 4867 0000f524 7a6f6d62 4867 0000f528 69652050 4867 0000f52c 43422030 4867 0000f530 7825782e 4867 0000f534 0a00 4868 0000f536 .align 2 4869 0000f538 LC7_LF5: 4870 0000f538 4c656176 .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" 4870 0000f53c 696e6720 4870 0000f540 50726f63 4870 0000f544 65737353 4870 0000f548 63686564 4870 0000f54c 756c6520 4870 0000f550 28637572 4870 0000f554 3d307825 4870 0000f558 78290a00 4871 0000f55c .text 4872 00004b4c .align 2 4873 00004b4c .proc _ProcessSchedule 4874 00004b4c .global _ProcessSchedule 4875 00004b4c _ProcessSchedule: 4876 ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. 4877 00004b4c afbefffc sw -4(r29),r30; push fp 4878 00004b50 001df020 add r30,r0,r29; fp = sp 4879 00004b54 afbffff8 sw -8(r29),r31; push ret addr 4880 00004b58 2fbd0028 subui r29,r29,#40; alloc local storage 4881 00004b5c afa20000 sw 0(r29),r2 4882 00004b60 afa30004 sw 4(r29),r3 4883 00004b64 afa40008 sw 8(r29),r4 4884 00004b68 afa5000c sw 12(r29),r5 4885 00004b6c afa60010 sw 16(r29),r6 4886 00004b70 afa70014 sw 20(r29),r7 4887 00004b74 afa80018 sw 24(r29),r8 4888 00004b78 23bdfff8 addi r29,r29,#-8 4889 00004b7c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4890 00004b80 2442fd60 addui r2,r2,(_debugstr)&0xffff 4891 00004b84 afa20000 sw (r29),r2 4892 00004b88 20080070 addi r8,r0,#112 4893 00004b8c afa80004 sw 4(r29),r8 4894 00004b90 0ffff2a0 jal _dindex 4895 00004b94 54000000 nop; not filled. 4896 00004b98 23bd0008 addi r29,r29,#8 4897 00004b9c 64210000 snei r1,r1,#0 4898 00004ba0 1420002c bnez r1,L92_LF5 4899 00004ba4 54000000 nop; not filled. 4900 00004ba8 23bdfff8 addi r29,r29,#-8 4901 00004bac afa20000 sw (r29),r2 4902 00004bb0 2008002b addi r8,r0,#43 4903 00004bb4 afa80004 sw 4(r29),r8 4904 00004bb8 0ffff278 jal _dindex 4905 00004bbc 54000000 nop; not filled. 4906 00004bc0 23bd0008 addi r29,r29,#8 4907 00004bc4 64210000 snei r1,r1,#0 4908 00004bc8 10200040 beqz r1,L91_LF5 4909 00004bcc 54000000 nop; not filled. 4910 00004bd0 L92_LF5: 4911 00004bd0 3c010000 lhi r1,((_runQueue_LF5)>>16)&0xffff 4912 00004bd4 2421fe38 addui r1,r1,(_runQueue_LF5)&0xffff 4913 00004bd8 8c220008 lw r2,8(r1) 4914 00004bdc 23bdfff0 addi r29,r29,#-16 4915 00004be0 3c080000 lhi r8,((LC3_LF5)>>16)&0xffff 4916 00004be4 2508f494 addui r8,r8,(LC3_LF5)&0xffff 4917 00004be8 afa80000 sw (r29),r8 4918 00004bec 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4919 00004bf0 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4920 00004bf4 8c210000 lw r1,(r1) 4921 00004bf8 afa10004 sw 4(r29),r1 4922 00004bfc afa20008 sw 8(r29),r2 4923 00004c00 0c0063e8 jal _printf 4924 00004c04 54000000 nop; not filled. 4925 00004c08 23bd0010 addi r29,r29,#16 4926 00004c0c L91_LF5: 4927 00004c0c 3c050000 lhi r5,((_runQueue_LF5)>>16)&0xffff 4928 00004c10 24a5fe38 addui r5,r5,(_runQueue_LF5)&0xffff 4929 00004c14 8ca10008 lw r1,8(r5) 4930 00004c18 60210000 seqi r1,r1,#0 4931 00004c1c 10200028 beqz r1,L94_LF5 4932 00004c20 54000000 nop; not filled. 4933 00004c24 23bdfff8 addi r29,r29,#-8 4934 00004c28 3c080000 lhi r8,((LC4_LF5)>>16)&0xffff 4935 00004c2c 2508f4c8 addui r8,r8,(LC4_LF5)&0xffff 4936 00004c30 afa80000 sw (r29),r8 4937 00004c34 0c0063b4 jal _printf 4938 00004c38 54000000 nop; not filled. 4939 00004c3c 0c006394 jal _exitsim 4940 00004c40 54000000 nop; not filled. 4941 00004c44 23bd0008 addi r29,r29,#8 4942 00004c48 L94_LF5: 4943 00004c48 8ca10000 lw r1,(r5) 4944 00004c4c 8c24000c lw r4,12(r1) 4945 00004c50 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4946 00004c54 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4947 00004c58 8c210000 lw r1,(r1) 4948 00004c5c 00810828 seq r1,r4,r1 4949 00004c60 10200078 beqz r1,L98_LF5 4950 00004c64 54000000 nop; not filled. 4951 00004c68 20830068 addi r3,r4,#104 4952 00004c6c 8c810070 lw r1,112(r4) 4953 00004c70 8c210008 lw r1,8(r1) 4954 00004c74 6c210000 sgti r1,r1,#0 4955 00004c78 1020002c beqz r1,L100_LF5 4956 00004c7c 54000000 nop; not filled. 4957 00004c80 8c81006c lw r1,108(r4) 4958 00004c84 8c680000 lw r8,(r3) 4959 00004c88 ac280000 sw (r1),r8 4960 00004c8c 8c610000 lw r1,(r3) 4961 00004c90 8c88006c lw r8,108(r4) 4962 00004c94 ac280004 sw 4(r1),r8 4963 00004c98 8c820070 lw r2,112(r4) 4964 00004c9c 8c410008 lw r1,8(r2) 4965 00004ca0 2021ffff addi r1,r1,#-1 4966 00004ca4 ac410008 sw 8(r2),r1 4967 00004ca8 L100_LF5: 4968 00004ca8 20080000 addi r8,r0,#0 4969 00004cac ac680000 sw (r3),r8 4970 00004cb0 8ca10004 lw r1,4(r5) 4971 00004cb4 ac850070 sw 112(r4),r5 4972 00004cb8 ac81006c sw 108(r4),r1 4973 00004cbc 8c280000 lw r8,(r1) 4974 00004cc0 ac680000 sw (r3),r8 4975 00004cc4 ac230000 sw (r1),r3 4976 00004cc8 8c610000 lw r1,(r3) 4977 00004ccc ac230004 sw 4(r1),r3 4978 00004cd0 8ca10008 lw r1,8(r5) 4979 00004cd4 20210001 addi r1,r1,#1 4980 00004cd8 aca10008 sw 8(r5),r1 4981 00004cdc L98_LF5: 4982 00004cdc 3c010000 lhi r1,((_runQueue_LF5)>>16)&0xffff 4983 00004ce0 2421fe38 addui r1,r1,(_runQueue_LF5)&0xffff 4984 00004ce4 8c210000 lw r1,(r1) 4985 00004ce8 8c24000c lw r4,12(r1) 4986 00004cec 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 4987 00004cf0 2421fe28 addui r1,r1,(_currentPCB)&0xffff 4988 00004cf4 ac240000 sw (r1),r4 4989 00004cf8 23bdfff8 addi r29,r29,#-8 4990 00004cfc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 4991 00004d00 2442fd60 addui r2,r2,(_debugstr)&0xffff 4992 00004d04 afa20000 sw (r29),r2 4993 00004d08 20080070 addi r8,r0,#112 4994 00004d0c afa80004 sw 4(r29),r8 4995 00004d10 0ffff120 jal _dindex 4996 00004d14 54000000 nop; not filled. 4997 00004d18 23bd0008 addi r29,r29,#8 4998 00004d1c 64210000 snei r1,r1,#0 4999 00004d20 1420002c bnez r1,L106_LF5 5000 00004d24 54000000 nop; not filled. 5001 00004d28 23bdfff8 addi r29,r29,#-8 5002 00004d2c afa20000 sw (r29),r2 5003 00004d30 2008002b addi r8,r0,#43 5004 00004d34 afa80004 sw 4(r29),r8 5005 00004d38 0ffff0f8 jal _dindex 5006 00004d3c 54000000 nop; not filled. 5007 00004d40 23bd0008 addi r29,r29,#8 5008 00004d44 64210000 snei r1,r1,#0 5009 00004d48 10200038 beqz r1,L105_LF5 5010 00004d4c 54000000 nop; not filled. 5011 00004d50 L106_LF5: 5012 00004d50 23bdfff0 addi r29,r29,#-16 5013 00004d54 3c080000 lhi r8,((LC5_LF5)>>16)&0xffff 5014 00004d58 2508f4ec addui r8,r8,(LC5_LF5)&0xffff 5015 00004d5c afa80000 sw (r29),r8 5016 00004d60 afa40004 sw 4(r29),r4 5017 00004d64 8c88000c lw r8,12(r4) 5018 00004d68 afa80008 sw 8(r29),r8 5019 00004d6c 8c810004 lw r1,4(r4) 5020 00004d70 8c210128 lw r1,296(r1) 5021 00004d74 afa1000c sw 12(r29),r1 5022 00004d78 0c006270 jal _printf 5023 00004d7c 54000000 nop; not filled. 5024 00004d80 23bd0010 addi r29,r29,#16 5025 00004d84 L105_LF5: 5026 00004d84 3c070000 lhi r7,((_zombieQueue_LF5)>>16)&0xffff 5027 00004d88 24e7fe50 addui r7,r7,(_zombieQueue_LF5)&0xffff 5028 00004d8c 3c060000 lhi r6,((_debugstr)>>16)&0xffff 5029 00004d90 24c6fd60 addui r6,r6,(_debugstr)&0xffff 5030 00004d94 3c050000 lhi r5,((_freepcbs_LF5)>>16)&0xffff 5031 00004d98 24a5fe2c addui r5,r5,(_freepcbs_LF5)&0xffff 5032 00004d9c L107_LF5: 5033 00004d9c 8ce10008 lw r1,8(r7) 5034 00004da0 60210000 seqi r1,r1,#0 5035 00004da4 1420016c bnez r1,L108_LF5 5036 00004da8 54000000 nop; not filled. 5037 00004dac 8ce10000 lw r1,(r7) 5038 00004db0 8c24000c lw r4,12(r1) 5039 00004db4 23bdfff8 addi r29,r29,#-8 5040 00004db8 afa60000 sw (r29),r6 5041 00004dbc 20080070 addi r8,r0,#112 5042 00004dc0 afa80004 sw 4(r29),r8 5043 00004dc4 0ffff06c jal _dindex 5044 00004dc8 54000000 nop; not filled. 5045 00004dcc 23bd0008 addi r29,r29,#8 5046 00004dd0 64210000 snei r1,r1,#0 5047 00004dd4 1420002c bnez r1,L114_LF5 5048 00004dd8 54000000 nop; not filled. 5049 00004ddc 23bdfff8 addi r29,r29,#-8 5050 00004de0 afa60000 sw (r29),r6 5051 00004de4 2008002b addi r8,r0,#43 5052 00004de8 afa80004 sw 4(r29),r8 5053 00004dec 0ffff044 jal _dindex 5054 00004df0 54000000 nop; not filled. 5055 00004df4 23bd0008 addi r29,r29,#8 5056 00004df8 64210000 snei r1,r1,#0 5057 00004dfc 10200024 beqz r1,L113_LF5 5058 00004e00 54000000 nop; not filled. 5059 00004e04 L114_LF5: 5060 00004e04 23bdfff8 addi r29,r29,#-8 5061 00004e08 3c080000 lhi r8,((LC6_LF5)>>16)&0xffff 5062 00004e0c 2508f51c addui r8,r8,(LC6_LF5)&0xffff 5063 00004e10 afa80000 sw (r29),r8 5064 00004e14 afa40004 sw 4(r29),r4 5065 00004e18 0c0061d0 jal _printf 5066 00004e1c 54000000 nop; not filled. 5067 00004e20 23bd0008 addi r29,r29,#8 5068 00004e24 L113_LF5: 5069 00004e24 209f0068 addi r31,r4,#104 5070 00004e28 8c810070 lw r1,112(r4) 5071 00004e2c 8c210008 lw r1,8(r1) 5072 00004e30 6c210000 sgti r1,r1,#0 5073 00004e34 1020002c beqz r1,L116_LF5 5074 00004e38 54000000 nop; not filled. 5075 00004e3c 8c81006c lw r1,108(r4) 5076 00004e40 8fe80000 lw r8,(r31) 5077 00004e44 ac280000 sw (r1),r8 5078 00004e48 8fe10000 lw r1,(r31) 5079 00004e4c 8c88006c lw r8,108(r4) 5080 00004e50 ac280004 sw 4(r1),r8 5081 00004e54 8c820070 lw r2,112(r4) 5082 00004e58 8c410008 lw r1,8(r2) 5083 00004e5c 2021ffff addi r1,r1,#-1 5084 00004e60 ac410008 sw 8(r2),r1 5085 00004e64 L116_LF5: 5086 00004e64 20080000 addi r8,r0,#0 5087 00004e68 afe80000 sw (r31),r8 5088 00004e6c 8ca10004 lw r1,4(r5) 5089 00004e70 ac850070 sw 112(r4),r5 5090 00004e74 ac81006c sw 108(r4),r1 5091 00004e78 8c280000 lw r8,(r1) 5092 00004e7c afe80000 sw (r31),r8 5093 00004e80 ac3f0000 sw (r1),r31 5094 00004e84 8fe10000 lw r1,(r31) 5095 00004e88 ac3f0004 sw 4(r1),r31 5096 00004e8c 8ca10008 lw r1,8(r5) 5097 00004e90 20210001 addi r1,r1,#1 5098 00004e94 aca10008 sw 8(r5),r1 5099 00004e98 20030000 addi r3,r0,#0 5100 00004e9c 8c810064 lw r1,100(r4) 5101 00004ea0 0061082a slt r1,r3,r1 5102 00004ea4 10200038 beqz r1,L122_LF5 5103 00004ea8 54000000 nop; not filled. 5104 00004eac 00041020 add r2,r0,r4 5105 00004eb0 L124_LF5: 5106 00004eb0 23bdfff8 addi r29,r29,#-8 5107 00004eb4 8c480060 lw r8,96(r2) 5108 00004eb8 afa80000 sw (r29),r8 5109 00004ebc 0fffe81c jal _MemoryFreePte 5110 00004ec0 54000000 nop; not filled. 5111 00004ec4 23bd0008 addi r29,r29,#8 5112 00004ec8 20420004 addi r2,r2,#4 5113 00004ecc 20630001 addi r3,r3,#1 5114 00004ed0 8c810064 lw r1,100(r4) 5115 00004ed4 0061082a slt r1,r3,r1 5116 00004ed8 1420ffd4 bnez r1,L124_LF5 5117 00004edc 54000000 nop; not filled. 5118 00004ee0 L122_LF5: 5119 00004ee0 23bdfff8 addi r29,r29,#-8 5120 00004ee4 94810008 lhu r1,8(r4) 5121 00004ee8 afa10000 sw (r29),r1 5122 00004eec 0fffe320 jal _MemoryFreePage 5123 00004ef0 54000000 nop; not filled. 5124 00004ef4 23bd0008 addi r29,r29,#8 5125 00004ef8 8c81000c lw r1,12(r4) 5126 00004efc 2008ffc0 addi r8,r0,#-64 5127 00004f00 00280824 and r1,r1,r8 5128 00004f04 34210001 ori r1,r1,#1 5129 00004f08 ac81000c sw 12(r4),r1 5130 00004f0c 0bfffe8c j L107_LF5 5131 00004f10 54000000 nop; not filled. 5132 00004f14 L108_LF5: 5133 00004f14 23bdfff8 addi r29,r29,#-8 5134 00004f18 3c010000 lhi r1,((_processQuantum_LF5)>>16)&0xffff 5135 00004f1c 2421f438 addui r1,r1,(_processQuantum_LF5)&0xffff 5136 00004f20 8c210000 lw r1,(r1) 5137 00004f24 afa10000 sw (r29),r1 5138 00004f28 0c0044d0 jal _TimerSet 5139 00004f2c 54000000 nop; not filled. 5140 00004f30 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5141 00004f34 2442fd60 addui r2,r2,(_debugstr)&0xffff 5142 00004f38 afa20000 sw (r29),r2 5143 00004f3c 20080070 addi r8,r0,#112 5144 00004f40 afa80004 sw 4(r29),r8 5145 00004f44 0fffeeec jal _dindex 5146 00004f48 54000000 nop; not filled. 5147 00004f4c 23bd0008 addi r29,r29,#8 5148 00004f50 64210000 snei r1,r1,#0 5149 00004f54 1420002c bnez r1,L128_LF5 5150 00004f58 54000000 nop; not filled. 5151 00004f5c 23bdfff8 addi r29,r29,#-8 5152 00004f60 afa20000 sw (r29),r2 5153 00004f64 2008002b addi r8,r0,#43 5154 00004f68 afa80004 sw 4(r29),r8 5155 00004f6c 0fffeec4 jal _dindex 5156 00004f70 54000000 nop; not filled. 5157 00004f74 23bd0008 addi r29,r29,#8 5158 00004f78 64210000 snei r1,r1,#0 5159 00004f7c 10200030 beqz r1,L127_LF5 5160 00004f80 54000000 nop; not filled. 5161 00004f84 L128_LF5: 5162 00004f84 23bdfff8 addi r29,r29,#-8 5163 00004f88 3c080000 lhi r8,((LC7_LF5)>>16)&0xffff 5164 00004f8c 2508f538 addui r8,r8,(LC7_LF5)&0xffff 5165 00004f90 afa80000 sw (r29),r8 5166 00004f94 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 5167 00004f98 2421fe28 addui r1,r1,(_currentPCB)&0xffff 5168 00004f9c 8c210000 lw r1,(r1) 5169 00004fa0 afa10004 sw 4(r29),r1 5170 00004fa4 0c006044 jal _printf 5171 00004fa8 54000000 nop; not filled. 5172 00004fac 23bd0008 addi r29,r29,#8 5173 00004fb0 L127_LF5: 5174 00004fb0 8fa20000 lw r2,0(r29) 5175 00004fb4 8fa30004 lw r3,4(r29) 5176 00004fb8 8fa40008 lw r4,8(r29) 5177 00004fbc 8fa5000c lw r5,12(r29) 5178 00004fc0 8fa60010 lw r6,16(r29) 5179 00004fc4 8fa70014 lw r7,20(r29) 5180 00004fc8 8fa80018 lw r8,24(r29) 5181 00004fcc 8fdffff8 lw r31,-8(r30) 5182 00004fd0 001ee820 add r29,r0,r30 5183 00004fd4 8fdefffc lw r30,-4(r30) 5184 00004fd8 4be00000 jr r31 5185 00004fdc 54000000 nop 5186 00004fe0 .endproc _ProcessSchedule 5187 00004fe0 .data 5188 0000f55c .align 2 5189 0000f55c LC8_LF5: 5190 0000f55c 53757370 .ascii "Suspending PCB 0x%x (%s).\n\000" 5190 0000f560 656e6469 5190 0000f564 6e672050 5190 0000f568 43422030 5190 0000f56c 78257820 5190 0000f570 28257329 5190 0000f574 2e0a00 5191 0000f577 .align 2 5192 0000f578 LC9_LF5: 5193 0000f578 25733a20 .ascii "%s: %s\n\000" 5193 0000f57c 25730a00 5194 0000f580 .align 2 5195 0000f580 LC10_LF5: 5196 0000f580 50726f63 .ascii "ProcessSuspend\000" 5196 0000f584 65737353 5196 0000f588 75737065 5196 0000f58c 6e6400 5197 0000f58f .align 2 5198 0000f590 LC11_LF5: 5199 0000f590 54727969 .ascii "Trying to suspend a non-running process!\n\000" 5199 0000f594 6e672074 5199 0000f598 6f207375 5199 0000f59c 7370656e 5199 0000f5a0 64206120 5199 0000f5a4 6e6f6e2d 5199 0000f5a8 72756e6e 5199 0000f5ac 696e6720 5199 0000f5b0 70726f63 5199 0000f5b4 65737321 5199 0000f5b8 0a00 5200 0000f5ba .text 5201 00004fe0 .align 2 5202 00004fe0 .proc _ProcessSuspend 5203 00004fe0 .global _ProcessSuspend 5204 00004fe0 _ProcessSuspend: 5205 ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. 5206 00004fe0 afbefffc sw -4(r29),r30; push fp 5207 00004fe4 001df020 add r30,r0,r29; fp = sp 5208 00004fe8 afbffff8 sw -8(r29),r31; push ret addr 5209 00004fec 2fbd0018 subui r29,r29,#24; alloc local storage 5210 00004ff0 afa20000 sw 0(r29),r2 5211 00004ff4 afa30004 sw 4(r29),r3 5212 00004ff8 afa40008 sw 8(r29),r4 5213 00004ffc 8fc30000 lw r3,(r30) 5214 00005000 23bdfff8 addi r29,r29,#-8 5215 00005004 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5216 00005008 2442fd60 addui r2,r2,(_debugstr)&0xffff 5217 0000500c afa20000 sw (r29),r2 5218 00005010 20040070 addi r4,r0,#112 5219 00005014 afa40004 sw 4(r29),r4 5220 00005018 0fffee18 jal _dindex 5221 0000501c 54000000 nop; not filled. 5222 00005020 23bd0008 addi r29,r29,#8 5223 00005024 64210000 snei r1,r1,#0 5224 00005028 1420002c bnez r1,L131_LF5 5225 0000502c 54000000 nop; not filled. 5226 00005030 23bdfff8 addi r29,r29,#-8 5227 00005034 afa20000 sw (r29),r2 5228 00005038 2004002b addi r4,r0,#43 5229 0000503c afa40004 sw 4(r29),r4 5230 00005040 0fffedf0 jal _dindex 5231 00005044 54000000 nop; not filled. 5232 00005048 23bd0008 addi r29,r29,#8 5233 0000504c 64210000 snei r1,r1,#0 5234 00005050 1020002c beqz r1,L130_LF5 5235 00005054 54000000 nop; not filled. 5236 00005058 L131_LF5: 5237 00005058 23bdfff0 addi r29,r29,#-16 5238 0000505c 3c040000 lhi r4,((LC8_LF5)>>16)&0xffff 5239 00005060 2484f55c addui r4,r4,(LC8_LF5)&0xffff 5240 00005064 afa40000 sw (r29),r4 5241 00005068 afa30004 sw 4(r29),r3 5242 0000506c 20610010 addi r1,r3,#16 5243 00005070 afa10008 sw 8(r29),r1 5244 00005074 0c005f74 jal _printf 5245 00005078 54000000 nop; not filled. 5246 0000507c 23bd0010 addi r29,r29,#16 5247 00005080 L130_LF5: 5248 00005080 8064000f lb r4,15(r3) 5249 00005084 58810001 srli r1,r4,#0x1 5250 00005088 30210001 andi r1,r1,#1 5251 0000508c 14200038 bnez r1,L133_LF5 5252 00005090 54000000 nop; not filled. 5253 00005094 23bdfff0 addi r29,r29,#-16 5254 00005098 3c040000 lhi r4,((LC9_LF5)>>16)&0xffff 5255 0000509c 2484f578 addui r4,r4,(LC9_LF5)&0xffff 5256 000050a0 afa40000 sw (r29),r4 5257 000050a4 3c010000 lhi r1,((LC10_LF5)>>16)&0xffff 5258 000050a8 2421f580 addui r1,r1,(LC10_LF5)&0xffff 5259 000050ac afa10004 sw 4(r29),r1 5260 000050b0 3c040000 lhi r4,((LC11_LF5)>>16)&0xffff 5261 000050b4 2484f590 addui r4,r4,(LC11_LF5)&0xffff 5262 000050b8 afa40008 sw 8(r29),r4 5263 000050bc 0c005f2c jal _printf 5264 000050c0 54000000 nop; not filled. 5265 000050c4 23bd0010 addi r29,r29,#16 5266 000050c8 L133_LF5: 5267 000050c8 8c61000c lw r1,12(r3) 5268 000050cc 2004ffc0 addi r4,r0,#-64 5269 000050d0 00240824 and r1,r1,r4 5270 000050d4 34210004 ori r1,r1,#4 5271 000050d8 ac61000c sw 12(r3),r1 5272 000050dc 207f0068 addi r31,r3,#104 5273 000050e0 8c610070 lw r1,112(r3) 5274 000050e4 8c210008 lw r1,8(r1) 5275 000050e8 6c210000 sgti r1,r1,#0 5276 000050ec 1020002c beqz r1,L136_LF5 5277 000050f0 54000000 nop; not filled. 5278 000050f4 8c61006c lw r1,108(r3) 5279 000050f8 8fe40000 lw r4,(r31) 5280 000050fc ac240000 sw (r1),r4 5281 00005100 8fe10000 lw r1,(r31) 5282 00005104 8c64006c lw r4,108(r3) 5283 00005108 ac240004 sw 4(r1),r4 5284 0000510c 8c620070 lw r2,112(r3) 5285 00005110 8c410008 lw r1,8(r2) 5286 00005114 2021ffff addi r1,r1,#-1 5287 00005118 ac410008 sw 8(r2),r1 5288 0000511c L136_LF5: 5289 0000511c 20040000 addi r4,r0,#0 5290 00005120 afe40000 sw (r31),r4 5291 00005124 3c020000 lhi r2,((_waitQueue_LF5)>>16)&0xffff 5292 00005128 2442fe44 addui r2,r2,(_waitQueue_LF5)&0xffff 5293 0000512c 8c410004 lw r1,4(r2) 5294 00005130 ac620070 sw 112(r3),r2 5295 00005134 ac61006c sw 108(r3),r1 5296 00005138 8c240000 lw r4,(r1) 5297 0000513c afe40000 sw (r31),r4 5298 00005140 ac3f0000 sw (r1),r31 5299 00005144 8fe10000 lw r1,(r31) 5300 00005148 ac3f0004 sw 4(r1),r31 5301 0000514c 8c410008 lw r1,8(r2) 5302 00005150 20210001 addi r1,r1,#1 5303 00005154 ac410008 sw 8(r2),r1 5304 00005158 8fa20000 lw r2,0(r29) 5305 0000515c 8fa30004 lw r3,4(r29) 5306 00005160 8fa40008 lw r4,8(r29) 5307 00005164 8fdffff8 lw r31,-8(r30) 5308 00005168 001ee820 add r29,r0,r30 5309 0000516c 8fdefffc lw r30,-4(r30) 5310 00005170 4be00000 jr r31 5311 00005174 54000000 nop 5312 00005178 .endproc _ProcessSuspend 5313 00005178 .data 5314 0000f5ba .align 2 5315 0000f5bc LC12_LF5: 5316 0000f5bc 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 5316 0000f5c0 6e672075 5316 0000f5c4 70205043 5316 0000f5c8 42203078 5316 0000f5cc 25782e0a 5316 0000f5d0 00 5317 0000f5d1 .align 2 5318 0000f5d4 LC13_LF5: 5319 0000f5d4 50726f63 .ascii "ProcessWakeup\000" 5319 0000f5d8 65737357 5319 0000f5dc 616b6575 5319 0000f5e0 7000 5320 0000f5e2 .align 2 5321 0000f5e4 LC14_LF5: 5322 0000f5e4 54727969 .ascii "Trying to wake up a non-sleeping process!\n\000" 5322 0000f5e8 6e672074 5322 0000f5ec 6f207761 5322 0000f5f0 6b652075 5322 0000f5f4 70206120 5322 0000f5f8 6e6f6e2d 5322 0000f5fc 736c6565 5322 0000f600 70696e67 5322 0000f604 2070726f 5322 0000f608 63657373 5322 0000f60c 210a00 5323 0000f60f .text 5324 00005178 .align 2 5325 00005178 .proc _ProcessWakeup 5326 00005178 .global _ProcessWakeup 5327 00005178 _ProcessWakeup: 5328 ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. 5329 00005178 afbefffc sw -4(r29),r30; push fp 5330 0000517c 001df020 add r30,r0,r29; fp = sp 5331 00005180 afbffff8 sw -8(r29),r31; push ret addr 5332 00005184 2fbd0018 subui r29,r29,#24; alloc local storage 5333 00005188 afa20000 sw 0(r29),r2 5334 0000518c afa30004 sw 4(r29),r3 5335 00005190 afa40008 sw 8(r29),r4 5336 00005194 8fc30000 lw r3,(r30) 5337 00005198 23bdfff8 addi r29,r29,#-8 5338 0000519c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5339 000051a0 2442fd60 addui r2,r2,(_debugstr)&0xffff 5340 000051a4 afa20000 sw (r29),r2 5341 000051a8 20040070 addi r4,r0,#112 5342 000051ac afa40004 sw 4(r29),r4 5343 000051b0 0fffec80 jal _dindex 5344 000051b4 54000000 nop; not filled. 5345 000051b8 23bd0008 addi r29,r29,#8 5346 000051bc 64210000 snei r1,r1,#0 5347 000051c0 1420002c bnez r1,L142_LF5 5348 000051c4 54000000 nop; not filled. 5349 000051c8 23bdfff8 addi r29,r29,#-8 5350 000051cc afa20000 sw (r29),r2 5351 000051d0 2004002b addi r4,r0,#43 5352 000051d4 afa40004 sw 4(r29),r4 5353 000051d8 0fffec58 jal _dindex 5354 000051dc 54000000 nop; not filled. 5355 000051e0 23bd0008 addi r29,r29,#8 5356 000051e4 64210000 snei r1,r1,#0 5357 000051e8 10200024 beqz r1,L141_LF5 5358 000051ec 54000000 nop; not filled. 5359 000051f0 L142_LF5: 5360 000051f0 23bdfff8 addi r29,r29,#-8 5361 000051f4 3c040000 lhi r4,((LC12_LF5)>>16)&0xffff 5362 000051f8 2484f5bc addui r4,r4,(LC12_LF5)&0xffff 5363 000051fc afa40000 sw (r29),r4 5364 00005200 afa30004 sw 4(r29),r3 5365 00005204 0c005de4 jal _printf 5366 00005208 54000000 nop; not filled. 5367 0000520c 23bd0008 addi r29,r29,#8 5368 00005210 L141_LF5: 5369 00005210 8064000f lb r4,15(r3) 5370 00005214 58810002 srli r1,r4,#0x2 5371 00005218 30210001 andi r1,r1,#1 5372 0000521c 14200038 bnez r1,L144_LF5 5373 00005220 54000000 nop; not filled. 5374 00005224 23bdfff0 addi r29,r29,#-16 5375 00005228 3c040000 lhi r4,((LC9_LF5)>>16)&0xffff 5376 0000522c 2484f578 addui r4,r4,(LC9_LF5)&0xffff 5377 00005230 afa40000 sw (r29),r4 5378 00005234 3c010000 lhi r1,((LC13_LF5)>>16)&0xffff 5379 00005238 2421f5d4 addui r1,r1,(LC13_LF5)&0xffff 5380 0000523c afa10004 sw 4(r29),r1 5381 00005240 3c040000 lhi r4,((LC14_LF5)>>16)&0xffff 5382 00005244 2484f5e4 addui r4,r4,(LC14_LF5)&0xffff 5383 00005248 afa40008 sw 8(r29),r4 5384 0000524c 0c005d9c jal _printf 5385 00005250 54000000 nop; not filled. 5386 00005254 23bd0010 addi r29,r29,#16 5387 00005258 L144_LF5: 5388 00005258 8c61000c lw r1,12(r3) 5389 0000525c 2004ffc0 addi r4,r0,#-64 5390 00005260 00240824 and r1,r1,r4 5391 00005264 34210002 ori r1,r1,#2 5392 00005268 ac61000c sw 12(r3),r1 5393 0000526c 207f0068 addi r31,r3,#104 5394 00005270 8c610070 lw r1,112(r3) 5395 00005274 8c210008 lw r1,8(r1) 5396 00005278 6c210000 sgti r1,r1,#0 5397 0000527c 1020002c beqz r1,L147_LF5 5398 00005280 54000000 nop; not filled. 5399 00005284 8c61006c lw r1,108(r3) 5400 00005288 8fe40000 lw r4,(r31) 5401 0000528c ac240000 sw (r1),r4 5402 00005290 8fe10000 lw r1,(r31) 5403 00005294 8c64006c lw r4,108(r3) 5404 00005298 ac240004 sw 4(r1),r4 5405 0000529c 8c620070 lw r2,112(r3) 5406 000052a0 8c410008 lw r1,8(r2) 5407 000052a4 2021ffff addi r1,r1,#-1 5408 000052a8 ac410008 sw 8(r2),r1 5409 000052ac L147_LF5: 5410 000052ac 20040000 addi r4,r0,#0 5411 000052b0 afe40000 sw (r31),r4 5412 000052b4 3c020000 lhi r2,((_runQueue_LF5)>>16)&0xffff 5413 000052b8 2442fe38 addui r2,r2,(_runQueue_LF5)&0xffff 5414 000052bc 8c410004 lw r1,4(r2) 5415 000052c0 ac620070 sw 112(r3),r2 5416 000052c4 ac61006c sw 108(r3),r1 5417 000052c8 8c240000 lw r4,(r1) 5418 000052cc afe40000 sw (r31),r4 5419 000052d0 ac3f0000 sw (r1),r31 5420 000052d4 8fe10000 lw r1,(r31) 5421 000052d8 ac3f0004 sw 4(r1),r31 5422 000052dc 8c410008 lw r1,8(r2) 5423 000052e0 20210001 addi r1,r1,#1 5424 000052e4 ac410008 sw 8(r2),r1 5425 000052e8 8fa20000 lw r2,0(r29) 5426 000052ec 8fa30004 lw r3,4(r29) 5427 000052f0 8fa40008 lw r4,8(r29) 5428 000052f4 8fdffff8 lw r31,-8(r30) 5429 000052f8 001ee820 add r29,r0,r30 5430 000052fc 8fdefffc lw r30,-4(r30) 5431 00005300 4be00000 jr r31 5432 00005304 54000000 nop 5433 00005308 .endproc _ProcessWakeup 5434 00005308 .data 5435 0000f60f .align 2 5436 0000f610 LC15_LF5: 5437 0000f610 456e7465 .ascii "Entering ProcessDestroy for 0x%x.\n\000" 5437 0000f614 72696e67 5437 0000f618 2050726f 5437 0000f61c 63657373 5437 0000f620 44657374 5437 0000f624 726f7920 5437 0000f628 666f7220 5437 0000f62c 30782578 5437 0000f630 2e0a00 5438 0000f633 .align 2 5439 0000f634 LC16_LF5: 5440 0000f634 4c656176 .ascii "Leaving ProcessDestroy for 0x%x.\n\000" 5440 0000f638 696e6720 5440 0000f63c 50726f63 5440 0000f640 65737344 5440 0000f644 65737472 5440 0000f648 6f792066 5440 0000f64c 6f722030 5440 0000f650 7825782e 5440 0000f654 0a00 5441 0000f656 .text 5442 00005308 .align 2 5443 00005308 .proc _ProcessDestroy 5444 00005308 .global _ProcessDestroy 5445 00005308 _ProcessDestroy: 5446 ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. 5447 00005308 afbefffc sw -4(r29),r30; push fp 5448 0000530c 001df020 add r30,r0,r29; fp = sp 5449 00005310 afbffff8 sw -8(r29),r31; push ret addr 5450 00005314 2fbd0018 subui r29,r29,#24; alloc local storage 5451 00005318 afa20000 sw 0(r29),r2 5452 0000531c afa30004 sw 4(r29),r3 5453 00005320 afa40008 sw 8(r29),r4 5454 00005324 8fc30000 lw r3,(r30) 5455 00005328 23bdfff8 addi r29,r29,#-8 5456 0000532c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5457 00005330 2442fd60 addui r2,r2,(_debugstr)&0xffff 5458 00005334 afa20000 sw (r29),r2 5459 00005338 20040070 addi r4,r0,#112 5460 0000533c afa40004 sw 4(r29),r4 5461 00005340 0fffeaf0 jal _dindex 5462 00005344 54000000 nop; not filled. 5463 00005348 23bd0008 addi r29,r29,#8 5464 0000534c 64210000 snei r1,r1,#0 5465 00005350 1420002c bnez r1,L153_LF5 5466 00005354 54000000 nop; not filled. 5467 00005358 23bdfff8 addi r29,r29,#-8 5468 0000535c afa20000 sw (r29),r2 5469 00005360 2004002b addi r4,r0,#43 5470 00005364 afa40004 sw 4(r29),r4 5471 00005368 0fffeac8 jal _dindex 5472 0000536c 54000000 nop; not filled. 5473 00005370 23bd0008 addi r29,r29,#8 5474 00005374 64210000 snei r1,r1,#0 5475 00005378 10200024 beqz r1,L152_LF5 5476 0000537c 54000000 nop; not filled. 5477 00005380 L153_LF5: 5478 00005380 23bdfff8 addi r29,r29,#-8 5479 00005384 3c040000 lhi r4,((LC15_LF5)>>16)&0xffff 5480 00005388 2484f610 addui r4,r4,(LC15_LF5)&0xffff 5481 0000538c afa40000 sw (r29),r4 5482 00005390 afa30004 sw 4(r29),r3 5483 00005394 0c005c54 jal _printf 5484 00005398 54000000 nop; not filled. 5485 0000539c 23bd0008 addi r29,r29,#8 5486 000053a0 L152_LF5: 5487 000053a0 8c61000c lw r1,12(r3) 5488 000053a4 2004ffc0 addi r4,r0,#-64 5489 000053a8 00240824 and r1,r1,r4 5490 000053ac 34210010 ori r1,r1,#16 5491 000053b0 ac61000c sw 12(r3),r1 5492 000053b4 207f0068 addi r31,r3,#104 5493 000053b8 8c610070 lw r1,112(r3) 5494 000053bc 8c210008 lw r1,8(r1) 5495 000053c0 6c210000 sgti r1,r1,#0 5496 000053c4 1020002c beqz r1,L156_LF5 5497 000053c8 54000000 nop; not filled. 5498 000053cc 8c61006c lw r1,108(r3) 5499 000053d0 8fe40000 lw r4,(r31) 5500 000053d4 ac240000 sw (r1),r4 5501 000053d8 8fe10000 lw r1,(r31) 5502 000053dc 8c64006c lw r4,108(r3) 5503 000053e0 ac240004 sw 4(r1),r4 5504 000053e4 8c620070 lw r2,112(r3) 5505 000053e8 8c410008 lw r1,8(r2) 5506 000053ec 2021ffff addi r1,r1,#-1 5507 000053f0 ac410008 sw 8(r2),r1 5508 000053f4 L156_LF5: 5509 000053f4 20040000 addi r4,r0,#0 5510 000053f8 afe40000 sw (r31),r4 5511 000053fc 3c020000 lhi r2,((_zombieQueue_LF5)>>16)&0xffff 5512 00005400 2442fe50 addui r2,r2,(_zombieQueue_LF5)&0xffff 5513 00005404 ac620070 sw 112(r3),r2 5514 00005408 ac62006c sw 108(r3),r2 5515 0000540c 8c440000 lw r4,(r2) 5516 00005410 afe40000 sw (r31),r4 5517 00005414 ac5f0000 sw (r2),r31 5518 00005418 8fe10000 lw r1,(r31) 5519 0000541c ac3f0004 sw 4(r1),r31 5520 00005420 8c410008 lw r1,8(r2) 5521 00005424 20210001 addi r1,r1,#1 5522 00005428 ac410008 sw 8(r2),r1 5523 0000542c 23bdfff8 addi r29,r29,#-8 5524 00005430 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5525 00005434 2442fd60 addui r2,r2,(_debugstr)&0xffff 5526 00005438 afa20000 sw (r29),r2 5527 0000543c 20040070 addi r4,r0,#112 5528 00005440 afa40004 sw 4(r29),r4 5529 00005444 0fffe9ec jal _dindex 5530 00005448 54000000 nop; not filled. 5531 0000544c 23bd0008 addi r29,r29,#8 5532 00005450 64210000 snei r1,r1,#0 5533 00005454 1420002c bnez r1,L160_LF5 5534 00005458 54000000 nop; not filled. 5535 0000545c 23bdfff8 addi r29,r29,#-8 5536 00005460 afa20000 sw (r29),r2 5537 00005464 2004002b addi r4,r0,#43 5538 00005468 afa40004 sw 4(r29),r4 5539 0000546c 0fffe9c4 jal _dindex 5540 00005470 54000000 nop; not filled. 5541 00005474 23bd0008 addi r29,r29,#8 5542 00005478 64210000 snei r1,r1,#0 5543 0000547c 10200024 beqz r1,L159_LF5 5544 00005480 54000000 nop; not filled. 5545 00005484 L160_LF5: 5546 00005484 23bdfff8 addi r29,r29,#-8 5547 00005488 3c040000 lhi r4,((LC16_LF5)>>16)&0xffff 5548 0000548c 2484f634 addui r4,r4,(LC16_LF5)&0xffff 5549 00005490 afa40000 sw (r29),r4 5550 00005494 afa30004 sw 4(r29),r3 5551 00005498 0c005b50 jal _printf 5552 0000549c 54000000 nop; not filled. 5553 000054a0 23bd0008 addi r29,r29,#8 5554 000054a4 L159_LF5: 5555 000054a4 8fa20000 lw r2,0(r29) 5556 000054a8 8fa30004 lw r3,4(r29) 5557 000054ac 8fa40008 lw r4,8(r29) 5558 000054b0 8fdffff8 lw r31,-8(r30) 5559 000054b4 001ee820 add r29,r0,r30 5560 000054b8 8fdefffc lw r30,-4(r30) 5561 000054bc 4be00000 jr r31 5562 000054c0 54000000 nop 5563 000054c4 .endproc _ProcessDestroy 5564 000054c4 .data 5565 0000f656 .align 2 5566 0000f658 _str52_LF5: 5567 0000f658 .space 4 5568 0000f65c .align 2 5569 0000f65c _location53_LF5: 5570 0000f65c 00000000 .word 0 5571 0000f660 .text 5572 000054c4 .align 2 5573 000054c4 .proc _get_argument 5574 000054c4 .global _get_argument 5575 000054c4 _get_argument: 5576 ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. 5577 000054c4 afbefffc sw -4(r29),r30; push fp 5578 000054c8 001df020 add r30,r0,r29; fp = sp 5579 000054cc afbffff8 sw -8(r29),r31; push ret addr 5580 000054d0 2fbd0018 subui r29,r29,#24; alloc local storage 5581 000054d4 afa20000 sw 0(r29),r2 5582 000054d8 afa30004 sw 4(r29),r3 5583 000054dc afa40008 sw 8(r29),r4 5584 000054e0 afa5000c sw 12(r29),r5 5585 000054e4 8fc20000 lw r2,(r30) 5586 000054e8 64410000 snei r1,r2,#0 5587 000054ec 10200020 beqz r1,L173_LF5 5588 000054f0 54000000 nop; not filled. 5589 000054f4 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 5590 000054f8 2421f658 addui r1,r1,(_str52_LF5)&0xffff 5591 000054fc ac220000 sw (r1),r2 5592 00005500 3c010000 lhi r1,((_location53_LF5)>>16)&0xffff 5593 00005504 2421f65c addui r1,r1,(_location53_LF5)&0xffff 5594 00005508 20050000 addi r5,r0,#0 5595 0000550c ac250000 sw (r1),r5 5596 00005510 L173_LF5: 5597 00005510 3c1f0000 lhi r31,((_location53_LF5)>>16)&0xffff 5598 00005514 27fff65c addui r31,r31,(_location53_LF5)&0xffff 5599 00005518 8fe30000 lw r3,(r31) 5600 0000551c 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 5601 00005520 2421f658 addui r1,r1,(_str52_LF5)&0xffff 5602 00005524 8c220000 lw r2,(r1) 5603 00005528 00430820 add r1,r2,r3 5604 0000552c 90210000 lbu r1,(r1) 5605 00005530 64210000 snei r1,r1,#0 5606 00005534 10200010 beqz r1,L175_LF5 5607 00005538 54000000 nop; not filled. 5608 0000553c 6c610062 sgti r1,r3,#98 5609 00005540 10200020 beqz r1,L174_LF5 5610 00005544 54000000 nop; not filled. 5611 00005548 L175_LF5: 5612 00005548 20010000 addi r1,r0,#0 5613 0000554c 08000058 j L182_LF5 5614 00005550 54000000 nop; not filled. 5615 00005554 L183_LF5: 5616 00005554 23e10001 addi r1,r31,#1 5617 00005558 ac410000 sw (r2),r1 5618 0000555c 08000044 j L177_LF5 5619 00005560 54000000 nop; not filled. 5620 00005564 L174_LF5: 5621 00005564 70610063 slei r1,r3,#99 5622 00005568 10200038 beqz r1,L177_LF5 5623 0000556c 54000000 nop; not filled. 5624 00005570 00022020 add r4,r0,r2 5625 00005574 001f1020 add r2,r0,r31 5626 00005578 L179_LF5: 5627 00005578 8c5f0000 lw r31,(r2) 5628 0000557c 009f0820 add r1,r4,r31 5629 00005580 90210000 lbu r1,(r1) 5630 00005584 64210000 snei r1,r1,#0 5631 00005588 1020ffc8 beqz r1,L183_LF5 5632 0000558c 54000000 nop; not filled. 5633 00005590 23e10001 addi r1,r31,#1 5634 00005594 ac410000 sw (r2),r1 5635 00005598 70210063 slei r1,r1,#99 5636 0000559c 1420ffd8 bnez r1,L179_LF5 5637 000055a0 54000000 nop; not filled. 5638 000055a4 L177_LF5: 5639 000055a4 00030820 add r1,r0,r3 5640 000055a8 L182_LF5: 5641 000055a8 8fa20000 lw r2,0(r29) 5642 000055ac 8fa30004 lw r3,4(r29) 5643 000055b0 8fa40008 lw r4,8(r29) 5644 000055b4 8fa5000c lw r5,12(r29) 5645 000055b8 8fdffff8 lw r31,-8(r30) 5646 000055bc 001ee820 add r29,r0,r30 5647 000055c0 8fdefffc lw r30,-4(r30) 5648 000055c4 4be00000 jr r31 5649 000055c8 54000000 nop 5650 000055cc .endproc _get_argument 5651 000055cc .data 5652 0000f660 .align 2 5653 0000f660 LC17_LF5: 5654 0000f660 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 5654 0000f664 696e7465 5654 0000f668 72727570 5654 0000f66c 74207661 5654 0000f670 6c756520 5654 0000f674 77617320 5654 0000f678 30782578 5654 0000f67c 2e0a00 5655 0000f67f .align 2 5656 0000f680 LC18_LF5: 5657 0000f680 456e7465 .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" 5657 0000f684 72696e67 5657 0000f688 2050726f 5657 0000f68c 63657373 5657 0000f690 466f726b 5657 0000f694 20617267 5657 0000f698 733d3078 5657 0000f69c 25782030 5657 0000f6a0 78257820 5657 0000f6a4 25732025 5657 0000f6a8 640a00 5658 0000f6ab .align 2 5659 0000f6ac LC19_LF5: 5660 0000f6ac 46415441 .ascii "FATAL error: no free processes!\n\000" 5660 0000f6b0 4c206572 5660 0000f6b4 726f723a 5660 0000f6b8 206e6f20 5660 0000f6bc 66726565 5660 0000f6c0 2070726f 5660 0000f6c4 63657373 5660 0000f6c8 6573210a 5660 0000f6cc 00 5661 0000f6cd .align 2 5662 0000f6d0 LC20_LF5: 5663 0000f6d0 476f7420 .ascii "Got a link @ 0x%x\n\000" 5663 0000f6d4 61206c69 5663 0000f6d8 6e6b2040 5663 0000f6dc 20307825 5663 0000f6e0 780a00 5664 0000f6e3 .align 2 5665 0000f6e4 LC21_LF5: 5666 0000f6e4 4265666f .ascii "Before restore interrupt value is 0x%x.\n\000" 5666 0000f6e8 72652072 5666 0000f6ec 6573746f 5666 0000f6f0 72652069 5666 0000f6f4 6e746572 5666 0000f6f8 72757074 5666 0000f6fc 2076616c 5666 0000f700 75652069 5666 0000f704 73203078 5666 0000f708 25782e0a 5666 0000f70c 00 5667 0000f70d .align 2 5668 0000f710 LC22_LF5: 5669 0000f710 4e657720 .ascii "New interrupt value is 0x%x.\n\000" 5669 0000f714 696e7465 5669 0000f718 72727570 5669 0000f71c 74207661 5669 0000f720 6c756520 5669 0000f724 69732030 5669 0000f728 7825782e 5669 0000f72c 0a00 5670 0000f72e .align 2 5671 0000f730 LC23_LF5: 5672 0000f730 61464154 .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" 5672 0000f734 414c3a20 5672 0000f738 636f756c 5672 0000f73c 646e2774 5672 0000f740 20616c6c 5672 0000f744 6f636174 5672 0000f748 65206d65 5672 0000f74c 6d6f7279 5672 0000f750 202d206e 5672 0000f754 6f206672 5672 0000f758 65652070 5672 0000f75c 61676573 5672 0000f760 210a00 5673 0000f763 .align 2 5674 0000f764 LC24_LF5: 5675 0000f764 62464154 .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" 5675 0000f768 414c3a20 5675 0000f76c 636f756c 5675 0000f770 646e2774 5675 0000f774 20616c6c 5675 0000f778 6f636174 5675 0000f77c 65207379 5675 0000f780 7374656d 5675 0000f784 20737461 5675 0000f788 636b202d 5675 0000f78c 206e6f20 5675 0000f790 66726565 5675 0000f794 20706167 5675 0000f798 6573210a 5675 0000f79c 00 5676 0000f79d .align 2 5677 0000f7a0 LC25_LF5: 5678 0000f7a0 53657474 .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" 5678 0000f7a4 696e6720 5678 0000f7a8 75702050 5678 0000f7ac 43422040 5678 0000f7b0 20307825 5678 0000f7b4 78202873 5678 0000f7b8 79732073 5678 0000f7bc 7461636b 5678 0000f7c0 3d307825 5678 0000f7c4 782c206d 5678 0000f7c8 656d3d30 5678 0000f7cc 7825782c 5678 0000f7d0 2073697a 5678 0000f7d4 653d3078 5678 0000f7d8 2578290a 5678 0000f7dc 00 5679 0000f7dd .align 2 5680 0000f7e0 LC26_LF5: 5681 0000f7e0 41626f75 .ascii "About to load %s\n\000" 5681 0000f7e4 7420746f 5681 0000f7e8 206c6f61 5681 0000f7ec 64202573 5681 0000f7f0 0a00 5682 0000f7f2 .align 2 5683 0000f7f4 LC27_LF5: 5684 0000f7f4 46696c65 .ascii "File %s -> start=0x%08x\n\000" 5684 0000f7f8 20257320 5684 0000f7fc 2d3e2073 5684 0000f800 74617274 5684 0000f804 3d307825 5684 0000f808 3038780a 5684 0000f80c 00 5685 0000f80d .align 2 5686 0000f810 LC28_LF5: 5687 0000f810 46696c65 .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" 5687 0000f814 20257320 5687 0000f818 2d3e2063 5687 0000f81c 6f646520 5687 0000f820 40203078 5687 0000f824 25303878 5687 0000f828 20287369 5687 0000f82c 7a653d30 5687 0000f830 78253038 5687 0000f834 78290a00 5688 0000f838 .align 2 5689 0000f838 LC29_LF5: 5690 0000f838 46696c65 .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" 5690 0000f83c 20257320 5690 0000f840 2d3e2064 5690 0000f844 61746120 5690 0000f848 40203078 5690 0000f84c 25303878 5690 0000f850 20287369 5690 0000f854 7a653d30 5690 0000f858 78253038 5690 0000f85c 78290a00 5691 0000f860 .align 2 5692 0000f860 LC30_LF5: 5693 0000f860 506c6163 .ascii "Placing %d bytes at vaddr %08x.\n\000" 5693 0000f864 696e6720 5693 0000f868 25642062 5693 0000f86c 79746573 5693 0000f870 20617420 5693 0000f874 76616464 5693 0000f878 72202530 5693 0000f87c 38782e0a 5693 0000f880 00 5694 0000f881 .align 2 5695 0000f884 LC31_LF5: 5696 0000f884 53657474 .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" 5696 0000f888 696e6720 5696 0000f88c 63757272 5696 0000f890 656e7450 5696 0000f894 43423d30 5696 0000f898 7825782c 5696 0000f89c 20737461 5696 0000f8a0 636b6672 5696 0000f8a4 616d653d 5696 0000f8a8 30782578 5696 0000f8ac 0a00 5697 0000f8ae .align 2 5698 0000f8b0 LC32_LF5: 5699 0000f8b0 4c656176 .ascii "Leaving ProcessFork (%s)\n\000" 5699 0000f8b4 696e6720 5699 0000f8b8 50726f63 5699 0000f8bc 65737346 5699 0000f8c0 6f726b20 5699 0000f8c4 28257329 5699 0000f8c8 0a00 5700 0000f8ca .text 5701 000055cc .align 2 5702 000055cc .proc _ProcessFork 5703 000055cc .global _ProcessFork 5704 000055cc _ProcessFork: 5705 ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. 5706 000055cc afbefffc sw -4(r29),r30; push fp 5707 000055d0 001df020 add r30,r0,r29; fp = sp 5708 000055d4 afbffff8 sw -8(r29),r31; push ret addr 5709 000055d8 2fbd02d8 subui r29,r29,#728; alloc local storage 5710 000055dc afa20000 sw 0(r29),r2 5711 000055e0 afa30004 sw 4(r29),r3 5712 000055e4 afa40008 sw 8(r29),r4 5713 000055e8 afa5000c sw 12(r29),r5 5714 000055ec afa60010 sw 16(r29),r6 5715 000055f0 afa70014 sw 20(r29),r7 5716 000055f4 afa80018 sw 24(r29),r8 5717 000055f8 afa9001c sw 28(r29),r9 5718 000055fc afaa0020 sw 32(r29),r10 5719 00005600 afab0024 sw 36(r29),r11 5720 00005604 afac0028 sw 40(r29),r12 5721 00005608 afad002c sw 44(r29),r13 5722 0000560c 8fc50000 lw r5,(r30) 5723 00005610 8fca0004 lw r10,4(r30) 5724 00005614 8fcc0008 lw r12,8(r30) 5725 00005618 8fc4000c lw r4,12(r30) 5726 0000561c 200d0000 addi r13,r0,#0 5727 00005620 afcdfd58 sw -680(r30),r13 5728 00005624 23bdfff8 addi r29,r29,#-8 5729 00005628 200d000f addi r13,r0,#15 5730 0000562c afad0000 sw (r29),r13 5731 00005630 0fffbc54 jal _SetIntrs 5732 00005634 54000000 nop; not filled. 5733 00005638 00011820 add r3,r0,r1 5734 0000563c 23bd0008 addi r29,r29,#8 5735 00005640 23bdfff8 addi r29,r29,#-8 5736 00005644 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5737 00005648 2442fd60 addui r2,r2,(_debugstr)&0xffff 5738 0000564c afa20000 sw (r29),r2 5739 00005650 200d0049 addi r13,r0,#73 5740 00005654 afad0004 sw 4(r29),r13 5741 00005658 0fffe7d8 jal _dindex 5742 0000565c 54000000 nop; not filled. 5743 00005660 23bd0008 addi r29,r29,#8 5744 00005664 64210000 snei r1,r1,#0 5745 00005668 1420002c bnez r1,L187_LF5 5746 0000566c 54000000 nop; not filled. 5747 00005670 23bdfff8 addi r29,r29,#-8 5748 00005674 afa20000 sw (r29),r2 5749 00005678 200d002b addi r13,r0,#43 5750 0000567c afad0004 sw 4(r29),r13 5751 00005680 0fffe7b0 jal _dindex 5752 00005684 54000000 nop; not filled. 5753 00005688 23bd0008 addi r29,r29,#8 5754 0000568c 64210000 snei r1,r1,#0 5755 00005690 10200024 beqz r1,L186_LF5 5756 00005694 54000000 nop; not filled. 5757 00005698 L187_LF5: 5758 00005698 23bdfff8 addi r29,r29,#-8 5759 0000569c 3c0d0000 lhi r13,((LC17_LF5)>>16)&0xffff 5760 000056a0 25adf660 addui r13,r13,(LC17_LF5)&0xffff 5761 000056a4 afad0000 sw (r29),r13 5762 000056a8 afa30004 sw 4(r29),r3 5763 000056ac 0c00593c jal _printf 5764 000056b0 54000000 nop; not filled. 5765 000056b4 23bd0008 addi r29,r29,#8 5766 000056b8 L186_LF5: 5767 000056b8 23bdfff8 addi r29,r29,#-8 5768 000056bc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5769 000056c0 2442fd60 addui r2,r2,(_debugstr)&0xffff 5770 000056c4 afa20000 sw (r29),r2 5771 000056c8 200d0070 addi r13,r0,#112 5772 000056cc afad0004 sw 4(r29),r13 5773 000056d0 0fffe760 jal _dindex 5774 000056d4 54000000 nop; not filled. 5775 000056d8 23bd0008 addi r29,r29,#8 5776 000056dc 64210000 snei r1,r1,#0 5777 000056e0 1420002c bnez r1,L189_LF5 5778 000056e4 54000000 nop; not filled. 5779 000056e8 23bdfff8 addi r29,r29,#-8 5780 000056ec afa20000 sw (r29),r2 5781 000056f0 200d002b addi r13,r0,#43 5782 000056f4 afad0004 sw 4(r29),r13 5783 000056f8 0fffe738 jal _dindex 5784 000056fc 54000000 nop; not filled. 5785 00005700 23bd0008 addi r29,r29,#8 5786 00005704 64210000 snei r1,r1,#0 5787 00005708 10200030 beqz r1,L188_LF5 5788 0000570c 54000000 nop; not filled. 5789 00005710 L189_LF5: 5790 00005710 23bdffe8 addi r29,r29,#-24 5791 00005714 3c0d0000 lhi r13,((LC18_LF5)>>16)&0xffff 5792 00005718 25adf680 addui r13,r13,(LC18_LF5)&0xffff 5793 0000571c afad0000 sw (r29),r13 5794 00005720 afa50004 sw 4(r29),r5 5795 00005724 afaa0008 sw 8(r29),r10 5796 00005728 afac000c sw 12(r29),r12 5797 0000572c afa40010 sw 16(r29),r4 5798 00005730 0c0058b8 jal _printf 5799 00005734 54000000 nop; not filled. 5800 00005738 23bd0018 addi r29,r29,#24 5801 0000573c L188_LF5: 5802 0000573c 3c020000 lhi r2,((_freepcbs_LF5)>>16)&0xffff 5803 00005740 2442fe2c addui r2,r2,(_freepcbs_LF5)&0xffff 5804 00005744 8c410008 lw r1,8(r2) 5805 00005748 60210000 seqi r1,r1,#0 5806 0000574c 10200028 beqz r1,L190_LF5 5807 00005750 54000000 nop; not filled. 5808 00005754 23bdfff8 addi r29,r29,#-8 5809 00005758 3c0d0000 lhi r13,((LC19_LF5)>>16)&0xffff 5810 0000575c 25adf6ac addui r13,r13,(LC19_LF5)&0xffff 5811 00005760 afad0000 sw (r29),r13 5812 00005764 0c005884 jal _printf 5813 00005768 54000000 nop; not filled. 5814 0000576c 0c005864 jal _exitsim 5815 00005770 54000000 nop; not filled. 5816 00005774 23bd0008 addi r29,r29,#8 5817 00005778 L190_LF5: 5818 00005778 8c490000 lw r9,(r2) 5819 0000577c 23bdfff8 addi r29,r29,#-8 5820 00005780 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5821 00005784 2442fd60 addui r2,r2,(_debugstr)&0xffff 5822 00005788 afa20000 sw (r29),r2 5823 0000578c 200d0070 addi r13,r0,#112 5824 00005790 afad0004 sw 4(r29),r13 5825 00005794 0fffe69c jal _dindex 5826 00005798 54000000 nop; not filled. 5827 0000579c 23bd0008 addi r29,r29,#8 5828 000057a0 64210000 snei r1,r1,#0 5829 000057a4 1420002c bnez r1,L195_LF5 5830 000057a8 54000000 nop; not filled. 5831 000057ac 23bdfff8 addi r29,r29,#-8 5832 000057b0 afa20000 sw (r29),r2 5833 000057b4 200d002b addi r13,r0,#43 5834 000057b8 afad0004 sw 4(r29),r13 5835 000057bc 0fffe674 jal _dindex 5836 000057c0 54000000 nop; not filled. 5837 000057c4 23bd0008 addi r29,r29,#8 5838 000057c8 64210000 snei r1,r1,#0 5839 000057cc 10200024 beqz r1,L194_LF5 5840 000057d0 54000000 nop; not filled. 5841 000057d4 L195_LF5: 5842 000057d4 23bdfff8 addi r29,r29,#-8 5843 000057d8 3c0d0000 lhi r13,((LC20_LF5)>>16)&0xffff 5844 000057dc 25adf6d0 addui r13,r13,(LC20_LF5)&0xffff 5845 000057e0 afad0000 sw (r29),r13 5846 000057e4 afa90004 sw 4(r29),r9 5847 000057e8 0c005800 jal _printf 5848 000057ec 54000000 nop; not filled. 5849 000057f0 23bd0008 addi r29,r29,#8 5850 000057f4 L194_LF5: 5851 000057f4 8d210008 lw r1,8(r9) 5852 000057f8 8c210008 lw r1,8(r1) 5853 000057fc 6c210000 sgti r1,r1,#0 5854 00005800 1020002c beqz r1,L197_LF5 5855 00005804 54000000 nop; not filled. 5856 00005808 8d210004 lw r1,4(r9) 5857 0000580c 8d2d0000 lw r13,(r9) 5858 00005810 ac2d0000 sw (r1),r13 5859 00005814 8d210000 lw r1,(r9) 5860 00005818 8d2d0004 lw r13,4(r9) 5861 0000581c ac2d0004 sw 4(r1),r13 5862 00005820 8d220008 lw r2,8(r9) 5863 00005824 8c410008 lw r1,8(r2) 5864 00005828 2021ffff addi r1,r1,#-1 5865 0000582c ac410008 sw 8(r2),r1 5866 00005830 L197_LF5: 5867 00005830 200d0000 addi r13,r0,#0 5868 00005834 ad2d0000 sw (r9),r13 5869 00005838 8d26000c lw r6,12(r9) 5870 0000583c 8cc1000c lw r1,12(r6) 5871 00005840 200dffc0 addi r13,r0,#-64 5872 00005844 002d0824 and r1,r1,r13 5873 00005848 34210002 ori r1,r1,#2 5874 0000584c acc1000c sw 12(r6),r1 5875 00005850 23bdfff8 addi r29,r29,#-8 5876 00005854 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5877 00005858 2442fd60 addui r2,r2,(_debugstr)&0xffff 5878 0000585c afa20000 sw (r29),r2 5879 00005860 200d0049 addi r13,r0,#73 5880 00005864 afad0004 sw 4(r29),r13 5881 00005868 0fffe5c8 jal _dindex 5882 0000586c 54000000 nop; not filled. 5883 00005870 23bd0008 addi r29,r29,#8 5884 00005874 64210000 snei r1,r1,#0 5885 00005878 1420002c bnez r1,L200_LF5 5886 0000587c 54000000 nop; not filled. 5887 00005880 23bdfff8 addi r29,r29,#-8 5888 00005884 afa20000 sw (r29),r2 5889 00005888 200d002b addi r13,r0,#43 5890 0000588c afad0004 sw 4(r29),r13 5891 00005890 0fffe5a0 jal _dindex 5892 00005894 54000000 nop; not filled. 5893 00005898 23bd0008 addi r29,r29,#8 5894 0000589c 64210000 snei r1,r1,#0 5895 000058a0 1020002c beqz r1,L199_LF5 5896 000058a4 54000000 nop; not filled. 5897 000058a8 L200_LF5: 5898 000058a8 0fffba18 jal _CurrentIntrs 5899 000058ac 54000000 nop; not filled. 5900 000058b0 23bdfff8 addi r29,r29,#-8 5901 000058b4 3c0d0000 lhi r13,((LC21_LF5)>>16)&0xffff 5902 000058b8 25adf6e4 addui r13,r13,(LC21_LF5)&0xffff 5903 000058bc afad0000 sw (r29),r13 5904 000058c0 afa10004 sw 4(r29),r1 5905 000058c4 0c005724 jal _printf 5906 000058c8 54000000 nop; not filled. 5907 000058cc 23bd0008 addi r29,r29,#8 5908 000058d0 L199_LF5: 5909 000058d0 23bdfff8 addi r29,r29,#-8 5910 000058d4 afa30000 sw (r29),r3 5911 000058d8 0fffb9ac jal _SetIntrs 5912 000058dc 54000000 nop; not filled. 5913 000058e0 23bd0008 addi r29,r29,#8 5914 000058e4 23bdfff8 addi r29,r29,#-8 5915 000058e8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 5916 000058ec 2442fd60 addui r2,r2,(_debugstr)&0xffff 5917 000058f0 afa20000 sw (r29),r2 5918 000058f4 200d0049 addi r13,r0,#73 5919 000058f8 afad0004 sw 4(r29),r13 5920 000058fc 0fffe534 jal _dindex 5921 00005900 54000000 nop; not filled. 5922 00005904 23bd0008 addi r29,r29,#8 5923 00005908 64210000 snei r1,r1,#0 5924 0000590c 1420002c bnez r1,L203_LF5 5925 00005910 54000000 nop; not filled. 5926 00005914 23bdfff8 addi r29,r29,#-8 5927 00005918 afa20000 sw (r29),r2 5928 0000591c 200d002b addi r13,r0,#43 5929 00005920 afad0004 sw 4(r29),r13 5930 00005924 0fffe50c jal _dindex 5931 00005928 54000000 nop; not filled. 5932 0000592c 23bd0008 addi r29,r29,#8 5933 00005930 64210000 snei r1,r1,#0 5934 00005934 1020002c beqz r1,L202_LF5 5935 00005938 54000000 nop; not filled. 5936 0000593c L203_LF5: 5937 0000593c 0fffb984 jal _CurrentIntrs 5938 00005940 54000000 nop; not filled. 5939 00005944 23bdfff8 addi r29,r29,#-8 5940 00005948 3c0d0000 lhi r13,((LC22_LF5)>>16)&0xffff 5941 0000594c 25adf710 addui r13,r13,(LC22_LF5)&0xffff 5942 00005950 afad0000 sw (r29),r13 5943 00005954 afa10004 sw 4(r29),r1 5944 00005958 0c005690 jal _printf 5945 0000595c 54000000 nop; not filled. 5946 00005960 23bd0008 addi r29,r29,#8 5947 00005964 L202_LF5: 5948 00005964 23bdfff8 addi r29,r29,#-8 5949 00005968 20c10010 addi r1,r6,#16 5950 0000596c afa10000 sw (r29),r1 5951 00005970 afac0004 sw 4(r29),r12 5952 00005974 0fffdffc jal _dstrcpy 5953 00005978 54000000 nop; not filled. 5954 0000597c 200d0001 addi r13,r0,#1 5955 00005980 accd0064 sw 100(r6),r13 5956 00005984 0fffd5c0 jal _MemoryAllocPage 5957 00005988 54000000 nop; not filled. 5958 0000598c 00011020 add r2,r0,r1 5959 00005990 23bd0008 addi r29,r29,#8 5960 00005994 64410000 snei r1,r2,#0 5961 00005998 14200028 bnez r1,L204_LF5 5962 0000599c 54000000 nop; not filled. 5963 000059a0 23bdfff8 addi r29,r29,#-8 5964 000059a4 3c0d0000 lhi r13,((LC23_LF5)>>16)&0xffff 5965 000059a8 25adf730 addui r13,r13,(LC23_LF5)&0xffff 5966 000059ac afad0000 sw (r29),r13 5967 000059b0 0c005638 jal _printf 5968 000059b4 54000000 nop; not filled. 5969 000059b8 0c005618 jal _exitsim 5970 000059bc 54000000 nop; not filled. 5971 000059c0 23bd0008 addi r29,r29,#8 5972 000059c4 L204_LF5: 5973 000059c4 23bdfff8 addi r29,r29,#-8 5974 000059c8 afa20000 sw (r29),r2 5975 000059cc 0fffdcdc jal _MemorySetupPte 5976 000059d0 54000000 nop; not filled. 5977 000059d4 acc10060 sw 96(r6),r1 5978 000059d8 0fffd56c jal _MemoryAllocPage 5979 000059dc 54000000 nop; not filled. 5980 000059e0 00011020 add r2,r0,r1 5981 000059e4 23bd0008 addi r29,r29,#8 5982 000059e8 64410000 snei r1,r2,#0 5983 000059ec 14200028 bnez r1,L205_LF5 5984 000059f0 54000000 nop; not filled. 5985 000059f4 23bdfff8 addi r29,r29,#-8 5986 000059f8 3c0d0000 lhi r13,((LC24_LF5)>>16)&0xffff 5987 000059fc 25adf764 addui r13,r13,(LC24_LF5)&0xffff 5988 00005a00 afad0000 sw (r29),r13 5989 00005a04 0c0055e4 jal _printf 5990 00005a08 54000000 nop; not filled. 5991 00005a0c 0c0055c4 jal _exitsim 5992 00005a10 54000000 nop; not filled. 5993 00005a14 23bd0008 addi r29,r29,#8 5994 00005a18 L205_LF5: 5995 00005a18 50410010 slli r1,r2,#0x10 5996 00005a1c acc10008 sw 8(r6),r1 5997 00005a20 3428fe8c ori r8,r1,#65164 5998 00005a24 acc80004 sw 4(r6),r8 5999 00005a28 acc80000 sw (r6),r8 6000 00005a2c 23bdfff8 addi r29,r29,#-8 6001 00005a30 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6002 00005a34 2442fd60 addui r2,r2,(_debugstr)&0xffff 6003 00005a38 afa20000 sw (r29),r2 6004 00005a3c 200d0070 addi r13,r0,#112 6005 00005a40 afad0004 sw 4(r29),r13 6006 00005a44 0fffe3ec jal _dindex 6007 00005a48 54000000 nop; not filled. 6008 00005a4c 23bd0008 addi r29,r29,#8 6009 00005a50 64210000 snei r1,r1,#0 6010 00005a54 1420002c bnez r1,L207_LF5 6011 00005a58 54000000 nop; not filled. 6012 00005a5c 23bdfff8 addi r29,r29,#-8 6013 00005a60 afa20000 sw (r29),r2 6014 00005a64 200d002b addi r13,r0,#43 6015 00005a68 afad0004 sw 4(r29),r13 6016 00005a6c 0fffe3c4 jal _dindex 6017 00005a70 54000000 nop; not filled. 6018 00005a74 23bd0008 addi r29,r29,#8 6019 00005a78 64210000 snei r1,r1,#0 6020 00005a7c 10200040 beqz r1,L206_LF5 6021 00005a80 54000000 nop; not filled. 6022 00005a84 L207_LF5: 6023 00005a84 23bdffe8 addi r29,r29,#-24 6024 00005a88 3c0d0000 lhi r13,((LC25_LF5)>>16)&0xffff 6025 00005a8c 25adf7a0 addui r13,r13,(LC25_LF5)&0xffff 6026 00005a90 afad0000 sw (r29),r13 6027 00005a94 afa60004 sw 4(r29),r6 6028 00005a98 8ccd0008 lw r13,8(r6) 6029 00005a9c afad0008 sw 8(r29),r13 6030 00005aa0 8ccd0060 lw r13,96(r6) 6031 00005aa4 afad000c sw 12(r29),r13 6032 00005aa8 8cc10064 lw r1,100(r6) 6033 00005aac 50210010 slli r1,r1,#0x10 6034 00005ab0 afa10010 sw 16(r29),r1 6035 00005ab4 0c005534 jal _printf 6036 00005ab8 54000000 nop; not filled. 6037 00005abc 23bd0018 addi r29,r29,#24 6038 00005ac0 L206_LF5: 6039 00005ac0 200d0000 addi r13,r0,#0 6040 00005ac4 ad0d0028 sw 40(r8),r13 6041 00005ac8 20c10060 addi r1,r6,#96 6042 00005acc ad010138 sw 312(r8),r1 6043 00005ad0 8ccd0064 lw r13,100(r6) 6044 00005ad4 ad0d013c sw 316(r8),r13 6045 00005ad8 3c010010 lhi r1,#16 6046 00005adc 24210010 addui r1,r1,#16 6047 00005ae0 ad010140 sw 320(r8),r1 6048 00005ae4 64810000 snei r1,r4,#0 6049 00005ae8 10200640 beqz r1,L208_LF5 6050 00005aec 54000000 nop; not filled. 6051 00005af0 23bdfff8 addi r29,r29,#-8 6052 00005af4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6053 00005af8 2442fd60 addui r2,r2,(_debugstr)&0xffff 6054 00005afc afa20000 sw (r29),r2 6055 00005b00 200d0070 addi r13,r0,#112 6056 00005b04 afad0004 sw 4(r29),r13 6057 00005b08 0fffe328 jal _dindex 6058 00005b0c 54000000 nop; not filled. 6059 00005b10 23bd0008 addi r29,r29,#8 6060 00005b14 64210000 snei r1,r1,#0 6061 00005b18 1420002c bnez r1,L210_LF5 6062 00005b1c 54000000 nop; not filled. 6063 00005b20 23bdfff8 addi r29,r29,#-8 6064 00005b24 afa20000 sw (r29),r2 6065 00005b28 200d002b addi r13,r0,#43 6066 00005b2c afad0004 sw 4(r29),r13 6067 00005b30 0fffe300 jal _dindex 6068 00005b34 54000000 nop; not filled. 6069 00005b38 23bd0008 addi r29,r29,#8 6070 00005b3c 64210000 snei r1,r1,#0 6071 00005b40 10200024 beqz r1,L209_LF5 6072 00005b44 54000000 nop; not filled. 6073 00005b48 L210_LF5: 6074 00005b48 23bdfff8 addi r29,r29,#-8 6075 00005b4c 3c0d0000 lhi r13,((LC26_LF5)>>16)&0xffff 6076 00005b50 25adf7e0 addui r13,r13,(LC26_LF5)&0xffff 6077 00005b54 afad0000 sw (r29),r13 6078 00005b58 afac0004 sw 4(r29),r12 6079 00005b5c 0c00548c jal _printf 6080 00005b60 54000000 nop; not filled. 6081 00005b64 23bd0008 addi r29,r29,#8 6082 00005b68 L209_LF5: 6083 00005b68 23bdffe8 addi r29,r29,#-24 6084 00005b6c afac0000 sw (r29),r12 6085 00005b70 23c1fd6c addi r1,r30,#-660 6086 00005b74 afa10004 sw 4(r29),r1 6087 00005b78 23c1fd68 addi r1,r30,#-664 6088 00005b7c afa10008 sw 8(r29),r1 6089 00005b80 23c1fd64 addi r1,r30,#-668 6090 00005b84 afa1000c sw 12(r29),r1 6091 00005b88 23c1fd60 addi r1,r30,#-672 6092 00005b8c afa10010 sw 16(r29),r1 6093 00005b90 23c1fd5c addi r1,r30,#-676 6094 00005b94 afa10014 sw 20(r29),r1 6095 00005b98 0c0007b0 jal _ProcessGetCodeInfo 6096 00005b9c 54000000 nop; not filled. 6097 00005ba0 00012820 add r5,r0,r1 6098 00005ba4 23bd0018 addi r29,r29,#24 6099 00005ba8 68a10000 slti r1,r5,#0 6100 00005bac 102000bc beqz r1,L211_LF5 6101 00005bb0 54000000 nop; not filled. 6102 00005bb4 3c030000 lhi r3,((_freepcbs_LF5)>>16)&0xffff 6103 00005bb8 2463fe2c addui r3,r3,(_freepcbs_LF5)&0xffff 6104 00005bbc 20c20068 addi r2,r6,#104 6105 00005bc0 8c610004 lw r1,4(r3) 6106 00005bc4 acc30070 sw 112(r6),r3 6107 00005bc8 acc1006c sw 108(r6),r1 6108 00005bcc 8c2d0000 lw r13,(r1) 6109 00005bd0 ac4d0000 sw (r2),r13 6110 00005bd4 ac220000 sw (r1),r2 6111 00005bd8 8c410000 lw r1,(r2) 6112 00005bdc ac220004 sw 4(r1),r2 6113 00005be0 8c610008 lw r1,8(r3) 6114 00005be4 20210001 addi r1,r1,#1 6115 00005be8 ac610008 sw 8(r3),r1 6116 00005bec 20020000 addi r2,r0,#0 6117 00005bf0 8cc10064 lw r1,100(r6) 6118 00005bf4 0041082a slt r1,r2,r1 6119 00005bf8 10200038 beqz r1,L217_LF5 6120 00005bfc 54000000 nop; not filled. 6121 00005c00 00061820 add r3,r0,r6 6122 00005c04 L219_LF5: 6123 00005c04 23bdfff8 addi r29,r29,#-8 6124 00005c08 8c6d0060 lw r13,96(r3) 6125 00005c0c afad0000 sw (r29),r13 6126 00005c10 0fffdac8 jal _MemoryFreePte 6127 00005c14 54000000 nop; not filled. 6128 00005c18 23bd0008 addi r29,r29,#8 6129 00005c1c 20630004 addi r3,r3,#4 6130 00005c20 20420001 addi r2,r2,#1 6131 00005c24 8cc10064 lw r1,100(r6) 6132 00005c28 0041082a slt r1,r2,r1 6133 00005c2c 1420ffd4 bnez r1,L219_LF5 6134 00005c30 54000000 nop; not filled. 6135 00005c34 L217_LF5: 6136 00005c34 23bdfff8 addi r29,r29,#-8 6137 00005c38 94c10008 lhu r1,8(r6) 6138 00005c3c afa10000 sw (r29),r1 6139 00005c40 0fffd5cc jal _MemoryFreePage 6140 00005c44 54000000 nop; not filled. 6141 00005c48 23bd0008 addi r29,r29,#8 6142 00005c4c 8cc1000c lw r1,12(r6) 6143 00005c50 200dffc0 addi r13,r0,#-64 6144 00005c54 002d0824 and r1,r1,r13 6145 00005c58 34210001 ori r1,r1,#1 6146 00005c5c acc1000c sw 12(r6),r1 6147 00005c60 2001ffff addi r1,r0,#-1 6148 00005c64 080006a0 j L268_LF5 6149 00005c68 54000000 nop; not filled. 6150 00005c6c L211_LF5: 6151 00005c6c 23bdfff8 addi r29,r29,#-8 6152 00005c70 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6153 00005c74 2442fd60 addui r2,r2,(_debugstr)&0xffff 6154 00005c78 afa20000 sw (r29),r2 6155 00005c7c 200d0070 addi r13,r0,#112 6156 00005c80 afad0004 sw 4(r29),r13 6157 00005c84 0fffe1ac jal _dindex 6158 00005c88 54000000 nop; not filled. 6159 00005c8c 23bd0008 addi r29,r29,#8 6160 00005c90 64210000 snei r1,r1,#0 6161 00005c94 1420002c bnez r1,L223_LF5 6162 00005c98 54000000 nop; not filled. 6163 00005c9c 23bdfff8 addi r29,r29,#-8 6164 00005ca0 afa20000 sw (r29),r2 6165 00005ca4 200d002b addi r13,r0,#43 6166 00005ca8 afad0004 sw 4(r29),r13 6167 00005cac 0fffe184 jal _dindex 6168 00005cb0 54000000 nop; not filled. 6169 00005cb4 23bd0008 addi r29,r29,#8 6170 00005cb8 64210000 snei r1,r1,#0 6171 00005cbc 1020002c beqz r1,L222_LF5 6172 00005cc0 54000000 nop; not filled. 6173 00005cc4 L223_LF5: 6174 00005cc4 23bdfff0 addi r29,r29,#-16 6175 00005cc8 3c0d0000 lhi r13,((LC27_LF5)>>16)&0xffff 6176 00005ccc 25adf7f4 addui r13,r13,(LC27_LF5)&0xffff 6177 00005cd0 afad0000 sw (r29),r13 6178 00005cd4 afac0004 sw 4(r29),r12 6179 00005cd8 8fcdfd6c lw r13,-660(r30) 6180 00005cdc afad0008 sw 8(r29),r13 6181 00005ce0 0c005308 jal _printf 6182 00005ce4 54000000 nop; not filled. 6183 00005ce8 23bd0010 addi r29,r29,#16 6184 00005cec L222_LF5: 6185 00005cec 23bdfff8 addi r29,r29,#-8 6186 00005cf0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6187 00005cf4 2442fd60 addui r2,r2,(_debugstr)&0xffff 6188 00005cf8 afa20000 sw (r29),r2 6189 00005cfc 200d0070 addi r13,r0,#112 6190 00005d00 afad0004 sw 4(r29),r13 6191 00005d04 0fffe12c jal _dindex 6192 00005d08 54000000 nop; not filled. 6193 00005d0c 23bd0008 addi r29,r29,#8 6194 00005d10 64210000 snei r1,r1,#0 6195 00005d14 1420002c bnez r1,L225_LF5 6196 00005d18 54000000 nop; not filled. 6197 00005d1c 23bdfff8 addi r29,r29,#-8 6198 00005d20 afa20000 sw (r29),r2 6199 00005d24 200d002b addi r13,r0,#43 6200 00005d28 afad0004 sw 4(r29),r13 6201 00005d2c 0fffe104 jal _dindex 6202 00005d30 54000000 nop; not filled. 6203 00005d34 23bd0008 addi r29,r29,#8 6204 00005d38 64210000 snei r1,r1,#0 6205 00005d3c 10200034 beqz r1,L224_LF5 6206 00005d40 54000000 nop; not filled. 6207 00005d44 L225_LF5: 6208 00005d44 23bdfff0 addi r29,r29,#-16 6209 00005d48 3c0d0000 lhi r13,((LC28_LF5)>>16)&0xffff 6210 00005d4c 25adf810 addui r13,r13,(LC28_LF5)&0xffff 6211 00005d50 afad0000 sw (r29),r13 6212 00005d54 afac0004 sw 4(r29),r12 6213 00005d58 8fcdfd68 lw r13,-664(r30) 6214 00005d5c afad0008 sw 8(r29),r13 6215 00005d60 8fcdfd64 lw r13,-668(r30) 6216 00005d64 afad000c sw 12(r29),r13 6217 00005d68 0c005280 jal _printf 6218 00005d6c 54000000 nop; not filled. 6219 00005d70 23bd0010 addi r29,r29,#16 6220 00005d74 L224_LF5: 6221 00005d74 23bdfff8 addi r29,r29,#-8 6222 00005d78 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6223 00005d7c 2442fd60 addui r2,r2,(_debugstr)&0xffff 6224 00005d80 afa20000 sw (r29),r2 6225 00005d84 200d0070 addi r13,r0,#112 6226 00005d88 afad0004 sw 4(r29),r13 6227 00005d8c 0fffe0a4 jal _dindex 6228 00005d90 54000000 nop; not filled. 6229 00005d94 23bd0008 addi r29,r29,#8 6230 00005d98 64210000 snei r1,r1,#0 6231 00005d9c 1420002c bnez r1,L227_LF5 6232 00005da0 54000000 nop; not filled. 6233 00005da4 23bdfff8 addi r29,r29,#-8 6234 00005da8 afa20000 sw (r29),r2 6235 00005dac 200d002b addi r13,r0,#43 6236 00005db0 afad0004 sw 4(r29),r13 6237 00005db4 0fffe07c jal _dindex 6238 00005db8 54000000 nop; not filled. 6239 00005dbc 23bd0008 addi r29,r29,#8 6240 00005dc0 64210000 snei r1,r1,#0 6241 00005dc4 10200034 beqz r1,L226_LF5 6242 00005dc8 54000000 nop; not filled. 6243 00005dcc L227_LF5: 6244 00005dcc 23bdfff0 addi r29,r29,#-16 6245 00005dd0 3c0d0000 lhi r13,((LC29_LF5)>>16)&0xffff 6246 00005dd4 25adf838 addui r13,r13,(LC29_LF5)&0xffff 6247 00005dd8 afad0000 sw (r29),r13 6248 00005ddc afac0004 sw 4(r29),r12 6249 00005de0 8fcdfd60 lw r13,-672(r30) 6250 00005de4 afad0008 sw 8(r29),r13 6251 00005de8 8fcdfd5c lw r13,-676(r30) 6252 00005dec afad000c sw 12(r29),r13 6253 00005df0 0c0051f8 jal _printf 6254 00005df4 54000000 nop; not filled. 6255 00005df8 23bd0010 addi r29,r29,#16 6256 00005dfc L226_LF5: 6257 00005dfc 23c3ff90 addi r3,r30,#-112 6258 00005e00 23c7fd58 addi r7,r30,#-680 6259 00005e04 3c040000 lhi r4,((_debugstr)>>16)&0xffff 6260 00005e08 2484fd60 addui r4,r4,(_debugstr)&0xffff 6261 00005e0c L228_LF5: 6262 00005e0c 23bdfff0 addi r29,r29,#-16 6263 00005e10 afa50000 sw (r29),r5 6264 00005e14 afa30004 sw 4(r29),r3 6265 00005e18 afa70008 sw 8(r29),r7 6266 00005e1c 200d0064 addi r13,r0,#100 6267 00005e20 afad000c sw 12(r29),r13 6268 00005e24 0c000984 jal _ProcessGetFromFile 6269 00005e28 54000000 nop; not filled. 6270 00005e2c 00011020 add r2,r0,r1 6271 00005e30 23bd0010 addi r29,r29,#16 6272 00005e34 6c410000 sgti r1,r2,#0 6273 00005e38 102000b0 beqz r1,L229_LF5 6274 00005e3c 54000000 nop; not filled. 6275 00005e40 23bdfff8 addi r29,r29,#-8 6276 00005e44 afa40000 sw (r29),r4 6277 00005e48 200d0070 addi r13,r0,#112 6278 00005e4c afad0004 sw 4(r29),r13 6279 00005e50 0fffdfe0 jal _dindex 6280 00005e54 54000000 nop; not filled. 6281 00005e58 23bd0008 addi r29,r29,#8 6282 00005e5c 64210000 snei r1,r1,#0 6283 00005e60 1420002c bnez r1,L232_LF5 6284 00005e64 54000000 nop; not filled. 6285 00005e68 23bdfff8 addi r29,r29,#-8 6286 00005e6c afa40000 sw (r29),r4 6287 00005e70 200d002b addi r13,r0,#43 6288 00005e74 afad0004 sw 4(r29),r13 6289 00005e78 0fffdfb8 jal _dindex 6290 00005e7c 54000000 nop; not filled. 6291 00005e80 23bd0008 addi r29,r29,#8 6292 00005e84 64210000 snei r1,r1,#0 6293 00005e88 10200030 beqz r1,L231_LF5 6294 00005e8c 54000000 nop; not filled. 6295 00005e90 L232_LF5: 6296 00005e90 23bdfff0 addi r29,r29,#-16 6297 00005e94 3c0d0000 lhi r13,((LC30_LF5)>>16)&0xffff 6298 00005e98 25adf860 addui r13,r13,(LC30_LF5)&0xffff 6299 00005e9c afad0000 sw (r29),r13 6300 00005ea0 afa20004 sw 4(r29),r2 6301 00005ea4 8fc1fd58 lw r1,-680(r30) 6302 00005ea8 00220822 sub r1,r1,r2 6303 00005eac afa10008 sw 8(r29),r1 6304 00005eb0 0c005138 jal _printf 6305 00005eb4 54000000 nop; not filled. 6306 00005eb8 23bd0010 addi r29,r29,#16 6307 00005ebc L231_LF5: 6308 00005ebc 23bdfff0 addi r29,r29,#-16 6309 00005ec0 afa60000 sw (r29),r6 6310 00005ec4 afa30004 sw 4(r29),r3 6311 00005ec8 8fc1fd58 lw r1,-680(r30) 6312 00005ecc 00220822 sub r1,r1,r2 6313 00005ed0 afa10008 sw 8(r29),r1 6314 00005ed4 afa2000c sw 12(r29),r2 6315 00005ed8 0fffd580 jal _MemoryCopySystemToUser 6316 00005edc 54000000 nop; not filled. 6317 00005ee0 23bd0010 addi r29,r29,#16 6318 00005ee4 0bffff24 j L228_LF5 6319 00005ee8 54000000 nop; not filled. 6320 00005eec L229_LF5: 6321 00005eec 23bdfff8 addi r29,r29,#-8 6322 00005ef0 afa50000 sw (r29),r5 6323 00005ef4 0fffbbfc jal _FsClose 6324 00005ef8 54000000 nop; not filled. 6325 00005efc 200d0100 addi r13,r0,#256 6326 00005f00 ad0d012c sw 300(r8),r13 6327 00005f04 240dfc00 addui r13,r0,#64512 6328 00005f08 ad0d009c sw 156(r8),r13 6329 00005f0c 23bdfff8 addi r29,r29,#-8 6330 00005f10 afa60000 sw (r29),r6 6331 00005f14 afaa0004 sw 4(r29),r10 6332 00005f18 8d0d009c lw r13,156(r8) 6333 00005f1c afad0008 sw 8(r29),r13 6334 00005f20 200d03e0 addi r13,r0,#992 6335 00005f24 afad000c sw 12(r29),r13 6336 00005f28 0fffd530 jal _MemoryCopySystemToUser 6337 00005f2c 54000000 nop; not filled. 6338 00005f30 23bd0010 addi r29,r29,#16 6339 00005f34 65410000 snei r1,r10,#0 6340 00005f38 10200020 beqz r1,L234_LF5 6341 00005f3c 54000000 nop; not filled. 6342 00005f40 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 6343 00005f44 2421f658 addui r1,r1,(_str52_LF5)&0xffff 6344 00005f48 ac2a0000 sw (r1),r10 6345 00005f4c 3c010000 lhi r1,((_location53_LF5)>>16)&0xffff 6346 00005f50 2421f65c addui r1,r1,(_location53_LF5)&0xffff 6347 00005f54 200d0000 addi r13,r0,#0 6348 00005f58 ac2d0000 sw (r1),r13 6349 00005f5c L234_LF5: 6350 00005f5c 3c030000 lhi r3,((_location53_LF5)>>16)&0xffff 6351 00005f60 2463f65c addui r3,r3,(_location53_LF5)&0xffff 6352 00005f64 8c640000 lw r4,(r3) 6353 00005f68 3c010000 lhi r1,((_str52_LF5)>>16)&0xffff 6354 00005f6c 2421f658 addui r1,r1,(_str52_LF5)&0xffff 6355 00005f70 8c220000 lw r2,(r1) 6356 00005f74 00440820 add r1,r2,r4 6357 00005f78 90210000 lbu r1,(r1) 6358 00005f7c 64210000 snei r1,r1,#0 6359 00005f80 10200010 beqz r1,L236_LF5 6360 00005f84 54000000 nop; not filled. 6361 00005f88 6c810062 sgti r1,r4,#98 6362 00005f8c 10200020 beqz r1,L235_LF5 6363 00005f90 54000000 nop; not filled. 6364 00005f94 L236_LF5: 6365 00005f94 20030000 addi r3,r0,#0 6366 00005f98 08000054 j L233_LF5 6367 00005f9c 54000000 nop; not filled. 6368 00005fa0 L269_LF5: 6369 00005fa0 20410001 addi r1,r2,#1 6370 00005fa4 ac610000 sw (r3),r1 6371 00005fa8 08000040 j L238_LF5 6372 00005fac 54000000 nop; not filled. 6373 00005fb0 L235_LF5: 6374 00005fb0 70810063 slei r1,r4,#99 6375 00005fb4 10200034 beqz r1,L238_LF5 6376 00005fb8 54000000 nop; not filled. 6377 00005fbc 00022820 add r5,r0,r2 6378 00005fc0 L240_LF5: 6379 00005fc0 8c620000 lw r2,(r3) 6380 00005fc4 00a20820 add r1,r5,r2 6381 00005fc8 90210000 lbu r1,(r1) 6382 00005fcc 64210000 snei r1,r1,#0 6383 00005fd0 1020ffcc beqz r1,L269_LF5 6384 00005fd4 54000000 nop; not filled. 6385 00005fd8 20410001 addi r1,r2,#1 6386 00005fdc ac610000 sw (r3),r1 6387 00005fe0 70210063 slei r1,r1,#99 6388 00005fe4 1420ffd8 bnez r1,L240_LF5 6389 00005fe8 54000000 nop; not filled. 6390 00005fec L238_LF5: 6391 00005fec 00041820 add r3,r0,r4 6392 00005ff0 L233_LF5: 6393 00005ff0 2402fc00 addui r2,r0,#64512 6394 00005ff4 00620820 add r1,r3,r2 6395 00005ff8 afc1fd78 sw -648(r30),r1 6396 00005ffc 20070003 addi r7,r0,#3 6397 00006000 3c040000 lhi r4,((_location53_LF5)>>16)&0xffff 6398 00006004 2484f65c addui r4,r4,(_location53_LF5)&0xffff 6399 00006008 3c0b0000 lhi r11,((_str52_LF5)>>16)&0xffff 6400 0000600c 256bf658 addui r11,r11,(_str52_LF5)&0xffff 6401 00006010 00025020 add r10,r0,r2 6402 00006014 23c50004 addi r5,r30,#4 6403 00006018 L243_LF5: 6404 00006018 8c9f0000 lw r31,(r4) 6405 0000601c 8d630000 lw r3,(r11) 6406 00006020 007f0820 add r1,r3,r31 6407 00006024 90210000 lbu r1,(r1) 6408 00006028 64210000 snei r1,r1,#0 6409 0000602c 10200010 beqz r1,L249_LF5 6410 00006030 54000000 nop; not filled. 6411 00006034 6fe10062 sgti r1,r31,#98 6412 00006038 10200020 beqz r1,L248_LF5 6413 0000603c 54000000 nop; not filled. 6414 00006040 L249_LF5: 6415 00006040 20030000 addi r3,r0,#0 6416 00006044 08000054 j L246_LF5 6417 00006048 54000000 nop; not filled. 6418 0000604c L270_LF5: 6419 0000604c 20610001 addi r1,r3,#1 6420 00006050 ac810000 sw (r4),r1 6421 00006054 08000040 j L251_LF5 6422 00006058 54000000 nop; not filled. 6423 0000605c L248_LF5: 6424 0000605c 73e10063 slei r1,r31,#99 6425 00006060 10200034 beqz r1,L251_LF5 6426 00006064 54000000 nop; not filled. 6427 00006068 00031020 add r2,r0,r3 6428 0000606c L253_LF5: 6429 0000606c 8c830000 lw r3,(r4) 6430 00006070 00430820 add r1,r2,r3 6431 00006074 90210000 lbu r1,(r1) 6432 00006078 64210000 snei r1,r1,#0 6433 0000607c 1020ffcc beqz r1,L270_LF5 6434 00006080 54000000 nop; not filled. 6435 00006084 20610001 addi r1,r3,#1 6436 00006088 ac810000 sw (r4),r1 6437 0000608c 70210063 slei r1,r1,#99 6438 00006090 1420ffd8 bnez r1,L253_LF5 6439 00006094 54000000 nop; not filled. 6440 00006098 L251_LF5: 6441 00006098 001f1820 add r3,r0,r31 6442 0000609c L246_LF5: 6443 0000609c 006a0820 add r1,r3,r10 6444 000060a0 aca1fd78 sw -648(r5),r1 6445 000060a4 64610000 snei r1,r3,#0 6446 000060a8 10200014 beqz r1,L244_LF5 6447 000060ac 54000000 nop; not filled. 6448 000060b0 20a50004 addi r5,r5,#4 6449 000060b4 20e70001 addi r7,r7,#1 6450 000060b8 0bffff5c j L243_LF5 6451 000060bc 54000000 nop; not filled. 6452 000060c0 L244_LF5: 6453 000060c0 20e1fffe addi r1,r7,#-2 6454 000060c4 afc1fd70 sw -656(r30),r1 6455 000060c8 50210002 slli r1,r1,#0x2 6456 000060cc 01410822 sub r1,r10,r1 6457 000060d0 afc1fd74 sw -652(r30),r1 6458 000060d4 23bdfff0 addi r29,r29,#-16 6459 000060d8 afa60000 sw (r29),r6 6460 000060dc 23c1fd70 addi r1,r30,#-656 6461 000060e0 afa10004 sw 4(r29),r1 6462 000060e4 50e20002 slli r2,r7,#0x2 6463 000060e8 8d01009c lw r1,156(r8) 6464 000060ec 00220822 sub r1,r1,r2 6465 000060f0 afa10008 sw 8(r29),r1 6466 000060f4 afa2000c sw 12(r29),r2 6467 000060f8 0fffd360 jal _MemoryCopySystemToUser 6468 000060fc 54000000 nop; not filled. 6469 00006100 8d01009c lw r1,156(r8) 6470 00006104 00220822 sub r1,r1,r2 6471 00006108 ad01009c sw 156(r8),r1 6472 0000610c 8fcdfd6c lw r13,-660(r30) 6473 00006110 ad0d0128 sw 296(r8),r13 6474 00006114 8cc1000c lw r1,12(r6) 6475 00006118 34210200 ori r1,r1,#512 6476 0000611c acc1000c sw 12(r6),r1 6477 00006120 23bd0010 addi r29,r29,#16 6478 00006124 08000038 j L257_LF5 6479 00006128 54000000 nop; not filled. 6480 0000612c L208_LF5: 6481 0000612c 3c0d0000 lhi r13,((_ProcessExit_LF5)>>16)&0xffff 6482 00006130 25ad7ad4 addui r13,r13,(_ProcessExit_LF5)&0xffff 6483 00006134 ad0d00a4 sw 164(r8),r13 6484 00006138 8cc10008 lw r1,8(r6) 6485 0000613c 2421ffe0 addui r1,r1,#65504 6486 00006140 ad01009c sw 156(r8),r1 6487 00006144 ac2a0000 sw (r1),r10 6488 00006148 ad050128 sw 296(r8),r5 6489 0000614c 200d0140 addi r13,r0,#320 6490 00006150 ad0d012c sw 300(r8),r13 6491 00006154 8cc1000c lw r1,12(r6) 6492 00006158 34210100 ori r1,r1,#256 6493 0000615c acc1000c sw 12(r6),r1 6494 00006160 L257_LF5: 6495 00006160 23bdfff8 addi r29,r29,#-8 6496 00006164 200d000f addi r13,r0,#15 6497 00006168 afad0000 sw (r29),r13 6498 0000616c 0fffb118 jal _SetIntrs 6499 00006170 54000000 nop; not filled. 6500 00006174 23bd0008 addi r29,r29,#8 6501 00006178 3c030000 lhi r3,((_runQueue_LF5)>>16)&0xffff 6502 0000617c 2463fe38 addui r3,r3,(_runQueue_LF5)&0xffff 6503 00006180 8c620004 lw r2,4(r3) 6504 00006184 ad230008 sw 8(r9),r3 6505 00006188 ad220004 sw 4(r9),r2 6506 0000618c 8c4d0000 lw r13,(r2) 6507 00006190 ad2d0000 sw (r9),r13 6508 00006194 ac490000 sw (r2),r9 6509 00006198 8d220000 lw r2,(r9) 6510 0000619c ac490004 sw 4(r2),r9 6511 000061a0 8c620008 lw r2,8(r3) 6512 000061a4 20420001 addi r2,r2,#1 6513 000061a8 ac620008 sw 8(r3),r2 6514 000061ac 23bdfff8 addi r29,r29,#-8 6515 000061b0 afa10000 sw (r29),r1 6516 000061b4 0fffb0d0 jal _SetIntrs 6517 000061b8 54000000 nop; not filled. 6518 000061bc 23bd0008 addi r29,r29,#8 6519 000061c0 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 6520 000061c4 2421fe28 addui r1,r1,(_currentPCB)&0xffff 6521 000061c8 8c210000 lw r1,(r1) 6522 000061cc 64210000 snei r1,r1,#0 6523 000061d0 14200090 bnez r1,L263_LF5 6524 000061d4 54000000 nop; not filled. 6525 000061d8 23bdfff8 addi r29,r29,#-8 6526 000061dc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6527 000061e0 2442fd60 addui r2,r2,(_debugstr)&0xffff 6528 000061e4 afa20000 sw (r29),r2 6529 000061e8 200d0070 addi r13,r0,#112 6530 000061ec afad0004 sw 4(r29),r13 6531 000061f0 0fffdc40 jal _dindex 6532 000061f4 54000000 nop; not filled. 6533 000061f8 23bd0008 addi r29,r29,#8 6534 000061fc 64210000 snei r1,r1,#0 6535 00006200 1420002c bnez r1,L265_LF5 6536 00006204 54000000 nop; not filled. 6537 00006208 23bdfff8 addi r29,r29,#-8 6538 0000620c afa20000 sw (r29),r2 6539 00006210 200d002b addi r13,r0,#43 6540 00006214 afad0004 sw 4(r29),r13 6541 00006218 0fffdc18 jal _dindex 6542 0000621c 54000000 nop; not filled. 6543 00006220 23bd0008 addi r29,r29,#8 6544 00006224 64210000 snei r1,r1,#0 6545 00006228 1020002c beqz r1,L264_LF5 6546 0000622c 54000000 nop; not filled. 6547 00006230 L265_LF5: 6548 00006230 23bdfff0 addi r29,r29,#-16 6549 00006234 3c0d0000 lhi r13,((LC31_LF5)>>16)&0xffff 6550 00006238 25adf884 addui r13,r13,(LC31_LF5)&0xffff 6551 0000623c afad0000 sw (r29),r13 6552 00006240 afa60004 sw 4(r29),r6 6553 00006244 8ccd0000 lw r13,(r6) 6554 00006248 afad0008 sw 8(r29),r13 6555 0000624c 0c004d9c jal _printf 6556 00006250 54000000 nop; not filled. 6557 00006254 23bd0010 addi r29,r29,#16 6558 00006258 L264_LF5: 6559 00006258 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 6560 0000625c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 6561 00006260 ac260000 sw (r1),r6 6562 00006264 L263_LF5: 6563 00006264 23bdfff8 addi r29,r29,#-8 6564 00006268 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6565 0000626c 2442fd60 addui r2,r2,(_debugstr)&0xffff 6566 00006270 afa20000 sw (r29),r2 6567 00006274 200d0070 addi r13,r0,#112 6568 00006278 afad0004 sw 4(r29),r13 6569 0000627c 0fffdbb4 jal _dindex 6570 00006280 54000000 nop; not filled. 6571 00006284 23bd0008 addi r29,r29,#8 6572 00006288 64210000 snei r1,r1,#0 6573 0000628c 1420002c bnez r1,L267_LF5 6574 00006290 54000000 nop; not filled. 6575 00006294 23bdfff8 addi r29,r29,#-8 6576 00006298 afa20000 sw (r29),r2 6577 0000629c 200d002b addi r13,r0,#43 6578 000062a0 afad0004 sw 4(r29),r13 6579 000062a4 0fffdb8c jal _dindex 6580 000062a8 54000000 nop; not filled. 6581 000062ac 23bd0008 addi r29,r29,#8 6582 000062b0 64210000 snei r1,r1,#0 6583 000062b4 10200024 beqz r1,L266_LF5 6584 000062b8 54000000 nop; not filled. 6585 000062bc L267_LF5: 6586 000062bc 23bdfff8 addi r29,r29,#-8 6587 000062c0 3c0d0000 lhi r13,((LC32_LF5)>>16)&0xffff 6588 000062c4 25adf8b0 addui r13,r13,(LC32_LF5)&0xffff 6589 000062c8 afad0000 sw (r29),r13 6590 000062cc afac0004 sw 4(r29),r12 6591 000062d0 0c004d18 jal _printf 6592 000062d4 54000000 nop; not filled. 6593 000062d8 23bd0008 addi r29,r29,#8 6594 000062dc L266_LF5: 6595 000062dc 3c0d0000 lhi r13,((_pcbs_LF5)>>16)&0xffff 6596 000062e0 25adfe5c addui r13,r13,(_pcbs_LF5)&0xffff 6597 000062e4 00cd1022 sub r2,r6,r13 6598 000062e8 50410004 slli r1,r2,#0x4 6599 000062ec 00221020 add r2,r1,r2 6600 000062f0 50410008 slli r1,r2,#0x8 6601 000062f4 00411020 add r2,r2,r1 6602 000062f8 50410010 slli r1,r2,#0x10 6603 000062fc 00410820 add r1,r2,r1 6604 00006300 00010822 sub r1,r0,r1 6605 00006304 5c210003 srai r1,r1,#0x3 6606 00006308 L268_LF5: 6607 00006308 8fa20000 lw r2,0(r29) 6608 0000630c 8fa30004 lw r3,4(r29) 6609 00006310 8fa40008 lw r4,8(r29) 6610 00006314 8fa5000c lw r5,12(r29) 6611 00006318 8fa60010 lw r6,16(r29) 6612 0000631c 8fa70014 lw r7,20(r29) 6613 00006320 8fa80018 lw r8,24(r29) 6614 00006324 8fa9001c lw r9,28(r29) 6615 00006328 8faa0020 lw r10,32(r29) 6616 0000632c 8fab0024 lw r11,36(r29) 6617 00006330 8fac0028 lw r12,40(r29) 6618 00006334 8fad002c lw r13,44(r29) 6619 00006338 8fdffff8 lw r31,-8(r30) 6620 0000633c 001ee820 add r29,r0,r30 6621 00006340 8fdefffc lw r30,-4(r30) 6622 00006344 4be00000 jr r31 6623 00006348 54000000 nop 6624 0000634c .endproc _ProcessFork 6625 0000634c .data 6626 0000f8ca .align 2 6627 0000f8cc LC33_LF5: 6628 0000f8cc 50726f63 .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" 6628 0000f8d0 65737347 6628 0000f8d4 6574436f 6628 0000f8d8 6465496e 6628 0000f8dc 666f3a20 6628 0000f8e0 6f70656e 6628 0000f8e4 206f6620 6628 0000f8e8 25732066 6628 0000f8ec 61696c65 6628 0000f8f0 64202825 6628 0000f8f4 64292e0a 6628 0000f8f8 00 6629 0000f8f9 .align 2 6630 0000f8fc LC34_LF5: 6631 0000f8fc 46696c65 .ascii "File descriptor is now %d.\n\000" 6631 0000f900 20646573 6631 0000f904 63726970 6631 0000f908 746f7220 6631 0000f90c 6973206e 6631 0000f910 6f772025 6631 0000f914 642e0a00 6632 0000f918 .align 2 6633 0000f918 LC35_LF5: 6634 0000f918 50726f63 .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" 6634 0000f91c 65737347 6634 0000f920 6574436f 6634 0000f924 6465496e 6634 0000f928 666f3a20 6634 0000f92c 72656164 6634 0000f930 20676f74 6634 0000f934 20256420 6634 0000f938 286e6f74 6634 0000f93c 20256429 6634 0000f940 20627974 6634 0000f944 65732066 6634 0000f948 726f6d20 6634 0000f94c 25730a00 6635 0000f950 .align 2 6636 0000f950 LC36_LF5: 6637 0000f950 73746172 .ascii "start:\000" 6637 0000f954 743a00 6638 0000f957 .align 2 6639 0000f958 LC37_LF5: 6640 0000f958 50726f63 .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" 6640 0000f95c 65737347 6640 0000f960 6574436f 6640 0000f964 6465496e 6640 0000f968 666f3a20 6640 0000f96c 2573206d 6640 0000f970 69737369 6640 0000f974 6e672073 6640 0000f978 74617274 6640 0000f97c 206c696e 6640 0000f980 6520286e 6640 0000f984 6f742061 6640 0000f988 20444c58 6640 0000f98c 20657865 6640 0000f990 63757461 6640 0000f994 626c653f 6640 0000f998 290a00 6641 0000f99b .text 6642 0000634c .align 2 6643 0000634c .proc _ProcessGetCodeInfo 6644 0000634c .global _ProcessGetCodeInfo 6645 0000634c _ProcessGetCodeInfo: 6646 ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. 6647 0000634c afbefffc sw -4(r29),r30; push fp 6648 00006350 001df020 add r30,r0,r29; fp = sp 6649 00006354 afbffff8 sw -8(r29),r31; push ret addr 6650 00006358 2fbd00a8 subui r29,r29,#168; alloc local storage 6651 0000635c afa20000 sw 0(r29),r2 6652 00006360 afa30004 sw 4(r29),r3 6653 00006364 afa40008 sw 8(r29),r4 6654 00006368 afa5000c sw 12(r29),r5 6655 0000636c afa60010 sw 16(r29),r6 6656 00006370 afa70014 sw 20(r29),r7 6657 00006374 afa80018 sw 24(r29),r8 6658 00006378 afa9001c sw 28(r29),r9 6659 0000637c afaa0020 sw 32(r29),r10 6660 00006380 afab0024 sw 36(r29),r11 6661 00006384 afac0028 sw 40(r29),r12 6662 00006388 8fc60000 lw r6,(r30) 6663 0000638c 8fc70004 lw r7,4(r30) 6664 00006390 8fc80008 lw r8,8(r30) 6665 00006394 8fc9000c lw r9,12(r30) 6666 00006398 8fca0010 lw r10,16(r30) 6667 0000639c 8fcb0014 lw r11,20(r30) 6668 000063a0 23bdfff8 addi r29,r29,#-8 6669 000063a4 afa60000 sw (r29),r6 6670 000063a8 200c0001 addi r12,r0,#1 6671 000063ac afac0004 sw 4(r29),r12 6672 000063b0 0fffb3e4 jal _FsOpen 6673 000063b4 54000000 nop; not filled. 6674 000063b8 00011820 add r3,r0,r1 6675 000063bc 23bd0008 addi r29,r29,#8 6676 000063c0 68610000 slti r1,r3,#0 6677 000063c4 10200088 beqz r1,L279_LF5 6678 000063c8 54000000 nop; not filled. 6679 000063cc 23bdfff8 addi r29,r29,#-8 6680 000063d0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6681 000063d4 2442fd60 addui r2,r2,(_debugstr)&0xffff 6682 000063d8 afa20000 sw (r29),r2 6683 000063dc 200c0066 addi r12,r0,#102 6684 000063e0 afac0004 sw 4(r29),r12 6685 000063e4 0fffda4c jal _dindex 6686 000063e8 54000000 nop; not filled. 6687 000063ec 23bd0008 addi r29,r29,#8 6688 000063f0 64210000 snei r1,r1,#0 6689 000063f4 1420002c bnez r1,L281_LF5 6690 000063f8 54000000 nop; not filled. 6691 000063fc 23bdfff8 addi r29,r29,#-8 6692 00006400 afa20000 sw (r29),r2 6693 00006404 200c002b addi r12,r0,#43 6694 00006408 afac0004 sw 4(r29),r12 6695 0000640c 0fffda24 jal _dindex 6696 00006410 54000000 nop; not filled. 6697 00006414 23bd0008 addi r29,r29,#8 6698 00006418 64210000 snei r1,r1,#0 6699 0000641c 10200224 beqz r1,L288_LF5 6700 00006420 54000000 nop; not filled. 6701 00006424 L281_LF5: 6702 00006424 23bdfff0 addi r29,r29,#-16 6703 00006428 3c0c0000 lhi r12,((LC33_LF5)>>16)&0xffff 6704 0000642c 258cf8cc addui r12,r12,(LC33_LF5)&0xffff 6705 00006430 afac0000 sw (r29),r12 6706 00006434 afa60004 sw 4(r29),r6 6707 00006438 afa30008 sw 8(r29),r3 6708 0000643c 0c004bac jal _printf 6709 00006440 54000000 nop; not filled. 6710 00006444 23bd0010 addi r29,r29,#16 6711 00006448 080001f8 j L288_LF5 6712 0000644c 54000000 nop; not filled. 6713 00006450 L279_LF5: 6714 00006450 23bdfff8 addi r29,r29,#-8 6715 00006454 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6716 00006458 2442fd60 addui r2,r2,(_debugstr)&0xffff 6717 0000645c afa20000 sw (r29),r2 6718 00006460 200c0066 addi r12,r0,#102 6719 00006464 afac0004 sw 4(r29),r12 6720 00006468 0fffd9c8 jal _dindex 6721 0000646c 54000000 nop; not filled. 6722 00006470 23bd0008 addi r29,r29,#8 6723 00006474 64210000 snei r1,r1,#0 6724 00006478 1420002c bnez r1,L283_LF5 6725 0000647c 54000000 nop; not filled. 6726 00006480 23bdfff8 addi r29,r29,#-8 6727 00006484 afa20000 sw (r29),r2 6728 00006488 200c002b addi r12,r0,#43 6729 0000648c afac0004 sw 4(r29),r12 6730 00006490 0fffd9a0 jal _dindex 6731 00006494 54000000 nop; not filled. 6732 00006498 23bd0008 addi r29,r29,#8 6733 0000649c 64210000 snei r1,r1,#0 6734 000064a0 10200024 beqz r1,L282_LF5 6735 000064a4 54000000 nop; not filled. 6736 000064a8 L283_LF5: 6737 000064a8 23bdfff8 addi r29,r29,#-8 6738 000064ac 3c0c0000 lhi r12,((LC34_LF5)>>16)&0xffff 6739 000064b0 258cf8fc addui r12,r12,(LC34_LF5)&0xffff 6740 000064b4 afac0000 sw (r29),r12 6741 000064b8 afa30004 sw 4(r29),r3 6742 000064bc 0c004b2c jal _printf 6743 000064c0 54000000 nop; not filled. 6744 000064c4 23bd0008 addi r29,r29,#8 6745 000064c8 L282_LF5: 6746 000064c8 23bdfff0 addi r29,r29,#-16 6747 000064cc afa30000 sw (r29),r3 6748 000064d0 23c4ff90 addi r4,r30,#-112 6749 000064d4 afa40004 sw 4(r29),r4 6750 000064d8 200c0064 addi r12,r0,#100 6751 000064dc afac0008 sw 8(r29),r12 6752 000064e0 0fffb718 jal _FsRead 6753 000064e4 54000000 nop; not filled. 6754 000064e8 00012820 add r5,r0,r1 6755 000064ec 23bd0010 addi r29,r29,#16 6756 000064f0 64a10064 snei r1,r5,#100 6757 000064f4 102000a8 beqz r1,L284_LF5 6758 000064f8 54000000 nop; not filled. 6759 000064fc 23bdfff8 addi r29,r29,#-8 6760 00006500 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6761 00006504 2442fd60 addui r2,r2,(_debugstr)&0xffff 6762 00006508 afa20000 sw (r29),r2 6763 0000650c 200c0066 addi r12,r0,#102 6764 00006510 afac0004 sw 4(r29),r12 6765 00006514 0fffd91c jal _dindex 6766 00006518 54000000 nop; not filled. 6767 0000651c 23bd0008 addi r29,r29,#8 6768 00006520 64210000 snei r1,r1,#0 6769 00006524 1420002c bnez r1,L286_LF5 6770 00006528 54000000 nop; not filled. 6771 0000652c 23bdfff8 addi r29,r29,#-8 6772 00006530 afa20000 sw (r29),r2 6773 00006534 200c002b addi r12,r0,#43 6774 00006538 afac0004 sw 4(r29),r12 6775 0000653c 0fffd8f4 jal _dindex 6776 00006540 54000000 nop; not filled. 6777 00006544 23bd0008 addi r29,r29,#8 6778 00006548 64210000 snei r1,r1,#0 6779 0000654c 10200030 beqz r1,L285_LF5 6780 00006550 54000000 nop; not filled. 6781 00006554 L286_LF5: 6782 00006554 23bdfff0 addi r29,r29,#-16 6783 00006558 3c0c0000 lhi r12,((LC35_LF5)>>16)&0xffff 6784 0000655c 258cf918 addui r12,r12,(LC35_LF5)&0xffff 6785 00006560 afac0000 sw (r29),r12 6786 00006564 afa50004 sw 4(r29),r5 6787 00006568 200c0064 addi r12,r0,#100 6788 0000656c afac0008 sw 8(r29),r12 6789 00006570 afa6000c sw 12(r29),r6 6790 00006574 0c004a74 jal _printf 6791 00006578 54000000 nop; not filled. 6792 0000657c 23bd0010 addi r29,r29,#16 6793 00006580 L285_LF5: 6794 00006580 23bdfff8 addi r29,r29,#-8 6795 00006584 afa30000 sw (r29),r3 6796 00006588 0fffb568 jal _FsClose 6797 0000658c 54000000 nop; not filled. 6798 00006590 2001ffff addi r1,r0,#-1 6799 00006594 23bd0008 addi r29,r29,#8 6800 00006598 080001d0 j L278_LF5 6801 0000659c 54000000 nop; not filled. 6802 000065a0 L284_LF5: 6803 000065a0 23bdfff8 addi r29,r29,#-8 6804 000065a4 afa40000 sw (r29),r4 6805 000065a8 3c010000 lhi r1,((LC36_LF5)>>16)&0xffff 6806 000065ac 2421f950 addui r1,r1,(LC36_LF5)&0xffff 6807 000065b0 afa10004 sw 4(r29),r1 6808 000065b4 0fffd664 jal _dstrstr 6809 000065b8 54000000 nop; not filled. 6810 000065bc 23bd0008 addi r29,r29,#8 6811 000065c0 64210000 snei r1,r1,#0 6812 000065c4 14200088 bnez r1,L287_LF5 6813 000065c8 54000000 nop; not filled. 6814 000065cc 23bdfff8 addi r29,r29,#-8 6815 000065d0 3c020000 lhi r2,((_debugstr)>>16)&0xffff 6816 000065d4 2442fd60 addui r2,r2,(_debugstr)&0xffff 6817 000065d8 afa20000 sw (r29),r2 6818 000065dc 200c0066 addi r12,r0,#102 6819 000065e0 afac0004 sw 4(r29),r12 6820 000065e4 0fffd84c jal _dindex 6821 000065e8 54000000 nop; not filled. 6822 000065ec 23bd0008 addi r29,r29,#8 6823 000065f0 64210000 snei r1,r1,#0 6824 000065f4 1420002c bnez r1,L289_LF5 6825 000065f8 54000000 nop; not filled. 6826 000065fc 23bdfff8 addi r29,r29,#-8 6827 00006600 afa20000 sw (r29),r2 6828 00006604 200c002b addi r12,r0,#43 6829 00006608 afac0004 sw 4(r29),r12 6830 0000660c 0fffd824 jal _dindex 6831 00006610 54000000 nop; not filled. 6832 00006614 23bd0008 addi r29,r29,#8 6833 00006618 64210000 snei r1,r1,#0 6834 0000661c 10200024 beqz r1,L288_LF5 6835 00006620 54000000 nop; not filled. 6836 00006624 L289_LF5: 6837 00006624 23bdfff8 addi r29,r29,#-8 6838 00006628 3c0c0000 lhi r12,((LC37_LF5)>>16)&0xffff 6839 0000662c 258cf958 addui r12,r12,(LC37_LF5)&0xffff 6840 00006630 afac0000 sw (r29),r12 6841 00006634 afa60004 sw 4(r29),r6 6842 00006638 0c0049b0 jal _printf 6843 0000663c 54000000 nop; not filled. 6844 00006640 23bd0008 addi r29,r29,#8 6845 00006644 L288_LF5: 6846 00006644 2001ffff addi r1,r0,#-1 6847 00006648 08000120 j L278_LF5 6848 0000664c 54000000 nop; not filled. 6849 00006650 L287_LF5: 6850 00006650 23bdfff8 addi r29,r29,#-8 6851 00006654 afa40000 sw (r29),r4 6852 00006658 200c003a addi r12,r0,#58 6853 0000665c afac0004 sw 4(r29),r12 6854 00006660 0fffd7d0 jal _dindex 6855 00006664 54000000 nop; not filled. 6856 00006668 20210001 addi r1,r1,#1 6857 0000666c afc1ff8c sw -116(r30),r1 6858 00006670 23bdfff8 addi r29,r29,#-8 6859 00006674 afa10000 sw (r29),r1 6860 00006678 23c2ff8c addi r2,r30,#-116 6861 0000667c afa20004 sw 4(r29),r2 6862 00006680 200c0010 addi r12,r0,#16 6863 00006684 afac0008 sw 8(r29),r12 6864 00006688 0fffd930 jal _dstrtol 6865 0000668c 54000000 nop; not filled. 6866 00006690 ace10000 sw (r7),r1 6867 00006694 8fccff8c lw r12,-116(r30) 6868 00006698 afac0000 sw (r29),r12 6869 0000669c afa20004 sw 4(r29),r2 6870 000066a0 200c0010 addi r12,r0,#16 6871 000066a4 afac0008 sw 8(r29),r12 6872 000066a8 0fffd910 jal _dstrtol 6873 000066ac 54000000 nop; not filled. 6874 000066b0 8fccff8c lw r12,-116(r30) 6875 000066b4 afac0000 sw (r29),r12 6876 000066b8 afa20004 sw 4(r29),r2 6877 000066bc 200c0010 addi r12,r0,#16 6878 000066c0 afac0008 sw 8(r29),r12 6879 000066c4 0fffd8f4 jal _dstrtol 6880 000066c8 54000000 nop; not filled. 6881 000066cc ad010000 sw (r8),r1 6882 000066d0 8fccff8c lw r12,-116(r30) 6883 000066d4 afac0000 sw (r29),r12 6884 000066d8 afa20004 sw 4(r29),r2 6885 000066dc 200c0010 addi r12,r0,#16 6886 000066e0 afac0008 sw 8(r29),r12 6887 000066e4 0fffd8d4 jal _dstrtol 6888 000066e8 54000000 nop; not filled. 6889 000066ec ad210000 sw (r9),r1 6890 000066f0 8fccff8c lw r12,-116(r30) 6891 000066f4 afac0000 sw (r29),r12 6892 000066f8 afa20004 sw 4(r29),r2 6893 000066fc 200c0010 addi r12,r0,#16 6894 00006700 afac0008 sw 8(r29),r12 6895 00006704 0fffd8b4 jal _dstrtol 6896 00006708 54000000 nop; not filled. 6897 0000670c ad410000 sw (r10),r1 6898 00006710 8fccff8c lw r12,-116(r30) 6899 00006714 afac0000 sw (r29),r12 6900 00006718 afa20004 sw 4(r29),r2 6901 0000671c 200c0010 addi r12,r0,#16 6902 00006720 afac0008 sw 8(r29),r12 6903 00006724 0fffd894 jal _dstrtol 6904 00006728 54000000 nop; not filled. 6905 0000672c ad610000 sw (r11),r1 6906 00006730 afa40000 sw (r29),r4 6907 00006734 200c000a addi r12,r0,#10 6908 00006738 afac0004 sw 4(r29),r12 6909 0000673c 0fffd6f4 jal _dindex 6910 00006740 54000000 nop; not filled. 6911 00006744 23c2ff8f addi r2,r30,#-113 6912 00006748 00220822 sub r1,r1,r2 6913 0000674c afa30000 sw (r29),r3 6914 00006750 afa10004 sw 4(r29),r1 6915 00006754 200c0000 addi r12,r0,#0 6916 00006758 afac0008 sw 8(r29),r12 6917 0000675c 0fffb694 jal _FsSeek 6918 00006760 54000000 nop; not filled. 6919 00006764 00030820 add r1,r0,r3 6920 00006768 23bd0010 addi r29,r29,#16 6921 0000676c L278_LF5: 6922 0000676c 8fa20000 lw r2,0(r29) 6923 00006770 8fa30004 lw r3,4(r29) 6924 00006774 8fa40008 lw r4,8(r29) 6925 00006778 8fa5000c lw r5,12(r29) 6926 0000677c 8fa60010 lw r6,16(r29) 6927 00006780 8fa70014 lw r7,20(r29) 6928 00006784 8fa80018 lw r8,24(r29) 6929 00006788 8fa9001c lw r9,28(r29) 6930 0000678c 8faa0020 lw r10,32(r29) 6931 00006790 8fab0024 lw r11,36(r29) 6932 00006794 8fac0028 lw r12,40(r29) 6933 00006798 8fdffff8 lw r31,-8(r30) 6934 0000679c 001ee820 add r29,r0,r30 6935 000067a0 8fdefffc lw r30,-4(r30) 6936 000067a4 4be00000 jr r31 6937 000067a8 54000000 nop 6938 000067ac .endproc _ProcessGetCodeInfo 6939 000067ac .data 6940 0000f99b .align 2 6941 0000f99c LC38_LF5: 6942 0000f99c 476f7420 .ascii "Got %d bytes at offset %d ...\000" 6942 0000f9a0 25642062 6942 0000f9a4 79746573 6942 0000f9a8 20617420 6942 0000f9ac 6f666673 6942 0000f9b0 65742025 6942 0000f9b4 64202e2e 6942 0000f9b8 2e00 6943 0000f9ba .align 2 6944 0000f9bc LC39_LF5: 6945 0000f9bc 20746572 .ascii " terminated at %d.\n\000" 6945 0000f9c0 6d696e61 6945 0000f9c4 74656420 6945 0000f9c8 61742025 6945 0000f9cc 642e0a00 6946 0000f9d0 .align 2 6947 0000f9d0 LC40_LF5: 6948 0000f9d0 42756666 .ascii "Buffer is \'%s\'\n\000" 6948 0000f9d4 65722069 6948 0000f9d8 73202725 6948 0000f9dc 73270a00 6949 0000f9e0 .align 2 6950 0000f9e0 LC41_LF5: 6951 0000f9e0 4e657720 .ascii "New address is 0x%x.\n\000" 6951 0000f9e4 61646472 6951 0000f9e8 65737320 6951 0000f9ec 69732030 6951 0000f9f0 7825782e 6951 0000f9f4 0a00 6952 0000f9f6 .align 2 6953 0000f9f8 LC42_LF5: 6954 0000f9f8 5365656b .ascii "Seeking to %d and returning %d bytes!\n\000" 6954 0000f9fc 696e6720 6954 0000fa00 746f2025 6954 0000fa04 6420616e 6954 0000fa08 64207265 6954 0000fa0c 7475726e 6954 0000fa10 696e6720 6954 0000fa14 25642062 6954 0000fa18 79746573 6954 0000fa1c 210a00 6955 0000fa1f .text 6956 000067ac .align 2 6957 000067ac .proc _ProcessGetFromFile 6958 000067ac .global _ProcessGetFromFile 6959 000067ac _ProcessGetFromFile: 6960 ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. 6961 000067ac afbefffc sw -4(r29),r30; push fp 6962 000067b0 001df020 add r30,r0,r29; fp = sp 6963 000067b4 afbffff8 sw -8(r29),r31; push ret addr 6964 000067b8 2fbd0110 subui r29,r29,#272; alloc local storage 6965 000067bc afa20000 sw 0(r29),r2 6966 000067c0 afa30004 sw 4(r29),r3 6967 000067c4 afa40008 sw 8(r29),r4 6968 000067c8 afa5000c sw 12(r29),r5 6969 000067cc afa60010 sw 16(r29),r6 6970 000067d0 afa70014 sw 20(r29),r7 6971 000067d4 afa80018 sw 24(r29),r8 6972 000067d8 afa9001c sw 28(r29),r9 6973 000067dc afaa0020 sw 32(r29),r10 6974 000067e0 afab0024 sw 36(r29),r11 6975 000067e4 afac0028 sw 40(r29),r12 6976 000067e8 8fca0000 lw r10,(r30) 6977 000067ec 8fc70008 lw r7,8(r30) 6978 000067f0 8fc2000c lw r2,12(r30) 6979 000067f4 8fcb0004 lw r11,4(r30) 6980 000067f8 23c3ff28 addi r3,r30,#-216 6981 000067fc afc3ff24 sw -220(r30),r3 6982 00006800 23bdfff0 addi r29,r29,#-16 6983 00006804 afaa0000 sw (r29),r10 6984 00006808 200c0000 addi r12,r0,#0 6985 0000680c afac0004 sw 4(r29),r12 6986 00006810 200c0001 addi r12,r0,#1 6987 00006814 afac0008 sw 8(r29),r12 6988 00006818 0fffb5d8 jal _FsSeek 6989 0000681c 54000000 nop; not filled. 6990 00006820 00014820 add r9,r0,r1 6991 00006824 50420001 slli r2,r2,#0x1 6992 00006828 23bd0010 addi r29,r29,#16 6993 0000682c 6c4100c8 sgtui r1,r2,#200 6994 00006830 10200008 beqz r1,L292_LF5 6995 00006834 54000000 nop; not filled. 6996 00006838 200200c8 addi r2,r0,#200 6997 0000683c L292_LF5: 6998 0000683c 23bdfff0 addi r29,r29,#-16 6999 00006840 afaa0000 sw (r29),r10 7000 00006844 afa30004 sw 4(r29),r3 7001 00006848 afa20008 sw 8(r29),r2 7002 0000684c 0fffb3ac jal _FsRead 7003 00006850 54000000 nop; not filled. 7004 00006854 00012820 add r5,r0,r1 7005 00006858 23bd0010 addi r29,r29,#16 7006 0000685c 70a10000 slei r1,r5,#0 7007 00006860 10200010 beqz r1,L293_LF5 7008 00006864 54000000 nop; not filled. 7009 00006868 20010000 addi r1,r0,#0 7010 0000686c 08000594 j L347_LF5 7011 00006870 54000000 nop; not filled. 7012 00006874 L293_LF5: 7013 00006874 23bdfff8 addi r29,r29,#-8 7014 00006878 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7015 0000687c 2442fd60 addui r2,r2,(_debugstr)&0xffff 7016 00006880 afa20000 sw (r29),r2 7017 00006884 200c0066 addi r12,r0,#102 7018 00006888 afac0004 sw 4(r29),r12 7019 0000688c 0fffd5a4 jal _dindex 7020 00006890 54000000 nop; not filled. 7021 00006894 23bd0008 addi r29,r29,#8 7022 00006898 64210000 snei r1,r1,#0 7023 0000689c 1420002c bnez r1,L295_LF5 7024 000068a0 54000000 nop; not filled. 7025 000068a4 23bdfff8 addi r29,r29,#-8 7026 000068a8 afa20000 sw (r29),r2 7027 000068ac 200c002b addi r12,r0,#43 7028 000068b0 afac0004 sw 4(r29),r12 7029 000068b4 0fffd57c jal _dindex 7030 000068b8 54000000 nop; not filled. 7031 000068bc 23bd0008 addi r29,r29,#8 7032 000068c0 64210000 snei r1,r1,#0 7033 000068c4 10200028 beqz r1,L294_LF5 7034 000068c8 54000000 nop; not filled. 7035 000068cc L295_LF5: 7036 000068cc 23bdfff0 addi r29,r29,#-16 7037 000068d0 3c0c0000 lhi r12,((LC38_LF5)>>16)&0xffff 7038 000068d4 258cf99c addui r12,r12,(LC38_LF5)&0xffff 7039 000068d8 afac0000 sw (r29),r12 7040 000068dc afa50004 sw 4(r29),r5 7041 000068e0 afa90008 sw 8(r29),r9 7042 000068e4 0c004704 jal _printf 7043 000068e8 54000000 nop; not filled. 7044 000068ec 23bd0010 addi r29,r29,#16 7045 000068f0 L294_LF5: 7046 000068f0 20a5ffff addi r5,r5,#-1 7047 000068f4 23c1ff28 addi r1,r30,#-216 7048 000068f8 00251020 add r2,r1,r5 7049 000068fc 0800000c j L350_LF5 7050 00006900 54000000 nop; not filled. 7051 00006904 L296_LF5: 7052 00006904 2042ffff addi r2,r2,#-1 7053 00006908 20a5ffff addi r5,r5,#-1 7054 0000690c L350_LF5: 7055 0000690c 90410000 lbu r1,(r2) 7056 00006910 6421000a snei r1,r1,#10 7057 00006914 1420ffec bnez r1,L296_LF5 7058 00006918 54000000 nop; not filled. 7059 0000691c 23c1ff29 addi r1,r30,#-215 7060 00006920 00250820 add r1,r1,r5 7061 00006924 200c005a addi r12,r0,(#0x5a)&0xff 7062 00006928 a02c0000 sb (r1),r12 7063 0000692c 23c1ff2a addi r1,r30,#-214 7064 00006930 00250820 add r1,r1,r5 7065 00006934 200c0000 addi r12,r0,(#0x0)&0xff 7066 00006938 a02c0000 sb (r1),r12 7067 0000693c 23bdfff8 addi r29,r29,#-8 7068 00006940 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7069 00006944 2442fd60 addui r2,r2,(_debugstr)&0xffff 7070 00006948 afa20000 sw (r29),r2 7071 0000694c 200c0066 addi r12,r0,#102 7072 00006950 afac0004 sw 4(r29),r12 7073 00006954 0fffd4dc jal _dindex 7074 00006958 54000000 nop; not filled. 7075 0000695c 23bd0008 addi r29,r29,#8 7076 00006960 64210000 snei r1,r1,#0 7077 00006964 1420002c bnez r1,L301_LF5 7078 00006968 54000000 nop; not filled. 7079 0000696c 23bdfff8 addi r29,r29,#-8 7080 00006970 afa20000 sw (r29),r2 7081 00006974 200c002b addi r12,r0,#43 7082 00006978 afac0004 sw 4(r29),r12 7083 0000697c 0fffd4b4 jal _dindex 7084 00006980 54000000 nop; not filled. 7085 00006984 23bd0008 addi r29,r29,#8 7086 00006988 64210000 snei r1,r1,#0 7087 0000698c 10200024 beqz r1,L300_LF5 7088 00006990 54000000 nop; not filled. 7089 00006994 L301_LF5: 7090 00006994 23bdfff8 addi r29,r29,#-8 7091 00006998 3c0c0000 lhi r12,((LC39_LF5)>>16)&0xffff 7092 0000699c 258cf9bc addui r12,r12,(LC39_LF5)&0xffff 7093 000069a0 afac0000 sw (r29),r12 7094 000069a4 afa50004 sw 4(r29),r5 7095 000069a8 0c004640 jal _printf 7096 000069ac 54000000 nop; not filled. 7097 000069b0 23bd0008 addi r29,r29,#8 7098 000069b4 L300_LF5: 7099 000069b4 23bdfff8 addi r29,r29,#-8 7100 000069b8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7101 000069bc 2442fd60 addui r2,r2,(_debugstr)&0xffff 7102 000069c0 afa20000 sw (r29),r2 7103 000069c4 200c0066 addi r12,r0,#102 7104 000069c8 afac0004 sw 4(r29),r12 7105 000069cc 0fffd464 jal _dindex 7106 000069d0 54000000 nop; not filled. 7107 000069d4 23bd0008 addi r29,r29,#8 7108 000069d8 64210000 snei r1,r1,#0 7109 000069dc 1420002c bnez r1,L303_LF5 7110 000069e0 54000000 nop; not filled. 7111 000069e4 23bdfff8 addi r29,r29,#-8 7112 000069e8 afa20000 sw (r29),r2 7113 000069ec 200c002b addi r12,r0,#43 7114 000069f0 afac0004 sw 4(r29),r12 7115 000069f4 0fffd43c jal _dindex 7116 000069f8 54000000 nop; not filled. 7117 000069fc 23bd0008 addi r29,r29,#8 7118 00006a00 64210000 snei r1,r1,#0 7119 00006a04 10200028 beqz r1,L302_LF5 7120 00006a08 54000000 nop; not filled. 7121 00006a0c L303_LF5: 7122 00006a0c 23bdfff8 addi r29,r29,#-8 7123 00006a10 3c0c0000 lhi r12,((LC40_LF5)>>16)&0xffff 7124 00006a14 258cf9d0 addui r12,r12,(LC40_LF5)&0xffff 7125 00006a18 afac0000 sw (r29),r12 7126 00006a1c 23c1ff28 addi r1,r30,#-216 7127 00006a20 afa10004 sw 4(r29),r1 7128 00006a24 0c0045c4 jal _printf 7129 00006a28 54000000 nop; not filled. 7130 00006a2c 23bd0008 addi r29,r29,#8 7131 00006a30 L302_LF5: 7132 00006a30 20050000 addi r5,r0,#0 7133 00006a34 3c080000 lhi r8,((_debugstr)>>16)&0xffff 7134 00006a38 2508fd60 addui r8,r8,(_debugstr)&0xffff 7135 00006a3c L304_LF5: 7136 00006a3c 23bdfff8 addi r29,r29,#-8 7137 00006a40 8fccff24 lw r12,-220(r30) 7138 00006a44 afac0000 sw (r29),r12 7139 00006a48 200c005a addi r12,r0,#90 7140 00006a4c afac0004 sw 4(r29),r12 7141 00006a50 0fffd3e0 jal _dindex 7142 00006a54 54000000 nop; not filled. 7143 00006a58 23bd0008 addi r29,r29,#8 7144 00006a5c 64210000 snei r1,r1,#0 7145 00006a60 102002ec beqz r1,L305_LF5 7146 00006a64 54000000 nop; not filled. 7147 00006a68 23bdfff8 addi r29,r29,#-8 7148 00006a6c 8fccff24 lw r12,-220(r30) 7149 00006a70 afac0000 sw (r29),r12 7150 00006a74 200c003a addi r12,r0,#58 7151 00006a78 afac0004 sw 4(r29),r12 7152 00006a7c 0fffd3b4 jal _dindex 7153 00006a80 54000000 nop; not filled. 7154 00006a84 23bd0008 addi r29,r29,#8 7155 00006a88 64210000 snei r1,r1,#0 7156 00006a8c 102002c0 beqz r1,L305_LF5 7157 00006a90 54000000 nop; not filled. 7158 00006a94 8fc2ff24 lw r2,-220(r30) 7159 00006a98 90410000 lbu r1,(r2) 7160 00006a9c 6421003a snei r1,r1,#58 7161 00006aa0 102000b8 beqz r1,L349_LF5 7162 00006aa4 54000000 nop; not filled. 7163 00006aa8 6ca10000 sgti r1,r5,#0 7164 00006aac 142002a0 bnez r1,L305_LF5 7165 00006ab0 54000000 nop; not filled. 7166 00006ab4 23bdfff0 addi r29,r29,#-16 7167 00006ab8 afa20000 sw (r29),r2 7168 00006abc 23c1ff24 addi r1,r30,#-220 7169 00006ac0 afa10004 sw 4(r29),r1 7170 00006ac4 200c0010 addi r12,r0,#16 7171 00006ac8 afac0008 sw 8(r29),r12 7172 00006acc 0fffd4ec jal _dstrtol 7173 00006ad0 54000000 nop; not filled. 7174 00006ad4 ace10000 sw (r7),r1 7175 00006ad8 afa80000 sw (r29),r8 7176 00006adc 200c0066 addi r12,r0,#102 7177 00006ae0 afac0004 sw 4(r29),r12 7178 00006ae4 0fffd34c jal _dindex 7179 00006ae8 54000000 nop; not filled. 7180 00006aec 23bd0010 addi r29,r29,#16 7181 00006af0 64210000 snei r1,r1,#0 7182 00006af4 1420002c bnez r1,L311_LF5 7183 00006af8 54000000 nop; not filled. 7184 00006afc 23bdfff8 addi r29,r29,#-8 7185 00006b00 afa80000 sw (r29),r8 7186 00006b04 200c002b addi r12,r0,#43 7187 00006b08 afac0004 sw 4(r29),r12 7188 00006b0c 0fffd324 jal _dindex 7189 00006b10 54000000 nop; not filled. 7190 00006b14 23bd0008 addi r29,r29,#8 7191 00006b18 64210000 snei r1,r1,#0 7192 00006b1c 10200028 beqz r1,L308_LF5 7193 00006b20 54000000 nop; not filled. 7194 00006b24 L311_LF5: 7195 00006b24 23bdfff8 addi r29,r29,#-8 7196 00006b28 3c0c0000 lhi r12,((LC41_LF5)>>16)&0xffff 7197 00006b2c 258cf9e0 addui r12,r12,(LC41_LF5)&0xffff 7198 00006b30 afac0000 sw (r29),r12 7199 00006b34 8ce10000 lw r1,(r7) 7200 00006b38 afa10004 sw 4(r29),r1 7201 00006b3c 0c0044ac jal _printf 7202 00006b40 54000000 nop; not filled. 7203 00006b44 23bd0008 addi r29,r29,#8 7204 00006b48 L308_LF5: 7205 00006b48 8fc1ff24 lw r1,-220(r30) 7206 00006b4c 90210000 lbu r1,(r1) 7207 00006b50 6421003a snei r1,r1,#58 7208 00006b54 142001f8 bnez r1,L305_LF5 7209 00006b58 54000000 nop; not filled. 7210 00006b5c L349_LF5: 7211 00006b5c 8fc1ff24 lw r1,-220(r30) 7212 00006b60 20210001 addi r1,r1,#1 7213 00006b64 afc1ff24 sw -220(r30),r1 7214 00006b68 00ab3020 add r6,r5,r11 7215 00006b6c L315_LF5: 7216 00006b6c 8fc1ff24 lw r1,-220(r30) 7217 00006b70 08000010 j L351_LF5 7218 00006b74 54000000 nop; not filled. 7219 00006b78 L318_LF5: 7220 00006b78 8fc1ff24 lw r1,-220(r30) 7221 00006b7c 20210001 addi r1,r1,#1 7222 00006b80 afc1ff24 sw -220(r30),r1 7223 00006b84 L351_LF5: 7224 00006b84 903f0000 lbu r31,(r1) 7225 00006b88 63e10020 seqi r1,r31,#32 7226 00006b8c 1420ffe8 bnez r1,L318_LF5 7227 00006b90 54000000 nop; not filled. 7228 00006b94 63e10009 seqi r1,r31,#9 7229 00006b98 1420ffdc bnez r1,L318_LF5 7230 00006b9c 54000000 nop; not filled. 7231 00006ba0 8fc2ff24 lw r2,-220(r30) 7232 00006ba4 805f0000 lb r31,(r2) 7233 00006ba8 33e300ff andi r3,r31,#0x00ff 7234 00006bac 6061000a seqi r1,r3,#10 7235 00006bb0 10200014 beqz r1,L320_LF5 7236 00006bb4 54000000 nop; not filled. 7237 00006bb8 20410001 addi r1,r2,#1 7238 00006bbc afc1ff24 sw -220(r30),r1 7239 00006bc0 0bfffe78 j L304_LF5 7240 00006bc4 54000000 nop; not filled. 7241 00006bc8 L320_LF5: 7242 00006bc8 20020000 addi r2,r0,#0 7243 00006bcc 23e1ffd0 addi r1,r31,#-48 7244 00006bd0 302100ff andi r1,r1,#0x00ff 7245 00006bd4 70210009 sleui r1,r1,#9 7246 00006bd8 14200024 bnez r1,L326_LF5 7247 00006bdc 54000000 nop; not filled. 7248 00006be0 23e1ff9f addi r1,r31,#-97 7249 00006be4 302100ff andi r1,r1,#0x00ff 7250 00006be8 70210005 sleui r1,r1,#5 7251 00006bec 14200010 bnez r1,L326_LF5 7252 00006bf0 54000000 nop; not filled. 7253 00006bf4 64610041 snei r1,r3,#65 7254 00006bf8 14200008 bnez r1,L325_LF5 7255 00006bfc 54000000 nop; not filled. 7256 00006c00 L326_LF5: 7257 00006c00 20020001 addi r2,r0,#1 7258 00006c04 L325_LF5: 7259 00006c04 64410000 snei r1,r2,#0 7260 00006c08 1020fe30 beqz r1,L304_LF5 7261 00006c0c 54000000 nop; not filled. 7262 00006c10 8fc1ff24 lw r1,-220(r30) 7263 00006c14 80220001 lb r2,1(r1) 7264 00006c18 20030000 addi r3,r0,#0 7265 00006c1c 2041ffd0 addi r1,r2,#-48 7266 00006c20 302100ff andi r1,r1,#0x00ff 7267 00006c24 70210009 sleui r1,r1,#9 7268 00006c28 14200028 bnez r1,L329_LF5 7269 00006c2c 54000000 nop; not filled. 7270 00006c30 2041ff9f addi r1,r2,#-97 7271 00006c34 302100ff andi r1,r1,#0x00ff 7272 00006c38 70210005 sleui r1,r1,#5 7273 00006c3c 14200014 bnez r1,L329_LF5 7274 00006c40 54000000 nop; not filled. 7275 00006c44 304100ff andi r1,r2,#0x00ff 7276 00006c48 64210041 snei r1,r1,#65 7277 00006c4c 14200008 bnez r1,L328_LF5 7278 00006c50 54000000 nop; not filled. 7279 00006c54 L329_LF5: 7280 00006c54 20030001 addi r3,r0,#1 7281 00006c58 L328_LF5: 7282 00006c58 64610000 snei r1,r3,#0 7283 00006c5c 1020fddc beqz r1,L304_LF5 7284 00006c60 54000000 nop; not filled. 7285 00006c64 8fc1ff24 lw r1,-220(r30) 7286 00006c68 90220000 lbu r2,(r1) 7287 00006c6c 00021820 add r3,r0,r2 7288 00006c70 205fffd0 addi r31,r2,#-48 7289 00006c74 73e10009 sleui r1,r31,#9 7290 00006c78 10200010 beqz r1,L331_LF5 7291 00006c7c 54000000 nop; not filled. 7292 00006c80 001f2020 add r4,r0,r31 7293 00006c84 08000038 j L330_LF5 7294 00006c88 54000000 nop; not filled. 7295 00006c8c L331_LF5: 7296 00006c8c 2041ff9f addi r1,r2,#-97 7297 00006c90 70210005 sleui r1,r1,#5 7298 00006c94 10200010 beqz r1,L333_LF5 7299 00006c98 54000000 nop; not filled. 7300 00006c9c 2044ffa9 addi r4,r2,#-87 7301 00006ca0 0800001c j L330_LF5 7302 00006ca4 54000000 nop; not filled. 7303 00006ca8 L333_LF5: 7304 00006ca8 2061ffbf addi r1,r3,#-65 7305 00006cac 70210005 sleui r1,r1,#5 7306 00006cb0 20040000 addi r4,r0,#0 7307 00006cb4 10200008 beqz r1,L330_LF5 7308 00006cb8 54000000 nop; not filled. 7309 00006cbc 2064ffc9 addi r4,r3,#-55 7310 00006cc0 L330_LF5: 7311 00006cc0 8fc1ff24 lw r1,-220(r30) 7312 00006cc4 90220001 lbu r2,1(r1) 7313 00006cc8 00021820 add r3,r0,r2 7314 00006ccc 205fffd0 addi r31,r2,#-48 7315 00006cd0 73e10009 sleui r1,r31,#9 7316 00006cd4 10200010 beqz r1,L338_LF5 7317 00006cd8 54000000 nop; not filled. 7318 00006cdc 001f1020 add r2,r0,r31 7319 00006ce0 08000038 j L337_LF5 7320 00006ce4 54000000 nop; not filled. 7321 00006ce8 L338_LF5: 7322 00006ce8 2041ff9f addi r1,r2,#-97 7323 00006cec 70210005 sleui r1,r1,#5 7324 00006cf0 10200010 beqz r1,L340_LF5 7325 00006cf4 54000000 nop; not filled. 7326 00006cf8 2042ffa9 addi r2,r2,#-87 7327 00006cfc 0800001c j L337_LF5 7328 00006d00 54000000 nop; not filled. 7329 00006d04 L340_LF5: 7330 00006d04 2061ffbf addi r1,r3,#-65 7331 00006d08 70210005 sleui r1,r1,#5 7332 00006d0c 20020000 addi r2,r0,#0 7333 00006d10 10200008 beqz r1,L337_LF5 7334 00006d14 54000000 nop; not filled. 7335 00006d18 2062ffc9 addi r2,r3,#-55 7336 00006d1c L337_LF5: 7337 00006d1c 50810004 slli r1,r4,#0x4 7338 00006d20 00220820 add r1,r1,r2 7339 00006d24 a0c10000 sb (r6),r1 7340 00006d28 20c60001 addi r6,r6,#1 7341 00006d2c 20a50001 addi r5,r5,#1 7342 00006d30 8fc1ff24 lw r1,-220(r30) 7343 00006d34 20210002 addi r1,r1,#2 7344 00006d38 afc1ff24 sw -220(r30),r1 7345 00006d3c 8ce10000 lw r1,(r7) 7346 00006d40 20210001 addi r1,r1,#1 7347 00006d44 ace10000 sw (r7),r1 7348 00006d48 0bfffe20 j L315_LF5 7349 00006d4c 54000000 nop; not filled. 7350 00006d50 L305_LF5: 7351 00006d50 23bdfff0 addi r29,r29,#-16 7352 00006d54 afaa0000 sw (r29),r10 7353 00006d58 8fc1ff24 lw r1,-220(r30) 7354 00006d5c 00290820 add r1,r1,r9 7355 00006d60 23c3ff28 addi r3,r30,#-216 7356 00006d64 00230822 sub r1,r1,r3 7357 00006d68 afa10004 sw 4(r29),r1 7358 00006d6c 200c0000 addi r12,r0,#0 7359 00006d70 afac0008 sw 8(r29),r12 7360 00006d74 0fffb07c jal _FsSeek 7361 00006d78 54000000 nop; not filled. 7362 00006d7c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7363 00006d80 2442fd60 addui r2,r2,(_debugstr)&0xffff 7364 00006d84 afa20000 sw (r29),r2 7365 00006d88 200c0066 addi r12,r0,#102 7366 00006d8c afac0004 sw 4(r29),r12 7367 00006d90 0fffd0a0 jal _dindex 7368 00006d94 54000000 nop; not filled. 7369 00006d98 23bd0010 addi r29,r29,#16 7370 00006d9c 64210000 snei r1,r1,#0 7371 00006da0 1420002c bnez r1,L346_LF5 7372 00006da4 54000000 nop; not filled. 7373 00006da8 23bdfff8 addi r29,r29,#-8 7374 00006dac afa20000 sw (r29),r2 7375 00006db0 200c002b addi r12,r0,#43 7376 00006db4 afac0004 sw 4(r29),r12 7377 00006db8 0fffd078 jal _dindex 7378 00006dbc 54000000 nop; not filled. 7379 00006dc0 23bd0008 addi r29,r29,#8 7380 00006dc4 64210000 snei r1,r1,#0 7381 00006dc8 10200034 beqz r1,L345_LF5 7382 00006dcc 54000000 nop; not filled. 7383 00006dd0 L346_LF5: 7384 00006dd0 23bdfff0 addi r29,r29,#-16 7385 00006dd4 3c0c0000 lhi r12,((LC42_LF5)>>16)&0xffff 7386 00006dd8 258cf9f8 addui r12,r12,(LC42_LF5)&0xffff 7387 00006ddc afac0000 sw (r29),r12 7388 00006de0 8fc1ff24 lw r1,-220(r30) 7389 00006de4 00290820 add r1,r1,r9 7390 00006de8 00230822 sub r1,r1,r3 7391 00006dec afa10004 sw 4(r29),r1 7392 00006df0 afa50008 sw 8(r29),r5 7393 00006df4 0c0041f4 jal _printf 7394 00006df8 54000000 nop; not filled. 7395 00006dfc 23bd0010 addi r29,r29,#16 7396 00006e00 L345_LF5: 7397 00006e00 00050820 add r1,r0,r5 7398 00006e04 L347_LF5: 7399 00006e04 8fa20000 lw r2,0(r29) 7400 00006e08 8fa30004 lw r3,4(r29) 7401 00006e0c 8fa40008 lw r4,8(r29) 7402 00006e10 8fa5000c lw r5,12(r29) 7403 00006e14 8fa60010 lw r6,16(r29) 7404 00006e18 8fa70014 lw r7,20(r29) 7405 00006e1c 8fa80018 lw r8,24(r29) 7406 00006e20 8fa9001c lw r9,28(r29) 7407 00006e24 8faa0020 lw r10,32(r29) 7408 00006e28 8fab0024 lw r11,36(r29) 7409 00006e2c 8fac0028 lw r12,40(r29) 7410 00006e30 8fdffff8 lw r31,-8(r30) 7411 00006e34 001ee820 add r29,r0,r30 7412 00006e38 8fdefffc lw r30,-4(r30) 7413 00006e3c 4be00000 jr r31 7414 00006e40 54000000 nop 7415 00006e44 .endproc _ProcessGetFromFile 7416 00006e44 .data 7417 0000fa1f .align 2 7418 0000fa20 _temppcb64_LF5: 7419 0000fa20 .space 120 7420 0000fa98 .align 2 7421 0000fa98 LC43_LF5: 7422 0000fa98 476f7420 .ascii "Got %d arguments.\n\000" 7422 0000fa9c 25642061 7422 0000faa0 7267756d 7422 0000faa4 656e7473 7422 0000faa8 2e0a00 7423 0000faab .align 2 7424 0000faac LC44_LF5: 7425 0000faac 41766169 .ascii "Available memory: 0x%x -> 0x%x.\n\000" 7425 0000fab0 6c61626c 7425 0000fab4 65206d65 7425 0000fab8 6d6f7279 7425 0000fabc 3a203078 7425 0000fac0 2578202d 7425 0000fac4 3e203078 7425 0000fac8 25782e0a 7425 0000facc 00 7426 0000facd .align 2 7427 0000fad0 LC45_LF5: 7428 0000fad0 41726775 .ascii "Argument count is %d.\n\000" 7428 0000fad4 6d656e74 7428 0000fad8 20636f75 7428 0000fadc 6e742069 7428 0000fae0 73202564 7428 0000fae4 2e0a00 7429 0000fae7 .align 2 7430 0000fae8 LC46_LF5: 7431 0000fae8 41726775 .ascii "Argument %d is %s.\n\000" 7431 0000faec 6d656e74 7431 0000faf0 20256420 7431 0000faf4 69732025 7431 0000faf8 732e0a00 7432 0000fafc .align 2 7433 0000fafc LC47_LF5: 7434 0000fafc 436f6e76 .ascii "Converted %s to %d=%s\n\000" 7434 0000fb00 65727465 7434 0000fb04 64202573 7434 0000fb08 20746f20 7434 0000fb0c 25643d25 7434 0000fb10 730a00 7435 0000fb13 _buf65_LF5: 7436 0000fb13 .space 200 7437 0000fbdb .align 2 7438 0000fbdc LC48_LF5: 7439 0000fbdc 25303878 .ascii "%08x: %02x%02x%02x%02x\n\000" 7439 0000fbe0 3a202530 7439 0000fbe4 32782530 7439 0000fbe8 32782530 7439 0000fbec 32782530 7439 0000fbf0 32780a00 7440 0000fbf4 .align 2 7441 0000fbf4 LC49_LF5: 7442 0000fbf4 4f707469 .ascii "Option %s not recognized.\n\000" 7442 0000fbf8 6f6e2025 7442 0000fbfc 73206e6f 7442 0000fc00 74207265 7442 0000fc04 636f676e 7442 0000fc08 697a6564 7442 0000fc0c 2e0a00 7443 0000fc0f .align 2 7444 0000fc10 LC50_LF5: 7445 0000fc10 41626f75 .ascii "About to initialize queues.\n\000" 7445 0000fc14 7420746f 7445 0000fc18 20696e69 7445 0000fc1c 7469616c 7445 0000fc20 697a6520 7445 0000fc24 71756575 7445 0000fc28 65732e0a 7445 0000fc2c 00 7446 0000fc2d .align 2 7447 0000fc30 LC51_LF5: 7448 0000fc30 41667465 .ascii "After initializing queues.\n\000" 7448 0000fc34 7220696e 7448 0000fc38 69746961 7448 0000fc3c 6c697a69 7448 0000fc40 6e672071 7448 0000fc44 75657565 7448 0000fc48 732e0a00 7449 0000fc4c .align 2 7450 0000fc4c LC52_LF5: 7451 0000fc4c 41667465 .ascii "After initializing memory.\n\000" 7451 0000fc50 7220696e 7451 0000fc54 69746961 7451 0000fc58 6c697a69 7451 0000fc5c 6e67206d 7451 0000fc60 656d6f72 7451 0000fc64 792e0a00 7452 0000fc68 .align 2 7453 0000fc68 LC53_LF5: 7454 0000fc68 41667465 .ascii "After initializing processes.\n\000" 7454 0000fc6c 7220696e 7454 0000fc70 69746961 7454 0000fc74 6c697a69 7454 0000fc78 6e672070 7454 0000fc7c 726f6365 7454 0000fc80 73736573 7454 0000fc84 2e0a00 7455 0000fc87 .align 2 7456 0000fc88 LC54_LF5: 7457 0000fc88 41667465 .ascii "After initializing synchronization tools.\n\000" 7457 0000fc8c 7220696e 7457 0000fc90 69746961 7457 0000fc94 6c697a69 7457 0000fc98 6e672073 7457 0000fc9c 796e6368 7457 0000fca0 726f6e69 7457 0000fca4 7a617469 7457 0000fca8 6f6e2074 7457 0000fcac 6f6f6c73 7457 0000fcb0 2e0a00 7458 0000fcb3 .align 2 7459 0000fcb4 LC55_LF5: 7460 0000fcb4 41667465 .ascii "After initializing keyboard.\n\000" 7460 0000fcb8 7220696e 7460 0000fcbc 69746961 7460 0000fcc0 6c697a69 7460 0000fcc4 6e67206b 7460 0000fcc8 6579626f 7460 0000fccc 6172642e 7460 0000fcd0 0a00 7461 0000fcd2 .align 2 7462 0000fcd4 LC56_LF5: 7463 0000fcd4 766d00 .ascii "vm\000" 7464 0000fcd7 .align 2 7465 0000fcd8 LC57_LF5: 7466 0000fcd8 564d2044 .ascii "VM Descriptor is %d\n\000" 7466 0000fcdc 65736372 7466 0000fce0 6970746f 7466 0000fce4 72206973 7466 0000fce8 2025640a 7466 0000fcec 00 7467 0000fced .align 2 7468 0000fcf0 LC58_LF5: 7469 0000fcf0 43726561 .ascii "Created processes - about to set timer quantum.\n\000" 7469 0000fcf4 74656420 7469 0000fcf8 70726f63 7469 0000fcfc 65737365 7469 0000fd00 73202d20 7469 0000fd04 61626f75 7469 0000fd08 7420746f 7469 0000fd0c 20736574 7469 0000fd10 2074696d 7469 0000fd14 65722071 7469 0000fd18 75616e74 7469 0000fd1c 756d2e0a 7469 0000fd20 00 7470 0000fd21 .align 2 7471 0000fd24 LC59_LF5: 7472 0000fd24 53657420 .ascii "Set timer quantum to %d, about to run first process.\n\000" 7472 0000fd28 74696d65 7472 0000fd2c 72207175 7472 0000fd30 616e7475 7472 0000fd34 6d20746f 7472 0000fd38 2025642c 7472 0000fd3c 2061626f 7472 0000fd40 75742074 7472 0000fd44 6f207275 7472 0000fd48 6e206669 7472 0000fd4c 72737420 7472 0000fd50 70726f63 7472 0000fd54 6573732e 7472 0000fd58 0a00 7473 0000fd5a .text 7474 00006e44 .align 2 7475 00006e44 .proc _main 7476 00006e44 .global _main 7477 00006e44 _main: 7478 ; Function 'main'; 192 bytes of locals, 0 regs to save. 7479 00006e44 afbefffc sw -4(r29),r30; push fp 7480 00006e48 001df020 add r30,r0,r29; fp = sp 7481 00006e4c afbffff8 sw -8(r29),r31; push ret addr 7482 00006e50 2fbd00c8 subui r29,r29,#200; alloc local storage 7483 00006e54 8fce0000 lw r14,(r30) 7484 00006e58 8fd40004 lw r20,4(r30) 7485 00006e5c 0c0040f4 jal ___main 7486 00006e60 54000000 nop; not filled. 7487 00006e64 20100000 addi r16,r0,#0 7488 00006e68 20150000 addi r21,r0,#0 7489 00006e6c afd5ff50 sw -176(r30),r21 7490 00006e70 afd5ff54 sw -172(r30),r21 7491 00006e74 afd5ff58 sw -168(r30),r21 7492 00006e78 afd5ff5c sw -164(r30),r21 7493 00006e7c afd5ff60 sw -160(r30),r21 7494 00006e80 afd5ff64 sw -156(r30),r21 7495 00006e84 afd5ff68 sw -152(r30),r21 7496 00006e88 afd5ff6c sw -148(r30),r21 7497 00006e8c afd5ff70 sw -144(r30),r21 7498 00006e90 afd5ff74 sw -140(r30),r21 7499 00006e94 afd5ff78 sw -136(r30),r21 7500 00006e98 afd5ff7c sw -132(r30),r21 7501 00006e9c 3c010000 lhi r1,((_debugstr)>>16)&0xffff 7502 00006ea0 2421fd60 addui r1,r1,(_debugstr)&0xffff 7503 00006ea4 20150000 addi r21,r0,(#0x0)&0xff 7504 00006ea8 a0350001 sb 1(r1),r21 7505 00006eac 0c0009e4 jal _MyFuncRetZero 7506 00006eb0 54000000 nop; not filled. 7507 00006eb4 23bdfff8 addi r29,r29,#-8 7508 00006eb8 3c150000 lhi r21,((LC43_LF5)>>16)&0xffff 7509 00006ebc 26b5fa98 addui r21,r21,(LC43_LF5)&0xffff 7510 00006ec0 afb50000 sw (r29),r21 7511 00006ec4 afae0004 sw 4(r29),r14 7512 00006ec8 0c004120 jal _printf 7513 00006ecc 54000000 nop; not filled. 7514 00006ed0 0fffbb38 jal _MemoryGetSize 7515 00006ed4 54000000 nop; not filled. 7516 00006ed8 23bdfff8 addi r29,r29,#-8 7517 00006edc 3c150000 lhi r21,((LC44_LF5)>>16)&0xffff 7518 00006ee0 26b5faac addui r21,r21,(LC44_LF5)&0xffff 7519 00006ee4 afb50000 sw (r29),r21 7520 00006ee8 3c020001 lhi r2,((_lastosaddress)>>16)&0xffff 7521 00006eec 24422df8 addui r2,r2,(_lastosaddress)&0xffff 7522 00006ef0 8c420000 lw r2,(r2) 7523 00006ef4 afa20004 sw 4(r29),r2 7524 00006ef8 afa10008 sw 8(r29),r1 7525 00006efc 0c0040ec jal _printf 7526 00006f00 54000000 nop; not filled. 7527 00006f04 3c150000 lhi r21,((LC45_LF5)>>16)&0xffff 7528 00006f08 26b5fad0 addui r21,r21,(LC45_LF5)&0xffff 7529 00006f0c afb50000 sw (r29),r21 7530 00006f10 afae0004 sw 4(r29),r14 7531 00006f14 0c0040d4 jal _printf 7532 00006f18 54000000 nop; not filled. 7533 00006f1c 20090000 addi r9,r0,#0 7534 00006f20 23bd0010 addi r29,r29,#16 7535 00006f24 012e082a slt r1,r9,r14 7536 00006f28 10200044 beqz r1,L354_LF5 7537 00006f2c 54000000 nop; not filled. 7538 00006f30 00141020 add r2,r0,r20 7539 00006f34 L356_LF5: 7540 00006f34 23bdfff0 addi r29,r29,#-16 7541 00006f38 3c150000 lhi r21,((LC46_LF5)>>16)&0xffff 7542 00006f3c 26b5fae8 addui r21,r21,(LC46_LF5)&0xffff 7543 00006f40 afb50000 sw (r29),r21 7544 00006f44 afa90004 sw 4(r29),r9 7545 00006f48 8c550000 lw r21,(r2) 7546 00006f4c afb50008 sw 8(r29),r21 7547 00006f50 0c004098 jal _printf 7548 00006f54 54000000 nop; not filled. 7549 00006f58 23bd0010 addi r29,r29,#16 7550 00006f5c 20420004 addi r2,r2,#4 7551 00006f60 21290001 addi r9,r9,#1 7552 00006f64 012e082a slt r1,r9,r14 7553 00006f68 1420ffc8 bnez r1,L356_LF5 7554 00006f6c 54000000 nop; not filled. 7555 00006f70 L354_LF5: 7556 00006f70 0fffb50c jal _FsModuleInit 7557 00006f74 54000000 nop; not filled. 7558 00006f78 20090000 addi r9,r0,#0 7559 00006f7c 012e082a slt r1,r9,r14 7560 00006f80 1020033c beqz r1,L359_LF5 7561 00006f84 54000000 nop; not filled. 7562 00006f88 23ccff80 addi r12,r30,#-128 7563 00006f8c 23cdff38 addi r13,r30,#-200 7564 00006f90 3c0f0000 lhi r15,((_buf65_LF5)>>16)&0xffff 7565 00006f94 25effb13 addui r15,r15,(_buf65_LF5)&0xffff 7566 00006f98 21f20001 addi r18,r15,#1 7567 00006f9c 21f10002 addi r17,r15,#2 7568 00006fa0 00144020 add r8,r0,r20 7569 00006fa4 L361_LF5: 7570 00006fa4 8d020000 lw r2,(r8) 7571 00006fa8 90410000 lbu r1,(r2) 7572 00006fac 6021002d seqi r1,r1,#45 7573 00006fb0 102002f8 beqz r1,L360_LF5 7574 00006fb4 54000000 nop; not filled. 7575 00006fb8 90420001 lbu r2,1(r2) 7576 00006fbc 60410066 seqi r1,r2,#102 7577 00006fc0 142000e0 bnez r1,L366_LF5 7578 00006fc4 54000000 nop; not filled. 7579 00006fc8 6c410066 sgti r1,r2,#102 7580 00006fcc 14200018 bnez r1,L378_LF5 7581 00006fd0 54000000 nop; not filled. 7582 00006fd4 60410044 seqi r1,r2,#68 7583 00006fd8 102002a0 beqz r1,L376_LF5 7584 00006fdc 54000000 nop; not filled. 7585 00006fe0 08000024 j L364_LF5 7586 00006fe4 54000000 nop; not filled. 7587 00006fe8 L378_LF5: 7588 00006fe8 60410069 seqi r1,r2,#105 7589 00006fec 14200048 bnez r1,L365_LF5 7590 00006ff0 54000000 nop; not filled. 7591 00006ff4 60410075 seqi r1,r2,#117 7592 00006ff8 10200280 beqz r1,L376_LF5 7593 00006ffc 54000000 nop; not filled. 7594 00007000 08000260 j L375_LF5 7595 00007004 54000000 nop; not filled. 7596 00007008 L364_LF5: 7597 00007008 23bdfff8 addi r29,r29,#-8 7598 0000700c 3c150000 lhi r21,((_debugstr)>>16)&0xffff 7599 00007010 26b5fd60 addui r21,r21,(_debugstr)&0xffff 7600 00007014 afb50000 sw (r29),r21 7601 00007018 21080004 addi r8,r8,#4 7602 0000701c 21290001 addi r9,r9,#1 7603 00007020 8d010000 lw r1,(r8) 7604 00007024 afa10004 sw 4(r29),r1 7605 00007028 0fffc948 jal _dstrcpy 7606 0000702c 54000000 nop; not filled. 7607 00007030 08000268 j L411_LF5 7608 00007034 54000000 nop; not filled. 7609 00007038 L365_LF5: 7610 00007038 23bdfff0 addi r29,r29,#-16 7611 0000703c 21080004 addi r8,r8,#4 7612 00007040 21290001 addi r9,r9,#1 7613 00007044 8d150000 lw r21,(r8) 7614 00007048 afb50000 sw (r29),r21 7615 0000704c 20150000 addi r21,r0,#0 7616 00007050 afb50004 sw 4(r29),r21 7617 00007054 afb50008 sw 8(r29),r21 7618 00007058 0fffcf60 jal _dstrtol 7619 0000705c 54000000 nop; not filled. 7620 00007060 00011820 add r3,r0,r1 7621 00007064 afa10000 sw (r29),r1 7622 00007068 afac0004 sw 4(r29),r12 7623 0000706c 0fffce40 jal _ditoa 7624 00007070 54000000 nop; not filled. 7625 00007074 3c150000 lhi r21,((LC47_LF5)>>16)&0xffff 7626 00007078 26b5fafc addui r21,r21,(LC47_LF5)&0xffff 7627 0000707c afb50000 sw (r29),r21 7628 00007080 8d010000 lw r1,(r8) 7629 00007084 afa10004 sw 4(r29),r1 7630 00007088 afa30008 sw 8(r29),r3 7631 0000708c afac000c sw 12(r29),r12 7632 00007090 0c003f58 jal _printf 7633 00007094 54000000 nop; not filled. 7634 00007098 23bd0010 addi r29,r29,#16 7635 0000709c 08000200 j L363_LF5 7636 000070a0 54000000 nop; not filled. 7637 000070a4 L366_LF5: 7638 000070a4 20150000 addi r21,r0,#0 7639 000070a8 afd5ff38 sw -200(r30),r21 7640 000070ac 23bdffe8 addi r29,r29,#-24 7641 000070b0 21080004 addi r8,r8,#4 7642 000070b4 21290001 addi r9,r9,#1 7643 000070b8 8d150000 lw r21,(r8) 7644 000070bc afb50000 sw (r29),r21 7645 000070c0 23c1ff4c addi r1,r30,#-180 7646 000070c4 afa10004 sw 4(r29),r1 7647 000070c8 23c1ff48 addi r1,r30,#-184 7648 000070cc afa10008 sw 8(r29),r1 7649 000070d0 23c1ff44 addi r1,r30,#-188 7650 000070d4 afa1000c sw 12(r29),r1 7651 000070d8 23c1ff40 addi r1,r30,#-192 7652 000070dc afa10010 sw 16(r29),r1 7653 000070e0 23c1ff3c addi r1,r30,#-196 7654 000070e4 afa10014 sw 20(r29),r1 7655 000070e8 0ffff260 jal _ProcessGetCodeInfo 7656 000070ec 54000000 nop; not filled. 7657 000070f0 00015020 add r10,r0,r1 7658 000070f4 3c150000 lhi r21,((LC27_LF5)>>16)&0xffff 7659 000070f8 26b5f7f4 addui r21,r21,(LC27_LF5)&0xffff 7660 000070fc afb50000 sw (r29),r21 7661 00007100 8d010000 lw r1,(r8) 7662 00007104 afa10004 sw 4(r29),r1 7663 00007108 8fd5ff4c lw r21,-180(r30) 7664 0000710c afb50008 sw 8(r29),r21 7665 00007110 0c003ed8 jal _printf 7666 00007114 54000000 nop; not filled. 7667 00007118 3c150000 lhi r21,((LC28_LF5)>>16)&0xffff 7668 0000711c 26b5f810 addui r21,r21,(LC28_LF5)&0xffff 7669 00007120 afb50000 sw (r29),r21 7670 00007124 8d010000 lw r1,(r8) 7671 00007128 afa10004 sw 4(r29),r1 7672 0000712c 8fd5ff48 lw r21,-184(r30) 7673 00007130 afb50008 sw 8(r29),r21 7674 00007134 8fd5ff44 lw r21,-188(r30) 7675 00007138 afb5000c sw 12(r29),r21 7676 0000713c 0c003eac jal _printf 7677 00007140 54000000 nop; not filled. 7678 00007144 3c150000 lhi r21,((LC29_LF5)>>16)&0xffff 7679 00007148 26b5f838 addui r21,r21,(LC29_LF5)&0xffff 7680 0000714c afb50000 sw (r29),r21 7681 00007150 8d010000 lw r1,(r8) 7682 00007154 afa10004 sw 4(r29),r1 7683 00007158 8fd5ff40 lw r21,-192(r30) 7684 0000715c afb50008 sw 8(r29),r21 7685 00007160 8fd5ff3c lw r21,-196(r30) 7686 00007164 afb5000c sw 12(r29),r21 7687 00007168 0c003e80 jal _printf 7688 0000716c 54000000 nop; not filled. 7689 00007170 23bd0018 addi r29,r29,#24 7690 00007174 3c0b0000 lhi r11,((_buf65_LF5+3)>>16)&0xffff 7691 00007178 256bfb16 addui r11,r11,(_buf65_LF5+3)&0xffff 7692 0000717c L367_LF5: 7693 0000717c 23bdfff0 addi r29,r29,#-16 7694 00007180 afaa0000 sw (r29),r10 7695 00007184 3c150000 lhi r21,((_buf65_LF5)>>16)&0xffff 7696 00007188 26b5fb13 addui r21,r21,(_buf65_LF5)&0xffff 7697 0000718c afb50004 sw 4(r29),r21 7698 00007190 afad0008 sw 8(r29),r13 7699 00007194 201500c8 addi r21,r0,#200 7700 00007198 afb5000c sw 12(r29),r21 7701 0000719c 0ffff60c jal _ProcessGetFromFile 7702 000071a0 54000000 nop; not filled. 7703 000071a4 00011820 add r3,r0,r1 7704 000071a8 23bd0010 addi r29,r29,#16 7705 000071ac 6c610000 sgti r1,r3,#0 7706 000071b0 10200098 beqz r1,L368_LF5 7707 000071b4 54000000 nop; not filled. 7708 000071b8 20020000 addi r2,r0,#0 7709 000071bc 0043082a slt r1,r2,r3 7710 000071c0 1020ffb8 beqz r1,L367_LF5 7711 000071c4 54000000 nop; not filled. 7712 000071c8 000b3820 add r7,r0,r11 7713 000071cc 00113020 add r6,r0,r17 7714 000071d0 00122820 add r5,r0,r18 7715 000071d4 000f2020 add r4,r0,r15 7716 000071d8 L373_LF5: 7717 000071d8 23bdffe8 addi r29,r29,#-24 7718 000071dc 3c150000 lhi r21,((LC48_LF5)>>16)&0xffff 7719 000071e0 26b5fbdc addui r21,r21,(LC48_LF5)&0xffff 7720 000071e4 afb50000 sw (r29),r21 7721 000071e8 8fc1ff38 lw r1,-200(r30) 7722 000071ec 00220820 add r1,r1,r2 7723 000071f0 00230822 sub r1,r1,r3 7724 000071f4 afa10004 sw 4(r29),r1 7725 000071f8 90810000 lbu r1,(r4) 7726 000071fc afa10008 sw 8(r29),r1 7727 00007200 90a10000 lbu r1,(r5) 7728 00007204 afa1000c sw 12(r29),r1 7729 00007208 90c10000 lbu r1,(r6) 7730 0000720c afa10010 sw 16(r29),r1 7731 00007210 90e10000 lbu r1,(r7) 7732 00007214 afa10014 sw 20(r29),r1 7733 00007218 0c003dd0 jal _printf 7734 0000721c 54000000 nop; not filled. 7735 00007220 23bd0018 addi r29,r29,#24 7736 00007224 20e70004 addi r7,r7,#4 7737 00007228 20c60004 addi r6,r6,#4 7738 0000722c 20a50004 addi r5,r5,#4 7739 00007230 20840004 addi r4,r4,#4 7740 00007234 20420004 addi r2,r2,#4 7741 00007238 0043082a slt r1,r2,r3 7742 0000723c 1420ff98 bnez r1,L373_LF5 7743 00007240 54000000 nop; not filled. 7744 00007244 0bffff34 j L367_LF5 7745 00007248 54000000 nop; not filled. 7746 0000724c L368_LF5: 7747 0000724c 23bdfff8 addi r29,r29,#-8 7748 00007250 afaa0000 sw (r29),r10 7749 00007254 0c003d10 jal _close 7750 00007258 54000000 nop; not filled. 7751 0000725c 0800003c j L411_LF5 7752 00007260 54000000 nop; not filled. 7753 00007264 L375_LF5: 7754 00007264 21080004 addi r8,r8,#4 7755 00007268 21290001 addi r9,r9,#1 7756 0000726c 8d100000 lw r16,(r8) 7757 00007270 00099820 add r19,r0,r9 7758 00007274 08000028 j L363_LF5 7759 00007278 54000000 nop; not filled. 7760 0000727c L376_LF5: 7761 0000727c 23bdfff8 addi r29,r29,#-8 7762 00007280 3c150000 lhi r21,((LC49_LF5)>>16)&0xffff 7763 00007284 26b5fbf4 addui r21,r21,(LC49_LF5)&0xffff 7764 00007288 afb50000 sw (r29),r21 7765 0000728c 8d010000 lw r1,(r8) 7766 00007290 afa10004 sw 4(r29),r1 7767 00007294 0c003d54 jal _printf 7768 00007298 54000000 nop; not filled. 7769 0000729c L411_LF5: 7770 0000729c 23bd0008 addi r29,r29,#8 7771 000072a0 L363_LF5: 7772 000072a0 66010000 snei r1,r16,#0 7773 000072a4 14200018 bnez r1,L359_LF5 7774 000072a8 54000000 nop; not filled. 7775 000072ac L360_LF5: 7776 000072ac 21080004 addi r8,r8,#4 7777 000072b0 21290001 addi r9,r9,#1 7778 000072b4 012e082a slt r1,r9,r14 7779 000072b8 1420fce8 bnez r1,L361_LF5 7780 000072bc 54000000 nop; not filled. 7781 000072c0 L359_LF5: 7782 000072c0 23bdfff8 addi r29,r29,#-8 7783 000072c4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7784 000072c8 2442fd60 addui r2,r2,(_debugstr)&0xffff 7785 000072cc afa20000 sw (r29),r2 7786 000072d0 20150069 addi r21,r0,#105 7787 000072d4 afb50004 sw 4(r29),r21 7788 000072d8 0fffcb58 jal _dindex 7789 000072dc 54000000 nop; not filled. 7790 000072e0 23bd0008 addi r29,r29,#8 7791 000072e4 64210000 snei r1,r1,#0 7792 000072e8 1420002c bnez r1,L382_LF5 7793 000072ec 54000000 nop; not filled. 7794 000072f0 23bdfff8 addi r29,r29,#-8 7795 000072f4 afa20000 sw (r29),r2 7796 000072f8 2015002b addi r21,r0,#43 7797 000072fc afb50004 sw 4(r29),r21 7798 00007300 0fffcb30 jal _dindex 7799 00007304 54000000 nop; not filled. 7800 00007308 23bd0008 addi r29,r29,#8 7801 0000730c 64210000 snei r1,r1,#0 7802 00007310 10200020 beqz r1,L381_LF5 7803 00007314 54000000 nop; not filled. 7804 00007318 L382_LF5: 7805 00007318 23bdfff8 addi r29,r29,#-8 7806 0000731c 3c150000 lhi r21,((LC50_LF5)>>16)&0xffff 7807 00007320 26b5fc10 addui r21,r21,(LC50_LF5)&0xffff 7808 00007324 afb50000 sw (r29),r21 7809 00007328 0c003cc0 jal _printf 7810 0000732c 54000000 nop; not filled. 7811 00007330 23bd0008 addi r29,r29,#8 7812 00007334 L381_LF5: 7813 00007334 0c000c64 jal _QueueModuleInit 7814 00007338 54000000 nop; not filled. 7815 0000733c 23bdfff8 addi r29,r29,#-8 7816 00007340 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7817 00007344 2442fd60 addui r2,r2,(_debugstr)&0xffff 7818 00007348 afa20000 sw (r29),r2 7819 0000734c 20150069 addi r21,r0,#105 7820 00007350 afb50004 sw 4(r29),r21 7821 00007354 0fffcadc jal _dindex 7822 00007358 54000000 nop; not filled. 7823 0000735c 23bd0008 addi r29,r29,#8 7824 00007360 64210000 snei r1,r1,#0 7825 00007364 1420002c bnez r1,L384_LF5 7826 00007368 54000000 nop; not filled. 7827 0000736c 23bdfff8 addi r29,r29,#-8 7828 00007370 afa20000 sw (r29),r2 7829 00007374 2015002b addi r21,r0,#43 7830 00007378 afb50004 sw 4(r29),r21 7831 0000737c 0fffcab4 jal _dindex 7832 00007380 54000000 nop; not filled. 7833 00007384 23bd0008 addi r29,r29,#8 7834 00007388 64210000 snei r1,r1,#0 7835 0000738c 10200020 beqz r1,L383_LF5 7836 00007390 54000000 nop; not filled. 7837 00007394 L384_LF5: 7838 00007394 23bdfff8 addi r29,r29,#-8 7839 00007398 3c150000 lhi r21,((LC51_LF5)>>16)&0xffff 7840 0000739c 26b5fc30 addui r21,r21,(LC51_LF5)&0xffff 7841 000073a0 afb50000 sw (r29),r21 7842 000073a4 0c003c44 jal _printf 7843 000073a8 54000000 nop; not filled. 7844 000073ac 23bd0008 addi r29,r29,#8 7845 000073b0 L383_LF5: 7846 000073b0 0fffb7b8 jal _MemoryModuleInit 7847 000073b4 54000000 nop; not filled. 7848 000073b8 23bdfff8 addi r29,r29,#-8 7849 000073bc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7850 000073c0 2442fd60 addui r2,r2,(_debugstr)&0xffff 7851 000073c4 afa20000 sw (r29),r2 7852 000073c8 20150069 addi r21,r0,#105 7853 000073cc afb50004 sw 4(r29),r21 7854 000073d0 0fffca60 jal _dindex 7855 000073d4 54000000 nop; not filled. 7856 000073d8 23bd0008 addi r29,r29,#8 7857 000073dc 64210000 snei r1,r1,#0 7858 000073e0 1420002c bnez r1,L386_LF5 7859 000073e4 54000000 nop; not filled. 7860 000073e8 23bdfff8 addi r29,r29,#-8 7861 000073ec afa20000 sw (r29),r2 7862 000073f0 2015002b addi r21,r0,#43 7863 000073f4 afb50004 sw 4(r29),r21 7864 000073f8 0fffca38 jal _dindex 7865 000073fc 54000000 nop; not filled. 7866 00007400 23bd0008 addi r29,r29,#8 7867 00007404 64210000 snei r1,r1,#0 7868 00007408 10200020 beqz r1,L385_LF5 7869 0000740c 54000000 nop; not filled. 7870 00007410 L386_LF5: 7871 00007410 23bdfff8 addi r29,r29,#-8 7872 00007414 3c150000 lhi r21,((LC52_LF5)>>16)&0xffff 7873 00007418 26b5fc4c addui r21,r21,(LC52_LF5)&0xffff 7874 0000741c afb50000 sw (r29),r21 7875 00007420 0c003bc8 jal _printf 7876 00007424 54000000 nop; not filled. 7877 00007428 23bd0008 addi r29,r29,#8 7878 0000742c L385_LF5: 7879 0000742c 0fffd308 jal _ProcessModuleInit 7880 00007430 54000000 nop; not filled. 7881 00007434 23bdfff8 addi r29,r29,#-8 7882 00007438 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7883 0000743c 2442fd60 addui r2,r2,(_debugstr)&0xffff 7884 00007440 afa20000 sw (r29),r2 7885 00007444 20150069 addi r21,r0,#105 7886 00007448 afb50004 sw 4(r29),r21 7887 0000744c 0fffc9e4 jal _dindex 7888 00007450 54000000 nop; not filled. 7889 00007454 23bd0008 addi r29,r29,#8 7890 00007458 64210000 snei r1,r1,#0 7891 0000745c 1420002c bnez r1,L388_LF5 7892 00007460 54000000 nop; not filled. 7893 00007464 23bdfff8 addi r29,r29,#-8 7894 00007468 afa20000 sw (r29),r2 7895 0000746c 2015002b addi r21,r0,#43 7896 00007470 afb50004 sw 4(r29),r21 7897 00007474 0fffc9bc jal _dindex 7898 00007478 54000000 nop; not filled. 7899 0000747c 23bd0008 addi r29,r29,#8 7900 00007480 64210000 snei r1,r1,#0 7901 00007484 10200020 beqz r1,L387_LF5 7902 00007488 54000000 nop; not filled. 7903 0000748c L388_LF5: 7904 0000748c 23bdfff8 addi r29,r29,#-8 7905 00007490 3c150000 lhi r21,((LC53_LF5)>>16)&0xffff 7906 00007494 26b5fc68 addui r21,r21,(LC53_LF5)&0xffff 7907 00007498 afb50000 sw (r29),r21 7908 0000749c 0c003b4c jal _printf 7909 000074a0 54000000 nop; not filled. 7910 000074a4 23bd0008 addi r29,r29,#8 7911 000074a8 L387_LF5: 7912 000074a8 0c00127c jal _SynchModuleInit 7913 000074ac 54000000 nop; not filled. 7914 000074b0 23bdfff8 addi r29,r29,#-8 7915 000074b4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7916 000074b8 2442fd60 addui r2,r2,(_debugstr)&0xffff 7917 000074bc afa20000 sw (r29),r2 7918 000074c0 20150069 addi r21,r0,#105 7919 000074c4 afb50004 sw 4(r29),r21 7920 000074c8 0fffc968 jal _dindex 7921 000074cc 54000000 nop; not filled. 7922 000074d0 23bd0008 addi r29,r29,#8 7923 000074d4 64210000 snei r1,r1,#0 7924 000074d8 1420002c bnez r1,L390_LF5 7925 000074dc 54000000 nop; not filled. 7926 000074e0 23bdfff8 addi r29,r29,#-8 7927 000074e4 afa20000 sw (r29),r2 7928 000074e8 2015002b addi r21,r0,#43 7929 000074ec afb50004 sw 4(r29),r21 7930 000074f0 0fffc940 jal _dindex 7931 000074f4 54000000 nop; not filled. 7932 000074f8 23bd0008 addi r29,r29,#8 7933 000074fc 64210000 snei r1,r1,#0 7934 00007500 10200020 beqz r1,L389_LF5 7935 00007504 54000000 nop; not filled. 7936 00007508 L390_LF5: 7937 00007508 23bdfff8 addi r29,r29,#-8 7938 0000750c 3c150000 lhi r21,((LC54_LF5)>>16)&0xffff 7939 00007510 26b5fc88 addui r21,r21,(LC54_LF5)&0xffff 7940 00007514 afb50000 sw (r29),r21 7941 00007518 0c003ad0 jal _printf 7942 0000751c 54000000 nop; not filled. 7943 00007520 23bd0008 addi r29,r29,#8 7944 00007524 L389_LF5: 7945 00007524 0c001f08 jal _KbdModuleInit 7946 00007528 54000000 nop; not filled. 7947 0000752c 23bdfff8 addi r29,r29,#-8 7948 00007530 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7949 00007534 2442fd60 addui r2,r2,(_debugstr)&0xffff 7950 00007538 afa20000 sw (r29),r2 7951 0000753c 20150069 addi r21,r0,#105 7952 00007540 afb50004 sw 4(r29),r21 7953 00007544 0fffc8ec jal _dindex 7954 00007548 54000000 nop; not filled. 7955 0000754c 23bd0008 addi r29,r29,#8 7956 00007550 64210000 snei r1,r1,#0 7957 00007554 1420002c bnez r1,L392_LF5 7958 00007558 54000000 nop; not filled. 7959 0000755c 23bdfff8 addi r29,r29,#-8 7960 00007560 afa20000 sw (r29),r2 7961 00007564 2015002b addi r21,r0,#43 7962 00007568 afb50004 sw 4(r29),r21 7963 0000756c 0fffc8c4 jal _dindex 7964 00007570 54000000 nop; not filled. 7965 00007574 23bd0008 addi r29,r29,#8 7966 00007578 64210000 snei r1,r1,#0 7967 0000757c 10200020 beqz r1,L391_LF5 7968 00007580 54000000 nop; not filled. 7969 00007584 L392_LF5: 7970 00007584 23bdfff8 addi r29,r29,#-8 7971 00007588 3c150000 lhi r21,((LC55_LF5)>>16)&0xffff 7972 0000758c 26b5fcb4 addui r21,r21,(LC55_LF5)&0xffff 7973 00007590 afb50000 sw (r29),r21 7974 00007594 0c003a54 jal _printf 7975 00007598 54000000 nop; not filled. 7976 0000759c 23bd0008 addi r29,r29,#8 7977 000075a0 L391_LF5: 7978 000075a0 23c2ff80 addi r2,r30,#-128 7979 000075a4 23c3ffe3 addi r3,r30,#-29 7980 000075a8 L396_LF5: 7981 000075a8 20150061 addi r21,r0,(#0x61)&0xff 7982 000075ac a0550000 sb (r2),r21 7983 000075b0 20420001 addi r2,r2,#1 7984 000075b4 0043082c sle r1,r2,r3 7985 000075b8 1420ffec bnez r1,L396_LF5 7986 000075bc 54000000 nop; not filled. 7987 000075c0 23bdfff8 addi r29,r29,#-8 7988 000075c4 3c150000 lhi r21,((LC56_LF5)>>16)&0xffff 7989 000075c8 26b5fcd4 addui r21,r21,(LC56_LF5)&0xffff 7990 000075cc afb50000 sw (r29),r21 7991 000075d0 20150002 addi r21,r0,#2 7992 000075d4 afb50004 sw 4(r29),r21 7993 000075d8 0fffa1bc jal _FsOpen 7994 000075dc 54000000 nop; not filled. 7995 000075e0 00014820 add r9,r0,r1 7996 000075e4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 7997 000075e8 2442fd60 addui r2,r2,(_debugstr)&0xffff 7998 000075ec afa20000 sw (r29),r2 7999 000075f0 20150069 addi r21,r0,#105 8000 000075f4 afb50004 sw 4(r29),r21 8001 000075f8 0fffc838 jal _dindex 8002 000075fc 54000000 nop; not filled. 8003 00007600 23bd0008 addi r29,r29,#8 8004 00007604 64210000 snei r1,r1,#0 8005 00007608 1420002c bnez r1,L399_LF5 8006 0000760c 54000000 nop; not filled. 8007 00007610 23bdfff8 addi r29,r29,#-8 8008 00007614 afa20000 sw (r29),r2 8009 00007618 2015002b addi r21,r0,#43 8010 0000761c afb50004 sw 4(r29),r21 8011 00007620 0fffc810 jal _dindex 8012 00007624 54000000 nop; not filled. 8013 00007628 23bd0008 addi r29,r29,#8 8014 0000762c 64210000 snei r1,r1,#0 8015 00007630 10200024 beqz r1,L398_LF5 8016 00007634 54000000 nop; not filled. 8017 00007638 L399_LF5: 8018 00007638 23bdfff8 addi r29,r29,#-8 8019 0000763c 3c150000 lhi r21,((LC57_LF5)>>16)&0xffff 8020 00007640 26b5fcd8 addui r21,r21,(LC57_LF5)&0xffff 8021 00007644 afb50000 sw (r29),r21 8022 00007648 afa90004 sw 4(r29),r9 8023 0000764c 0c00399c jal _printf 8024 00007650 54000000 nop; not filled. 8025 00007654 23bd0008 addi r29,r29,#8 8026 00007658 L398_LF5: 8027 00007658 23bdfff0 addi r29,r29,#-16 8028 0000765c afa90000 sw (r29),r9 8029 00007660 20150000 addi r21,r0,#0 8030 00007664 afb50004 sw 4(r29),r21 8031 00007668 afb50008 sw 8(r29),r21 8032 0000766c 0fffa784 jal _FsSeek 8033 00007670 54000000 nop; not filled. 8034 00007674 afa90000 sw (r29),r9 8035 00007678 23c1ff80 addi r1,r30,#-128 8036 0000767c afa10004 sw 4(r29),r1 8037 00007680 20150050 addi r21,r0,#80 8038 00007684 afb50008 sw 8(r29),r21 8039 00007688 0fffa66c jal _FsWrite 8040 0000768c 54000000 nop; not filled. 8041 00007690 afa90000 sw (r29),r9 8042 00007694 0fffa45c jal _FsClose 8043 00007698 54000000 nop; not filled. 8044 0000769c 23bd0010 addi r29,r29,#16 8045 000076a0 66010000 snei r1,r16,#0 8046 000076a4 102000c4 beqz r1,L400_LF5 8047 000076a8 54000000 nop; not filled. 8048 000076ac 00134820 add r9,r0,r19 8049 000076b0 026e082a slt r1,r19,r14 8050 000076b4 10200044 beqz r1,L402_LF5 8051 000076b8 54000000 nop; not filled. 8052 000076bc 23c4fff8 addi r4,r30,#-8 8053 000076c0 51210002 slli r1,r9,#0x2 8054 000076c4 00341820 add r3,r1,r20 8055 000076c8 L406_LF5: 8056 000076c8 01331022 sub r2,r9,r19 8057 000076cc 7041000a slei r1,r2,#10 8058 000076d0 10200028 beqz r1,L402_LF5 8059 000076d4 54000000 nop; not filled. 8060 000076d8 50410002 slli r1,r2,#0x2 8061 000076dc 00240820 add r1,r1,r4 8062 000076e0 8c750000 lw r21,(r3) 8063 000076e4 ac35ff58 sw -168(r1),r21 8064 000076e8 20630004 addi r3,r3,#4 8065 000076ec 21290001 addi r9,r9,#1 8066 000076f0 012e082a slt r1,r9,r14 8067 000076f4 1420ffd0 bnez r1,L406_LF5 8068 000076f8 54000000 nop; not filled. 8069 000076fc L402_LF5: 8070 000076fc 23bdffd0 addi r29,r29,#-48 8071 00007700 8fd5ff50 lw r21,-176(r30) 8072 00007704 afb50000 sw (r29),r21 8073 00007708 8fc1ff54 lw r1,-172(r30) 8074 0000770c afa10004 sw 4(r29),r1 8075 00007710 8fd5ff58 lw r21,-168(r30) 8076 00007714 afb50008 sw 8(r29),r21 8077 00007718 8fd5ff5c lw r21,-164(r30) 8078 0000771c afb5000c sw 12(r29),r21 8079 00007720 8fd5ff60 lw r21,-160(r30) 8080 00007724 afb50010 sw 16(r29),r21 8081 00007728 8fd5ff64 lw r21,-156(r30) 8082 0000772c afb50014 sw 20(r29),r21 8083 00007730 8fd5ff68 lw r21,-152(r30) 8084 00007734 afb50018 sw 24(r29),r21 8085 00007738 8fd5ff6c lw r21,-148(r30) 8086 0000773c afb5001c sw 28(r29),r21 8087 00007740 8fd5ff70 lw r21,-144(r30) 8088 00007744 afb50020 sw 32(r29),r21 8089 00007748 8fd5ff74 lw r21,-140(r30) 8090 0000774c afb50024 sw 36(r29),r21 8091 00007750 8fd5ff78 lw r21,-136(r30) 8092 00007754 afb50028 sw 40(r29),r21 8093 00007758 8fd5ff7c lw r21,-132(r30) 8094 0000775c afb5002c sw 44(r29),r21 8095 00007760 0c000220 jal _process_create 8096 00007764 54000000 nop; not filled. 8097 00007768 23bd0030 addi r29,r29,#48 8098 0000776c L400_LF5: 8099 0000776c 0c003764 jal _SysprocCreateProcesses 8100 00007770 54000000 nop; not filled. 8101 00007774 23bdfff8 addi r29,r29,#-8 8102 00007778 3c020000 lhi r2,((_debugstr)>>16)&0xffff 8103 0000777c 2442fd60 addui r2,r2,(_debugstr)&0xffff 8104 00007780 afa20000 sw (r29),r2 8105 00007784 20150069 addi r21,r0,#105 8106 00007788 afb50004 sw 4(r29),r21 8107 0000778c 0fffc6a4 jal _dindex 8108 00007790 54000000 nop; not filled. 8109 00007794 23bd0008 addi r29,r29,#8 8110 00007798 64210000 snei r1,r1,#0 8111 0000779c 1420002c bnez r1,L408_LF5 8112 000077a0 54000000 nop; not filled. 8113 000077a4 23bdfff8 addi r29,r29,#-8 8114 000077a8 afa20000 sw (r29),r2 8115 000077ac 2015002b addi r21,r0,#43 8116 000077b0 afb50004 sw 4(r29),r21 8117 000077b4 0fffc67c jal _dindex 8118 000077b8 54000000 nop; not filled. 8119 000077bc 23bd0008 addi r29,r29,#8 8120 000077c0 64210000 snei r1,r1,#0 8121 000077c4 10200020 beqz r1,L407_LF5 8122 000077c8 54000000 nop; not filled. 8123 000077cc L408_LF5: 8124 000077cc 23bdfff8 addi r29,r29,#-8 8125 000077d0 3c150000 lhi r21,((LC58_LF5)>>16)&0xffff 8126 000077d4 26b5fcf0 addui r21,r21,(LC58_LF5)&0xffff 8127 000077d8 afb50000 sw (r29),r21 8128 000077dc 0c00380c jal _printf 8129 000077e0 54000000 nop; not filled. 8130 000077e4 23bd0008 addi r29,r29,#8 8131 000077e8 L407_LF5: 8132 000077e8 23bdfff8 addi r29,r29,#-8 8133 000077ec 3c030000 lhi r3,((_processQuantum_LF5)>>16)&0xffff 8134 000077f0 2463f438 addui r3,r3,(_processQuantum_LF5)&0xffff 8135 000077f4 8c750000 lw r21,(r3) 8136 000077f8 afb50000 sw (r29),r21 8137 000077fc 0c001bfc jal _TimerSet 8138 00007800 54000000 nop; not filled. 8139 00007804 3c020000 lhi r2,((_debugstr)>>16)&0xffff 8140 00007808 2442fd60 addui r2,r2,(_debugstr)&0xffff 8141 0000780c afa20000 sw (r29),r2 8142 00007810 20150069 addi r21,r0,#105 8143 00007814 afb50004 sw 4(r29),r21 8144 00007818 0fffc618 jal _dindex 8145 0000781c 54000000 nop; not filled. 8146 00007820 23bd0008 addi r29,r29,#8 8147 00007824 64210000 snei r1,r1,#0 8148 00007828 1420002c bnez r1,L410_LF5 8149 0000782c 54000000 nop; not filled. 8150 00007830 23bdfff8 addi r29,r29,#-8 8151 00007834 afa20000 sw (r29),r2 8152 00007838 2015002b addi r21,r0,#43 8153 0000783c afb50004 sw 4(r29),r21 8154 00007840 0fffc5f0 jal _dindex 8155 00007844 54000000 nop; not filled. 8156 00007848 23bd0008 addi r29,r29,#8 8157 0000784c 64210000 snei r1,r1,#0 8158 00007850 10200028 beqz r1,L409_LF5 8159 00007854 54000000 nop; not filled. 8160 00007858 L410_LF5: 8161 00007858 23bdfff8 addi r29,r29,#-8 8162 0000785c 3c150000 lhi r21,((LC59_LF5)>>16)&0xffff 8163 00007860 26b5fd24 addui r21,r21,(LC59_LF5)&0xffff 8164 00007864 afb50000 sw (r29),r21 8165 00007868 8c610000 lw r1,(r3) 8166 0000786c afa10004 sw 4(r29),r1 8167 00007870 0c003778 jal _printf 8168 00007874 54000000 nop; not filled. 8169 00007878 23bd0008 addi r29,r29,#8 8170 0000787c L409_LF5: 8171 0000787c 0fff98e8 jal _intrreturn 8172 00007880 54000000 nop; not filled. 8173 00007884 0c00374c jal _exitsim 8174 00007888 54000000 nop; not filled. 8175 0000788c 0c003750 jal _exit 8176 00007890 54000000 nop 8177 00007894 .endproc _main 8178 00007894 .data 8179 0000fd5a .align 2 8180 0000fd5c LC61_LF5: 8181 0000fd5c 00000000 .word 0x00000000 8182 ;; 0.0000000e+00 8183 0000fd60 .text 8184 00007894 .align 2 8185 00007894 .proc _MyFuncRetZero 8186 00007894 .global _MyFuncRetZero 8187 00007894 _MyFuncRetZero: 8188 ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. 8189 00007894 afbefffc sw -4(r29),r30; push fp 8190 00007898 001df020 add r30,r0,r29; fp = sp 8191 0000789c afbffff8 sw -8(r29),r31; push ret addr 8192 000078a0 2fbd0008 subui r29,r29,#8; alloc local storage 8193 000078a4 3c010000 lhi r1,((LC61_LF5)>>16)&0xffff 8194 000078a8 2421fd5c addui r1,r1,(LC61_LF5)&0xffff 8195 000078ac 98200000 lf f0,(r1) 8196 000078b0 8fdffff8 lw r31,-8(r30) 8197 000078b4 001ee820 add r29,r0,r30 8198 000078b8 8fdefffc lw r30,-4(r30) 8199 000078bc 4be00000 jr r31 8200 000078c0 54000000 nop 8201 000078c4 .endproc _MyFuncRetZero 8202 000078c4 .align 2 8203 000078c4 .proc _GetCurrentPid 8204 000078c4 .global _GetCurrentPid 8205 000078c4 _GetCurrentPid: 8206 ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. 8207 000078c4 afbefffc sw -4(r29),r30; push fp 8208 000078c8 001df020 add r30,r0,r29; fp = sp 8209 000078cc afbffff8 sw -8(r29),r31; push ret addr 8210 000078d0 2fbd0010 subui r29,r29,#16; alloc local storage 8211 000078d4 afa20000 sw 0(r29),r2 8212 000078d8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 8213 000078dc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 8214 000078e0 8c210000 lw r1,(r1) 8215 000078e4 3c1f0000 lhi r31,((_pcbs_LF5)>>16)&0xffff 8216 000078e8 27fffe5c addui r31,r31,(_pcbs_LF5)&0xffff 8217 000078ec 003f1022 sub r2,r1,r31 8218 000078f0 50410004 slli r1,r2,#0x4 8219 000078f4 00221020 add r2,r1,r2 8220 000078f8 50410008 slli r1,r2,#0x8 8221 000078fc 00411020 add r2,r2,r1 8222 00007900 50410010 slli r1,r2,#0x10 8223 00007904 00410820 add r1,r2,r1 8224 00007908 00010822 sub r1,r0,r1 8225 0000790c 5c210003 srai r1,r1,#0x3 8226 00007910 8fa20000 lw r2,0(r29) 8227 00007914 8fdffff8 lw r31,-8(r30) 8228 00007918 001ee820 add r29,r0,r30 8229 0000791c 8fdefffc lw r30,-4(r30) 8230 00007920 4be00000 jr r31 8231 00007924 54000000 nop 8232 00007928 .endproc _GetCurrentPid 8233 00007928 .align 2 8234 00007928 .proc _findpid 8235 00007928 .global _findpid 8236 00007928 _findpid: 8237 ; Function 'findpid'; 0 bytes of locals, 1 regs to save. 8238 00007928 afbefffc sw -4(r29),r30; push fp 8239 0000792c 001df020 add r30,r0,r29; fp = sp 8240 00007930 afbffff8 sw -8(r29),r31; push ret addr 8241 00007934 2fbd0010 subui r29,r29,#16; alloc local storage 8242 00007938 afa20000 sw 0(r29),r2 8243 0000793c 8fc10000 lw r1,(r30) 8244 00007940 3c1f0000 lhi r31,((_pcbs_LF5)>>16)&0xffff 8245 00007944 27fffe5c addui r31,r31,(_pcbs_LF5)&0xffff 8246 00007948 003f1022 sub r2,r1,r31 8247 0000794c 50410004 slli r1,r2,#0x4 8248 00007950 00221020 add r2,r1,r2 8249 00007954 50410008 slli r1,r2,#0x8 8250 00007958 00411020 add r2,r2,r1 8251 0000795c 50410010 slli r1,r2,#0x10 8252 00007960 00410820 add r1,r2,r1 8253 00007964 00010822 sub r1,r0,r1 8254 00007968 5c210003 srai r1,r1,#0x3 8255 0000796c 8fa20000 lw r2,0(r29) 8256 00007970 8fdffff8 lw r31,-8(r30) 8257 00007974 001ee820 add r29,r0,r30 8258 00007978 8fdefffc lw r30,-4(r30) 8259 0000797c 4be00000 jr r31 8260 00007980 54000000 nop 8261 00007984 .endproc _findpid 8262 00007984 .align 2 8263 00007984 .proc _process_create 8264 00007984 .global _process_create 8265 00007984 _process_create: 8266 ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. 8267 00007984 afbefffc sw -4(r29),r30; push fp 8268 00007988 001df020 add r30,r0,r29; fp = sp 8269 0000798c afbffff8 sw -8(r29),r31; push ret addr 8270 00007990 2fbd0408 subui r29,r29,#1032; alloc local storage 8271 00007994 afa20000 sw 0(r29),r2 8272 00007998 afa30004 sw 4(r29),r3 8273 0000799c afa40008 sw 8(r29),r4 8274 000079a0 afa5000c sw 12(r29),r5 8275 000079a4 afa60010 sw 16(r29),r6 8276 000079a8 20040000 addi r4,r0,#0 8277 000079ac 8fc10000 lw r1,(r30) 8278 000079b0 64210000 snei r1,r1,#0 8279 000079b4 1020005c beqz r1,L420_LF5 8280 000079b8 54000000 nop; not filled. 8281 000079bc 23c5fc10 addi r5,r30,#-1008 8282 000079c0 001ef820 add r31,r0,r30 8283 000079c4 L422_LF5: 8284 000079c4 20020000 addi r2,r0,#0 8285 000079c8 00851820 add r3,r4,r5 8286 000079cc L423_LF5: 8287 000079cc 8fe10000 lw r1,(r31) 8288 000079d0 00220820 add r1,r1,r2 8289 000079d4 80210000 lb r1,(r1) 8290 000079d8 a0610000 sb (r3),r1 8291 000079dc 20420001 addi r2,r2,#1 8292 000079e0 20630001 addi r3,r3,#1 8293 000079e4 20840001 addi r4,r4,#1 8294 000079e8 8fe10000 lw r1,(r31) 8295 000079ec 00410820 add r1,r2,r1 8296 000079f0 9021ffff lbu r1,-1(r1) 8297 000079f4 64210000 snei r1,r1,#0 8298 000079f8 1420ffd0 bnez r1,L423_LF5 8299 000079fc 54000000 nop; not filled. 8300 00007a00 23ff0004 addi r31,r31,#4 8301 00007a04 8fe10000 lw r1,(r31) 8302 00007a08 64210000 snei r1,r1,#0 8303 00007a0c 1420ffb4 bnez r1,L422_LF5 8304 00007a10 54000000 nop; not filled. 8305 00007a14 L420_LF5: 8306 00007a14 23c3fc10 addi r3,r30,#-1008 8307 00007a18 00641020 add r2,r3,r4 8308 00007a1c 23c1fc11 addi r1,r30,#-1007 8309 00007a20 00240820 add r1,r1,r4 8310 00007a24 20060000 addi r6,r0,(#0x0)&0xff 8311 00007a28 a0260000 sb (r1),r6 8312 00007a2c a0460000 sb (r2),r6 8313 00007a30 23bdfff0 addi r29,r29,#-16 8314 00007a34 20060000 addi r6,r0,#0 8315 00007a38 afa60000 sw (r29),r6 8316 00007a3c afa30004 sw 4(r29),r3 8317 00007a40 8fc60000 lw r6,(r30) 8318 00007a44 afa60008 sw 8(r29),r6 8319 00007a48 20060001 addi r6,r0,#1 8320 00007a4c afa6000c sw 12(r29),r6 8321 00007a50 0fffdb78 jal _ProcessFork 8322 00007a54 54000000 nop; not filled. 8323 00007a58 23bd0010 addi r29,r29,#16 8324 00007a5c 8fa20000 lw r2,0(r29) 8325 00007a60 8fa30004 lw r3,4(r29) 8326 00007a64 8fa40008 lw r4,8(r29) 8327 00007a68 8fa5000c lw r5,12(r29) 8328 00007a6c 8fa60010 lw r6,16(r29) 8329 00007a70 8fdffff8 lw r31,-8(r30) 8330 00007a74 001ee820 add r29,r0,r30 8331 00007a78 8fdefffc lw r30,-4(r30) 8332 00007a7c 4be00000 jr r31 8333 00007a80 54000000 nop 8334 00007a84 .endproc _process_create 8335 00007a84 .align 2 8336 00007a84 .proc _ProcessKill 8337 00007a84 .global _ProcessKill 8338 00007a84 _ProcessKill: 8339 ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. 8340 00007a84 afbefffc sw -4(r29),r30; push fp 8341 00007a88 001df020 add r30,r0,r29; fp = sp 8342 00007a8c afbffff8 sw -8(r29),r31; push ret addr 8343 00007a90 2fbd0008 subui r29,r29,#8; alloc local storage 8344 00007a94 0fffd0b4 jal _ProcessSchedule 8345 00007a98 54000000 nop; not filled. 8346 00007a9c 8fdffff8 lw r31,-8(r30) 8347 00007aa0 001ee820 add r29,r0,r30 8348 00007aa4 8fdefffc lw r30,-4(r30) 8349 00007aa8 4be00000 jr r31 8350 00007aac 54000000 nop 8351 00007ab0 .endproc _ProcessKill 8352 00007ab0 .align 2 8353 00007ab0 .proc _PageFaultHandler 8354 00007ab0 .global _PageFaultHandler 8355 00007ab0 _PageFaultHandler: 8356 ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. 8357 00007ab0 afbefffc sw -4(r29),r30; push fp 8358 00007ab4 001df020 add r30,r0,r29; fp = sp 8359 00007ab8 afbffff8 sw -8(r29),r31; push ret addr 8360 00007abc 2fbd0008 subui r29,r29,#8; alloc local storage 8361 00007ac0 8fdffff8 lw r31,-8(r30) 8362 00007ac4 001ee820 add r29,r0,r30 8363 00007ac8 8fdefffc lw r30,-4(r30) 8364 00007acc 4be00000 jr r31 8365 00007ad0 54000000 nop 8366 00007ad4 .endproc _PageFaultHandler 8367 00007ad4 .data 8368 0000fd60 .global _debugstr 8369 0000fd60 _debugstr: 8370 0000fd60 .space 200 8371 0000fe28 .align 2 8372 0000fe28 .global _currentPCB 8373 0000fe28 _currentPCB: 8374 0000fe28 .space 4 8375 0000fe2c .align 2 8376 0000fe2c _freepcbs_LF5: 8377 0000fe2c .space 12 8378 0000fe38 .align 2 8379 0000fe38 _runQueue_LF5: 8380 0000fe38 .space 12 8381 0000fe44 .align 2 8382 0000fe44 _waitQueue_LF5: 8383 0000fe44 .space 12 8384 0000fe50 .align 2 8385 0000fe50 _zombieQueue_LF5: 8386 0000fe50 .space 12 8387 0000fe5c .align 2 8388 0000fe5c _pcbs_LF5: 8389 0000fe5c .space 3840 8390 00010d5c .text 8391 00007ad4 .align 2 8392 00007ad4 .proc _ProcessExit_LF5 8393 00007ad4 _ProcessExit_LF5: 8394 ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. 8395 00007ad4 afbefffc sw -4(r29),r30; push fp 8396 00007ad8 001df020 add r30,r0,r29; fp = sp 8397 00007adc afbffff8 sw -8(r29),r31; push ret addr 8398 00007ae0 2fbd0008 subui r29,r29,#8; alloc local storage 8399 00007ae4 0c0034f8 jal _exit 8400 00007ae8 54000000 nop; not filled. 8401 00007aec 8fdffff8 lw r31,-8(r30) 8402 00007af0 001ee820 add r29,r0,r30 8403 00007af4 8fdefffc lw r30,-4(r30) 8404 00007af8 4be00000 jr r31 8405 00007afc 54000000 nop 8406 00007b00 .endproc _ProcessExit_LF5 8407 ; Compiled by GCC 8409 00007b00 .align 2 8410 00007b00 .proc _isspace 8411 00007b00 .global _isspace 8412 00007b00 _isspace: 8413 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 8414 00007b00 afbefffc sw -4(r29),r30; push fp 8415 00007b04 001df020 add r30,r0,r29; fp = sp 8416 00007b08 afbffff8 sw -8(r29),r31; push ret addr 8417 00007b0c 2fbd0010 subui r29,r29,#16; alloc local storage 8418 00007b10 afa20000 sw 0(r29),r2 8419 00007b14 83c20003 lb r2,3(r30) 8420 00007b18 201f0000 addi r31,r0,#0 8421 00007b1c 304100ff andi r1,r2,#0x00ff 8422 00007b20 60210020 seqi r1,r1,#32 8423 00007b24 14200018 bnez r1,L6_LF6 8424 00007b28 54000000 nop; not filled. 8425 00007b2c 2041fff7 addi r1,r2,#-9 8426 00007b30 302100ff andi r1,r1,#0x00ff 8427 00007b34 70210001 sleui r1,r1,#1 8428 00007b38 10200008 beqz r1,L5_LF6 8429 00007b3c 54000000 nop; not filled. 8430 00007b40 L6_LF6: 8431 00007b40 201f0001 addi r31,r0,#1 8432 00007b44 L5_LF6: 8433 00007b44 001f0820 add r1,r0,r31 8434 00007b48 8fa20000 lw r2,0(r29) 8435 00007b4c 8fdffff8 lw r31,-8(r30) 8436 00007b50 001ee820 add r29,r0,r30 8437 00007b54 8fdefffc lw r30,-4(r30) 8438 00007b58 4be00000 jr r31 8439 00007b5c 54000000 nop 8440 00007b60 .endproc _isspace 8441 00007b60 .align 2 8442 00007b60 .proc _isxdigit 8443 00007b60 .global _isxdigit 8444 00007b60 _isxdigit: 8445 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 8446 00007b60 afbefffc sw -4(r29),r30; push fp 8447 00007b64 001df020 add r30,r0,r29; fp = sp 8448 00007b68 afbffff8 sw -8(r29),r31; push ret addr 8449 00007b6c 2fbd0010 subui r29,r29,#16; alloc local storage 8450 00007b70 afa20000 sw 0(r29),r2 8451 00007b74 83df0003 lb r31,3(r30) 8452 00007b78 20020000 addi r2,r0,#0 8453 00007b7c 23e1ffd0 addi r1,r31,#-48 8454 00007b80 302100ff andi r1,r1,#0x00ff 8455 00007b84 70210009 sleui r1,r1,#9 8456 00007b88 14200028 bnez r1,L12_LF6 8457 00007b8c 54000000 nop; not filled. 8458 00007b90 23e1ff9f addi r1,r31,#-97 8459 00007b94 302100ff andi r1,r1,#0x00ff 8460 00007b98 70210005 sleui r1,r1,#5 8461 00007b9c 14200014 bnez r1,L12_LF6 8462 00007ba0 54000000 nop; not filled. 8463 00007ba4 33e100ff andi r1,r31,#0x00ff 8464 00007ba8 64210041 snei r1,r1,#65 8465 00007bac 14200008 bnez r1,L11_LF6 8466 00007bb0 54000000 nop; not filled. 8467 00007bb4 L12_LF6: 8468 00007bb4 20020001 addi r2,r0,#1 8469 00007bb8 L11_LF6: 8470 00007bb8 00020820 add r1,r0,r2 8471 00007bbc 8fa20000 lw r2,0(r29) 8472 00007bc0 8fdffff8 lw r31,-8(r30) 8473 00007bc4 001ee820 add r29,r0,r30 8474 00007bc8 8fdefffc lw r30,-4(r30) 8475 00007bcc 4be00000 jr r31 8476 00007bd0 54000000 nop 8477 00007bd4 .endproc _isxdigit 8478 00007bd4 .align 2 8479 00007bd4 .proc _DisableIntrs 8480 00007bd4 .global _DisableIntrs 8481 00007bd4 _DisableIntrs: 8482 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 8483 00007bd4 afbefffc sw -4(r29),r30; push fp 8484 00007bd8 001df020 add r30,r0,r29; fp = sp 8485 00007bdc afbffff8 sw -8(r29),r31; push ret addr 8486 00007be0 2fbd0010 subui r29,r29,#16; alloc local storage 8487 00007be4 afa20000 sw 0(r29),r2 8488 00007be8 23bdfff8 addi r29,r29,#-8 8489 00007bec 2002000f addi r2,r0,#15 8490 00007bf0 afa20000 sw (r29),r2 8491 00007bf4 0fff9690 jal _SetIntrs 8492 00007bf8 54000000 nop; not filled. 8493 00007bfc 23bd0008 addi r29,r29,#8 8494 00007c00 8fa20000 lw r2,0(r29) 8495 00007c04 8fdffff8 lw r31,-8(r30) 8496 00007c08 001ee820 add r29,r0,r30 8497 00007c0c 8fdefffc lw r30,-4(r30) 8498 00007c10 4be00000 jr r31 8499 00007c14 54000000 nop 8500 00007c18 .endproc _DisableIntrs 8501 00007c18 .align 2 8502 00007c18 .proc _EnableIntrs 8503 00007c18 .global _EnableIntrs 8504 00007c18 _EnableIntrs: 8505 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 8506 00007c18 afbefffc sw -4(r29),r30; push fp 8507 00007c1c 001df020 add r30,r0,r29; fp = sp 8508 00007c20 afbffff8 sw -8(r29),r31; push ret addr 8509 00007c24 2fbd0010 subui r29,r29,#16; alloc local storage 8510 00007c28 afa20000 sw 0(r29),r2 8511 00007c2c 23bdfff8 addi r29,r29,#-8 8512 00007c30 20020000 addi r2,r0,#0 8513 00007c34 afa20000 sw (r29),r2 8514 00007c38 0fff964c jal _SetIntrs 8515 00007c3c 54000000 nop; not filled. 8516 00007c40 23bd0008 addi r29,r29,#8 8517 00007c44 8fa20000 lw r2,0(r29) 8518 00007c48 8fdffff8 lw r31,-8(r30) 8519 00007c4c 001ee820 add r29,r0,r30 8520 00007c50 8fdefffc lw r30,-4(r30) 8521 00007c54 4be00000 jr r31 8522 00007c58 54000000 nop 8523 00007c5c .endproc _EnableIntrs 8524 00007c5c .align 2 8525 00007c5c .proc _RestoreIntrs 8526 00007c5c .global _RestoreIntrs 8527 00007c5c _RestoreIntrs: 8528 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 8529 00007c5c afbefffc sw -4(r29),r30; push fp 8530 00007c60 001df020 add r30,r0,r29; fp = sp 8531 00007c64 afbffff8 sw -8(r29),r31; push ret addr 8532 00007c68 2fbd0010 subui r29,r29,#16; alloc local storage 8533 00007c6c afa20000 sw 0(r29),r2 8534 00007c70 23bdfff8 addi r29,r29,#-8 8535 00007c74 8fc20000 lw r2,(r30) 8536 00007c78 afa20000 sw (r29),r2 8537 00007c7c 0fff9608 jal _SetIntrs 8538 00007c80 54000000 nop; not filled. 8539 00007c84 23bd0008 addi r29,r29,#8 8540 00007c88 8fa20000 lw r2,0(r29) 8541 00007c8c 8fdffff8 lw r31,-8(r30) 8542 00007c90 001ee820 add r29,r0,r30 8543 00007c94 8fdefffc lw r30,-4(r30) 8544 00007c98 4be00000 jr r31 8545 00007c9c 54000000 nop 8546 00007ca0 .endproc _RestoreIntrs 8547 00007ca0 .align 2 8548 00007ca0 .proc _QueueLinkInit 8549 00007ca0 .global _QueueLinkInit 8550 00007ca0 _QueueLinkInit: 8551 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 8552 00007ca0 afbefffc sw -4(r29),r30; push fp 8553 00007ca4 001df020 add r30,r0,r29; fp = sp 8554 00007ca8 afbffff8 sw -8(r29),r31; push ret addr 8555 00007cac 2fbd0010 subui r29,r29,#16; alloc local storage 8556 00007cb0 afa20000 sw 0(r29),r2 8557 00007cb4 8fc10000 lw r1,(r30) 8558 00007cb8 8fc20004 lw r2,4(r30) 8559 00007cbc 201f0000 addi r31,r0,#0 8560 00007cc0 ac3f0000 sw (r1),r31 8561 00007cc4 ac22000c sw 12(r1),r2 8562 00007cc8 8fa20000 lw r2,0(r29) 8563 00007ccc 8fdffff8 lw r31,-8(r30) 8564 00007cd0 001ee820 add r29,r0,r30 8565 00007cd4 8fdefffc lw r30,-4(r30) 8566 00007cd8 4be00000 jr r31 8567 00007cdc 54000000 nop 8568 00007ce0 .endproc _QueueLinkInit 8569 00007ce0 .align 2 8570 00007ce0 .proc _QueueNext 8571 00007ce0 .global _QueueNext 8572 00007ce0 _QueueNext: 8573 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 8574 00007ce0 afbefffc sw -4(r29),r30; push fp 8575 00007ce4 001df020 add r30,r0,r29; fp = sp 8576 00007ce8 afbffff8 sw -8(r29),r31; push ret addr 8577 00007cec 2fbd0008 subui r29,r29,#8; alloc local storage 8578 00007cf0 8fc10000 lw r1,(r30) 8579 00007cf4 8c210000 lw r1,(r1) 8580 00007cf8 8fdffff8 lw r31,-8(r30) 8581 00007cfc 001ee820 add r29,r0,r30 8582 00007d00 8fdefffc lw r30,-4(r30) 8583 00007d04 4be00000 jr r31 8584 00007d08 54000000 nop 8585 00007d0c .endproc _QueueNext 8586 00007d0c .align 2 8587 00007d0c .proc _QueuePrev 8588 00007d0c .global _QueuePrev 8589 00007d0c _QueuePrev: 8590 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 8591 00007d0c afbefffc sw -4(r29),r30; push fp 8592 00007d10 001df020 add r30,r0,r29; fp = sp 8593 00007d14 afbffff8 sw -8(r29),r31; push ret addr 8594 00007d18 2fbd0008 subui r29,r29,#8; alloc local storage 8595 00007d1c 8fc10000 lw r1,(r30) 8596 00007d20 8c210004 lw r1,4(r1) 8597 00007d24 8fdffff8 lw r31,-8(r30) 8598 00007d28 001ee820 add r29,r0,r30 8599 00007d2c 8fdefffc lw r30,-4(r30) 8600 00007d30 4be00000 jr r31 8601 00007d34 54000000 nop 8602 00007d38 .endproc _QueuePrev 8603 00007d38 .align 2 8604 00007d38 .proc _QueueFirst 8605 00007d38 .global _QueueFirst 8606 00007d38 _QueueFirst: 8607 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 8608 00007d38 afbefffc sw -4(r29),r30; push fp 8609 00007d3c 001df020 add r30,r0,r29; fp = sp 8610 00007d40 afbffff8 sw -8(r29),r31; push ret addr 8611 00007d44 2fbd0008 subui r29,r29,#8; alloc local storage 8612 00007d48 8fc10000 lw r1,(r30) 8613 00007d4c 8c210000 lw r1,(r1) 8614 00007d50 8fdffff8 lw r31,-8(r30) 8615 00007d54 001ee820 add r29,r0,r30 8616 00007d58 8fdefffc lw r30,-4(r30) 8617 00007d5c 4be00000 jr r31 8618 00007d60 54000000 nop 8619 00007d64 .endproc _QueueFirst 8620 00007d64 .align 2 8621 00007d64 .proc _QueueLast 8622 00007d64 .global _QueueLast 8623 00007d64 _QueueLast: 8624 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 8625 00007d64 afbefffc sw -4(r29),r30; push fp 8626 00007d68 001df020 add r30,r0,r29; fp = sp 8627 00007d6c afbffff8 sw -8(r29),r31; push ret addr 8628 00007d70 2fbd0008 subui r29,r29,#8; alloc local storage 8629 00007d74 8fc10000 lw r1,(r30) 8630 00007d78 8c210004 lw r1,4(r1) 8631 00007d7c 8fdffff8 lw r31,-8(r30) 8632 00007d80 001ee820 add r29,r0,r30 8633 00007d84 8fdefffc lw r30,-4(r30) 8634 00007d88 4be00000 jr r31 8635 00007d8c 54000000 nop 8636 00007d90 .endproc _QueueLast 8637 00007d90 .align 2 8638 00007d90 .proc _QueueInsertAfter 8639 00007d90 .global _QueueInsertAfter 8640 00007d90 _QueueInsertAfter: 8641 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 8642 00007d90 afbefffc sw -4(r29),r30; push fp 8643 00007d94 001df020 add r30,r0,r29; fp = sp 8644 00007d98 afbffff8 sw -8(r29),r31; push ret addr 8645 00007d9c 2fbd0010 subui r29,r29,#16; alloc local storage 8646 00007da0 afa20000 sw 0(r29),r2 8647 00007da4 afa30004 sw 4(r29),r3 8648 00007da8 8fc30000 lw r3,(r30) 8649 00007dac 8fc20004 lw r2,4(r30) 8650 00007db0 8fc10008 lw r1,8(r30) 8651 00007db4 ac230008 sw 8(r1),r3 8652 00007db8 ac220004 sw 4(r1),r2 8653 00007dbc 8c5f0000 lw r31,(r2) 8654 00007dc0 ac3f0000 sw (r1),r31 8655 00007dc4 ac410000 sw (r2),r1 8656 00007dc8 8c220000 lw r2,(r1) 8657 00007dcc ac410004 sw 4(r2),r1 8658 00007dd0 8c610008 lw r1,8(r3) 8659 00007dd4 20210001 addi r1,r1,#1 8660 00007dd8 ac610008 sw 8(r3),r1 8661 00007ddc 8fa20000 lw r2,0(r29) 8662 00007de0 8fa30004 lw r3,4(r29) 8663 00007de4 8fdffff8 lw r31,-8(r30) 8664 00007de8 001ee820 add r29,r0,r30 8665 00007dec 8fdefffc lw r30,-4(r30) 8666 00007df0 4be00000 jr r31 8667 00007df4 54000000 nop 8668 00007df8 .endproc _QueueInsertAfter 8669 00007df8 .align 2 8670 00007df8 .proc _QueueInsertFirst 8671 00007df8 .global _QueueInsertFirst 8672 00007df8 _QueueInsertFirst: 8673 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 8674 00007df8 afbefffc sw -4(r29),r30; push fp 8675 00007dfc 001df020 add r30,r0,r29; fp = sp 8676 00007e00 afbffff8 sw -8(r29),r31; push ret addr 8677 00007e04 2fbd0010 subui r29,r29,#16; alloc local storage 8678 00007e08 afa20000 sw 0(r29),r2 8679 00007e0c afa30004 sw 4(r29),r3 8680 00007e10 8fc30000 lw r3,(r30) 8681 00007e14 8fc10004 lw r1,4(r30) 8682 00007e18 ac230008 sw 8(r1),r3 8683 00007e1c ac230004 sw 4(r1),r3 8684 00007e20 8c7f0000 lw r31,(r3) 8685 00007e24 ac3f0000 sw (r1),r31 8686 00007e28 ac610000 sw (r3),r1 8687 00007e2c 8c220000 lw r2,(r1) 8688 00007e30 ac410004 sw 4(r2),r1 8689 00007e34 8c610008 lw r1,8(r3) 8690 00007e38 20210001 addi r1,r1,#1 8691 00007e3c ac610008 sw 8(r3),r1 8692 00007e40 8fa20000 lw r2,0(r29) 8693 00007e44 8fa30004 lw r3,4(r29) 8694 00007e48 8fdffff8 lw r31,-8(r30) 8695 00007e4c 001ee820 add r29,r0,r30 8696 00007e50 8fdefffc lw r30,-4(r30) 8697 00007e54 4be00000 jr r31 8698 00007e58 54000000 nop 8699 00007e5c .endproc _QueueInsertFirst 8700 00007e5c .align 2 8701 00007e5c .proc _QueueInsertLast 8702 00007e5c .global _QueueInsertLast 8703 00007e5c _QueueInsertLast: 8704 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 8705 00007e5c afbefffc sw -4(r29),r30; push fp 8706 00007e60 001df020 add r30,r0,r29; fp = sp 8707 00007e64 afbffff8 sw -8(r29),r31; push ret addr 8708 00007e68 2fbd0010 subui r29,r29,#16; alloc local storage 8709 00007e6c afa20000 sw 0(r29),r2 8710 00007e70 afa30004 sw 4(r29),r3 8711 00007e74 8fc30000 lw r3,(r30) 8712 00007e78 8fc10004 lw r1,4(r30) 8713 00007e7c 8c620004 lw r2,4(r3) 8714 00007e80 ac230008 sw 8(r1),r3 8715 00007e84 ac220004 sw 4(r1),r2 8716 00007e88 8c5f0000 lw r31,(r2) 8717 00007e8c ac3f0000 sw (r1),r31 8718 00007e90 ac410000 sw (r2),r1 8719 00007e94 8c220000 lw r2,(r1) 8720 00007e98 ac410004 sw 4(r2),r1 8721 00007e9c 8c610008 lw r1,8(r3) 8722 00007ea0 20210001 addi r1,r1,#1 8723 00007ea4 ac610008 sw 8(r3),r1 8724 00007ea8 8fa20000 lw r2,0(r29) 8725 00007eac 8fa30004 lw r3,4(r29) 8726 00007eb0 8fdffff8 lw r31,-8(r30) 8727 00007eb4 001ee820 add r29,r0,r30 8728 00007eb8 8fdefffc lw r30,-4(r30) 8729 00007ebc 4be00000 jr r31 8730 00007ec0 54000000 nop 8731 00007ec4 .endproc _QueueInsertLast 8732 00007ec4 .align 2 8733 00007ec4 .proc _QueueRemove 8734 00007ec4 .global _QueueRemove 8735 00007ec4 _QueueRemove: 8736 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 8737 00007ec4 afbefffc sw -4(r29),r30; push fp 8738 00007ec8 001df020 add r30,r0,r29; fp = sp 8739 00007ecc afbffff8 sw -8(r29),r31; push ret addr 8740 00007ed0 2fbd0010 subui r29,r29,#16; alloc local storage 8741 00007ed4 afa20000 sw 0(r29),r2 8742 00007ed8 afa30004 sw 4(r29),r3 8743 00007edc 8fdf0000 lw r31,(r30) 8744 00007ee0 8fe10008 lw r1,8(r31) 8745 00007ee4 8c210008 lw r1,8(r1) 8746 00007ee8 6c210000 sgti r1,r1,#0 8747 00007eec 1020002c beqz r1,L44_LF6 8748 00007ef0 54000000 nop; not filled. 8749 00007ef4 8fe10004 lw r1,4(r31) 8750 00007ef8 8fe30000 lw r3,(r31) 8751 00007efc ac230000 sw (r1),r3 8752 00007f00 8fe10000 lw r1,(r31) 8753 00007f04 8fe30004 lw r3,4(r31) 8754 00007f08 ac230004 sw 4(r1),r3 8755 00007f0c 8fe20008 lw r2,8(r31) 8756 00007f10 8c410008 lw r1,8(r2) 8757 00007f14 2021ffff addi r1,r1,#-1 8758 00007f18 ac410008 sw 8(r2),r1 8759 00007f1c L44_LF6: 8760 00007f1c 20030000 addi r3,r0,#0 8761 00007f20 afe30000 sw (r31),r3 8762 00007f24 8fa20000 lw r2,0(r29) 8763 00007f28 8fa30004 lw r3,4(r29) 8764 00007f2c 8fdffff8 lw r31,-8(r30) 8765 00007f30 001ee820 add r29,r0,r30 8766 00007f34 8fdefffc lw r30,-4(r30) 8767 00007f38 4be00000 jr r31 8768 00007f3c 54000000 nop 8769 00007f40 .endproc _QueueRemove 8770 00007f40 .align 2 8771 00007f40 .proc _QueueLength 8772 00007f40 .global _QueueLength 8773 00007f40 _QueueLength: 8774 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 8775 00007f40 afbefffc sw -4(r29),r30; push fp 8776 00007f44 001df020 add r30,r0,r29; fp = sp 8777 00007f48 afbffff8 sw -8(r29),r31; push ret addr 8778 00007f4c 2fbd0008 subui r29,r29,#8; alloc local storage 8779 00007f50 8fc10000 lw r1,(r30) 8780 00007f54 8c210008 lw r1,8(r1) 8781 00007f58 8fdffff8 lw r31,-8(r30) 8782 00007f5c 001ee820 add r29,r0,r30 8783 00007f60 8fdefffc lw r30,-4(r30) 8784 00007f64 4be00000 jr r31 8785 00007f68 54000000 nop 8786 00007f6c .endproc _QueueLength 8787 00007f6c .align 2 8788 00007f6c .proc _QueueEmpty 8789 00007f6c .global _QueueEmpty 8790 00007f6c _QueueEmpty: 8791 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 8792 00007f6c afbefffc sw -4(r29),r30; push fp 8793 00007f70 001df020 add r30,r0,r29; fp = sp 8794 00007f74 afbffff8 sw -8(r29),r31; push ret addr 8795 00007f78 2fbd0008 subui r29,r29,#8; alloc local storage 8796 00007f7c 8fc10000 lw r1,(r30) 8797 00007f80 8c210008 lw r1,8(r1) 8798 00007f84 60210000 seqi r1,r1,#0 8799 00007f88 8fdffff8 lw r31,-8(r30) 8800 00007f8c 001ee820 add r29,r0,r30 8801 00007f90 8fdefffc lw r30,-4(r30) 8802 00007f94 4be00000 jr r31 8803 00007f98 54000000 nop 8804 00007f9c .endproc _QueueEmpty 8805 00007f9c .data 8806 00010d5c .align 2 8807 00010d5c LC0_LF6: 8808 00010d5c 496e6974 .ascii "Initializing queue link %d.\n\000" 8808 00010d60 69616c69 8808 00010d64 7a696e67 8808 00010d68 20717565 8808 00010d6c 7565206c 8808 00010d70 696e6b20 8808 00010d74 25642e0a 8808 00010d78 00 8809 00010d79 .text 8810 00007f9c .align 2 8811 00007f9c .proc _QueueModuleInit 8812 00007f9c .global _QueueModuleInit 8813 00007f9c _QueueModuleInit: 8814 ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. 8815 00007f9c afbefffc sw -4(r29),r30; push fp 8816 00007fa0 001df020 add r30,r0,r29; fp = sp 8817 00007fa4 afbffff8 sw -8(r29),r31; push ret addr 8818 00007fa8 2fbd0018 subui r29,r29,#24; alloc local storage 8819 00007fac afa20000 sw 0(r29),r2 8820 00007fb0 afa30004 sw 4(r29),r3 8821 00007fb4 afa40008 sw 8(r29),r4 8822 00007fb8 afa5000c sw 12(r29),r5 8823 00007fbc 23bdfff8 addi r29,r29,#-8 8824 00007fc0 3c050001 lhi r5,((_freeLinks)>>16)&0xffff 8825 00007fc4 24a50dc8 addui r5,r5,(_freeLinks)&0xffff 8826 00007fc8 afa50000 sw (r29),r5 8827 00007fcc 0c0000e0 jal _QueueInit 8828 00007fd0 54000000 nop; not filled. 8829 00007fd4 20030000 addi r3,r0,#0 8830 00007fd8 23bd0008 addi r29,r29,#8 8831 00007fdc 3c040000 lhi r4,((_debugstr)>>16)&0xffff 8832 00007fe0 2484fd60 addui r4,r4,(_debugstr)&0xffff 8833 00007fe4 3c020001 lhi r2,((_linkpool_LF6)>>16)&0xffff 8834 00007fe8 24420dd4 addui r2,r2,(_linkpool_LF6)&0xffff 8835 00007fec L63_LF6: 8836 00007fec 23bdfff8 addi r29,r29,#-8 8837 00007ff0 afa40000 sw (r29),r4 8838 00007ff4 20050069 addi r5,r0,#105 8839 00007ff8 afa50004 sw 4(r29),r5 8840 00007ffc 0fffbe34 jal _dindex 8841 00008000 54000000 nop; not filled. 8842 00008004 23bd0008 addi r29,r29,#8 8843 00008008 64210000 snei r1,r1,#0 8844 0000800c 1420002c bnez r1,L65_LF6 8845 00008010 54000000 nop; not filled. 8846 00008014 23bdfff8 addi r29,r29,#-8 8847 00008018 afa40000 sw (r29),r4 8848 0000801c 2005002b addi r5,r0,#43 8849 00008020 afa50004 sw 4(r29),r5 8850 00008024 0fffbe0c jal _dindex 8851 00008028 54000000 nop; not filled. 8852 0000802c 23bd0008 addi r29,r29,#8 8853 00008030 64210000 snei r1,r1,#0 8854 00008034 10200024 beqz r1,L64_LF6 8855 00008038 54000000 nop; not filled. 8856 0000803c L65_LF6: 8857 0000803c 23bdfff8 addi r29,r29,#-8 8858 00008040 3c050001 lhi r5,((LC0_LF6)>>16)&0xffff 8859 00008044 24a50d5c addui r5,r5,(LC0_LF6)&0xffff 8860 00008048 afa50000 sw (r29),r5 8861 0000804c afa30004 sw 4(r29),r3 8862 00008050 0c002f98 jal _printf 8863 00008054 54000000 nop; not filled. 8864 00008058 23bd0008 addi r29,r29,#8 8865 0000805c L64_LF6: 8866 0000805c 20050000 addi r5,r0,#0 8867 00008060 ac450000 sw (r2),r5 8868 00008064 23bdfff8 addi r29,r29,#-8 8869 00008068 afa20000 sw (r29),r2 8870 0000806c 0c000078 jal _QueueFreeLink 8871 00008070 54000000 nop; not filled. 8872 00008074 23bd0008 addi r29,r29,#8 8873 00008078 20420010 addi r2,r2,#16 8874 0000807c 20630001 addi r3,r3,#1 8875 00008080 7061018f slei r1,r3,#399 8876 00008084 1420ff64 bnez r1,L63_LF6 8877 00008088 54000000 nop; not filled. 8878 0000808c 8fa20000 lw r2,0(r29) 8879 00008090 8fa30004 lw r3,4(r29) 8880 00008094 8fa40008 lw r4,8(r29) 8881 00008098 8fa5000c lw r5,12(r29) 8882 0000809c 8fdffff8 lw r31,-8(r30) 8883 000080a0 001ee820 add r29,r0,r30 8884 000080a4 8fdefffc lw r30,-4(r30) 8885 000080a8 4be00000 jr r31 8886 000080ac 54000000 nop 8887 000080b0 .endproc _QueueModuleInit 8888 000080b0 .align 2 8889 000080b0 .proc _QueueInit 8890 000080b0 .global _QueueInit 8891 000080b0 _QueueInit: 8892 ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. 8893 000080b0 afbefffc sw -4(r29),r30; push fp 8894 000080b4 001df020 add r30,r0,r29; fp = sp 8895 000080b8 afbffff8 sw -8(r29),r31; push ret addr 8896 000080bc 2fbd0008 subui r29,r29,#8; alloc local storage 8897 000080c0 8fc10000 lw r1,(r30) 8898 000080c4 ac210000 sw (r1),r1 8899 000080c8 ac210004 sw 4(r1),r1 8900 000080cc 201f0000 addi r31,r0,#0 8901 000080d0 ac3f0008 sw 8(r1),r31 8902 000080d4 8fdffff8 lw r31,-8(r30) 8903 000080d8 001ee820 add r29,r0,r30 8904 000080dc 8fdefffc lw r30,-4(r30) 8905 000080e0 4be00000 jr r31 8906 000080e4 54000000 nop 8907 000080e8 .endproc _QueueInit 8908 000080e8 .data 8909 00010d79 .align 2 8910 00010d7c LC1_LF6: 8911 00010d7c 25733a20 .ascii "%s: %s\n\000" 8911 00010d80 25730a00 8912 00010d84 .align 2 8913 00010d84 LC2_LF6: 8914 00010d84 51756575 .ascii "QueueFreeLink\000" 8914 00010d88 65467265 8914 00010d8c 654c696e 8914 00010d90 6b00 8915 00010d92 .align 2 8916 00010d94 LC3_LF6: 8917 00010d94 4c696e6b .ascii "Link not empty\000" 8917 00010d98 206e6f74 8917 00010d9c 20656d70 8917 00010da0 747900 8918 00010da3 .text 8919 000080e8 .align 2 8920 000080e8 .proc _QueueFreeLink 8921 000080e8 .global _QueueFreeLink 8922 000080e8 _QueueFreeLink: 8923 ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. 8924 000080e8 afbefffc sw -4(r29),r30; push fp 8925 000080ec 001df020 add r30,r0,r29; fp = sp 8926 000080f0 afbffff8 sw -8(r29),r31; push ret addr 8927 000080f4 2fbd0018 subui r29,r29,#24; alloc local storage 8928 000080f8 afa20000 sw 0(r29),r2 8929 000080fc afa30004 sw 4(r29),r3 8930 00008100 afa40008 sw 8(r29),r4 8931 00008104 8fc30000 lw r3,(r30) 8932 00008108 8c610000 lw r1,(r3) 8933 0000810c 64210000 snei r1,r1,#0 8934 00008110 10200038 beqz r1,L77_LF6 8935 00008114 54000000 nop; not filled. 8936 00008118 23bdfff0 addi r29,r29,#-16 8937 0000811c 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 8938 00008120 24840d7c addui r4,r4,(LC1_LF6)&0xffff 8939 00008124 afa40000 sw (r29),r4 8940 00008128 3c010001 lhi r1,((LC2_LF6)>>16)&0xffff 8941 0000812c 24210d84 addui r1,r1,(LC2_LF6)&0xffff 8942 00008130 afa10004 sw 4(r29),r1 8943 00008134 3c040001 lhi r4,((LC3_LF6)>>16)&0xffff 8944 00008138 24840d94 addui r4,r4,(LC3_LF6)&0xffff 8945 0000813c afa40008 sw 8(r29),r4 8946 00008140 0c002ea8 jal _printf 8947 00008144 54000000 nop; not filled. 8948 00008148 23bd0010 addi r29,r29,#16 8949 0000814c L77_LF6: 8950 0000814c 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 8951 00008150 24420dc8 addui r2,r2,(_freeLinks)&0xffff 8952 00008154 8c410004 lw r1,4(r2) 8953 00008158 ac620008 sw 8(r3),r2 8954 0000815c ac610004 sw 4(r3),r1 8955 00008160 8c240000 lw r4,(r1) 8956 00008164 ac640000 sw (r3),r4 8957 00008168 ac230000 sw (r1),r3 8958 0000816c 8c610000 lw r1,(r3) 8959 00008170 ac230004 sw 4(r1),r3 8960 00008174 8c410008 lw r1,8(r2) 8961 00008178 20210001 addi r1,r1,#1 8962 0000817c ac410008 sw 8(r2),r1 8963 00008180 8fa20000 lw r2,0(r29) 8964 00008184 8fa30004 lw r3,4(r29) 8965 00008188 8fa40008 lw r4,8(r29) 8966 0000818c 8fdffff8 lw r31,-8(r30) 8967 00008190 001ee820 add r29,r0,r30 8968 00008194 8fdefffc lw r30,-4(r30) 8969 00008198 4be00000 jr r31 8970 0000819c 54000000 nop 8971 000081a0 .endproc _QueueFreeLink 8972 000081a0 .data 8973 00010da3 .align 2 8974 00010da4 LC4_LF6: 8975 00010da4 51756575 .ascii "QueueAllocLink\000" 8975 00010da8 65416c6c 8975 00010dac 6f634c69 8975 00010db0 6e6b00 8976 00010db3 .align 2 8977 00010db4 LC5_LF6: 8978 00010db4 4c696e6b .ascii "Link not allocated!\000" 8978 00010db8 206e6f74 8978 00010dbc 20616c6c 8978 00010dc0 6f636174 8978 00010dc4 65642100 8979 00010dc8 .text 8980 000081a0 .align 2 8981 000081a0 .proc _QueueAllocLink 8982 000081a0 .global _QueueAllocLink 8983 000081a0 _QueueAllocLink: 8984 ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. 8985 000081a0 afbefffc sw -4(r29),r30; push fp 8986 000081a4 001df020 add r30,r0,r29; fp = sp 8987 000081a8 afbffff8 sw -8(r29),r31; push ret addr 8988 000081ac 2fbd0018 subui r29,r29,#24; alloc local storage 8989 000081b0 afa20000 sw 0(r29),r2 8990 000081b4 afa30004 sw 4(r29),r3 8991 000081b8 afa40008 sw 8(r29),r4 8992 000081bc 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 8993 000081c0 24420dc8 addui r2,r2,(_freeLinks)&0xffff 8994 000081c4 8c410008 lw r1,8(r2) 8995 000081c8 60210000 seqi r1,r1,#0 8996 000081cc 14200054 bnez r1,L92_LF6 8997 000081d0 54000000 nop; not filled. 8998 000081d4 8c430000 lw r3,(r2) 8999 000081d8 8c610008 lw r1,8(r3) 9000 000081dc 8c210008 lw r1,8(r1) 9001 000081e0 6c210000 sgti r1,r1,#0 9002 000081e4 1020002c beqz r1,L97_LF6 9003 000081e8 54000000 nop; not filled. 9004 000081ec 8c610004 lw r1,4(r3) 9005 000081f0 8c640000 lw r4,(r3) 9006 000081f4 ac240000 sw (r1),r4 9007 000081f8 8c610000 lw r1,(r3) 9008 000081fc 8c640004 lw r4,4(r3) 9009 00008200 ac240004 sw 4(r1),r4 9010 00008204 8c620008 lw r2,8(r3) 9011 00008208 8c410008 lw r1,8(r2) 9012 0000820c 2021ffff addi r1,r1,#-1 9013 00008210 ac410008 sw 8(r2),r1 9014 00008214 L97_LF6: 9015 00008214 20040000 addi r4,r0,#0 9016 00008218 ac640000 sw (r3),r4 9017 0000821c 08000008 j L98_LF6 9018 00008220 54000000 nop; not filled. 9019 00008224 L92_LF6: 9020 00008224 20030000 addi r3,r0,#0 9021 00008228 L98_LF6: 9022 00008228 64610000 snei r1,r3,#0 9023 0000822c 14200038 bnez r1,L100_LF6 9024 00008230 54000000 nop; not filled. 9025 00008234 23bdfff0 addi r29,r29,#-16 9026 00008238 3c040001 lhi r4,((LC1_LF6)>>16)&0xffff 9027 0000823c 24840d7c addui r4,r4,(LC1_LF6)&0xffff 9028 00008240 afa40000 sw (r29),r4 9029 00008244 3c010001 lhi r1,((LC4_LF6)>>16)&0xffff 9030 00008248 24210da4 addui r1,r1,(LC4_LF6)&0xffff 9031 0000824c afa10004 sw 4(r29),r1 9032 00008250 3c040001 lhi r4,((LC5_LF6)>>16)&0xffff 9033 00008254 24840db4 addui r4,r4,(LC5_LF6)&0xffff 9034 00008258 afa40008 sw 8(r29),r4 9035 0000825c 0c002d8c jal _printf 9036 00008260 54000000 nop; not filled. 9037 00008264 23bd0010 addi r29,r29,#16 9038 00008268 L100_LF6: 9039 00008268 00030820 add r1,r0,r3 9040 0000826c 8fa20000 lw r2,0(r29) 9041 00008270 8fa30004 lw r3,4(r29) 9042 00008274 8fa40008 lw r4,8(r29) 9043 00008278 8fdffff8 lw r31,-8(r30) 9044 0000827c 001ee820 add r29,r0,r30 9045 00008280 8fdefffc lw r30,-4(r30) 9046 00008284 4be00000 jr r31 9047 00008288 54000000 nop 9048 0000828c .endproc _QueueAllocLink 9049 0000828c .data 9050 00010dc8 .align 2 9051 00010dc8 .global _freeLinks 9052 00010dc8 _freeLinks: 9053 00010dc8 .space 12 9054 00010dd4 .align 2 9055 00010dd4 _linkpool_LF6: 9056 00010dd4 .space 6400 9057 ; Compiled by GCC 9058 000126d4 .text 9059 0000828c .align 2 9060 0000828c .proc _isspace 9061 0000828c .global _isspace 9062 0000828c _isspace: 9063 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 9064 0000828c afbefffc sw -4(r29),r30; push fp 9065 00008290 001df020 add r30,r0,r29; fp = sp 9066 00008294 afbffff8 sw -8(r29),r31; push ret addr 9067 00008298 2fbd0010 subui r29,r29,#16; alloc local storage 9068 0000829c afa20000 sw 0(r29),r2 9069 000082a0 83c20003 lb r2,3(r30) 9070 000082a4 201f0000 addi r31,r0,#0 9071 000082a8 304100ff andi r1,r2,#0x00ff 9072 000082ac 60210020 seqi r1,r1,#32 9073 000082b0 14200018 bnez r1,L6_LF7 9074 000082b4 54000000 nop; not filled. 9075 000082b8 2041fff7 addi r1,r2,#-9 9076 000082bc 302100ff andi r1,r1,#0x00ff 9077 000082c0 70210001 sleui r1,r1,#1 9078 000082c4 10200008 beqz r1,L5_LF7 9079 000082c8 54000000 nop; not filled. 9080 000082cc L6_LF7: 9081 000082cc 201f0001 addi r31,r0,#1 9082 000082d0 L5_LF7: 9083 000082d0 001f0820 add r1,r0,r31 9084 000082d4 8fa20000 lw r2,0(r29) 9085 000082d8 8fdffff8 lw r31,-8(r30) 9086 000082dc 001ee820 add r29,r0,r30 9087 000082e0 8fdefffc lw r30,-4(r30) 9088 000082e4 4be00000 jr r31 9089 000082e8 54000000 nop 9090 000082ec .endproc _isspace 9091 000082ec .align 2 9092 000082ec .proc _isxdigit 9093 000082ec .global _isxdigit 9094 000082ec _isxdigit: 9095 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 9096 000082ec afbefffc sw -4(r29),r30; push fp 9097 000082f0 001df020 add r30,r0,r29; fp = sp 9098 000082f4 afbffff8 sw -8(r29),r31; push ret addr 9099 000082f8 2fbd0010 subui r29,r29,#16; alloc local storage 9100 000082fc afa20000 sw 0(r29),r2 9101 00008300 83df0003 lb r31,3(r30) 9102 00008304 20020000 addi r2,r0,#0 9103 00008308 23e1ffd0 addi r1,r31,#-48 9104 0000830c 302100ff andi r1,r1,#0x00ff 9105 00008310 70210009 sleui r1,r1,#9 9106 00008314 14200028 bnez r1,L12_LF7 9107 00008318 54000000 nop; not filled. 9108 0000831c 23e1ff9f addi r1,r31,#-97 9109 00008320 302100ff andi r1,r1,#0x00ff 9110 00008324 70210005 sleui r1,r1,#5 9111 00008328 14200014 bnez r1,L12_LF7 9112 0000832c 54000000 nop; not filled. 9113 00008330 33e100ff andi r1,r31,#0x00ff 9114 00008334 64210041 snei r1,r1,#65 9115 00008338 14200008 bnez r1,L11_LF7 9116 0000833c 54000000 nop; not filled. 9117 00008340 L12_LF7: 9118 00008340 20020001 addi r2,r0,#1 9119 00008344 L11_LF7: 9120 00008344 00020820 add r1,r0,r2 9121 00008348 8fa20000 lw r2,0(r29) 9122 0000834c 8fdffff8 lw r31,-8(r30) 9123 00008350 001ee820 add r29,r0,r30 9124 00008354 8fdefffc lw r30,-4(r30) 9125 00008358 4be00000 jr r31 9126 0000835c 54000000 nop 9127 00008360 .endproc _isxdigit 9128 00008360 .align 2 9129 00008360 .proc _DisableIntrs 9130 00008360 .global _DisableIntrs 9131 00008360 _DisableIntrs: 9132 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 9133 00008360 afbefffc sw -4(r29),r30; push fp 9134 00008364 001df020 add r30,r0,r29; fp = sp 9135 00008368 afbffff8 sw -8(r29),r31; push ret addr 9136 0000836c 2fbd0010 subui r29,r29,#16; alloc local storage 9137 00008370 afa20000 sw 0(r29),r2 9138 00008374 23bdfff8 addi r29,r29,#-8 9139 00008378 2002000f addi r2,r0,#15 9140 0000837c afa20000 sw (r29),r2 9141 00008380 0fff8f04 jal _SetIntrs 9142 00008384 54000000 nop; not filled. 9143 00008388 23bd0008 addi r29,r29,#8 9144 0000838c 8fa20000 lw r2,0(r29) 9145 00008390 8fdffff8 lw r31,-8(r30) 9146 00008394 001ee820 add r29,r0,r30 9147 00008398 8fdefffc lw r30,-4(r30) 9148 0000839c 4be00000 jr r31 9149 000083a0 54000000 nop 9150 000083a4 .endproc _DisableIntrs 9151 000083a4 .align 2 9152 000083a4 .proc _EnableIntrs 9153 000083a4 .global _EnableIntrs 9154 000083a4 _EnableIntrs: 9155 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 9156 000083a4 afbefffc sw -4(r29),r30; push fp 9157 000083a8 001df020 add r30,r0,r29; fp = sp 9158 000083ac afbffff8 sw -8(r29),r31; push ret addr 9159 000083b0 2fbd0010 subui r29,r29,#16; alloc local storage 9160 000083b4 afa20000 sw 0(r29),r2 9161 000083b8 23bdfff8 addi r29,r29,#-8 9162 000083bc 20020000 addi r2,r0,#0 9163 000083c0 afa20000 sw (r29),r2 9164 000083c4 0fff8ec0 jal _SetIntrs 9165 000083c8 54000000 nop; not filled. 9166 000083cc 23bd0008 addi r29,r29,#8 9167 000083d0 8fa20000 lw r2,0(r29) 9168 000083d4 8fdffff8 lw r31,-8(r30) 9169 000083d8 001ee820 add r29,r0,r30 9170 000083dc 8fdefffc lw r30,-4(r30) 9171 000083e0 4be00000 jr r31 9172 000083e4 54000000 nop 9173 000083e8 .endproc _EnableIntrs 9174 000083e8 .align 2 9175 000083e8 .proc _RestoreIntrs 9176 000083e8 .global _RestoreIntrs 9177 000083e8 _RestoreIntrs: 9178 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 9179 000083e8 afbefffc sw -4(r29),r30; push fp 9180 000083ec 001df020 add r30,r0,r29; fp = sp 9181 000083f0 afbffff8 sw -8(r29),r31; push ret addr 9182 000083f4 2fbd0010 subui r29,r29,#16; alloc local storage 9183 000083f8 afa20000 sw 0(r29),r2 9184 000083fc 23bdfff8 addi r29,r29,#-8 9185 00008400 8fc20000 lw r2,(r30) 9186 00008404 afa20000 sw (r29),r2 9187 00008408 0fff8e7c jal _SetIntrs 9188 0000840c 54000000 nop; not filled. 9189 00008410 23bd0008 addi r29,r29,#8 9190 00008414 8fa20000 lw r2,0(r29) 9191 00008418 8fdffff8 lw r31,-8(r30) 9192 0000841c 001ee820 add r29,r0,r30 9193 00008420 8fdefffc lw r30,-4(r30) 9194 00008424 4be00000 jr r31 9195 00008428 54000000 nop 9196 0000842c .endproc _RestoreIntrs 9197 0000842c .align 2 9198 0000842c .proc _QueueLinkInit 9199 0000842c .global _QueueLinkInit 9200 0000842c _QueueLinkInit: 9201 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 9202 0000842c afbefffc sw -4(r29),r30; push fp 9203 00008430 001df020 add r30,r0,r29; fp = sp 9204 00008434 afbffff8 sw -8(r29),r31; push ret addr 9205 00008438 2fbd0010 subui r29,r29,#16; alloc local storage 9206 0000843c afa20000 sw 0(r29),r2 9207 00008440 8fc10000 lw r1,(r30) 9208 00008444 8fc20004 lw r2,4(r30) 9209 00008448 201f0000 addi r31,r0,#0 9210 0000844c ac3f0000 sw (r1),r31 9211 00008450 ac22000c sw 12(r1),r2 9212 00008454 8fa20000 lw r2,0(r29) 9213 00008458 8fdffff8 lw r31,-8(r30) 9214 0000845c 001ee820 add r29,r0,r30 9215 00008460 8fdefffc lw r30,-4(r30) 9216 00008464 4be00000 jr r31 9217 00008468 54000000 nop 9218 0000846c .endproc _QueueLinkInit 9219 0000846c .align 2 9220 0000846c .proc _QueueNext 9221 0000846c .global _QueueNext 9222 0000846c _QueueNext: 9223 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 9224 0000846c afbefffc sw -4(r29),r30; push fp 9225 00008470 001df020 add r30,r0,r29; fp = sp 9226 00008474 afbffff8 sw -8(r29),r31; push ret addr 9227 00008478 2fbd0008 subui r29,r29,#8; alloc local storage 9228 0000847c 8fc10000 lw r1,(r30) 9229 00008480 8c210000 lw r1,(r1) 9230 00008484 8fdffff8 lw r31,-8(r30) 9231 00008488 001ee820 add r29,r0,r30 9232 0000848c 8fdefffc lw r30,-4(r30) 9233 00008490 4be00000 jr r31 9234 00008494 54000000 nop 9235 00008498 .endproc _QueueNext 9236 00008498 .align 2 9237 00008498 .proc _QueuePrev 9238 00008498 .global _QueuePrev 9239 00008498 _QueuePrev: 9240 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 9241 00008498 afbefffc sw -4(r29),r30; push fp 9242 0000849c 001df020 add r30,r0,r29; fp = sp 9243 000084a0 afbffff8 sw -8(r29),r31; push ret addr 9244 000084a4 2fbd0008 subui r29,r29,#8; alloc local storage 9245 000084a8 8fc10000 lw r1,(r30) 9246 000084ac 8c210004 lw r1,4(r1) 9247 000084b0 8fdffff8 lw r31,-8(r30) 9248 000084b4 001ee820 add r29,r0,r30 9249 000084b8 8fdefffc lw r30,-4(r30) 9250 000084bc 4be00000 jr r31 9251 000084c0 54000000 nop 9252 000084c4 .endproc _QueuePrev 9253 000084c4 .align 2 9254 000084c4 .proc _QueueFirst 9255 000084c4 .global _QueueFirst 9256 000084c4 _QueueFirst: 9257 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 9258 000084c4 afbefffc sw -4(r29),r30; push fp 9259 000084c8 001df020 add r30,r0,r29; fp = sp 9260 000084cc afbffff8 sw -8(r29),r31; push ret addr 9261 000084d0 2fbd0008 subui r29,r29,#8; alloc local storage 9262 000084d4 8fc10000 lw r1,(r30) 9263 000084d8 8c210000 lw r1,(r1) 9264 000084dc 8fdffff8 lw r31,-8(r30) 9265 000084e0 001ee820 add r29,r0,r30 9266 000084e4 8fdefffc lw r30,-4(r30) 9267 000084e8 4be00000 jr r31 9268 000084ec 54000000 nop 9269 000084f0 .endproc _QueueFirst 9270 000084f0 .align 2 9271 000084f0 .proc _QueueLast 9272 000084f0 .global _QueueLast 9273 000084f0 _QueueLast: 9274 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 9275 000084f0 afbefffc sw -4(r29),r30; push fp 9276 000084f4 001df020 add r30,r0,r29; fp = sp 9277 000084f8 afbffff8 sw -8(r29),r31; push ret addr 9278 000084fc 2fbd0008 subui r29,r29,#8; alloc local storage 9279 00008500 8fc10000 lw r1,(r30) 9280 00008504 8c210004 lw r1,4(r1) 9281 00008508 8fdffff8 lw r31,-8(r30) 9282 0000850c 001ee820 add r29,r0,r30 9283 00008510 8fdefffc lw r30,-4(r30) 9284 00008514 4be00000 jr r31 9285 00008518 54000000 nop 9286 0000851c .endproc _QueueLast 9287 0000851c .align 2 9288 0000851c .proc _QueueInsertAfter 9289 0000851c .global _QueueInsertAfter 9290 0000851c _QueueInsertAfter: 9291 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 9292 0000851c afbefffc sw -4(r29),r30; push fp 9293 00008520 001df020 add r30,r0,r29; fp = sp 9294 00008524 afbffff8 sw -8(r29),r31; push ret addr 9295 00008528 2fbd0010 subui r29,r29,#16; alloc local storage 9296 0000852c afa20000 sw 0(r29),r2 9297 00008530 afa30004 sw 4(r29),r3 9298 00008534 8fc30000 lw r3,(r30) 9299 00008538 8fc20004 lw r2,4(r30) 9300 0000853c 8fc10008 lw r1,8(r30) 9301 00008540 ac230008 sw 8(r1),r3 9302 00008544 ac220004 sw 4(r1),r2 9303 00008548 8c5f0000 lw r31,(r2) 9304 0000854c ac3f0000 sw (r1),r31 9305 00008550 ac410000 sw (r2),r1 9306 00008554 8c220000 lw r2,(r1) 9307 00008558 ac410004 sw 4(r2),r1 9308 0000855c 8c610008 lw r1,8(r3) 9309 00008560 20210001 addi r1,r1,#1 9310 00008564 ac610008 sw 8(r3),r1 9311 00008568 8fa20000 lw r2,0(r29) 9312 0000856c 8fa30004 lw r3,4(r29) 9313 00008570 8fdffff8 lw r31,-8(r30) 9314 00008574 001ee820 add r29,r0,r30 9315 00008578 8fdefffc lw r30,-4(r30) 9316 0000857c 4be00000 jr r31 9317 00008580 54000000 nop 9318 00008584 .endproc _QueueInsertAfter 9319 00008584 .align 2 9320 00008584 .proc _QueueInsertFirst 9321 00008584 .global _QueueInsertFirst 9322 00008584 _QueueInsertFirst: 9323 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 9324 00008584 afbefffc sw -4(r29),r30; push fp 9325 00008588 001df020 add r30,r0,r29; fp = sp 9326 0000858c afbffff8 sw -8(r29),r31; push ret addr 9327 00008590 2fbd0010 subui r29,r29,#16; alloc local storage 9328 00008594 afa20000 sw 0(r29),r2 9329 00008598 afa30004 sw 4(r29),r3 9330 0000859c 8fc30000 lw r3,(r30) 9331 000085a0 8fc10004 lw r1,4(r30) 9332 000085a4 ac230008 sw 8(r1),r3 9333 000085a8 ac230004 sw 4(r1),r3 9334 000085ac 8c7f0000 lw r31,(r3) 9335 000085b0 ac3f0000 sw (r1),r31 9336 000085b4 ac610000 sw (r3),r1 9337 000085b8 8c220000 lw r2,(r1) 9338 000085bc ac410004 sw 4(r2),r1 9339 000085c0 8c610008 lw r1,8(r3) 9340 000085c4 20210001 addi r1,r1,#1 9341 000085c8 ac610008 sw 8(r3),r1 9342 000085cc 8fa20000 lw r2,0(r29) 9343 000085d0 8fa30004 lw r3,4(r29) 9344 000085d4 8fdffff8 lw r31,-8(r30) 9345 000085d8 001ee820 add r29,r0,r30 9346 000085dc 8fdefffc lw r30,-4(r30) 9347 000085e0 4be00000 jr r31 9348 000085e4 54000000 nop 9349 000085e8 .endproc _QueueInsertFirst 9350 000085e8 .align 2 9351 000085e8 .proc _QueueInsertLast 9352 000085e8 .global _QueueInsertLast 9353 000085e8 _QueueInsertLast: 9354 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 9355 000085e8 afbefffc sw -4(r29),r30; push fp 9356 000085ec 001df020 add r30,r0,r29; fp = sp 9357 000085f0 afbffff8 sw -8(r29),r31; push ret addr 9358 000085f4 2fbd0010 subui r29,r29,#16; alloc local storage 9359 000085f8 afa20000 sw 0(r29),r2 9360 000085fc afa30004 sw 4(r29),r3 9361 00008600 8fc30000 lw r3,(r30) 9362 00008604 8fc10004 lw r1,4(r30) 9363 00008608 8c620004 lw r2,4(r3) 9364 0000860c ac230008 sw 8(r1),r3 9365 00008610 ac220004 sw 4(r1),r2 9366 00008614 8c5f0000 lw r31,(r2) 9367 00008618 ac3f0000 sw (r1),r31 9368 0000861c ac410000 sw (r2),r1 9369 00008620 8c220000 lw r2,(r1) 9370 00008624 ac410004 sw 4(r2),r1 9371 00008628 8c610008 lw r1,8(r3) 9372 0000862c 20210001 addi r1,r1,#1 9373 00008630 ac610008 sw 8(r3),r1 9374 00008634 8fa20000 lw r2,0(r29) 9375 00008638 8fa30004 lw r3,4(r29) 9376 0000863c 8fdffff8 lw r31,-8(r30) 9377 00008640 001ee820 add r29,r0,r30 9378 00008644 8fdefffc lw r30,-4(r30) 9379 00008648 4be00000 jr r31 9380 0000864c 54000000 nop 9381 00008650 .endproc _QueueInsertLast 9382 00008650 .align 2 9383 00008650 .proc _QueueRemove 9384 00008650 .global _QueueRemove 9385 00008650 _QueueRemove: 9386 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 9387 00008650 afbefffc sw -4(r29),r30; push fp 9388 00008654 001df020 add r30,r0,r29; fp = sp 9389 00008658 afbffff8 sw -8(r29),r31; push ret addr 9390 0000865c 2fbd0010 subui r29,r29,#16; alloc local storage 9391 00008660 afa20000 sw 0(r29),r2 9392 00008664 afa30004 sw 4(r29),r3 9393 00008668 8fdf0000 lw r31,(r30) 9394 0000866c 8fe10008 lw r1,8(r31) 9395 00008670 8c210008 lw r1,8(r1) 9396 00008674 6c210000 sgti r1,r1,#0 9397 00008678 1020002c beqz r1,L44_LF7 9398 0000867c 54000000 nop; not filled. 9399 00008680 8fe10004 lw r1,4(r31) 9400 00008684 8fe30000 lw r3,(r31) 9401 00008688 ac230000 sw (r1),r3 9402 0000868c 8fe10000 lw r1,(r31) 9403 00008690 8fe30004 lw r3,4(r31) 9404 00008694 ac230004 sw 4(r1),r3 9405 00008698 8fe20008 lw r2,8(r31) 9406 0000869c 8c410008 lw r1,8(r2) 9407 000086a0 2021ffff addi r1,r1,#-1 9408 000086a4 ac410008 sw 8(r2),r1 9409 000086a8 L44_LF7: 9410 000086a8 20030000 addi r3,r0,#0 9411 000086ac afe30000 sw (r31),r3 9412 000086b0 8fa20000 lw r2,0(r29) 9413 000086b4 8fa30004 lw r3,4(r29) 9414 000086b8 8fdffff8 lw r31,-8(r30) 9415 000086bc 001ee820 add r29,r0,r30 9416 000086c0 8fdefffc lw r30,-4(r30) 9417 000086c4 4be00000 jr r31 9418 000086c8 54000000 nop 9419 000086cc .endproc _QueueRemove 9420 000086cc .align 2 9421 000086cc .proc _QueueLength 9422 000086cc .global _QueueLength 9423 000086cc _QueueLength: 9424 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 9425 000086cc afbefffc sw -4(r29),r30; push fp 9426 000086d0 001df020 add r30,r0,r29; fp = sp 9427 000086d4 afbffff8 sw -8(r29),r31; push ret addr 9428 000086d8 2fbd0008 subui r29,r29,#8; alloc local storage 9429 000086dc 8fc10000 lw r1,(r30) 9430 000086e0 8c210008 lw r1,8(r1) 9431 000086e4 8fdffff8 lw r31,-8(r30) 9432 000086e8 001ee820 add r29,r0,r30 9433 000086ec 8fdefffc lw r30,-4(r30) 9434 000086f0 4be00000 jr r31 9435 000086f4 54000000 nop 9436 000086f8 .endproc _QueueLength 9437 000086f8 .align 2 9438 000086f8 .proc _QueueEmpty 9439 000086f8 .global _QueueEmpty 9440 000086f8 _QueueEmpty: 9441 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 9442 000086f8 afbefffc sw -4(r29),r30; push fp 9443 000086fc 001df020 add r30,r0,r29; fp = sp 9444 00008700 afbffff8 sw -8(r29),r31; push ret addr 9445 00008704 2fbd0008 subui r29,r29,#8; alloc local storage 9446 00008708 8fc10000 lw r1,(r30) 9447 0000870c 8c210008 lw r1,8(r1) 9448 00008710 60210000 seqi r1,r1,#0 9449 00008714 8fdffff8 lw r31,-8(r30) 9450 00008718 001ee820 add r29,r0,r30 9451 0000871c 8fdefffc lw r30,-4(r30) 9452 00008720 4be00000 jr r31 9453 00008724 54000000 nop 9454 00008728 .endproc _QueueEmpty 9455 00008728 .data 9456 000126d4 .align 2 9457 000126d4 LC0_LF7: 9458 000126d4 456e7465 .ascii "Entering SynchModuleInit\n\000" 9458 000126d8 72696e67 9458 000126dc 2053796e 9458 000126e0 63684d6f 9458 000126e4 64756c65 9458 000126e8 496e6974 9458 000126ec 0a00 9459 000126ee .align 2 9460 000126f0 LC1_LF7: 9461 000126f0 4c656176 .ascii "Leaving SynchModuleInit\n\000" 9461 000126f4 696e6720 9461 000126f8 53796e63 9461 000126fc 684d6f64 9461 00012700 756c6549 9461 00012704 6e69740a 9461 00012708 00 9462 00012709 .text 9463 00008728 .align 2 9464 00008728 .proc _SynchModuleInit 9465 00008728 .global _SynchModuleInit 9466 00008728 _SynchModuleInit: 9467 ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. 9468 00008728 afbefffc sw -4(r29),r30; push fp 9469 0000872c 001df020 add r30,r0,r29; fp = sp 9470 00008730 afbffff8 sw -8(r29),r31; push ret addr 9471 00008734 2fbd0010 subui r29,r29,#16; alloc local storage 9472 00008738 afa20000 sw 0(r29),r2 9473 0000873c afa30004 sw 4(r29),r3 9474 00008740 23bdfff8 addi r29,r29,#-8 9475 00008744 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9476 00008748 2442fd60 addui r2,r2,(_debugstr)&0xffff 9477 0000874c afa20000 sw (r29),r2 9478 00008750 20030070 addi r3,r0,#112 9479 00008754 afa30004 sw 4(r29),r3 9480 00008758 0fffb6d8 jal _dindex 9481 0000875c 54000000 nop; not filled. 9482 00008760 23bd0008 addi r29,r29,#8 9483 00008764 64210000 snei r1,r1,#0 9484 00008768 1420002c bnez r1,L53_LF7 9485 0000876c 54000000 nop; not filled. 9486 00008770 23bdfff8 addi r29,r29,#-8 9487 00008774 afa20000 sw (r29),r2 9488 00008778 2003002b addi r3,r0,#43 9489 0000877c afa30004 sw 4(r29),r3 9490 00008780 0fffb6b0 jal _dindex 9491 00008784 54000000 nop; not filled. 9492 00008788 23bd0008 addi r29,r29,#8 9493 0000878c 64210000 snei r1,r1,#0 9494 00008790 10200020 beqz r1,L52_LF7 9495 00008794 54000000 nop; not filled. 9496 00008798 L53_LF7: 9497 00008798 23bdfff8 addi r29,r29,#-8 9498 0000879c 3c030001 lhi r3,((LC0_LF7)>>16)&0xffff 9499 000087a0 246326d4 addui r3,r3,(LC0_LF7)&0xffff 9500 000087a4 afa30000 sw (r29),r3 9501 000087a8 0c002840 jal _printf 9502 000087ac 54000000 nop; not filled. 9503 000087b0 23bd0008 addi r29,r29,#8 9504 000087b4 L52_LF7: 9505 000087b4 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9506 000087b8 27ff27b8 addui r31,r31,(_sems_LF7)&0xffff 9507 000087bc 23e2026c addi r2,r31,#620 9508 000087c0 L57_LF7: 9509 000087c0 20030000 addi r3,r0,#0 9510 000087c4 afe30010 sw 16(r31),r3 9511 000087c8 23ff0014 addi r31,r31,#20 9512 000087cc 03e2082c sle r1,r31,r2 9513 000087d0 1420ffec bnez r1,L57_LF7 9514 000087d4 54000000 nop; not filled. 9515 000087d8 23bdfff8 addi r29,r29,#-8 9516 000087dc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9517 000087e0 2442fd60 addui r2,r2,(_debugstr)&0xffff 9518 000087e4 afa20000 sw (r29),r2 9519 000087e8 20030070 addi r3,r0,#112 9520 000087ec afa30004 sw 4(r29),r3 9521 000087f0 0fffb640 jal _dindex 9522 000087f4 54000000 nop; not filled. 9523 000087f8 23bd0008 addi r29,r29,#8 9524 000087fc 64210000 snei r1,r1,#0 9525 00008800 1420002c bnez r1,L60_LF7 9526 00008804 54000000 nop; not filled. 9527 00008808 23bdfff8 addi r29,r29,#-8 9528 0000880c afa20000 sw (r29),r2 9529 00008810 2003002b addi r3,r0,#43 9530 00008814 afa30004 sw 4(r29),r3 9531 00008818 0fffb618 jal _dindex 9532 0000881c 54000000 nop; not filled. 9533 00008820 23bd0008 addi r29,r29,#8 9534 00008824 64210000 snei r1,r1,#0 9535 00008828 10200020 beqz r1,L59_LF7 9536 0000882c 54000000 nop; not filled. 9537 00008830 L60_LF7: 9538 00008830 23bdfff8 addi r29,r29,#-8 9539 00008834 3c030001 lhi r3,((LC1_LF7)>>16)&0xffff 9540 00008838 246326f0 addui r3,r3,(LC1_LF7)&0xffff 9541 0000883c afa30000 sw (r29),r3 9542 00008840 0c0027a8 jal _printf 9543 00008844 54000000 nop; not filled. 9544 00008848 23bd0008 addi r29,r29,#8 9545 0000884c L59_LF7: 9546 0000884c 8fa20000 lw r2,0(r29) 9547 00008850 8fa30004 lw r3,4(r29) 9548 00008854 8fdffff8 lw r31,-8(r30) 9549 00008858 001ee820 add r29,r0,r30 9550 0000885c 8fdefffc lw r30,-4(r30) 9551 00008860 4be00000 jr r31 9552 00008864 54000000 nop 9553 00008868 .endproc _SynchModuleInit 9554 00008868 .align 2 9555 00008868 .proc _SemInit 9556 00008868 .global _SemInit 9557 00008868 _SemInit: 9558 ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. 9559 00008868 afbefffc sw -4(r29),r30; push fp 9560 0000886c 001df020 add r30,r0,r29; fp = sp 9561 00008870 afbffff8 sw -8(r29),r31; push ret addr 9562 00008874 2fbd0010 subui r29,r29,#16; alloc local storage 9563 00008878 afa20000 sw 0(r29),r2 9564 0000887c afa30004 sw 4(r29),r3 9565 00008880 8fc20000 lw r2,(r30) 9566 00008884 8fc30004 lw r3,4(r30) 9567 00008888 23bdfff8 addi r29,r29,#-8 9568 0000888c afa20000 sw (r29),r2 9569 00008890 0ffff81c jal _QueueInit 9570 00008894 54000000 nop; not filled. 9571 00008898 ac43000c sw 12(r2),r3 9572 0000889c 23bd0008 addi r29,r29,#8 9573 000088a0 8fa20000 lw r2,0(r29) 9574 000088a4 8fa30004 lw r3,4(r29) 9575 000088a8 8fdffff8 lw r31,-8(r30) 9576 000088ac 001ee820 add r29,r0,r30 9577 000088b0 8fdefffc lw r30,-4(r30) 9578 000088b4 4be00000 jr r31 9579 000088b8 54000000 nop 9580 000088bc .endproc _SemInit 9581 000088bc .align 2 9582 000088bc .proc _SemCreate 9583 000088bc .global _SemCreate 9584 000088bc _SemCreate: 9585 ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. 9586 000088bc afbefffc sw -4(r29),r30; push fp 9587 000088c0 001df020 add r30,r0,r29; fp = sp 9588 000088c4 afbffff8 sw -8(r29),r31; push ret addr 9589 000088c8 2fbd0018 subui r29,r29,#24; alloc local storage 9590 000088cc afa20000 sw 0(r29),r2 9591 000088d0 afa30004 sw 4(r29),r3 9592 000088d4 afa40008 sw 8(r29),r4 9593 000088d8 afa5000c sw 12(r29),r5 9594 000088dc 23bdfff8 addi r29,r29,#-8 9595 000088e0 2005000f addi r5,r0,#15 9596 000088e4 afa50000 sw (r29),r5 9597 000088e8 0fff899c jal _SetIntrs 9598 000088ec 54000000 nop; not filled. 9599 000088f0 00012020 add r4,r0,r1 9600 000088f4 23bd0008 addi r29,r29,#8 9601 000088f8 20030000 addi r3,r0,#0 9602 000088fc 3c1f0001 lhi r31,((_sems_LF7)>>16)&0xffff 9603 00008900 27ff27b8 addui r31,r31,(_sems_LF7)&0xffff 9604 00008904 L79_LF7: 9605 00008904 001f1020 add r2,r0,r31 9606 00008908 8fe10010 lw r1,16(r31) 9607 0000890c 64210000 snei r1,r1,#0 9608 00008910 10200078 beqz r1,L86_LF7 9609 00008914 54000000 nop; not filled. 9610 00008918 205f0014 addi r31,r2,#20 9611 0000891c 20630001 addi r3,r3,#1 9612 00008920 7061001f slei r1,r3,#31 9613 00008924 1420ffdc bnez r1,L79_LF7 9614 00008928 54000000 nop; not filled. 9615 0000892c L77_LF7: 9616 0000892c 23bdfff8 addi r29,r29,#-8 9617 00008930 afa40000 sw (r29),r4 9618 00008934 0fff8950 jal _SetIntrs 9619 00008938 54000000 nop; not filled. 9620 0000893c 23bd0008 addi r29,r29,#8 9621 00008940 60610020 seqi r1,r3,#32 9622 00008944 14200054 bnez r1,L83_LF7 9623 00008948 54000000 nop; not filled. 9624 0000894c 50610002 slli r1,r3,#0x2 9625 00008950 00230820 add r1,r1,r3 9626 00008954 50210002 slli r1,r1,#0x2 9627 00008958 3c050001 lhi r5,((_sems_LF7)>>16)&0xffff 9628 0000895c 24a527b8 addui r5,r5,(_sems_LF7)&0xffff 9629 00008960 00251020 add r2,r1,r5 9630 00008964 23bdfff8 addi r29,r29,#-8 9631 00008968 afa20000 sw (r29),r2 9632 0000896c 0ffff740 jal _QueueInit 9633 00008970 54000000 nop; not filled. 9634 00008974 8fc50000 lw r5,(r30) 9635 00008978 ac45000c sw 12(r2),r5 9636 0000897c 23bd0008 addi r29,r29,#8 9637 00008980 00030820 add r1,r0,r3 9638 00008984 08000018 j L85_LF7 9639 00008988 54000000 nop; not filled. 9640 0000898c L86_LF7: 9641 0000898c 20050001 addi r5,r0,#1 9642 00008990 afe50010 sw 16(r31),r5 9643 00008994 0bffff94 j L77_LF7 9644 00008998 54000000 nop; not filled. 9645 0000899c L83_LF7: 9646 0000899c 2001ffff addi r1,r0,#-1 9647 000089a0 L85_LF7: 9648 000089a0 8fa20000 lw r2,0(r29) 9649 000089a4 8fa30004 lw r3,4(r29) 9650 000089a8 8fa40008 lw r4,8(r29) 9651 000089ac 8fa5000c lw r5,12(r29) 9652 000089b0 8fdffff8 lw r31,-8(r30) 9653 000089b4 001ee820 add r29,r0,r30 9654 000089b8 8fdefffc lw r30,-4(r30) 9655 000089bc 4be00000 jr r31 9656 000089c0 54000000 nop 9657 000089c4 .endproc _SemCreate 9658 000089c4 .data 9659 00012709 .align 2 9660 0001270c LC2_LF7: 9661 0001270c 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 9661 00012710 696e7465 9661 00012714 72727570 9661 00012718 74207661 9661 0001271c 6c756520 9661 00012720 77617320 9661 00012724 30782578 9661 00012728 2e0a00 9662 0001272b .align 2 9663 0001272c LC3_LF7: 9664 0001272c 50726f63 .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" 9664 00012730 20307825 9664 00012734 78207761 9664 00012738 6974696e 9664 0001273c 67206f6e 9664 00012740 2073656d 9664 00012744 20307825 9664 00012748 782c2063 9664 0001274c 6f756e74 9664 00012750 3d25642e 9664 00012754 0a00 9665 00012756 .align 2 9666 00012758 LC4_LF7: 9667 00012758 53757370 .ascii "Suspending current proc (0x%x).\n\000" 9667 0001275c 656e6469 9667 00012760 6e672063 9667 00012764 75727265 9667 00012768 6e742070 9667 0001276c 726f6320 9667 00012770 28307825 9667 00012774 78292e0a 9667 00012778 00 9668 00012779 .text 9669 000089c4 .align 2 9670 000089c4 .proc _SemWait 9671 000089c4 .global _SemWait 9672 000089c4 _SemWait: 9673 ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. 9674 000089c4 afbefffc sw -4(r29),r30; push fp 9675 000089c8 001df020 add r30,r0,r29; fp = sp 9676 000089cc afbffff8 sw -8(r29),r31; push ret addr 9677 000089d0 2fbd0020 subui r29,r29,#32; alloc local storage 9678 000089d4 afa20000 sw 0(r29),r2 9679 000089d8 afa30004 sw 4(r29),r3 9680 000089dc afa40008 sw 8(r29),r4 9681 000089e0 afa5000c sw 12(r29),r5 9682 000089e4 afa60010 sw 16(r29),r6 9683 000089e8 afa70014 sw 20(r29),r7 9684 000089ec 8fc40000 lw r4,(r30) 9685 000089f0 23bdfff8 addi r29,r29,#-8 9686 000089f4 2007000f addi r7,r0,#15 9687 000089f8 afa70000 sw (r29),r7 9688 000089fc 0fff8888 jal _SetIntrs 9689 00008a00 54000000 nop; not filled. 9690 00008a04 00013020 add r6,r0,r1 9691 00008a08 23bd0008 addi r29,r29,#8 9692 00008a0c 23bdfff8 addi r29,r29,#-8 9693 00008a10 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9694 00008a14 2442fd60 addui r2,r2,(_debugstr)&0xffff 9695 00008a18 afa20000 sw (r29),r2 9696 00008a1c 20070049 addi r7,r0,#73 9697 00008a20 afa70004 sw 4(r29),r7 9698 00008a24 0fffb40c jal _dindex 9699 00008a28 54000000 nop; not filled. 9700 00008a2c 23bd0008 addi r29,r29,#8 9701 00008a30 64210000 snei r1,r1,#0 9702 00008a34 1420002c bnez r1,L90_LF7 9703 00008a38 54000000 nop; not filled. 9704 00008a3c 23bdfff8 addi r29,r29,#-8 9705 00008a40 afa20000 sw (r29),r2 9706 00008a44 2007002b addi r7,r0,#43 9707 00008a48 afa70004 sw 4(r29),r7 9708 00008a4c 0fffb3e4 jal _dindex 9709 00008a50 54000000 nop; not filled. 9710 00008a54 23bd0008 addi r29,r29,#8 9711 00008a58 64210000 snei r1,r1,#0 9712 00008a5c 10200024 beqz r1,L89_LF7 9713 00008a60 54000000 nop; not filled. 9714 00008a64 L90_LF7: 9715 00008a64 23bdfff8 addi r29,r29,#-8 9716 00008a68 3c070001 lhi r7,((LC2_LF7)>>16)&0xffff 9717 00008a6c 24e7270c addui r7,r7,(LC2_LF7)&0xffff 9718 00008a70 afa70000 sw (r29),r7 9719 00008a74 afa60004 sw 4(r29),r6 9720 00008a78 0c002570 jal _printf 9721 00008a7c 54000000 nop; not filled. 9722 00008a80 23bd0008 addi r29,r29,#8 9723 00008a84 L89_LF7: 9724 00008a84 23bdfff8 addi r29,r29,#-8 9725 00008a88 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9726 00008a8c 2442fd60 addui r2,r2,(_debugstr)&0xffff 9727 00008a90 afa20000 sw (r29),r2 9728 00008a94 20070073 addi r7,r0,#115 9729 00008a98 afa70004 sw 4(r29),r7 9730 00008a9c 0fffb394 jal _dindex 9731 00008aa0 54000000 nop; not filled. 9732 00008aa4 23bd0008 addi r29,r29,#8 9733 00008aa8 64210000 snei r1,r1,#0 9734 00008aac 1420002c bnez r1,L92_LF7 9735 00008ab0 54000000 nop; not filled. 9736 00008ab4 23bdfff8 addi r29,r29,#-8 9737 00008ab8 afa20000 sw (r29),r2 9738 00008abc 2007002b addi r7,r0,#43 9739 00008ac0 afa70004 sw 4(r29),r7 9740 00008ac4 0fffb36c jal _dindex 9741 00008ac8 54000000 nop; not filled. 9742 00008acc 23bd0008 addi r29,r29,#8 9743 00008ad0 64210000 snei r1,r1,#0 9744 00008ad4 1020003c beqz r1,L91_LF7 9745 00008ad8 54000000 nop; not filled. 9746 00008adc L92_LF7: 9747 00008adc 23bdfff0 addi r29,r29,#-16 9748 00008ae0 3c070001 lhi r7,((LC3_LF7)>>16)&0xffff 9749 00008ae4 24e7272c addui r7,r7,(LC3_LF7)&0xffff 9750 00008ae8 afa70000 sw (r29),r7 9751 00008aec 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 9752 00008af0 2421fe28 addui r1,r1,(_currentPCB)&0xffff 9753 00008af4 8c210000 lw r1,(r1) 9754 00008af8 afa10004 sw 4(r29),r1 9755 00008afc afa40008 sw 8(r29),r4 9756 00008b00 8c87000c lw r7,12(r4) 9757 00008b04 afa7000c sw 12(r29),r7 9758 00008b08 0c0024e0 jal _printf 9759 00008b0c 54000000 nop; not filled. 9760 00008b10 23bd0010 addi r29,r29,#16 9761 00008b14 L91_LF7: 9762 00008b14 8c81000c lw r1,12(r4) 9763 00008b18 2021ffff addi r1,r1,#-1 9764 00008b1c ac81000c sw 12(r4),r1 9765 00008b20 68210000 slti r1,r1,#0 9766 00008b24 102000d8 beqz r1,L93_LF7 9767 00008b28 54000000 nop; not filled. 9768 00008b2c 0ffff670 jal _QueueAllocLink 9769 00008b30 54000000 nop; not filled. 9770 00008b34 00011020 add r2,r0,r1 9771 00008b38 3c050000 lhi r5,((_currentPCB)>>16)&0xffff 9772 00008b3c 24a5fe28 addui r5,r5,(_currentPCB)&0xffff 9773 00008b40 8ca10000 lw r1,(r5) 9774 00008b44 20070000 addi r7,r0,#0 9775 00008b48 ac470000 sw (r2),r7 9776 00008b4c ac41000c sw 12(r2),r1 9777 00008b50 23bdfff8 addi r29,r29,#-8 9778 00008b54 3c030000 lhi r3,((_debugstr)>>16)&0xffff 9779 00008b58 2463fd60 addui r3,r3,(_debugstr)&0xffff 9780 00008b5c afa30000 sw (r29),r3 9781 00008b60 20070073 addi r7,r0,#115 9782 00008b64 afa70004 sw 4(r29),r7 9783 00008b68 0fffb2c8 jal _dindex 9784 00008b6c 54000000 nop; not filled. 9785 00008b70 23bd0008 addi r29,r29,#8 9786 00008b74 64210000 snei r1,r1,#0 9787 00008b78 1420002c bnez r1,L96_LF7 9788 00008b7c 54000000 nop; not filled. 9789 00008b80 23bdfff8 addi r29,r29,#-8 9790 00008b84 afa30000 sw (r29),r3 9791 00008b88 2007002b addi r7,r0,#43 9792 00008b8c afa70004 sw 4(r29),r7 9793 00008b90 0fffb2a0 jal _dindex 9794 00008b94 54000000 nop; not filled. 9795 00008b98 23bd0008 addi r29,r29,#8 9796 00008b9c 64210000 snei r1,r1,#0 9797 00008ba0 10200028 beqz r1,L95_LF7 9798 00008ba4 54000000 nop; not filled. 9799 00008ba8 L96_LF7: 9800 00008ba8 23bdfff8 addi r29,r29,#-8 9801 00008bac 3c070001 lhi r7,((LC4_LF7)>>16)&0xffff 9802 00008bb0 24e72758 addui r7,r7,(LC4_LF7)&0xffff 9803 00008bb4 afa70000 sw (r29),r7 9804 00008bb8 8ca10000 lw r1,(r5) 9805 00008bbc afa10004 sw 4(r29),r1 9806 00008bc0 0c002428 jal _printf 9807 00008bc4 54000000 nop; not filled. 9808 00008bc8 23bd0008 addi r29,r29,#8 9809 00008bcc L95_LF7: 9810 00008bcc 8c810004 lw r1,4(r4) 9811 00008bd0 ac440008 sw 8(r2),r4 9812 00008bd4 ac410004 sw 4(r2),r1 9813 00008bd8 8c270000 lw r7,(r1) 9814 00008bdc ac470000 sw (r2),r7 9815 00008be0 ac220000 sw (r1),r2 9816 00008be4 8c410000 lw r1,(r2) 9817 00008be8 ac220004 sw 4(r1),r2 9818 00008bec 8c810008 lw r1,8(r4) 9819 00008bf0 20210001 addi r1,r1,#1 9820 00008bf4 ac810008 sw 8(r4),r1 9821 00008bf8 0fff86d8 jal _ProcessSleep 9822 00008bfc 54000000 nop; not filled. 9823 00008c00 L93_LF7: 9824 00008c00 23bdfff8 addi r29,r29,#-8 9825 00008c04 afa60000 sw (r29),r6 9826 00008c08 0fff867c jal _SetIntrs 9827 00008c0c 54000000 nop; not filled. 9828 00008c10 23bd0008 addi r29,r29,#8 9829 00008c14 8fa20000 lw r2,0(r29) 9830 00008c18 8fa30004 lw r3,4(r29) 9831 00008c1c 8fa40008 lw r4,8(r29) 9832 00008c20 8fa5000c lw r5,12(r29) 9833 00008c24 8fa60010 lw r6,16(r29) 9834 00008c28 8fa70014 lw r7,20(r29) 9835 00008c2c 8fdffff8 lw r31,-8(r30) 9836 00008c30 001ee820 add r29,r0,r30 9837 00008c34 8fdefffc lw r30,-4(r30) 9838 00008c38 4be00000 jr r31 9839 00008c3c 54000000 nop 9840 00008c40 .endproc _SemWait 9841 00008c40 .align 2 9842 00008c40 .proc _SemHandleWait 9843 00008c40 .global _SemHandleWait 9844 00008c40 _SemHandleWait: 9845 ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. 9846 00008c40 afbefffc sw -4(r29),r30; push fp 9847 00008c44 001df020 add r30,r0,r29; fp = sp 9848 00008c48 afbffff8 sw -8(r29),r31; push ret addr 9849 00008c4c 2fbd0010 subui r29,r29,#16; alloc local storage 9850 00008c50 afa20000 sw 0(r29),r2 9851 00008c54 8fdf0000 lw r31,(r30) 9852 00008c58 73e1001f sleui r1,r31,#31 9853 00008c5c 10200058 beqz r1,L106_LF7 9854 00008c60 54000000 nop; not filled. 9855 00008c64 53e10002 slli r1,r31,#0x2 9856 00008c68 003f0820 add r1,r1,r31 9857 00008c6c 50210002 slli r1,r1,#0x2 9858 00008c70 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 9859 00008c74 244227b8 addui r2,r2,(_sems_LF7)&0xffff 9860 00008c78 0022f820 add r31,r1,r2 9861 00008c7c 8fe10010 lw r1,16(r31) 9862 00008c80 64210000 snei r1,r1,#0 9863 00008c84 10200024 beqz r1,L107_LF7 9864 00008c88 54000000 nop; not filled. 9865 00008c8c 23bdfff8 addi r29,r29,#-8 9866 00008c90 afbf0000 sw (r29),r31 9867 00008c94 0ffffd2c jal _SemWait 9868 00008c98 54000000 nop; not filled. 9869 00008c9c 20010000 addi r1,r0,#0 9870 00008ca0 23bd0008 addi r29,r29,#8 9871 00008ca4 08000014 j L105_LF7 9872 00008ca8 54000000 nop; not filled. 9873 00008cac L107_LF7: 9874 00008cac 20010001 addi r1,r0,#1 9875 00008cb0 08000008 j L105_LF7 9876 00008cb4 54000000 nop; not filled. 9877 00008cb8 L106_LF7: 9878 00008cb8 20010001 addi r1,r0,#1 9879 00008cbc L105_LF7: 9880 00008cbc 8fa20000 lw r2,0(r29) 9881 00008cc0 8fdffff8 lw r31,-8(r30) 9882 00008cc4 001ee820 add r29,r0,r30 9883 00008cc8 8fdefffc lw r30,-4(r30) 9884 00008ccc 4be00000 jr r31 9885 00008cd0 54000000 nop 9886 00008cd4 .endproc _SemHandleWait 9887 00008cd4 .data 9888 00012779 .align 2 9889 0001277c LC5_LF7: 9890 0001277c 5369676e .ascii "Signalling on sem 0x%x, count=%d.\n\000" 9890 00012780 616c6c69 9890 00012784 6e67206f 9890 00012788 6e207365 9890 0001278c 6d203078 9890 00012790 25782c20 9890 00012794 636f756e 9890 00012798 743d2564 9890 0001279c 2e0a00 9891 0001279f .align 2 9892 000127a0 LC6_LF7: 9893 000127a0 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 9893 000127a4 6e672075 9893 000127a8 70205043 9893 000127ac 42203078 9893 000127b0 25782e0a 9893 000127b4 00 9894 000127b5 .text 9895 00008cd4 .align 2 9896 00008cd4 .proc _SemSignal 9897 00008cd4 .global _SemSignal 9898 00008cd4 _SemSignal: 9899 ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. 9900 00008cd4 afbefffc sw -4(r29),r30; push fp 9901 00008cd8 001df020 add r30,r0,r29; fp = sp 9902 00008cdc afbffff8 sw -8(r29),r31; push ret addr 9903 00008ce0 2fbd0018 subui r29,r29,#24; alloc local storage 9904 00008ce4 afa20000 sw 0(r29),r2 9905 00008ce8 afa30004 sw 4(r29),r3 9906 00008cec afa40008 sw 8(r29),r4 9907 00008cf0 afa5000c sw 12(r29),r5 9908 00008cf4 8fc20000 lw r2,(r30) 9909 00008cf8 23bdfff8 addi r29,r29,#-8 9910 00008cfc 2005000f addi r5,r0,#15 9911 00008d00 afa50000 sw (r29),r5 9912 00008d04 0fff8580 jal _SetIntrs 9913 00008d08 54000000 nop; not filled. 9914 00008d0c 00012020 add r4,r0,r1 9915 00008d10 23bd0008 addi r29,r29,#8 9916 00008d14 23bdfff8 addi r29,r29,#-8 9917 00008d18 3c030000 lhi r3,((_debugstr)>>16)&0xffff 9918 00008d1c 2463fd60 addui r3,r3,(_debugstr)&0xffff 9919 00008d20 afa30000 sw (r29),r3 9920 00008d24 20050073 addi r5,r0,#115 9921 00008d28 afa50004 sw 4(r29),r5 9922 00008d2c 0fffb104 jal _dindex 9923 00008d30 54000000 nop; not filled. 9924 00008d34 23bd0008 addi r29,r29,#8 9925 00008d38 64210000 snei r1,r1,#0 9926 00008d3c 1420002c bnez r1,L113_LF7 9927 00008d40 54000000 nop; not filled. 9928 00008d44 23bdfff8 addi r29,r29,#-8 9929 00008d48 afa30000 sw (r29),r3 9930 00008d4c 2005002b addi r5,r0,#43 9931 00008d50 afa50004 sw 4(r29),r5 9932 00008d54 0fffb0dc jal _dindex 9933 00008d58 54000000 nop; not filled. 9934 00008d5c 23bd0008 addi r29,r29,#8 9935 00008d60 64210000 snei r1,r1,#0 9936 00008d64 1020002c beqz r1,L112_LF7 9937 00008d68 54000000 nop; not filled. 9938 00008d6c L113_LF7: 9939 00008d6c 23bdfff0 addi r29,r29,#-16 9940 00008d70 3c050001 lhi r5,((LC5_LF7)>>16)&0xffff 9941 00008d74 24a5277c addui r5,r5,(LC5_LF7)&0xffff 9942 00008d78 afa50000 sw (r29),r5 9943 00008d7c afa20004 sw 4(r29),r2 9944 00008d80 8c45000c lw r5,12(r2) 9945 00008d84 afa50008 sw 8(r29),r5 9946 00008d88 0c002260 jal _printf 9947 00008d8c 54000000 nop; not filled. 9948 00008d90 23bd0010 addi r29,r29,#16 9949 00008d94 L112_LF7: 9950 00008d94 8c41000c lw r1,12(r2) 9951 00008d98 20210001 addi r1,r1,#1 9952 00008d9c ac41000c sw 12(r2),r1 9953 00008da0 70210000 slei r1,r1,#0 9954 00008da4 102000ec beqz r1,L114_LF7 9955 00008da8 54000000 nop; not filled. 9956 00008dac 8c430000 lw r3,(r2) 9957 00008db0 8c610008 lw r1,8(r3) 9958 00008db4 8c210008 lw r1,8(r1) 9959 00008db8 6c210000 sgti r1,r1,#0 9960 00008dbc 1020002c beqz r1,L117_LF7 9961 00008dc0 54000000 nop; not filled. 9962 00008dc4 8c610004 lw r1,4(r3) 9963 00008dc8 8c650000 lw r5,(r3) 9964 00008dcc ac250000 sw (r1),r5 9965 00008dd0 8c610000 lw r1,(r3) 9966 00008dd4 8c650004 lw r5,4(r3) 9967 00008dd8 ac250004 sw 4(r1),r5 9968 00008ddc 8c620008 lw r2,8(r3) 9969 00008de0 8c410008 lw r1,8(r2) 9970 00008de4 2021ffff addi r1,r1,#-1 9971 00008de8 ac410008 sw 8(r2),r1 9972 00008dec L117_LF7: 9973 00008dec 20050000 addi r5,r0,#0 9974 00008df0 ac650000 sw (r3),r5 9975 00008df4 23bdfff8 addi r29,r29,#-8 9976 00008df8 3c020000 lhi r2,((_debugstr)>>16)&0xffff 9977 00008dfc 2442fd60 addui r2,r2,(_debugstr)&0xffff 9978 00008e00 afa20000 sw (r29),r2 9979 00008e04 20050073 addi r5,r0,#115 9980 00008e08 afa50004 sw 4(r29),r5 9981 00008e0c 0fffb024 jal _dindex 9982 00008e10 54000000 nop; not filled. 9983 00008e14 23bd0008 addi r29,r29,#8 9984 00008e18 64210000 snei r1,r1,#0 9985 00008e1c 1420002c bnez r1,L119_LF7 9986 00008e20 54000000 nop; not filled. 9987 00008e24 23bdfff8 addi r29,r29,#-8 9988 00008e28 afa20000 sw (r29),r2 9989 00008e2c 2005002b addi r5,r0,#43 9990 00008e30 afa50004 sw 4(r29),r5 9991 00008e34 0fffaffc jal _dindex 9992 00008e38 54000000 nop; not filled. 9993 00008e3c 23bd0008 addi r29,r29,#8 9994 00008e40 64210000 snei r1,r1,#0 9995 00008e44 10200028 beqz r1,L118_LF7 9996 00008e48 54000000 nop; not filled. 9997 00008e4c L119_LF7: 9998 00008e4c 23bdfff8 addi r29,r29,#-8 9999 00008e50 3c050001 lhi r5,((LC6_LF7)>>16)&0xffff 10000 00008e54 24a527a0 addui r5,r5,(LC6_LF7)&0xffff 10001 00008e58 afa50000 sw (r29),r5 10002 00008e5c 8c61000c lw r1,12(r3) 10003 00008e60 afa10004 sw 4(r29),r1 10004 00008e64 0c002184 jal _printf 10005 00008e68 54000000 nop; not filled. 10006 00008e6c 23bd0008 addi r29,r29,#8 10007 00008e70 L118_LF7: 10008 00008e70 23bdfff8 addi r29,r29,#-8 10009 00008e74 8c65000c lw r5,12(r3) 10010 00008e78 afa50000 sw (r29),r5 10011 00008e7c 0fffc2f8 jal _ProcessWakeup 10012 00008e80 54000000 nop; not filled. 10013 00008e84 afa30000 sw (r29),r3 10014 00008e88 0ffff25c jal _QueueFreeLink 10015 00008e8c 54000000 nop; not filled. 10016 00008e90 23bd0008 addi r29,r29,#8 10017 00008e94 L114_LF7: 10018 00008e94 23bdfff8 addi r29,r29,#-8 10019 00008e98 afa40000 sw (r29),r4 10020 00008e9c 0fff83e8 jal _SetIntrs 10021 00008ea0 54000000 nop; not filled. 10022 00008ea4 23bd0008 addi r29,r29,#8 10023 00008ea8 8fa20000 lw r2,0(r29) 10024 00008eac 8fa30004 lw r3,4(r29) 10025 00008eb0 8fa40008 lw r4,8(r29) 10026 00008eb4 8fa5000c lw r5,12(r29) 10027 00008eb8 8fdffff8 lw r31,-8(r30) 10028 00008ebc 001ee820 add r29,r0,r30 10029 00008ec0 8fdefffc lw r30,-4(r30) 10030 00008ec4 4be00000 jr r31 10031 00008ec8 54000000 nop 10032 00008ecc .endproc _SemSignal 10033 00008ecc .align 2 10034 00008ecc .proc _SemHandleSignal 10035 00008ecc .global _SemHandleSignal 10036 00008ecc _SemHandleSignal: 10037 ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. 10038 00008ecc afbefffc sw -4(r29),r30; push fp 10039 00008ed0 001df020 add r30,r0,r29; fp = sp 10040 00008ed4 afbffff8 sw -8(r29),r31; push ret addr 10041 00008ed8 2fbd0010 subui r29,r29,#16; alloc local storage 10042 00008edc afa20000 sw 0(r29),r2 10043 00008ee0 8fdf0000 lw r31,(r30) 10044 00008ee4 73e1001f sleui r1,r31,#31 10045 00008ee8 10200058 beqz r1,L126_LF7 10046 00008eec 54000000 nop; not filled. 10047 00008ef0 53e10002 slli r1,r31,#0x2 10048 00008ef4 003f0820 add r1,r1,r31 10049 00008ef8 50210002 slli r1,r1,#0x2 10050 00008efc 3c020001 lhi r2,((_sems_LF7)>>16)&0xffff 10051 00008f00 244227b8 addui r2,r2,(_sems_LF7)&0xffff 10052 00008f04 0022f820 add r31,r1,r2 10053 00008f08 8fe10010 lw r1,16(r31) 10054 00008f0c 64210000 snei r1,r1,#0 10055 00008f10 10200024 beqz r1,L127_LF7 10056 00008f14 54000000 nop; not filled. 10057 00008f18 23bdfff8 addi r29,r29,#-8 10058 00008f1c afbf0000 sw (r29),r31 10059 00008f20 0ffffdb0 jal _SemSignal 10060 00008f24 54000000 nop; not filled. 10061 00008f28 20010000 addi r1,r0,#0 10062 00008f2c 23bd0008 addi r29,r29,#8 10063 00008f30 08000014 j L125_LF7 10064 00008f34 54000000 nop; not filled. 10065 00008f38 L127_LF7: 10066 00008f38 20010001 addi r1,r0,#1 10067 00008f3c 08000008 j L125_LF7 10068 00008f40 54000000 nop; not filled. 10069 00008f44 L126_LF7: 10070 00008f44 20010001 addi r1,r0,#1 10071 00008f48 L125_LF7: 10072 00008f48 8fa20000 lw r2,0(r29) 10073 00008f4c 8fdffff8 lw r31,-8(r30) 10074 00008f50 001ee820 add r29,r0,r30 10075 00008f54 8fdefffc lw r30,-4(r30) 10076 00008f58 4be00000 jr r31 10077 00008f5c 54000000 nop 10078 00008f60 .endproc _SemHandleSignal 10079 00008f60 .data 10080 000127b5 .align 2 10081 000127b8 _sems_LF7: 10082 000127b8 .space 640 10083 ; Compiled by GCC 10085 00012a38 .align 2 10086 00012a38 _rcsid_LF8: 10087 00012a38 3a207472 .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 10087 00012a3c 6170732e 10087 00012a40 632c7620 10087 00012a44 312e3120 10087 00012a48 32303030 10087 00012a4c 2f30392f 10087 00012a50 32302030 10087 00012a54 313a3530 10087 00012a58 3a313920 10087 00012a5c 656c6d20 10087 00012a60 45787020 10087 00012a64 656c6d20 10087 00012a68 303030 10088 00012a6b .text 10089 00008f60 .align 2 10090 00008f60 .proc _isspace 10091 00008f60 .global _isspace 10092 00008f60 _isspace: 10093 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 10094 00008f60 afbefffc sw -4(r29),r30; push fp 10095 00008f64 001df020 add r30,r0,r29; fp = sp 10096 00008f68 afbffff8 sw -8(r29),r31; push ret addr 10097 00008f6c 2fbd0010 subui r29,r29,#16; alloc local storage 10098 00008f70 afa20000 sw 0(r29),r2 10099 00008f74 83c20003 lb r2,3(r30) 10100 00008f78 201f0000 addi r31,r0,#0 10101 00008f7c 304100ff andi r1,r2,#0x00ff 10102 00008f80 60210020 seqi r1,r1,#32 10103 00008f84 14200018 bnez r1,L6_LF8 10104 00008f88 54000000 nop; not filled. 10105 00008f8c 2041fff7 addi r1,r2,#-9 10106 00008f90 302100ff andi r1,r1,#0x00ff 10107 00008f94 70210001 sleui r1,r1,#1 10108 00008f98 10200008 beqz r1,L5_LF8 10109 00008f9c 54000000 nop; not filled. 10110 00008fa0 L6_LF8: 10111 00008fa0 201f0001 addi r31,r0,#1 10112 00008fa4 L5_LF8: 10113 00008fa4 001f0820 add r1,r0,r31 10114 00008fa8 8fa20000 lw r2,0(r29) 10115 00008fac 8fdffff8 lw r31,-8(r30) 10116 00008fb0 001ee820 add r29,r0,r30 10117 00008fb4 8fdefffc lw r30,-4(r30) 10118 00008fb8 4be00000 jr r31 10119 00008fbc 54000000 nop 10120 00008fc0 .endproc _isspace 10121 00008fc0 .align 2 10122 00008fc0 .proc _isxdigit 10123 00008fc0 .global _isxdigit 10124 00008fc0 _isxdigit: 10125 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 10126 00008fc0 afbefffc sw -4(r29),r30; push fp 10127 00008fc4 001df020 add r30,r0,r29; fp = sp 10128 00008fc8 afbffff8 sw -8(r29),r31; push ret addr 10129 00008fcc 2fbd0010 subui r29,r29,#16; alloc local storage 10130 00008fd0 afa20000 sw 0(r29),r2 10131 00008fd4 83df0003 lb r31,3(r30) 10132 00008fd8 20020000 addi r2,r0,#0 10133 00008fdc 23e1ffd0 addi r1,r31,#-48 10134 00008fe0 302100ff andi r1,r1,#0x00ff 10135 00008fe4 70210009 sleui r1,r1,#9 10136 00008fe8 14200028 bnez r1,L12_LF8 10137 00008fec 54000000 nop; not filled. 10138 00008ff0 23e1ff9f addi r1,r31,#-97 10139 00008ff4 302100ff andi r1,r1,#0x00ff 10140 00008ff8 70210005 sleui r1,r1,#5 10141 00008ffc 14200014 bnez r1,L12_LF8 10142 00009000 54000000 nop; not filled. 10143 00009004 33e100ff andi r1,r31,#0x00ff 10144 00009008 64210041 snei r1,r1,#65 10145 0000900c 14200008 bnez r1,L11_LF8 10146 00009010 54000000 nop; not filled. 10147 00009014 L12_LF8: 10148 00009014 20020001 addi r2,r0,#1 10149 00009018 L11_LF8: 10150 00009018 00020820 add r1,r0,r2 10151 0000901c 8fa20000 lw r2,0(r29) 10152 00009020 8fdffff8 lw r31,-8(r30) 10153 00009024 001ee820 add r29,r0,r30 10154 00009028 8fdefffc lw r30,-4(r30) 10155 0000902c 4be00000 jr r31 10156 00009030 54000000 nop 10157 00009034 .endproc _isxdigit 10158 00009034 .align 2 10159 00009034 .proc _DisableIntrs 10160 00009034 .global _DisableIntrs 10161 00009034 _DisableIntrs: 10162 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 10163 00009034 afbefffc sw -4(r29),r30; push fp 10164 00009038 001df020 add r30,r0,r29; fp = sp 10165 0000903c afbffff8 sw -8(r29),r31; push ret addr 10166 00009040 2fbd0010 subui r29,r29,#16; alloc local storage 10167 00009044 afa20000 sw 0(r29),r2 10168 00009048 23bdfff8 addi r29,r29,#-8 10169 0000904c 2002000f addi r2,r0,#15 10170 00009050 afa20000 sw (r29),r2 10171 00009054 0fff8230 jal _SetIntrs 10172 00009058 54000000 nop; not filled. 10173 0000905c 23bd0008 addi r29,r29,#8 10174 00009060 8fa20000 lw r2,0(r29) 10175 00009064 8fdffff8 lw r31,-8(r30) 10176 00009068 001ee820 add r29,r0,r30 10177 0000906c 8fdefffc lw r30,-4(r30) 10178 00009070 4be00000 jr r31 10179 00009074 54000000 nop 10180 00009078 .endproc _DisableIntrs 10181 00009078 .align 2 10182 00009078 .proc _EnableIntrs 10183 00009078 .global _EnableIntrs 10184 00009078 _EnableIntrs: 10185 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 10186 00009078 afbefffc sw -4(r29),r30; push fp 10187 0000907c 001df020 add r30,r0,r29; fp = sp 10188 00009080 afbffff8 sw -8(r29),r31; push ret addr 10189 00009084 2fbd0010 subui r29,r29,#16; alloc local storage 10190 00009088 afa20000 sw 0(r29),r2 10191 0000908c 23bdfff8 addi r29,r29,#-8 10192 00009090 20020000 addi r2,r0,#0 10193 00009094 afa20000 sw (r29),r2 10194 00009098 0fff81ec jal _SetIntrs 10195 0000909c 54000000 nop; not filled. 10196 000090a0 23bd0008 addi r29,r29,#8 10197 000090a4 8fa20000 lw r2,0(r29) 10198 000090a8 8fdffff8 lw r31,-8(r30) 10199 000090ac 001ee820 add r29,r0,r30 10200 000090b0 8fdefffc lw r30,-4(r30) 10201 000090b4 4be00000 jr r31 10202 000090b8 54000000 nop 10203 000090bc .endproc _EnableIntrs 10204 000090bc .align 2 10205 000090bc .proc _RestoreIntrs 10206 000090bc .global _RestoreIntrs 10207 000090bc _RestoreIntrs: 10208 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 10209 000090bc afbefffc sw -4(r29),r30; push fp 10210 000090c0 001df020 add r30,r0,r29; fp = sp 10211 000090c4 afbffff8 sw -8(r29),r31; push ret addr 10212 000090c8 2fbd0010 subui r29,r29,#16; alloc local storage 10213 000090cc afa20000 sw 0(r29),r2 10214 000090d0 23bdfff8 addi r29,r29,#-8 10215 000090d4 8fc20000 lw r2,(r30) 10216 000090d8 afa20000 sw (r29),r2 10217 000090dc 0fff81a8 jal _SetIntrs 10218 000090e0 54000000 nop; not filled. 10219 000090e4 23bd0008 addi r29,r29,#8 10220 000090e8 8fa20000 lw r2,0(r29) 10221 000090ec 8fdffff8 lw r31,-8(r30) 10222 000090f0 001ee820 add r29,r0,r30 10223 000090f4 8fdefffc lw r30,-4(r30) 10224 000090f8 4be00000 jr r31 10225 000090fc 54000000 nop 10226 00009100 .endproc _RestoreIntrs 10227 00009100 .align 2 10228 00009100 .proc _QueueLinkInit 10229 00009100 .global _QueueLinkInit 10230 00009100 _QueueLinkInit: 10231 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 10232 00009100 afbefffc sw -4(r29),r30; push fp 10233 00009104 001df020 add r30,r0,r29; fp = sp 10234 00009108 afbffff8 sw -8(r29),r31; push ret addr 10235 0000910c 2fbd0010 subui r29,r29,#16; alloc local storage 10236 00009110 afa20000 sw 0(r29),r2 10237 00009114 8fc10000 lw r1,(r30) 10238 00009118 8fc20004 lw r2,4(r30) 10239 0000911c 201f0000 addi r31,r0,#0 10240 00009120 ac3f0000 sw (r1),r31 10241 00009124 ac22000c sw 12(r1),r2 10242 00009128 8fa20000 lw r2,0(r29) 10243 0000912c 8fdffff8 lw r31,-8(r30) 10244 00009130 001ee820 add r29,r0,r30 10245 00009134 8fdefffc lw r30,-4(r30) 10246 00009138 4be00000 jr r31 10247 0000913c 54000000 nop 10248 00009140 .endproc _QueueLinkInit 10249 00009140 .align 2 10250 00009140 .proc _QueueNext 10251 00009140 .global _QueueNext 10252 00009140 _QueueNext: 10253 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 10254 00009140 afbefffc sw -4(r29),r30; push fp 10255 00009144 001df020 add r30,r0,r29; fp = sp 10256 00009148 afbffff8 sw -8(r29),r31; push ret addr 10257 0000914c 2fbd0008 subui r29,r29,#8; alloc local storage 10258 00009150 8fc10000 lw r1,(r30) 10259 00009154 8c210000 lw r1,(r1) 10260 00009158 8fdffff8 lw r31,-8(r30) 10261 0000915c 001ee820 add r29,r0,r30 10262 00009160 8fdefffc lw r30,-4(r30) 10263 00009164 4be00000 jr r31 10264 00009168 54000000 nop 10265 0000916c .endproc _QueueNext 10266 0000916c .align 2 10267 0000916c .proc _QueuePrev 10268 0000916c .global _QueuePrev 10269 0000916c _QueuePrev: 10270 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 10271 0000916c afbefffc sw -4(r29),r30; push fp 10272 00009170 001df020 add r30,r0,r29; fp = sp 10273 00009174 afbffff8 sw -8(r29),r31; push ret addr 10274 00009178 2fbd0008 subui r29,r29,#8; alloc local storage 10275 0000917c 8fc10000 lw r1,(r30) 10276 00009180 8c210004 lw r1,4(r1) 10277 00009184 8fdffff8 lw r31,-8(r30) 10278 00009188 001ee820 add r29,r0,r30 10279 0000918c 8fdefffc lw r30,-4(r30) 10280 00009190 4be00000 jr r31 10281 00009194 54000000 nop 10282 00009198 .endproc _QueuePrev 10283 00009198 .align 2 10284 00009198 .proc _QueueFirst 10285 00009198 .global _QueueFirst 10286 00009198 _QueueFirst: 10287 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 10288 00009198 afbefffc sw -4(r29),r30; push fp 10289 0000919c 001df020 add r30,r0,r29; fp = sp 10290 000091a0 afbffff8 sw -8(r29),r31; push ret addr 10291 000091a4 2fbd0008 subui r29,r29,#8; alloc local storage 10292 000091a8 8fc10000 lw r1,(r30) 10293 000091ac 8c210000 lw r1,(r1) 10294 000091b0 8fdffff8 lw r31,-8(r30) 10295 000091b4 001ee820 add r29,r0,r30 10296 000091b8 8fdefffc lw r30,-4(r30) 10297 000091bc 4be00000 jr r31 10298 000091c0 54000000 nop 10299 000091c4 .endproc _QueueFirst 10300 000091c4 .align 2 10301 000091c4 .proc _QueueLast 10302 000091c4 .global _QueueLast 10303 000091c4 _QueueLast: 10304 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 10305 000091c4 afbefffc sw -4(r29),r30; push fp 10306 000091c8 001df020 add r30,r0,r29; fp = sp 10307 000091cc afbffff8 sw -8(r29),r31; push ret addr 10308 000091d0 2fbd0008 subui r29,r29,#8; alloc local storage 10309 000091d4 8fc10000 lw r1,(r30) 10310 000091d8 8c210004 lw r1,4(r1) 10311 000091dc 8fdffff8 lw r31,-8(r30) 10312 000091e0 001ee820 add r29,r0,r30 10313 000091e4 8fdefffc lw r30,-4(r30) 10314 000091e8 4be00000 jr r31 10315 000091ec 54000000 nop 10316 000091f0 .endproc _QueueLast 10317 000091f0 .align 2 10318 000091f0 .proc _QueueInsertAfter 10319 000091f0 .global _QueueInsertAfter 10320 000091f0 _QueueInsertAfter: 10321 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 10322 000091f0 afbefffc sw -4(r29),r30; push fp 10323 000091f4 001df020 add r30,r0,r29; fp = sp 10324 000091f8 afbffff8 sw -8(r29),r31; push ret addr 10325 000091fc 2fbd0010 subui r29,r29,#16; alloc local storage 10326 00009200 afa20000 sw 0(r29),r2 10327 00009204 afa30004 sw 4(r29),r3 10328 00009208 8fc30000 lw r3,(r30) 10329 0000920c 8fc20004 lw r2,4(r30) 10330 00009210 8fc10008 lw r1,8(r30) 10331 00009214 ac230008 sw 8(r1),r3 10332 00009218 ac220004 sw 4(r1),r2 10333 0000921c 8c5f0000 lw r31,(r2) 10334 00009220 ac3f0000 sw (r1),r31 10335 00009224 ac410000 sw (r2),r1 10336 00009228 8c220000 lw r2,(r1) 10337 0000922c ac410004 sw 4(r2),r1 10338 00009230 8c610008 lw r1,8(r3) 10339 00009234 20210001 addi r1,r1,#1 10340 00009238 ac610008 sw 8(r3),r1 10341 0000923c 8fa20000 lw r2,0(r29) 10342 00009240 8fa30004 lw r3,4(r29) 10343 00009244 8fdffff8 lw r31,-8(r30) 10344 00009248 001ee820 add r29,r0,r30 10345 0000924c 8fdefffc lw r30,-4(r30) 10346 00009250 4be00000 jr r31 10347 00009254 54000000 nop 10348 00009258 .endproc _QueueInsertAfter 10349 00009258 .align 2 10350 00009258 .proc _QueueInsertFirst 10351 00009258 .global _QueueInsertFirst 10352 00009258 _QueueInsertFirst: 10353 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 10354 00009258 afbefffc sw -4(r29),r30; push fp 10355 0000925c 001df020 add r30,r0,r29; fp = sp 10356 00009260 afbffff8 sw -8(r29),r31; push ret addr 10357 00009264 2fbd0010 subui r29,r29,#16; alloc local storage 10358 00009268 afa20000 sw 0(r29),r2 10359 0000926c afa30004 sw 4(r29),r3 10360 00009270 8fc30000 lw r3,(r30) 10361 00009274 8fc10004 lw r1,4(r30) 10362 00009278 ac230008 sw 8(r1),r3 10363 0000927c ac230004 sw 4(r1),r3 10364 00009280 8c7f0000 lw r31,(r3) 10365 00009284 ac3f0000 sw (r1),r31 10366 00009288 ac610000 sw (r3),r1 10367 0000928c 8c220000 lw r2,(r1) 10368 00009290 ac410004 sw 4(r2),r1 10369 00009294 8c610008 lw r1,8(r3) 10370 00009298 20210001 addi r1,r1,#1 10371 0000929c ac610008 sw 8(r3),r1 10372 000092a0 8fa20000 lw r2,0(r29) 10373 000092a4 8fa30004 lw r3,4(r29) 10374 000092a8 8fdffff8 lw r31,-8(r30) 10375 000092ac 001ee820 add r29,r0,r30 10376 000092b0 8fdefffc lw r30,-4(r30) 10377 000092b4 4be00000 jr r31 10378 000092b8 54000000 nop 10379 000092bc .endproc _QueueInsertFirst 10380 000092bc .align 2 10381 000092bc .proc _QueueInsertLast 10382 000092bc .global _QueueInsertLast 10383 000092bc _QueueInsertLast: 10384 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 10385 000092bc afbefffc sw -4(r29),r30; push fp 10386 000092c0 001df020 add r30,r0,r29; fp = sp 10387 000092c4 afbffff8 sw -8(r29),r31; push ret addr 10388 000092c8 2fbd0010 subui r29,r29,#16; alloc local storage 10389 000092cc afa20000 sw 0(r29),r2 10390 000092d0 afa30004 sw 4(r29),r3 10391 000092d4 8fc30000 lw r3,(r30) 10392 000092d8 8fc10004 lw r1,4(r30) 10393 000092dc 8c620004 lw r2,4(r3) 10394 000092e0 ac230008 sw 8(r1),r3 10395 000092e4 ac220004 sw 4(r1),r2 10396 000092e8 8c5f0000 lw r31,(r2) 10397 000092ec ac3f0000 sw (r1),r31 10398 000092f0 ac410000 sw (r2),r1 10399 000092f4 8c220000 lw r2,(r1) 10400 000092f8 ac410004 sw 4(r2),r1 10401 000092fc 8c610008 lw r1,8(r3) 10402 00009300 20210001 addi r1,r1,#1 10403 00009304 ac610008 sw 8(r3),r1 10404 00009308 8fa20000 lw r2,0(r29) 10405 0000930c 8fa30004 lw r3,4(r29) 10406 00009310 8fdffff8 lw r31,-8(r30) 10407 00009314 001ee820 add r29,r0,r30 10408 00009318 8fdefffc lw r30,-4(r30) 10409 0000931c 4be00000 jr r31 10410 00009320 54000000 nop 10411 00009324 .endproc _QueueInsertLast 10412 00009324 .align 2 10413 00009324 .proc _QueueRemove 10414 00009324 .global _QueueRemove 10415 00009324 _QueueRemove: 10416 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 10417 00009324 afbefffc sw -4(r29),r30; push fp 10418 00009328 001df020 add r30,r0,r29; fp = sp 10419 0000932c afbffff8 sw -8(r29),r31; push ret addr 10420 00009330 2fbd0010 subui r29,r29,#16; alloc local storage 10421 00009334 afa20000 sw 0(r29),r2 10422 00009338 afa30004 sw 4(r29),r3 10423 0000933c 8fdf0000 lw r31,(r30) 10424 00009340 8fe10008 lw r1,8(r31) 10425 00009344 8c210008 lw r1,8(r1) 10426 00009348 6c210000 sgti r1,r1,#0 10427 0000934c 1020002c beqz r1,L44_LF8 10428 00009350 54000000 nop; not filled. 10429 00009354 8fe10004 lw r1,4(r31) 10430 00009358 8fe30000 lw r3,(r31) 10431 0000935c ac230000 sw (r1),r3 10432 00009360 8fe10000 lw r1,(r31) 10433 00009364 8fe30004 lw r3,4(r31) 10434 00009368 ac230004 sw 4(r1),r3 10435 0000936c 8fe20008 lw r2,8(r31) 10436 00009370 8c410008 lw r1,8(r2) 10437 00009374 2021ffff addi r1,r1,#-1 10438 00009378 ac410008 sw 8(r2),r1 10439 0000937c L44_LF8: 10440 0000937c 20030000 addi r3,r0,#0 10441 00009380 afe30000 sw (r31),r3 10442 00009384 8fa20000 lw r2,0(r29) 10443 00009388 8fa30004 lw r3,4(r29) 10444 0000938c 8fdffff8 lw r31,-8(r30) 10445 00009390 001ee820 add r29,r0,r30 10446 00009394 8fdefffc lw r30,-4(r30) 10447 00009398 4be00000 jr r31 10448 0000939c 54000000 nop 10449 000093a0 .endproc _QueueRemove 10450 000093a0 .align 2 10451 000093a0 .proc _QueueLength 10452 000093a0 .global _QueueLength 10453 000093a0 _QueueLength: 10454 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 10455 000093a0 afbefffc sw -4(r29),r30; push fp 10456 000093a4 001df020 add r30,r0,r29; fp = sp 10457 000093a8 afbffff8 sw -8(r29),r31; push ret addr 10458 000093ac 2fbd0008 subui r29,r29,#8; alloc local storage 10459 000093b0 8fc10000 lw r1,(r30) 10460 000093b4 8c210008 lw r1,8(r1) 10461 000093b8 8fdffff8 lw r31,-8(r30) 10462 000093bc 001ee820 add r29,r0,r30 10463 000093c0 8fdefffc lw r30,-4(r30) 10464 000093c4 4be00000 jr r31 10465 000093c8 54000000 nop 10466 000093cc .endproc _QueueLength 10467 000093cc .align 2 10468 000093cc .proc _QueueEmpty 10469 000093cc .global _QueueEmpty 10470 000093cc _QueueEmpty: 10471 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 10472 000093cc afbefffc sw -4(r29),r30; push fp 10473 000093d0 001df020 add r30,r0,r29; fp = sp 10474 000093d4 afbffff8 sw -8(r29),r31; push ret addr 10475 000093d8 2fbd0008 subui r29,r29,#8; alloc local storage 10476 000093dc 8fc10000 lw r1,(r30) 10477 000093e0 8c210008 lw r1,8(r1) 10478 000093e4 60210000 seqi r1,r1,#0 10479 000093e8 8fdffff8 lw r31,-8(r30) 10480 000093ec 001ee820 add r29,r0,r30 10481 000093f0 8fdefffc lw r30,-4(r30) 10482 000093f4 4be00000 jr r31 10483 000093f8 54000000 nop 10484 000093fc .endproc _QueueEmpty 10485 000093fc .align 2 10486 000093fc .proc _TimerSet 10487 000093fc .global _TimerSet 10488 000093fc _TimerSet: 10489 ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. 10490 000093fc afbefffc sw -4(r29),r30; push fp 10491 00009400 001df020 add r30,r0,r29; fp = sp 10492 00009404 afbffff8 sw -8(r29),r31; push ret addr 10493 00009408 2fbd0008 subui r29,r29,#8; alloc local storage 10494 0000940c 3c01fff0 lhi r1,#-16 10495 00009410 24210010 addui r1,r1,#16 10496 00009414 8fdf0000 lw r31,(r30) 10497 00009418 ac3f0000 sw (r1),r31 10498 0000941c 8fdffff8 lw r31,-8(r30) 10499 00009420 001ee820 add r29,r0,r30 10500 00009424 8fdefffc lw r30,-4(r30) 10501 00009428 4be00000 jr r31 10502 0000942c 54000000 nop 10503 00009430 .endproc _TimerSet 10504 00009430 .align 2 10505 00009430 .proc _KbdModuleInit 10506 00009430 .global _KbdModuleInit 10507 00009430 _KbdModuleInit: 10508 ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. 10509 00009430 afbefffc sw -4(r29),r30; push fp 10510 00009434 001df020 add r30,r0,r29; fp = sp 10511 00009438 afbffff8 sw -8(r29),r31; push ret addr 10512 0000943c 2fbd0008 subui r29,r29,#8; alloc local storage 10513 00009440 3c01fff0 lhi r1,#-16 10514 00009444 242101c0 addui r1,r1,#448 10515 00009448 201f0001 addi r31,r0,#1 10516 0000944c ac3f0000 sw (r1),r31 10517 00009450 8fdffff8 lw r31,-8(r30) 10518 00009454 001ee820 add r29,r0,r30 10519 00009458 8fdefffc lw r30,-4(r30) 10520 0000945c 4be00000 jr r31 10521 00009460 54000000 nop 10522 00009464 .endproc _KbdModuleInit 10523 00009464 .data 10524 00012a6b .align 2 10525 00012a6c LC0_LF8: 10526 00012a6c 46617461 .ascii "Fatal: Cumulative length of all arguments > 100\n\000" 10526 00012a70 6c3a2043 10526 00012a74 756d756c 10526 00012a78 61746976 10526 00012a7c 65206c65 10526 00012a80 6e677468 10526 00012a84 206f6620 10526 00012a88 616c6c20 10526 00012a8c 61726775 10526 00012a90 6d656e74 10526 00012a94 73203e20 10526 00012a98 3130300a 10526 00012a9c 00 10527 00012a9d .text 10528 00009464 .align 2 10529 00009464 .proc _TrapProcessCreateHandler_LF8 10530 00009464 _TrapProcessCreateHandler_LF8: 10531 ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. 10532 00009464 afbefffc sw -4(r29),r30; push fp 10533 00009468 001df020 add r30,r0,r29; fp = sp 10534 0000946c afbffff8 sw -8(r29),r31; push ret addr 10535 00009470 2fbd06a0 subui r29,r29,#1696; alloc local storage 10536 00009474 afa20000 sw 0(r29),r2 10537 00009478 afa30004 sw 4(r29),r3 10538 0000947c afa40008 sw 8(r29),r4 10539 00009480 afa5000c sw 12(r29),r5 10540 00009484 afa60010 sw 16(r29),r6 10541 00009488 afa70014 sw 20(r29),r7 10542 0000948c afa80018 sw 24(r29),r8 10543 00009490 afa9001c sw 28(r29),r9 10544 00009494 afaa0020 sw 32(r29),r10 10545 00009498 afab0024 sw 36(r29),r11 10546 0000949c afac0028 sw 40(r29),r12 10547 000094a0 8fc40000 lw r4,(r30) 10548 000094a4 8fc60004 lw r6,4(r30) 10549 000094a8 23c2fbf8 addi r2,r30,#-1032 10550 000094ac 23c3fc5b addi r3,r30,#-933 10551 000094b0 L65_LF8: 10552 000094b0 200c0000 addi r12,r0,(#0x0)&0xff 10553 000094b4 a04c0000 sb (r2),r12 10554 000094b8 20420001 addi r2,r2,#1 10555 000094bc 0043082c sle r1,r2,r3 10556 000094c0 1420ffec bnez r1,L65_LF8 10557 000094c4 54000000 nop; not filled. 10558 000094c8 20050000 addi r5,r0,#0 10559 000094cc 64c10000 snei r1,r6,#0 10560 000094d0 142000a0 bnez r1,L67_LF8 10561 000094d4 54000000 nop; not filled. 10562 000094d8 23bdfff0 addi r29,r29,#-16 10563 000094dc 3c020000 lhi r2,((_currentPCB)>>16)&0xffff 10564 000094e0 2442fe28 addui r2,r2,(_currentPCB)&0xffff 10565 000094e4 8c4c0000 lw r12,(r2) 10566 000094e8 afac0000 sw (r29),r12 10567 000094ec afa40004 sw 4(r29),r4 10568 000094f0 23c1f990 addi r1,r30,#-1648 10569 000094f4 afa10008 sw 8(r29),r1 10570 000094f8 200c0200 addi r12,r0,#512 10571 000094fc afac000c sw 12(r29),r12 10572 00009500 0fffa080 jal _MemoryCopyUserToSystem 10573 00009504 54000000 nop; not filled. 10574 00009508 23bd0010 addi r29,r29,#16 10575 0000950c 23c4fb8f addi r4,r30,#-1137 10576 00009510 23c3fb90 addi r3,r30,#-1136 10577 00009514 L68_LF8: 10578 00009514 23bdfff0 addi r29,r29,#-16 10579 00009518 8c4c0000 lw r12,(r2) 10580 0000951c afac0000 sw (r29),r12 10581 00009520 8fc1f990 lw r1,-1648(r30) 10582 00009524 00250820 add r1,r1,r5 10583 00009528 afa10004 sw 4(r29),r1 10584 0000952c afa30008 sw 8(r29),r3 10585 00009530 200c0001 addi r12,r0,#1 10586 00009534 afac000c sw 12(r29),r12 10587 00009538 0fffa048 jal _MemoryCopyUserToSystem 10588 0000953c 54000000 nop; not filled. 10589 00009540 20840001 addi r4,r4,#1 10590 00009544 20630001 addi r3,r3,#1 10591 00009548 20a50001 addi r5,r5,#1 10592 0000954c 23bd0010 addi r29,r29,#16 10593 00009550 70a10063 sleui r1,r5,#99 10594 00009554 10200060 beqz r1,L73_LF8 10595 00009558 54000000 nop; not filled. 10596 0000955c 90810000 lbu r1,(r4) 10597 00009560 64210000 snei r1,r1,#0 10598 00009564 10200050 beqz r1,L73_LF8 10599 00009568 54000000 nop; not filled. 10600 0000956c 0bffffa4 j L68_LF8 10601 00009570 54000000 nop; not filled. 10602 00009574 L67_LF8: 10603 00009574 23bdfff0 addi r29,r29,#-16 10604 00009578 afa40000 sw (r29),r4 10605 0000957c 23c1f990 addi r1,r30,#-1648 10606 00009580 afa10004 sw 4(r29),r1 10607 00009584 200c0200 addi r12,r0,#512 10608 00009588 afac0008 sw 8(r29),r12 10609 0000958c 0fffac34 jal _bcopy 10610 00009590 54000000 nop; not filled. 10611 00009594 8fccf990 lw r12,-1648(r30) 10612 00009598 afac0000 sw (r29),r12 10613 0000959c 23c1fb90 addi r1,r30,#-1136 10614 000095a0 afa10004 sw 4(r29),r1 10615 000095a4 200c0064 addi r12,r0,#100 10616 000095a8 afac0008 sw 8(r29),r12 10617 000095ac 0fffa428 jal _dstrncpy 10618 000095b0 54000000 nop; not filled. 10619 000095b4 23bd0010 addi r29,r29,#16 10620 000095b8 L73_LF8: 10621 000095b8 200c0000 addi r12,r0,(#0x0)&0xff 10622 000095bc a3ccfbf3 sb -1037(r30),r12 10623 000095c0 20050000 addi r5,r0,#0 10624 000095c4 64c10000 snei r1,r6,#0 10625 000095c8 142000b0 bnez r1,L74_LF8 10626 000095cc 54000000 nop; not filled. 10627 000095d0 3c080000 lhi r8,((_currentPCB)>>16)&0xffff 10628 000095d4 2508fe28 addui r8,r8,(_currentPCB)&0xffff 10629 000095d8 23cbfbf8 addi r11,r30,#-1032 10630 000095dc 23cafbf7 addi r10,r30,#-1033 10631 000095e0 23c6fff8 addi r6,r30,#-8 10632 000095e4 23c90020 addi r9,r30,#32 10633 000095e8 L85_LF8: 10634 000095e8 8cc1f998 lw r1,-1640(r6) 10635 000095ec 64210000 snei r1,r1,#0 10636 000095f0 1020012c beqz r1,L86_LF8 10637 000095f4 54000000 nop; not filled. 10638 000095f8 20020000 addi r2,r0,#0 10639 000095fc 00063820 add r7,r0,r6 10640 00009600 00aa2020 add r4,r5,r10 10641 00009604 00ab1820 add r3,r5,r11 10642 00009608 L80_LF8: 10643 00009608 23bdfff0 addi r29,r29,#-16 10644 0000960c 8d0c0000 lw r12,(r8) 10645 00009610 afac0000 sw (r29),r12 10646 00009614 8ce1f998 lw r1,-1640(r7) 10647 00009618 00220820 add r1,r1,r2 10648 0000961c afa10004 sw 4(r29),r1 10649 00009620 afa30008 sw 8(r29),r3 10650 00009624 200c0001 addi r12,r0,#1 10651 00009628 afac000c sw 12(r29),r12 10652 0000962c 0fff9f54 jal _MemoryCopyUserToSystem 10653 00009630 54000000 nop; not filled. 10654 00009634 20840001 addi r4,r4,#1 10655 00009638 20630001 addi r3,r3,#1 10656 0000963c 20a50001 addi r5,r5,#1 10657 00009640 20420001 addi r2,r2,#1 10658 00009644 23bd0010 addi r29,r29,#16 10659 00009648 70a103ff sleui r1,r5,#1023 10660 0000964c 10200014 beqz r1,L77_LF8 10661 00009650 54000000 nop; not filled. 10662 00009654 90810000 lbu r1,(r4) 10663 00009658 64210000 snei r1,r1,#0 10664 0000965c 1420ffa8 bnez r1,L80_LF8 10665 00009660 54000000 nop; not filled. 10666 00009664 L77_LF8: 10667 00009664 20c60004 addi r6,r6,#4 10668 00009668 00c9082c sle r1,r6,r9 10669 0000966c 102000b0 beqz r1,L86_LF8 10670 00009670 54000000 nop; not filled. 10671 00009674 0bffff70 j L85_LF8 10672 00009678 54000000 nop; not filled. 10673 0000967c L74_LF8: 10674 0000967c 23c5fbf8 addi r5,r30,#-1032 10675 00009680 00053820 add r7,r0,r5 10676 00009684 23c3fff8 addi r3,r30,#-8 10677 00009688 23c60020 addi r6,r30,#32 10678 0000968c L93_LF8: 10679 0000968c 2064f998 addi r4,r3,#-1640 10680 00009690 8c820000 lw r2,(r4) 10681 00009694 64410000 snei r1,r2,#0 10682 00009698 10200084 beqz r1,L86_LF8 10683 0000969c 54000000 nop; not filled. 10684 000096a0 23bdfff8 addi r29,r29,#-8 10685 000096a4 afa20000 sw (r29),r2 10686 000096a8 0fffa518 jal _dstrlen 10687 000096ac 54000000 nop; not filled. 10688 000096b0 00a11020 add r2,r5,r1 10689 000096b4 00470822 sub r1,r2,r7 10690 000096b8 23bd0008 addi r29,r29,#8 10691 000096bc 6c210064 sgti r1,r1,#100 10692 000096c0 10200028 beqz r1,L92_LF8 10693 000096c4 54000000 nop; not filled. 10694 000096c8 23bdfff8 addi r29,r29,#-8 10695 000096cc 3c0c0001 lhi r12,((LC0_LF8)>>16)&0xffff 10696 000096d0 258c2a6c addui r12,r12,(LC0_LF8)&0xffff 10697 000096d4 afac0000 sw (r29),r12 10698 000096d8 0c001910 jal _printf 10699 000096dc 54000000 nop; not filled. 10700 000096e0 0c0018f0 jal _exitsim 10701 000096e4 54000000 nop; not filled. 10702 000096e8 23bd0008 addi r29,r29,#8 10703 000096ec L92_LF8: 10704 000096ec 23bdfff8 addi r29,r29,#-8 10705 000096f0 afa50000 sw (r29),r5 10706 000096f4 8c810000 lw r1,(r4) 10707 000096f8 afa10004 sw 4(r29),r1 10708 000096fc 0fffa274 jal _dstrcpy 10709 00009700 54000000 nop; not filled. 10710 00009704 200c0000 addi r12,r0,(#0x0)&0xff 10711 00009708 a04c0000 sb (r2),r12 10712 0000970c 23bd0008 addi r29,r29,#8 10713 00009710 20630004 addi r3,r3,#4 10714 00009714 0066082c sle r1,r3,r6 10715 00009718 1420ff70 bnez r1,L93_LF8 10716 0000971c 54000000 nop; not filled. 10717 00009720 L86_LF8: 10718 00009720 200c0000 addi r12,r0,(#0x0)&0xff 10719 00009724 a3ccfff7 sb -9(r30),r12 10720 00009728 23bdfff0 addi r29,r29,#-16 10721 0000972c 200c0000 addi r12,r0,#0 10722 00009730 afac0000 sw (r29),r12 10723 00009734 23c1fbf8 addi r1,r30,#-1032 10724 00009738 afa10004 sw 4(r29),r1 10725 0000973c 23c1fb90 addi r1,r30,#-1136 10726 00009740 afa10008 sw 8(r29),r1 10727 00009744 200c0001 addi r12,r0,#1 10728 00009748 afac000c sw 12(r29),r12 10729 0000974c 0fffbe7c jal _ProcessFork 10730 00009750 54000000 nop; not filled. 10731 00009754 23bd0010 addi r29,r29,#16 10732 00009758 8fa20000 lw r2,0(r29) 10733 0000975c 8fa30004 lw r3,4(r29) 10734 00009760 8fa40008 lw r4,8(r29) 10735 00009764 8fa5000c lw r5,12(r29) 10736 00009768 8fa60010 lw r6,16(r29) 10737 0000976c 8fa70014 lw r7,20(r29) 10738 00009770 8fa80018 lw r8,24(r29) 10739 00009774 8fa9001c lw r9,28(r29) 10740 00009778 8faa0020 lw r10,32(r29) 10741 0000977c 8fab0024 lw r11,36(r29) 10742 00009780 8fac0028 lw r12,40(r29) 10743 00009784 8fdffff8 lw r31,-8(r30) 10744 00009788 001ee820 add r29,r0,r30 10745 0000978c 8fdefffc lw r30,-4(r30) 10746 00009790 4be00000 jr r31 10747 00009794 54000000 nop 10748 00009798 .endproc _TrapProcessCreateHandler_LF8 10749 00009798 .align 2 10750 00009798 .proc _TrapPrintfHandler_LF8 10751 00009798 _TrapPrintfHandler_LF8: 10752 ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. 10753 00009798 afbefffc sw -4(r29),r30; push fp 10754 0000979c 001df020 add r30,r0,r29; fp = sp 10755 000097a0 afbffff8 sw -8(r29),r31; push ret addr 10756 000097a4 2fbd00d0 subui r29,r29,#208; alloc local storage 10757 000097a8 afa20000 sw 0(r29),r2 10758 000097ac afa30004 sw 4(r29),r3 10759 000097b0 afa40008 sw 8(r29),r4 10760 000097b4 afa5000c sw 12(r29),r5 10761 000097b8 afa60010 sw 16(r29),r6 10762 000097bc afa70014 sw 20(r29),r7 10763 000097c0 afa80018 sw 24(r29),r8 10764 000097c4 afa9001c sw 28(r29),r9 10765 000097c8 afaa0020 sw 32(r29),r10 10766 000097cc afab0024 sw 36(r29),r11 10767 000097d0 8fc40000 lw r4,(r30) 10768 000097d4 8fc10004 lw r1,4(r30) 10769 000097d8 20080000 addi r8,r0,#0 10770 000097dc 00081820 add r3,r0,r8 10771 000097e0 64210000 snei r1,r1,#0 10772 000097e4 142000a0 bnez r1,L95_LF8 10773 000097e8 54000000 nop; not filled. 10774 000097ec 23bdfff0 addi r29,r29,#-16 10775 000097f0 3c020000 lhi r2,((_currentPCB)>>16)&0xffff 10776 000097f4 2442fe28 addui r2,r2,(_currentPCB)&0xffff 10777 000097f8 8c4b0000 lw r11,(r2) 10778 000097fc afab0000 sw (r29),r11 10779 00009800 afa40004 sw 4(r29),r4 10780 00009804 23c1ff58 addi r1,r30,#-168 10781 00009808 afa10008 sw 8(r29),r1 10782 0000980c 200b0028 addi r11,r0,#40 10783 00009810 afab000c sw 12(r29),r11 10784 00009814 0fff9d6c jal _MemoryCopyUserToSystem 10785 00009818 54000000 nop; not filled. 10786 0000981c 23bd0010 addi r29,r29,#16 10787 00009820 23c5ffa7 addi r5,r30,#-89 10788 00009824 23c4ffa8 addi r4,r30,#-88 10789 00009828 L96_LF8: 10790 00009828 23bdfff0 addi r29,r29,#-16 10791 0000982c 8c4b0000 lw r11,(r2) 10792 00009830 afab0000 sw (r29),r11 10793 00009834 8fc1ff58 lw r1,-168(r30) 10794 00009838 00230820 add r1,r1,r3 10795 0000983c afa10004 sw 4(r29),r1 10796 00009840 afa40008 sw 8(r29),r4 10797 00009844 200b0001 addi r11,r0,#1 10798 00009848 afab000c sw 12(r29),r11 10799 0000984c 0fff9d34 jal _MemoryCopyUserToSystem 10800 00009850 54000000 nop; not filled. 10801 00009854 20a50001 addi r5,r5,#1 10802 00009858 20840001 addi r4,r4,#1 10803 0000985c 20630001 addi r3,r3,#1 10804 00009860 23bd0010 addi r29,r29,#16 10805 00009864 7061004f sleui r1,r3,#79 10806 00009868 10200060 beqz r1,L101_LF8 10807 0000986c 54000000 nop; not filled. 10808 00009870 90a10000 lbu r1,(r5) 10809 00009874 64210000 snei r1,r1,#0 10810 00009878 10200050 beqz r1,L101_LF8 10811 0000987c 54000000 nop; not filled. 10812 00009880 0bffffa4 j L96_LF8 10813 00009884 54000000 nop; not filled. 10814 00009888 L95_LF8: 10815 00009888 23bdfff0 addi r29,r29,#-16 10816 0000988c afa40000 sw (r29),r4 10817 00009890 23c1ff58 addi r1,r30,#-168 10818 00009894 afa10004 sw 4(r29),r1 10819 00009898 200b0028 addi r11,r0,#40 10820 0000989c afab0008 sw 8(r29),r11 10821 000098a0 0fffa920 jal _bcopy 10822 000098a4 54000000 nop; not filled. 10823 000098a8 8fcbff58 lw r11,-168(r30) 10824 000098ac afab0000 sw (r29),r11 10825 000098b0 23c1ffa8 addi r1,r30,#-88 10826 000098b4 afa10004 sw 4(r29),r1 10827 000098b8 200b0050 addi r11,r0,#80 10828 000098bc afab0008 sw 8(r29),r11 10829 000098c0 0fffa114 jal _dstrncpy 10830 000098c4 54000000 nop; not filled. 10831 000098c8 23bd0010 addi r29,r29,#16 10832 000098cc L101_LF8: 10833 000098cc 200b0000 addi r11,r0,(#0x0)&0xff 10834 000098d0 a3cbfff7 sb -9(r30),r11 10835 000098d4 23c3ffa8 addi r3,r30,#-88 10836 000098d8 80620000 lb r2,(r3) 10837 000098dc 304100ff andi r1,r2,#0x00ff 10838 000098e0 64210000 snei r1,r1,#0 10839 000098e4 102000f0 beqz r1,L103_LF8 10840 000098e8 54000000 nop; not filled. 10841 000098ec 23cafff8 addi r10,r30,#-8 10842 000098f0 23c9ff5c addi r9,r30,#-164 10843 000098f4 51010002 slli r1,r8,#0x2 10844 000098f8 00293820 add r7,r1,r9 10845 000098fc 002a3020 add r6,r1,r10 10846 00009900 L105_LF8: 10847 00009900 304100ff andi r1,r2,#0x00ff 10848 00009904 60210025 seqi r1,r1,#37 10849 00009908 102000b4 beqz r1,L104_LF8 10850 0000990c 54000000 nop; not filled. 10851 00009910 90610001 lbu r1,1(r3) 10852 00009914 60210025 seqi r1,r1,#37 10853 00009918 10200010 beqz r1,L107_LF8 10854 0000991c 54000000 nop; not filled. 10855 00009920 20630001 addi r3,r3,#1 10856 00009924 08000098 j L104_LF8 10857 00009928 54000000 nop; not filled. 10858 0000992c L107_LF8: 10859 0000992c 8ceb0000 lw r11,(r7) 10860 00009930 accbff88 sw -120(r6),r11 10861 00009934 51010002 slli r1,r8,#0x2 10862 00009938 00292820 add r5,r1,r9 10863 0000993c 002a2020 add r4,r1,r10 10864 00009940 L110_LF8: 10865 00009940 20630001 addi r3,r3,#1 10866 00009944 807f0000 lb r31,(r3) 10867 00009948 33e200ff andi r2,r31,#0x00ff 10868 0000994c 60410073 seqi r1,r2,#115 10869 00009950 14200060 bnez r1,L109_LF8 10870 00009954 54000000 nop; not filled. 10871 00009958 6041006c seqi r1,r2,#108 10872 0000995c 1420ffe0 bnez r1,L110_LF8 10873 00009960 54000000 nop; not filled. 10874 00009964 23e1ff9a addi r1,r31,#-102 10875 00009968 302100ff andi r1,r1,#0x00ff 10876 0000996c 70210001 sleui r1,r1,#1 10877 00009970 14200010 bnez r1,L116_LF8 10878 00009974 54000000 nop; not filled. 10879 00009978 60410065 seqi r1,r2,#101 10880 0000997c 10200020 beqz r1,L115_LF8 10881 00009980 54000000 nop; not filled. 10882 00009984 L116_LF8: 10883 00009984 20e70004 addi r7,r7,#4 10884 00009988 20c60004 addi r6,r6,#4 10885 0000998c 21080001 addi r8,r8,#1 10886 00009990 8ca50004 lw r5,4(r5) 10887 00009994 ac85ff8c sw -116(r4),r5 10888 00009998 08000018 j L109_LF8 10889 0000999c 54000000 nop; not filled. 10890 000099a0 L115_LF8: 10891 000099a0 23e1ff9f addi r1,r31,#-97 10892 000099a4 302100ff andi r1,r1,#0x00ff 10893 000099a8 70210019 sleui r1,r1,#25 10894 000099ac 1020ff90 beqz r1,L110_LF8 10895 000099b0 54000000 nop; not filled. 10896 000099b4 L109_LF8: 10897 000099b4 20e70004 addi r7,r7,#4 10898 000099b8 20c60004 addi r6,r6,#4 10899 000099bc 21080001 addi r8,r8,#1 10900 000099c0 L104_LF8: 10901 000099c0 20630001 addi r3,r3,#1 10902 000099c4 80620000 lb r2,(r3) 10903 000099c8 304100ff andi r1,r2,#0x00ff 10904 000099cc 64210000 snei r1,r1,#0 10905 000099d0 1420ff2c bnez r1,L105_LF8 10906 000099d4 54000000 nop; not filled. 10907 000099d8 L103_LF8: 10908 000099d8 23bdffd8 addi r29,r29,#-40 10909 000099dc 23c1ffa8 addi r1,r30,#-88 10910 000099e0 afa10000 sw (r29),r1 10911 000099e4 8fc1ff80 lw r1,-128(r30) 10912 000099e8 afa10004 sw 4(r29),r1 10913 000099ec 8fcbff84 lw r11,-124(r30) 10914 000099f0 afab0008 sw 8(r29),r11 10915 000099f4 8fcbff88 lw r11,-120(r30) 10916 000099f8 afab000c sw 12(r29),r11 10917 000099fc 8fcbff8c lw r11,-116(r30) 10918 00009a00 afab0010 sw 16(r29),r11 10919 00009a04 8fcbff90 lw r11,-112(r30) 10920 00009a08 afab0014 sw 20(r29),r11 10921 00009a0c 8fcbff94 lw r11,-108(r30) 10922 00009a10 afab0018 sw 24(r29),r11 10923 00009a14 8fcbff98 lw r11,-104(r30) 10924 00009a18 afab001c sw 28(r29),r11 10925 00009a1c 8fcbff9c lw r11,-100(r30) 10926 00009a20 afab0020 sw 32(r29),r11 10927 00009a24 0c0015c4 jal _printf 10928 00009a28 54000000 nop; not filled. 10929 00009a2c 23bd0028 addi r29,r29,#40 10930 00009a30 8fa20000 lw r2,0(r29) 10931 00009a34 8fa30004 lw r3,4(r29) 10932 00009a38 8fa40008 lw r4,8(r29) 10933 00009a3c 8fa5000c lw r5,12(r29) 10934 00009a40 8fa60010 lw r6,16(r29) 10935 00009a44 8fa70014 lw r7,20(r29) 10936 00009a48 8fa80018 lw r8,24(r29) 10937 00009a4c 8fa9001c lw r9,28(r29) 10938 00009a50 8faa0020 lw r10,32(r29) 10939 00009a54 8fab0024 lw r11,36(r29) 10940 00009a58 8fdffff8 lw r31,-8(r30) 10941 00009a5c 001ee820 add r29,r0,r30 10942 00009a60 8fdefffc lw r30,-4(r30) 10943 00009a64 4be00000 jr r31 10944 00009a68 54000000 nop 10945 00009a6c .endproc _TrapPrintfHandler_LF8 10946 00009a6c .data 10947 00012a9d .align 2 10948 00012aa0 LC1_LF8: 10949 00012aa0 496e7465 .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" 10949 00012aa4 72727570 10949 00012aa8 74206361 10949 00012aac 7573653d 10949 00012ab0 30782578 10949 00012ab4 20696172 10949 00012ab8 3d307825 10949 00012abc 78206973 10949 00012ac0 723d3078 10949 00012ac4 25782061 10949 00012ac8 7267733d 10949 00012acc 30782530 10949 00012ad0 38782e0a 10949 00012ad4 00 10950 00012ad5 .align 2 10951 00012ad8 LC2_LF8: 10952 00012ad8 476f7420 .ascii "Got a context switch trap!\n\000" 10952 00012adc 6120636f 10952 00012ae0 6e746578 10952 00012ae4 74207377 10952 00012ae8 69746368 10952 00012aec 20747261 10952 00012af0 70210a00 10953 00012af4 .align 2 10954 00012af4 LC3_LF8: 10955 00012af4 476f7420 .ascii "Got an exit trap!\n\000" 10955 00012af8 616e2065 10955 00012afc 78697420 10955 00012b00 74726170 10955 00012b04 210a00 10956 00012b07 .align 2 10957 00012b08 LC4_LF8: 10958 00012b08 476f7420 .ascii "Got a fork trap!\n\000" 10958 00012b0c 6120666f 10958 00012b10 726b2074 10958 00012b14 72617021 10958 00012b18 0a00 10959 00012b1a .align 2 10960 00012b1c LC5_LF8: 10961 00012b1c 476f7420 .ascii "Got a process sleep trap!\n\000" 10961 00012b20 61207072 10961 00012b24 6f636573 10961 00012b28 7320736c 10961 00012b2c 65657020 10961 00012b30 74726170 10961 00012b34 210a00 10962 00012b37 .align 2 10963 00012b38 LC6_LF8: 10964 00012b38 476f7420 .ascii "Got a printf trap!\n\000" 10964 00012b3c 61207072 10964 00012b40 696e7466 10964 00012b44 20747261 10964 00012b48 70210a00 10965 00012b4c .align 2 10966 00012b4c LC7_LF8: 10967 00012b4c 476f7420 .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" 10967 00012b50 616e206f 10967 00012b54 70656e20 10967 00012b58 77697468 10967 00012b5c 20706172 10967 00012b60 616d6574 10967 00012b64 65727320 10967 00012b68 28272573 10967 00012b6c 272c3078 10967 00012b70 2578290a 10967 00012b74 00 10968 00012b75 .align 2 10969 00012b78 LC8_LF8: 10970 00012b78 476f7420 .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" 10970 00012b7c 616e2075 10970 00012b80 6e726563 10970 00012b84 6f676e69 10970 00012b88 7a656420 10970 00012b8c 74726170 10970 00012b90 20283078 10970 00012b94 25782920 10970 00012b98 2d206578 10970 00012b9c 6974696e 10970 00012ba0 67210a00 10971 00012ba4 .align 2 10972 00012ba4 LC9_LF8: 10973 00012ba4 476f7420 .ascii "Got a timer interrupt!\n\000" 10973 00012ba8 61207469 10973 00012bac 6d657220 10973 00012bb0 696e7465 10973 00012bb4 72727570 10973 00012bb8 74210a00 10974 00012bbc .align 2 10975 00012bbc LC10_LF8: 10976 00012bbc 476f7420 .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" 10976 00012bc0 61206b65 10976 00012bc4 79626f61 10976 00012bc8 72642069 10976 00012bcc 6e746572 10976 00012bd0 72757074 10976 00012bd4 20286368 10976 00012bd8 61723d30 10976 00012bdc 78257828 10976 00012be0 2563292c 10976 00012be4 206e6c65 10976 00012be8 66743d25 10976 00012bec 6429210a 10976 00012bf0 00 10977 00012bf1 .align 2 10978 00012bf4 LC11_LF8: 10979 00012bf4 45786974 .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" 10979 00012bf8 696e6720 10979 00012bfc 61667465 10979 00012c00 7220696c 10979 00012c04 6c656761 10979 00012c08 6c20696e 10979 00012c0c 73747275 10979 00012c10 6374696f 10979 00012c14 6e206174 10979 00012c18 20696172 10979 00012c1c 3d307825 10979 00012c20 782c2069 10979 00012c24 73723d30 10979 00012c28 7825780a 10979 00012c2c 00 10980 00012c2d .align 2 10981 00012c30 LC12_LF8: 10982 00012c30 476f7420 .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" 10982 00012c34 616e2075 10982 00012c38 6e726563 10982 00012c3c 6f676e69 10982 00012c40 7a656420 10982 00012c44 73797374 10982 00012c48 656d2069 10982 00012c4c 6e746572 10982 00012c50 72757074 10982 00012c54 20283078 10982 00012c58 25782920 10982 00012c5c 2d206578 10982 00012c60 6974696e 10982 00012c64 67210a00 10983 00012c68 .align 2 10984 00012c68 LC13_LF8: 10985 00012c68 41626f75 .ascii "About to return from dointerrupt.\n\000" 10985 00012c6c 7420746f 10985 00012c70 20726574 10985 00012c74 75726e20 10985 00012c78 66726f6d 10985 00012c7c 20646f69 10985 00012c80 6e746572 10985 00012c84 72757074 10985 00012c88 2e0a00 10986 00012c8b .text 10987 00009a6c .align 2 10988 00009a6c .proc _dointerrupt 10989 00009a6c .global _dointerrupt 10990 00009a6c _dointerrupt: 10991 ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. 10992 00009a6c afbefffc sw -4(r29),r30; push fp 10993 00009a70 001df020 add r30,r0,r29; fp = sp 10994 00009a74 afbffff8 sw -8(r29),r31; push ret addr 10995 00009a78 2fbd0058 subui r29,r29,#88; alloc local storage 10996 00009a7c afa20000 sw 0(r29),r2 10997 00009a80 afa30004 sw 4(r29),r3 10998 00009a84 afa40008 sw 8(r29),r4 10999 00009a88 afa5000c sw 12(r29),r5 11000 00009a8c afa60010 sw 16(r29),r6 11001 00009a90 afa70014 sw 20(r29),r7 11002 00009a94 8fc20000 lw r2,(r30) 11003 00009a98 8fc60004 lw r6,4(r30) 11004 00009a9c 8fc50008 lw r5,8(r30) 11005 00009aa0 8fc3000c lw r3,12(r30) 11006 00009aa4 23bdfff8 addi r29,r29,#-8 11007 00009aa8 3c040000 lhi r4,((_debugstr)>>16)&0xffff 11008 00009aac 2484fd60 addui r4,r4,(_debugstr)&0xffff 11009 00009ab0 afa40000 sw (r29),r4 11010 00009ab4 20070074 addi r7,r0,#116 11011 00009ab8 afa70004 sw 4(r29),r7 11012 00009abc 0fffa374 jal _dindex 11013 00009ac0 54000000 nop; not filled. 11014 00009ac4 23bd0008 addi r29,r29,#8 11015 00009ac8 64210000 snei r1,r1,#0 11016 00009acc 1420002c bnez r1,L123_LF8 11017 00009ad0 54000000 nop; not filled. 11018 00009ad4 23bdfff8 addi r29,r29,#-8 11019 00009ad8 afa40000 sw (r29),r4 11020 00009adc 2007002b addi r7,r0,#43 11021 00009ae0 afa70004 sw 4(r29),r7 11022 00009ae4 0fffa34c jal _dindex 11023 00009ae8 54000000 nop; not filled. 11024 00009aec 23bd0008 addi r29,r29,#8 11025 00009af0 64210000 snei r1,r1,#0 11026 00009af4 10200030 beqz r1,L122_LF8 11027 00009af8 54000000 nop; not filled. 11028 00009afc L123_LF8: 11029 00009afc 23bdffe8 addi r29,r29,#-24 11030 00009b00 3c070001 lhi r7,((LC1_LF8)>>16)&0xffff 11031 00009b04 24e72aa0 addui r7,r7,(LC1_LF8)&0xffff 11032 00009b08 afa70000 sw (r29),r7 11033 00009b0c afa20004 sw 4(r29),r2 11034 00009b10 afa60008 sw 8(r29),r6 11035 00009b14 afa5000c sw 12(r29),r5 11036 00009b18 afa30010 sw 16(r29),r3 11037 00009b1c 0c0014cc jal _printf 11038 00009b20 54000000 nop; not filled. 11039 00009b24 23bd0018 addi r29,r29,#24 11040 00009b28 L122_LF8: 11041 00009b28 3c070800 lhi r7,#2048 11042 00009b2c 24e70000 addui r7,r7,#0 11043 00009b30 00470824 and r1,r2,r7 11044 00009b34 64210000 snei r1,r1,#0 11045 00009b38 10200924 beqz r1,L124_LF8 11046 00009b3c 54000000 nop; not filled. 11047 00009b40 3c07f7ff lhi r7,#-2049 11048 00009b44 24e7ffff addui r7,r7,#65535 11049 00009b48 00471024 and r2,r2,r7 11050 00009b4c 60410400 seqi r1,r2,#1024 11051 00009b50 14200110 bnez r1,L126_LF8 11052 00009b54 54000000 nop; not filled. 11053 00009b58 6c410400 sgtui r1,r2,#1024 11054 00009b5c 14200074 bnez r1,L177_LF8 11055 00009b60 54000000 nop; not filled. 11056 00009b64 60410212 seqi r1,r2,#530 11057 00009b68 14200638 bnez r1,L158_LF8 11058 00009b6c 54000000 nop; not filled. 11059 00009b70 6c410212 sgtui r1,r2,#530 11060 00009b74 14200030 bnez r1,L178_LF8 11061 00009b78 54000000 nop; not filled. 11062 00009b7c 60410210 seqi r1,r2,#528 11063 00009b80 1420050c bnez r1,L149_LF8 11064 00009b84 54000000 nop; not filled. 11065 00009b88 6c410210 sgtui r1,r2,#528 11066 00009b8c 1420055c bnez r1,L152_LF8 11067 00009b90 54000000 nop; not filled. 11068 00009b94 60410201 seqi r1,r2,#513 11069 00009b98 102008b0 beqz r1,L175_LF8 11070 00009b9c 54000000 nop; not filled. 11071 00009ba0 080002dc j L138_LF8 11072 00009ba4 54000000 nop; not filled. 11073 00009ba8 L178_LF8: 11074 00009ba8 60410214 seqi r1,r2,#532 11075 00009bac 14200484 bnez r1,L146_LF8 11076 00009bb0 54000000 nop; not filled. 11077 00009bb4 68410214 sltui r1,r2,#532 11078 00009bb8 14200358 bnez r1,L141_LF8 11079 00009bbc 54000000 nop; not filled. 11080 00009bc0 60410300 seqi r1,r2,#768 11081 00009bc4 10200884 beqz r1,L175_LF8 11082 00009bc8 54000000 nop; not filled. 11083 00009bcc 08000100 j L129_LF8 11084 00009bd0 54000000 nop; not filled. 11085 00009bd4 L177_LF8: 11086 00009bd4 60410432 seqi r1,r2,#1074 11087 00009bd8 14200658 bnez r1,L162_LF8 11088 00009bdc 54000000 nop; not filled. 11089 00009be0 6c410432 sgtui r1,r2,#1074 11090 00009be4 14200030 bnez r1,L179_LF8 11091 00009be8 54000000 nop; not filled. 11092 00009bec 60410430 seqi r1,r2,#1072 11093 00009bf0 14200174 bnez r1,L132_LF8 11094 00009bf4 54000000 nop; not filled. 11095 00009bf8 6c410430 sgtui r1,r2,#1072 11096 00009bfc 14200600 bnez r1,L161_LF8 11097 00009c00 54000000 nop; not filled. 11098 00009c04 60410410 seqi r1,r2,#1040 11099 00009c08 10200840 beqz r1,L175_LF8 11100 00009c0c 54000000 nop; not filled. 11101 00009c10 080001cc j L135_LF8 11102 00009c14 54000000 nop; not filled. 11103 00009c18 L179_LF8: 11104 00009c18 60410451 seqi r1,r2,#1105 11105 00009c1c 142006dc bnez r1,L167_LF8 11106 00009c20 54000000 nop; not filled. 11107 00009c24 6c410451 sgtui r1,r2,#1105 11108 00009c28 14200018 bnez r1,L180_LF8 11109 00009c2c 54000000 nop; not filled. 11110 00009c30 60410450 seqi r1,r2,#1104 11111 00009c34 10200814 beqz r1,L175_LF8 11112 00009c38 54000000 nop; not filled. 11113 00009c3c 08000614 j L163_LF8 11114 00009c40 54000000 nop; not filled. 11115 00009c44 L180_LF8: 11116 00009c44 60410452 seqi r1,r2,#1106 11117 00009c48 14200758 bnez r1,L171_LF8 11118 00009c4c 54000000 nop; not filled. 11119 00009c50 60410580 seqi r1,r2,#1408 11120 00009c54 102007f4 beqz r1,L175_LF8 11121 00009c58 54000000 nop; not filled. 11122 00009c5c 080004e8 j L155_LF8 11123 00009c60 54000000 nop; not filled. 11124 00009c64 L126_LF8: 11125 00009c64 23bdfff8 addi r29,r29,#-8 11126 00009c68 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11127 00009c6c 2442fd60 addui r2,r2,(_debugstr)&0xffff 11128 00009c70 afa20000 sw (r29),r2 11129 00009c74 20070074 addi r7,r0,#116 11130 00009c78 afa70004 sw 4(r29),r7 11131 00009c7c 0fffa1b4 jal _dindex 11132 00009c80 54000000 nop; not filled. 11133 00009c84 23bd0008 addi r29,r29,#8 11134 00009c88 64210000 snei r1,r1,#0 11135 00009c8c 1420002c bnez r1,L128_LF8 11136 00009c90 54000000 nop; not filled. 11137 00009c94 23bdfff8 addi r29,r29,#-8 11138 00009c98 afa20000 sw (r29),r2 11139 00009c9c 2007002b addi r7,r0,#43 11140 00009ca0 afa70004 sw 4(r29),r7 11141 00009ca4 0fffa18c jal _dindex 11142 00009ca8 54000000 nop; not filled. 11143 00009cac 23bd0008 addi r29,r29,#8 11144 00009cb0 64210000 snei r1,r1,#0 11145 00009cb4 10200894 beqz r1,L184_LF8 11146 00009cb8 54000000 nop; not filled. 11147 00009cbc L128_LF8: 11148 00009cbc 23bdfff8 addi r29,r29,#-8 11149 00009cc0 3c070001 lhi r7,((LC2_LF8)>>16)&0xffff 11150 00009cc4 24e72ad8 addui r7,r7,(LC2_LF8)&0xffff 11151 00009cc8 08000870 j L206_LF8 11152 00009ccc 54000000 nop; not filled. 11153 00009cd0 L129_LF8: 11154 00009cd0 23bdfff8 addi r29,r29,#-8 11155 00009cd4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11156 00009cd8 2442fd60 addui r2,r2,(_debugstr)&0xffff 11157 00009cdc afa20000 sw (r29),r2 11158 00009ce0 20070074 addi r7,r0,#116 11159 00009ce4 afa70004 sw 4(r29),r7 11160 00009ce8 0fffa148 jal _dindex 11161 00009cec 54000000 nop; not filled. 11162 00009cf0 23bd0008 addi r29,r29,#8 11163 00009cf4 64210000 snei r1,r1,#0 11164 00009cf8 1420002c bnez r1,L131_LF8 11165 00009cfc 54000000 nop; not filled. 11166 00009d00 23bdfff8 addi r29,r29,#-8 11167 00009d04 afa20000 sw (r29),r2 11168 00009d08 2007002b addi r7,r0,#43 11169 00009d0c afa70004 sw 4(r29),r7 11170 00009d10 0fffa120 jal _dindex 11171 00009d14 54000000 nop; not filled. 11172 00009d18 23bd0008 addi r29,r29,#8 11173 00009d1c 64210000 snei r1,r1,#0 11174 00009d20 10200020 beqz r1,L130_LF8 11175 00009d24 54000000 nop; not filled. 11176 00009d28 L131_LF8: 11177 00009d28 23bdfff8 addi r29,r29,#-8 11178 00009d2c 3c070001 lhi r7,((LC3_LF8)>>16)&0xffff 11179 00009d30 24e72af4 addui r7,r7,(LC3_LF8)&0xffff 11180 00009d34 afa70000 sw (r29),r7 11181 00009d38 0c0012b0 jal _printf 11182 00009d3c 54000000 nop; not filled. 11183 00009d40 23bd0008 addi r29,r29,#8 11184 00009d44 L130_LF8: 11185 00009d44 23bdfff8 addi r29,r29,#-8 11186 00009d48 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11187 00009d4c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11188 00009d50 8c210000 lw r1,(r1) 11189 00009d54 afa10000 sw (r29),r1 11190 00009d58 0fffdd28 jal _ProcessKill 11191 00009d5c 54000000 nop; not filled. 11192 00009d60 080008fc j L201_LF8 11193 00009d64 54000000 nop; not filled. 11194 00009d68 L132_LF8: 11195 00009d68 23bdfff8 addi r29,r29,#-8 11196 00009d6c 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11197 00009d70 2442fd60 addui r2,r2,(_debugstr)&0xffff 11198 00009d74 afa20000 sw (r29),r2 11199 00009d78 20070074 addi r7,r0,#116 11200 00009d7c afa70004 sw 4(r29),r7 11201 00009d80 0fffa0b0 jal _dindex 11202 00009d84 54000000 nop; not filled. 11203 00009d88 23bd0008 addi r29,r29,#8 11204 00009d8c 64210000 snei r1,r1,#0 11205 00009d90 1420002c bnez r1,L134_LF8 11206 00009d94 54000000 nop; not filled. 11207 00009d98 23bdfff8 addi r29,r29,#-8 11208 00009d9c afa20000 sw (r29),r2 11209 00009da0 2007002b addi r7,r0,#43 11210 00009da4 afa70004 sw 4(r29),r7 11211 00009da8 0fffa088 jal _dindex 11212 00009dac 54000000 nop; not filled. 11213 00009db0 23bd0008 addi r29,r29,#8 11214 00009db4 64210000 snei r1,r1,#0 11215 00009db8 102008a8 beqz r1,L181_LF8 11216 00009dbc 54000000 nop; not filled. 11217 00009dc0 L134_LF8: 11218 00009dc0 23bdfff8 addi r29,r29,#-8 11219 00009dc4 3c070001 lhi r7,((LC4_LF8)>>16)&0xffff 11220 00009dc8 24e72b08 addui r7,r7,(LC4_LF8)&0xffff 11221 00009dcc afa70000 sw (r29),r7 11222 00009dd0 0c001218 jal _printf 11223 00009dd4 54000000 nop; not filled. 11224 00009dd8 08000884 j L201_LF8 11225 00009ddc 54000000 nop; not filled. 11226 00009de0 L135_LF8: 11227 00009de0 23bdfff8 addi r29,r29,#-8 11228 00009de4 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11229 00009de8 2442fd60 addui r2,r2,(_debugstr)&0xffff 11230 00009dec afa20000 sw (r29),r2 11231 00009df0 20070074 addi r7,r0,#116 11232 00009df4 afa70004 sw 4(r29),r7 11233 00009df8 0fffa038 jal _dindex 11234 00009dfc 54000000 nop; not filled. 11235 00009e00 23bd0008 addi r29,r29,#8 11236 00009e04 64210000 snei r1,r1,#0 11237 00009e08 1420002c bnez r1,L137_LF8 11238 00009e0c 54000000 nop; not filled. 11239 00009e10 23bdfff8 addi r29,r29,#-8 11240 00009e14 afa20000 sw (r29),r2 11241 00009e18 2007002b addi r7,r0,#43 11242 00009e1c afa70004 sw 4(r29),r7 11243 00009e20 0fffa010 jal _dindex 11244 00009e24 54000000 nop; not filled. 11245 00009e28 23bd0008 addi r29,r29,#8 11246 00009e2c 64210000 snei r1,r1,#0 11247 00009e30 10200020 beqz r1,L136_LF8 11248 00009e34 54000000 nop; not filled. 11249 00009e38 L137_LF8: 11250 00009e38 23bdfff8 addi r29,r29,#-8 11251 00009e3c 3c070001 lhi r7,((LC5_LF8)>>16)&0xffff 11252 00009e40 24e72b1c addui r7,r7,(LC5_LF8)&0xffff 11253 00009e44 afa70000 sw (r29),r7 11254 00009e48 0c0011a0 jal _printf 11255 00009e4c 54000000 nop; not filled. 11256 00009e50 23bd0008 addi r29,r29,#8 11257 00009e54 L136_LF8: 11258 00009e54 23bdfff8 addi r29,r29,#-8 11259 00009e58 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11260 00009e5c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11261 00009e60 8c210000 lw r1,(r1) 11262 00009e64 afa10000 sw (r29),r1 11263 00009e68 0fffb174 jal _ProcessSuspend 11264 00009e6c 54000000 nop; not filled. 11265 00009e70 0fffacd8 jal _ProcessSchedule 11266 00009e74 54000000 nop; not filled. 11267 00009e78 080007e4 j L201_LF8 11268 00009e7c 54000000 nop; not filled. 11269 00009e80 L138_LF8: 11270 00009e80 23bdfff8 addi r29,r29,#-8 11271 00009e84 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11272 00009e88 2442fd60 addui r2,r2,(_debugstr)&0xffff 11273 00009e8c afa20000 sw (r29),r2 11274 00009e90 20070074 addi r7,r0,#116 11275 00009e94 afa70004 sw 4(r29),r7 11276 00009e98 0fff9f98 jal _dindex 11277 00009e9c 54000000 nop; not filled. 11278 00009ea0 23bd0008 addi r29,r29,#8 11279 00009ea4 64210000 snei r1,r1,#0 11280 00009ea8 1420002c bnez r1,L140_LF8 11281 00009eac 54000000 nop; not filled. 11282 00009eb0 23bdfff8 addi r29,r29,#-8 11283 00009eb4 afa20000 sw (r29),r2 11284 00009eb8 2007002b addi r7,r0,#43 11285 00009ebc afa70004 sw 4(r29),r7 11286 00009ec0 0fff9f70 jal _dindex 11287 00009ec4 54000000 nop; not filled. 11288 00009ec8 23bd0008 addi r29,r29,#8 11289 00009ecc 64210000 snei r1,r1,#0 11290 00009ed0 10200020 beqz r1,L139_LF8 11291 00009ed4 54000000 nop; not filled. 11292 00009ed8 L140_LF8: 11293 00009ed8 23bdfff8 addi r29,r29,#-8 11294 00009edc 3c070001 lhi r7,((LC6_LF8)>>16)&0xffff 11295 00009ee0 24e72b38 addui r7,r7,(LC6_LF8)&0xffff 11296 00009ee4 afa70000 sw (r29),r7 11297 00009ee8 0c001100 jal _printf 11298 00009eec 54000000 nop; not filled. 11299 00009ef0 23bd0008 addi r29,r29,#8 11300 00009ef4 L139_LF8: 11301 00009ef4 23bdfff8 addi r29,r29,#-8 11302 00009ef8 afa30000 sw (r29),r3 11303 00009efc 30a10040 andi r1,r5,#64 11304 00009f00 afa10004 sw 4(r29),r1 11305 00009f04 0ffff890 jal _TrapPrintfHandler_LF8 11306 00009f08 54000000 nop; not filled. 11307 00009f0c 08000750 j L201_LF8 11308 00009f10 54000000 nop; not filled. 11309 00009f14 L141_LF8: 11310 00009f14 30a10040 andi r1,r5,#64 11311 00009f18 64210000 snei r1,r1,#0 11312 00009f1c 1020001c beqz r1,L142_LF8 11313 00009f20 54000000 nop; not filled. 11314 00009f24 8c670000 lw r7,(r3) 11315 00009f28 afc7ffe8 sw -24(r30),r7 11316 00009f2c 8c630004 lw r3,4(r3) 11317 00009f30 afc3ffec sw -20(r30),r3 11318 00009f34 0800006c j L143_LF8 11319 00009f38 54000000 nop; not filled. 11320 00009f3c L142_LF8: 11321 00009f3c 23bdfff0 addi r29,r29,#-16 11322 00009f40 3c020000 lhi r2,((_currentPCB)>>16)&0xffff 11323 00009f44 2442fe28 addui r2,r2,(_currentPCB)&0xffff 11324 00009f48 8c470000 lw r7,(r2) 11325 00009f4c afa70000 sw (r29),r7 11326 00009f50 afa30004 sw 4(r29),r3 11327 00009f54 23c1ffe8 addi r1,r30,#-24 11328 00009f58 afa10008 sw 8(r29),r1 11329 00009f5c 20070008 addi r7,r0,#8 11330 00009f60 afa7000c sw 12(r29),r7 11331 00009f64 0fff961c jal _MemoryCopyUserToSystem 11332 00009f68 54000000 nop; not filled. 11333 00009f6c 8c420000 lw r2,(r2) 11334 00009f70 afa20000 sw (r29),r2 11335 00009f74 8fc1ffe8 lw r1,-24(r30) 11336 00009f78 afa10004 sw 4(r29),r1 11337 00009f7c 23c2ffc8 addi r2,r30,#-56 11338 00009f80 afa20008 sw 8(r29),r2 11339 00009f84 2007001f addi r7,r0,#31 11340 00009f88 afa7000c sw 12(r29),r7 11341 00009f8c 0fff95f4 jal _MemoryCopyUserToSystem 11342 00009f90 54000000 nop; not filled. 11343 00009f94 20070000 addi r7,r0,(#0x0)&0xff 11344 00009f98 a3c7ffe7 sb -25(r30),r7 11345 00009f9c afc2ffe8 sw -24(r30),r2 11346 00009fa0 23bd0010 addi r29,r29,#16 11347 00009fa4 L143_LF8: 11348 00009fa4 23bdfff8 addi r29,r29,#-8 11349 00009fa8 20070000 addi r7,r0,#0 11350 00009fac afa70000 sw (r29),r7 11351 00009fb0 0fff72d4 jal _SetIntrs 11352 00009fb4 54000000 nop; not filled. 11353 00009fb8 00011020 add r2,r0,r1 11354 00009fbc 23bd0008 addi r29,r29,#8 11355 00009fc0 23bdfff8 addi r29,r29,#-8 11356 00009fc4 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11357 00009fc8 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11358 00009fcc 8c210000 lw r1,(r1) 11359 00009fd0 afa10000 sw (r29),r1 11360 00009fd4 8fc1ffec lw r1,-20(r30) 11361 00009fd8 3c070001 lhi r7,#1 11362 00009fdc 24e70000 addui r7,r7,#0 11363 00009fe0 00270820 add r1,r1,r7 11364 00009fe4 afa10004 sw 4(r29),r1 11365 00009fe8 0fffab2c jal _ProcessSetResult 11366 00009fec 54000000 nop; not filled. 11367 00009ff0 23bdfff8 addi r29,r29,#-8 11368 00009ff4 3c070001 lhi r7,((LC7_LF8)>>16)&0xffff 11369 00009ff8 24e72b4c addui r7,r7,(LC7_LF8)&0xffff 11370 00009ffc afa70000 sw (r29),r7 11371 0000a000 8fc1ffe8 lw r1,-24(r30) 11372 0000a004 afa10004 sw 4(r29),r1 11373 0000a008 8fc7ffec lw r7,-20(r30) 11374 0000a00c afa70008 sw 8(r29),r7 11375 0000a010 0c000fd8 jal _printf 11376 0000a014 54000000 nop; not filled. 11377 0000a018 23bd0010 addi r29,r29,#16 11378 0000a01c 23bdfff8 addi r29,r29,#-8 11379 0000a020 afa20000 sw (r29),r2 11380 0000a024 0fff7260 jal _SetIntrs 11381 0000a028 54000000 nop; not filled. 11382 0000a02c 08000630 j L201_LF8 11383 0000a030 54000000 nop; not filled. 11384 0000a034 L146_LF8: 11385 0000a034 23bdfff8 addi r29,r29,#-8 11386 0000a038 20070000 addi r7,r0,#0 11387 0000a03c afa70000 sw (r29),r7 11388 0000a040 0fff7244 jal _SetIntrs 11389 0000a044 54000000 nop; not filled. 11390 0000a048 00011020 add r2,r0,r1 11391 0000a04c 23bd0008 addi r29,r29,#8 11392 0000a050 23bdfff8 addi r29,r29,#-8 11393 0000a054 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11394 0000a058 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11395 0000a05c 8c210000 lw r1,(r1) 11396 0000a060 afa10000 sw (r29),r1 11397 0000a064 2007ffff addi r7,r0,#-1 11398 0000a068 afa70004 sw 4(r29),r7 11399 0000a06c 0fffaaa8 jal _ProcessSetResult 11400 0000a070 54000000 nop; not filled. 11401 0000a074 23bd0008 addi r29,r29,#8 11402 0000a078 23bdfff8 addi r29,r29,#-8 11403 0000a07c afa20000 sw (r29),r2 11404 0000a080 0fff7204 jal _SetIntrs 11405 0000a084 54000000 nop; not filled. 11406 0000a088 080005d4 j L201_LF8 11407 0000a08c 54000000 nop; not filled. 11408 0000a090 L149_LF8: 11409 0000a090 23bdfff8 addi r29,r29,#-8 11410 0000a094 20070000 addi r7,r0,#0 11411 0000a098 afa70000 sw (r29),r7 11412 0000a09c 0fff71e8 jal _SetIntrs 11413 0000a0a0 54000000 nop; not filled. 11414 0000a0a4 00011020 add r2,r0,r1 11415 0000a0a8 23bd0008 addi r29,r29,#8 11416 0000a0ac 23bdfff8 addi r29,r29,#-8 11417 0000a0b0 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11418 0000a0b4 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11419 0000a0b8 8c210000 lw r1,(r1) 11420 0000a0bc afa10000 sw (r29),r1 11421 0000a0c0 2007ffff addi r7,r0,#-1 11422 0000a0c4 afa70004 sw 4(r29),r7 11423 0000a0c8 0fffaa4c jal _ProcessSetResult 11424 0000a0cc 54000000 nop; not filled. 11425 0000a0d0 23bd0008 addi r29,r29,#8 11426 0000a0d4 23bdfff8 addi r29,r29,#-8 11427 0000a0d8 afa20000 sw (r29),r2 11428 0000a0dc 0fff71a8 jal _SetIntrs 11429 0000a0e0 54000000 nop; not filled. 11430 0000a0e4 08000578 j L201_LF8 11431 0000a0e8 54000000 nop; not filled. 11432 0000a0ec L152_LF8: 11433 0000a0ec 23bdfff8 addi r29,r29,#-8 11434 0000a0f0 20070000 addi r7,r0,#0 11435 0000a0f4 afa70000 sw (r29),r7 11436 0000a0f8 0fff718c jal _SetIntrs 11437 0000a0fc 54000000 nop; not filled. 11438 0000a100 00011020 add r2,r0,r1 11439 0000a104 23bd0008 addi r29,r29,#8 11440 0000a108 23bdfff8 addi r29,r29,#-8 11441 0000a10c 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11442 0000a110 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11443 0000a114 8c210000 lw r1,(r1) 11444 0000a118 afa10000 sw (r29),r1 11445 0000a11c 2007ffff addi r7,r0,#-1 11446 0000a120 afa70004 sw 4(r29),r7 11447 0000a124 0fffa9f0 jal _ProcessSetResult 11448 0000a128 54000000 nop; not filled. 11449 0000a12c 23bd0008 addi r29,r29,#8 11450 0000a130 23bdfff8 addi r29,r29,#-8 11451 0000a134 afa20000 sw (r29),r2 11452 0000a138 0fff714c jal _SetIntrs 11453 0000a13c 54000000 nop; not filled. 11454 0000a140 0800051c j L201_LF8 11455 0000a144 54000000 nop; not filled. 11456 0000a148 L155_LF8: 11457 0000a148 23bdfff8 addi r29,r29,#-8 11458 0000a14c 20070000 addi r7,r0,#0 11459 0000a150 afa70000 sw (r29),r7 11460 0000a154 0fff7130 jal _SetIntrs 11461 0000a158 54000000 nop; not filled. 11462 0000a15c 00011020 add r2,r0,r1 11463 0000a160 23bd0008 addi r29,r29,#8 11464 0000a164 23bdfff8 addi r29,r29,#-8 11465 0000a168 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11466 0000a16c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11467 0000a170 8c210000 lw r1,(r1) 11468 0000a174 afa10000 sw (r29),r1 11469 0000a178 2007ffff addi r7,r0,#-1 11470 0000a17c afa70004 sw 4(r29),r7 11471 0000a180 0fffa994 jal _ProcessSetResult 11472 0000a184 54000000 nop; not filled. 11473 0000a188 23bd0008 addi r29,r29,#8 11474 0000a18c 23bdfff8 addi r29,r29,#-8 11475 0000a190 afa20000 sw (r29),r2 11476 0000a194 0fff70f0 jal _SetIntrs 11477 0000a198 54000000 nop; not filled. 11478 0000a19c 080004c0 j L201_LF8 11479 0000a1a0 54000000 nop; not filled. 11480 0000a1a4 L158_LF8: 11481 0000a1a4 23bdfff8 addi r29,r29,#-8 11482 0000a1a8 20070000 addi r7,r0,#0 11483 0000a1ac afa70000 sw (r29),r7 11484 0000a1b0 0fff70d4 jal _SetIntrs 11485 0000a1b4 54000000 nop; not filled. 11486 0000a1b8 00011020 add r2,r0,r1 11487 0000a1bc 23bd0008 addi r29,r29,#8 11488 0000a1c0 23bdfff8 addi r29,r29,#-8 11489 0000a1c4 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11490 0000a1c8 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11491 0000a1cc 8c210000 lw r1,(r1) 11492 0000a1d0 afa10000 sw (r29),r1 11493 0000a1d4 2007ffff addi r7,r0,#-1 11494 0000a1d8 afa70004 sw 4(r29),r7 11495 0000a1dc 0fffa938 jal _ProcessSetResult 11496 0000a1e0 54000000 nop; not filled. 11497 0000a1e4 23bd0008 addi r29,r29,#8 11498 0000a1e8 23bdfff8 addi r29,r29,#-8 11499 0000a1ec afa20000 sw (r29),r2 11500 0000a1f0 0fff7094 jal _SetIntrs 11501 0000a1f4 54000000 nop; not filled. 11502 0000a1f8 08000464 j L201_LF8 11503 0000a1fc 54000000 nop; not filled. 11504 0000a200 L161_LF8: 11505 0000a200 0fffd6c0 jal _GetCurrentPid 11506 0000a204 54000000 nop; not filled. 11507 0000a208 00011020 add r2,r0,r1 11508 0000a20c 23bdfff8 addi r29,r29,#-8 11509 0000a210 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11510 0000a214 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11511 0000a218 8c210000 lw r1,(r1) 11512 0000a21c afa10000 sw (r29),r1 11513 0000a220 afa20004 sw 4(r29),r2 11514 0000a224 0fffa8f0 jal _ProcessSetResult 11515 0000a228 54000000 nop; not filled. 11516 0000a22c 08000430 j L201_LF8 11517 0000a230 54000000 nop; not filled. 11518 0000a234 L162_LF8: 11519 0000a234 23bdfff8 addi r29,r29,#-8 11520 0000a238 afa30000 sw (r29),r3 11521 0000a23c 30a10040 andi r1,r5,#64 11522 0000a240 afa10004 sw 4(r29),r1 11523 0000a244 0ffff21c jal _TrapProcessCreateHandler_LF8 11524 0000a248 54000000 nop; not filled. 11525 0000a24c 08000410 j L201_LF8 11526 0000a250 54000000 nop; not filled. 11527 0000a254 L163_LF8: 11528 0000a254 30a10040 andi r1,r5,#64 11529 0000a258 64210000 snei r1,r1,#0 11530 0000a25c 1420003c bnez r1,L165_LF8 11531 0000a260 54000000 nop; not filled. 11532 0000a264 23bdfff0 addi r29,r29,#-16 11533 0000a268 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11534 0000a26c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11535 0000a270 8c210000 lw r1,(r1) 11536 0000a274 afa10000 sw (r29),r1 11537 0000a278 afa30004 sw 4(r29),r3 11538 0000a27c 23c1ffc4 addi r1,r30,#-60 11539 0000a280 afa10008 sw 8(r29),r1 11540 0000a284 20070004 addi r7,r0,#4 11541 0000a288 afa7000c sw 12(r29),r7 11542 0000a28c 0fff92f4 jal _MemoryCopyUserToSystem 11543 0000a290 54000000 nop; not filled. 11544 0000a294 08000024 j L202_LF8 11545 0000a298 54000000 nop; not filled. 11546 0000a29c L165_LF8: 11547 0000a29c 23bdfff0 addi r29,r29,#-16 11548 0000a2a0 afa30000 sw (r29),r3 11549 0000a2a4 23c1ffc4 addi r1,r30,#-60 11550 0000a2a8 afa10004 sw 4(r29),r1 11551 0000a2ac 20070004 addi r7,r0,#4 11552 0000a2b0 afa70008 sw 8(r29),r7 11553 0000a2b4 0fff9f0c jal _bcopy 11554 0000a2b8 54000000 nop; not filled. 11555 0000a2bc L202_LF8: 11556 0000a2bc 23bd0010 addi r29,r29,#16 11557 0000a2c0 23bdfff8 addi r29,r29,#-8 11558 0000a2c4 8fc7ffc4 lw r7,-60(r30) 11559 0000a2c8 afa70000 sw (r29),r7 11560 0000a2cc 0fffe5ec jal _SemCreate 11561 0000a2d0 54000000 nop; not filled. 11562 0000a2d4 00011020 add r2,r0,r1 11563 0000a2d8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11564 0000a2dc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11565 0000a2e0 8c210000 lw r1,(r1) 11566 0000a2e4 afa10000 sw (r29),r1 11567 0000a2e8 afa20004 sw 4(r29),r2 11568 0000a2ec 0fffa828 jal _ProcessSetResult 11569 0000a2f0 54000000 nop; not filled. 11570 0000a2f4 08000368 j L201_LF8 11571 0000a2f8 54000000 nop; not filled. 11572 0000a2fc L167_LF8: 11573 0000a2fc 30a10040 andi r1,r5,#64 11574 0000a300 64210000 snei r1,r1,#0 11575 0000a304 1420003c bnez r1,L169_LF8 11576 0000a308 54000000 nop; not filled. 11577 0000a30c 23bdfff0 addi r29,r29,#-16 11578 0000a310 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11579 0000a314 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11580 0000a318 8c210000 lw r1,(r1) 11581 0000a31c afa10000 sw (r29),r1 11582 0000a320 afa30004 sw 4(r29),r3 11583 0000a324 23c1ffc4 addi r1,r30,#-60 11584 0000a328 afa10008 sw 8(r29),r1 11585 0000a32c 20070004 addi r7,r0,#4 11586 0000a330 afa7000c sw 12(r29),r7 11587 0000a334 0fff924c jal _MemoryCopyUserToSystem 11588 0000a338 54000000 nop; not filled. 11589 0000a33c 08000024 j L203_LF8 11590 0000a340 54000000 nop; not filled. 11591 0000a344 L169_LF8: 11592 0000a344 23bdfff0 addi r29,r29,#-16 11593 0000a348 afa30000 sw (r29),r3 11594 0000a34c 23c1ffc4 addi r1,r30,#-60 11595 0000a350 afa10004 sw 4(r29),r1 11596 0000a354 20070004 addi r7,r0,#4 11597 0000a358 afa70008 sw 8(r29),r7 11598 0000a35c 0fff9e64 jal _bcopy 11599 0000a360 54000000 nop; not filled. 11600 0000a364 L203_LF8: 11601 0000a364 23bd0010 addi r29,r29,#16 11602 0000a368 23bdfff8 addi r29,r29,#-8 11603 0000a36c 8fc7ffc4 lw r7,-60(r30) 11604 0000a370 afa70000 sw (r29),r7 11605 0000a374 0fffe8c8 jal _SemHandleWait 11606 0000a378 54000000 nop; not filled. 11607 0000a37c 00011020 add r2,r0,r1 11608 0000a380 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11609 0000a384 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11610 0000a388 8c210000 lw r1,(r1) 11611 0000a38c afa10000 sw (r29),r1 11612 0000a390 afa20004 sw 4(r29),r2 11613 0000a394 0fffa780 jal _ProcessSetResult 11614 0000a398 54000000 nop; not filled. 11615 0000a39c 080002c0 j L201_LF8 11616 0000a3a0 54000000 nop; not filled. 11617 0000a3a4 L171_LF8: 11618 0000a3a4 30a10040 andi r1,r5,#64 11619 0000a3a8 64210000 snei r1,r1,#0 11620 0000a3ac 1420003c bnez r1,L173_LF8 11621 0000a3b0 54000000 nop; not filled. 11622 0000a3b4 23bdfff0 addi r29,r29,#-16 11623 0000a3b8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11624 0000a3bc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11625 0000a3c0 8c210000 lw r1,(r1) 11626 0000a3c4 afa10000 sw (r29),r1 11627 0000a3c8 afa30004 sw 4(r29),r3 11628 0000a3cc 23c1ffc4 addi r1,r30,#-60 11629 0000a3d0 afa10008 sw 8(r29),r1 11630 0000a3d4 20070004 addi r7,r0,#4 11631 0000a3d8 afa7000c sw 12(r29),r7 11632 0000a3dc 0fff91a4 jal _MemoryCopyUserToSystem 11633 0000a3e0 54000000 nop; not filled. 11634 0000a3e4 08000024 j L204_LF8 11635 0000a3e8 54000000 nop; not filled. 11636 0000a3ec L173_LF8: 11637 0000a3ec 23bdfff0 addi r29,r29,#-16 11638 0000a3f0 afa30000 sw (r29),r3 11639 0000a3f4 23c1ffc4 addi r1,r30,#-60 11640 0000a3f8 afa10004 sw 4(r29),r1 11641 0000a3fc 20070004 addi r7,r0,#4 11642 0000a400 afa70008 sw 8(r29),r7 11643 0000a404 0fff9dbc jal _bcopy 11644 0000a408 54000000 nop; not filled. 11645 0000a40c L204_LF8: 11646 0000a40c 23bd0010 addi r29,r29,#16 11647 0000a410 23bdfff8 addi r29,r29,#-8 11648 0000a414 8fc7ffc4 lw r7,-60(r30) 11649 0000a418 afa70000 sw (r29),r7 11650 0000a41c 0fffeaac jal _SemHandleSignal 11651 0000a420 54000000 nop; not filled. 11652 0000a424 00011020 add r2,r0,r1 11653 0000a428 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11654 0000a42c 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11655 0000a430 8c210000 lw r1,(r1) 11656 0000a434 afa10000 sw (r29),r1 11657 0000a438 afa20004 sw 4(r29),r2 11658 0000a43c 0fffa6d8 jal _ProcessSetResult 11659 0000a440 54000000 nop; not filled. 11660 0000a444 08000218 j L201_LF8 11661 0000a448 54000000 nop; not filled. 11662 0000a44c L175_LF8: 11663 0000a44c 23bdfff8 addi r29,r29,#-8 11664 0000a450 3c070001 lhi r7,((LC8_LF8)>>16)&0xffff 11665 0000a454 24e72b78 addui r7,r7,(LC8_LF8)&0xffff 11666 0000a458 080001ec j L205_LF8 11667 0000a45c 54000000 nop; not filled. 11668 0000a460 L124_LF8: 11669 0000a460 60410003 seqi r1,r2,#3 11670 0000a464 14200148 bnez r1,L191_LF8 11671 0000a468 54000000 nop; not filled. 11672 0000a46c 6c410003 sgtui r1,r2,#3 11673 0000a470 14200024 bnez r1,L197_LF8 11674 0000a474 54000000 nop; not filled. 11675 0000a478 60410001 seqi r1,r2,#1 11676 0000a47c 14200178 bnez r1,L193_LF8 11677 0000a480 54000000 nop; not filled. 11678 0000a484 60410002 seqi r1,r2,#2 11679 0000a488 102001b0 beqz r1,L195_LF8 11680 0000a48c 54000000 nop; not filled. 11681 0000a490 08000140 j L192_LF8 11682 0000a494 54000000 nop; not filled. 11683 0000a498 L197_LF8: 11684 0000a498 60410040 seqi r1,r2,#64 11685 0000a49c 14200038 bnez r1,L183_LF8 11686 0000a4a0 54000000 nop; not filled. 11687 0000a4a4 6c410040 sgtui r1,r2,#64 11688 0000a4a8 14200018 bnez r1,L198_LF8 11689 0000a4ac 54000000 nop; not filled. 11690 0000a4b0 60410020 seqi r1,r2,#32 11691 0000a4b4 10200184 beqz r1,L195_LF8 11692 0000a4b8 54000000 nop; not filled. 11693 0000a4bc 0800016c j L194_LF8 11694 0000a4c0 54000000 nop; not filled. 11695 0000a4c4 L198_LF8: 11696 0000a4c4 60410048 seqi r1,r2,#72 11697 0000a4c8 10200170 beqz r1,L195_LF8 11698 0000a4cc 54000000 nop; not filled. 11699 0000a4d0 08000088 j L186_LF8 11700 0000a4d4 54000000 nop; not filled. 11701 0000a4d8 L183_LF8: 11702 0000a4d8 23bdfff8 addi r29,r29,#-8 11703 0000a4dc 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11704 0000a4e0 2442fd60 addui r2,r2,(_debugstr)&0xffff 11705 0000a4e4 afa20000 sw (r29),r2 11706 0000a4e8 20070074 addi r7,r0,#116 11707 0000a4ec afa70004 sw 4(r29),r7 11708 0000a4f0 0fff9940 jal _dindex 11709 0000a4f4 54000000 nop; not filled. 11710 0000a4f8 23bd0008 addi r29,r29,#8 11711 0000a4fc 64210000 snei r1,r1,#0 11712 0000a500 1420002c bnez r1,L185_LF8 11713 0000a504 54000000 nop; not filled. 11714 0000a508 23bdfff8 addi r29,r29,#-8 11715 0000a50c afa20000 sw (r29),r2 11716 0000a510 2007002b addi r7,r0,#43 11717 0000a514 afa70004 sw 4(r29),r7 11718 0000a518 0fff9918 jal _dindex 11719 0000a51c 54000000 nop; not filled. 11720 0000a520 23bd0008 addi r29,r29,#8 11721 0000a524 64210000 snei r1,r1,#0 11722 0000a528 10200020 beqz r1,L184_LF8 11723 0000a52c 54000000 nop; not filled. 11724 0000a530 L185_LF8: 11725 0000a530 23bdfff8 addi r29,r29,#-8 11726 0000a534 3c070001 lhi r7,((LC9_LF8)>>16)&0xffff 11727 0000a538 24e72ba4 addui r7,r7,(LC9_LF8)&0xffff 11728 0000a53c L206_LF8: 11729 0000a53c afa70000 sw (r29),r7 11730 0000a540 0c000aa8 jal _printf 11731 0000a544 54000000 nop; not filled. 11732 0000a548 23bd0008 addi r29,r29,#8 11733 0000a54c L184_LF8: 11734 0000a54c 0fffa5fc jal _ProcessSchedule 11735 0000a550 54000000 nop; not filled. 11736 0000a554 0800010c j L181_LF8 11737 0000a558 54000000 nop; not filled. 11738 0000a55c L186_LF8: 11739 0000a55c 3c04fff0 lhi r4,#-16 11740 0000a560 248401a0 addui r4,r4,#416 11741 0000a564 3c03fff0 lhi r3,#-16 11742 0000a568 24630180 addui r3,r3,#384 11743 0000a56c L187_LF8: 11744 0000a56c 8c820000 lw r2,(r4) 11745 0000a570 8c610000 lw r1,(r3) 11746 0000a574 23bdfff0 addi r29,r29,#-16 11747 0000a578 3c070001 lhi r7,((LC10_LF8)>>16)&0xffff 11748 0000a57c 24e72bbc addui r7,r7,(LC10_LF8)&0xffff 11749 0000a580 afa70000 sw (r29),r7 11750 0000a584 afa10004 sw 4(r29),r1 11751 0000a588 afa10008 sw 8(r29),r1 11752 0000a58c afa2000c sw 12(r29),r2 11753 0000a590 0c000a58 jal _printf 11754 0000a594 54000000 nop; not filled. 11755 0000a598 23bd0010 addi r29,r29,#16 11756 0000a59c 6c410001 sgti r1,r2,#1 11757 0000a5a0 102000c0 beqz r1,L181_LF8 11758 0000a5a4 54000000 nop; not filled. 11759 0000a5a8 0bffffc0 j L187_LF8 11760 0000a5ac 54000000 nop; not filled. 11761 0000a5b0 L191_LF8: 11762 0000a5b0 23bdfff8 addi r29,r29,#-8 11763 0000a5b4 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11764 0000a5b8 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11765 0000a5bc 8c210000 lw r1,(r1) 11766 0000a5c0 afa10000 sw (r29),r1 11767 0000a5c4 0fffd4bc jal _ProcessKill 11768 0000a5c8 54000000 nop; not filled. 11769 0000a5cc 08000090 j L201_LF8 11770 0000a5d0 54000000 nop; not filled. 11771 0000a5d4 L192_LF8: 11772 0000a5d4 23bdfff8 addi r29,r29,#-8 11773 0000a5d8 3c010000 lhi r1,((_currentPCB)>>16)&0xffff 11774 0000a5dc 2421fe28 addui r1,r1,(_currentPCB)&0xffff 11775 0000a5e0 8c210000 lw r1,(r1) 11776 0000a5e4 afa10000 sw (r29),r1 11777 0000a5e8 0fffd498 jal _ProcessKill 11778 0000a5ec 54000000 nop; not filled. 11779 0000a5f0 0800006c j L201_LF8 11780 0000a5f4 54000000 nop; not filled. 11781 0000a5f8 L193_LF8: 11782 0000a5f8 23bdfff0 addi r29,r29,#-16 11783 0000a5fc 3c070001 lhi r7,((LC11_LF8)>>16)&0xffff 11784 0000a600 24e72bf4 addui r7,r7,(LC11_LF8)&0xffff 11785 0000a604 afa70000 sw (r29),r7 11786 0000a608 afa60004 sw 4(r29),r6 11787 0000a60c afa50008 sw 8(r29),r5 11788 0000a610 0c0009d8 jal _printf 11789 0000a614 54000000 nop; not filled. 11790 0000a618 0c0009b8 jal _exitsim 11791 0000a61c 54000000 nop; not filled. 11792 0000a620 23bd0010 addi r29,r29,#16 11793 0000a624 0800003c j L181_LF8 11794 0000a628 54000000 nop; not filled. 11795 0000a62c L194_LF8: 11796 0000a62c 0fffd480 jal _PageFaultHandler 11797 0000a630 54000000 nop; not filled. 11798 0000a634 0800002c j L181_LF8 11799 0000a638 54000000 nop; not filled. 11800 0000a63c L195_LF8: 11801 0000a63c 23bdfff8 addi r29,r29,#-8 11802 0000a640 3c070001 lhi r7,((LC12_LF8)>>16)&0xffff 11803 0000a644 24e72c30 addui r7,r7,(LC12_LF8)&0xffff 11804 0000a648 L205_LF8: 11805 0000a648 afa70000 sw (r29),r7 11806 0000a64c afa20004 sw 4(r29),r2 11807 0000a650 0c000998 jal _printf 11808 0000a654 54000000 nop; not filled. 11809 0000a658 0c000978 jal _exitsim 11810 0000a65c 54000000 nop; not filled. 11811 0000a660 L201_LF8: 11812 0000a660 23bd0008 addi r29,r29,#8 11813 0000a664 L181_LF8: 11814 0000a664 23bdfff8 addi r29,r29,#-8 11815 0000a668 3c020000 lhi r2,((_debugstr)>>16)&0xffff 11816 0000a66c 2442fd60 addui r2,r2,(_debugstr)&0xffff 11817 0000a670 afa20000 sw (r29),r2 11818 0000a674 20070074 addi r7,r0,#116 11819 0000a678 afa70004 sw 4(r29),r7 11820 0000a67c 0fff97b4 jal _dindex 11821 0000a680 54000000 nop; not filled. 11822 0000a684 23bd0008 addi r29,r29,#8 11823 0000a688 64210000 snei r1,r1,#0 11824 0000a68c 1420002c bnez r1,L200_LF8 11825 0000a690 54000000 nop; not filled. 11826 0000a694 23bdfff8 addi r29,r29,#-8 11827 0000a698 afa20000 sw (r29),r2 11828 0000a69c 2007002b addi r7,r0,#43 11829 0000a6a0 afa70004 sw 4(r29),r7 11830 0000a6a4 0fff978c jal _dindex 11831 0000a6a8 54000000 nop; not filled. 11832 0000a6ac 23bd0008 addi r29,r29,#8 11833 0000a6b0 64210000 snei r1,r1,#0 11834 0000a6b4 10200020 beqz r1,L199_LF8 11835 0000a6b8 54000000 nop; not filled. 11836 0000a6bc L200_LF8: 11837 0000a6bc 23bdfff8 addi r29,r29,#-8 11838 0000a6c0 3c070001 lhi r7,((LC13_LF8)>>16)&0xffff 11839 0000a6c4 24e72c68 addui r7,r7,(LC13_LF8)&0xffff 11840 0000a6c8 afa70000 sw (r29),r7 11841 0000a6cc 0c00091c jal _printf 11842 0000a6d0 54000000 nop; not filled. 11843 0000a6d4 23bd0008 addi r29,r29,#8 11844 0000a6d8 L199_LF8: 11845 0000a6d8 0fff6a8c jal _intrreturn 11846 0000a6dc 54000000 nop; not filled. 11847 0000a6e0 8fa20000 lw r2,0(r29) 11848 0000a6e4 8fa30004 lw r3,4(r29) 11849 0000a6e8 8fa40008 lw r4,8(r29) 11850 0000a6ec 8fa5000c lw r5,12(r29) 11851 0000a6f0 8fa60010 lw r6,16(r29) 11852 0000a6f4 8fa70014 lw r7,20(r29) 11853 0000a6f8 8fdffff8 lw r31,-8(r30) 11854 0000a6fc 001ee820 add r29,r0,r30 11855 0000a700 8fdefffc lw r30,-4(r30) 11856 0000a704 4be00000 jr r31 11857 0000a708 54000000 nop 11858 0000a70c .endproc _dointerrupt 11859 ; Compiled by GCC 11861 0000a70c .align 2 11862 0000a70c .proc _isspace 11863 0000a70c .global _isspace 11864 0000a70c _isspace: 11865 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 11866 0000a70c afbefffc sw -4(r29),r30; push fp 11867 0000a710 001df020 add r30,r0,r29; fp = sp 11868 0000a714 afbffff8 sw -8(r29),r31; push ret addr 11869 0000a718 2fbd0010 subui r29,r29,#16; alloc local storage 11870 0000a71c afa20000 sw 0(r29),r2 11871 0000a720 83c20003 lb r2,3(r30) 11872 0000a724 201f0000 addi r31,r0,#0 11873 0000a728 304100ff andi r1,r2,#0x00ff 11874 0000a72c 60210020 seqi r1,r1,#32 11875 0000a730 14200018 bnez r1,L6_LF9 11876 0000a734 54000000 nop; not filled. 11877 0000a738 2041fff7 addi r1,r2,#-9 11878 0000a73c 302100ff andi r1,r1,#0x00ff 11879 0000a740 70210001 sleui r1,r1,#1 11880 0000a744 10200008 beqz r1,L5_LF9 11881 0000a748 54000000 nop; not filled. 11882 0000a74c L6_LF9: 11883 0000a74c 201f0001 addi r31,r0,#1 11884 0000a750 L5_LF9: 11885 0000a750 001f0820 add r1,r0,r31 11886 0000a754 8fa20000 lw r2,0(r29) 11887 0000a758 8fdffff8 lw r31,-8(r30) 11888 0000a75c 001ee820 add r29,r0,r30 11889 0000a760 8fdefffc lw r30,-4(r30) 11890 0000a764 4be00000 jr r31 11891 0000a768 54000000 nop 11892 0000a76c .endproc _isspace 11893 0000a76c .align 2 11894 0000a76c .proc _isxdigit 11895 0000a76c .global _isxdigit 11896 0000a76c _isxdigit: 11897 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 11898 0000a76c afbefffc sw -4(r29),r30; push fp 11899 0000a770 001df020 add r30,r0,r29; fp = sp 11900 0000a774 afbffff8 sw -8(r29),r31; push ret addr 11901 0000a778 2fbd0010 subui r29,r29,#16; alloc local storage 11902 0000a77c afa20000 sw 0(r29),r2 11903 0000a780 83df0003 lb r31,3(r30) 11904 0000a784 20020000 addi r2,r0,#0 11905 0000a788 23e1ffd0 addi r1,r31,#-48 11906 0000a78c 302100ff andi r1,r1,#0x00ff 11907 0000a790 70210009 sleui r1,r1,#9 11908 0000a794 14200028 bnez r1,L12_LF9 11909 0000a798 54000000 nop; not filled. 11910 0000a79c 23e1ff9f addi r1,r31,#-97 11911 0000a7a0 302100ff andi r1,r1,#0x00ff 11912 0000a7a4 70210005 sleui r1,r1,#5 11913 0000a7a8 14200014 bnez r1,L12_LF9 11914 0000a7ac 54000000 nop; not filled. 11915 0000a7b0 33e100ff andi r1,r31,#0x00ff 11916 0000a7b4 64210041 snei r1,r1,#65 11917 0000a7b8 14200008 bnez r1,L11_LF9 11918 0000a7bc 54000000 nop; not filled. 11919 0000a7c0 L12_LF9: 11920 0000a7c0 20020001 addi r2,r0,#1 11921 0000a7c4 L11_LF9: 11922 0000a7c4 00020820 add r1,r0,r2 11923 0000a7c8 8fa20000 lw r2,0(r29) 11924 0000a7cc 8fdffff8 lw r31,-8(r30) 11925 0000a7d0 001ee820 add r29,r0,r30 11926 0000a7d4 8fdefffc lw r30,-4(r30) 11927 0000a7d8 4be00000 jr r31 11928 0000a7dc 54000000 nop 11929 0000a7e0 .endproc _isxdigit 11930 0000a7e0 .align 2 11931 0000a7e0 .proc _DisableIntrs 11932 0000a7e0 .global _DisableIntrs 11933 0000a7e0 _DisableIntrs: 11934 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 11935 0000a7e0 afbefffc sw -4(r29),r30; push fp 11936 0000a7e4 001df020 add r30,r0,r29; fp = sp 11937 0000a7e8 afbffff8 sw -8(r29),r31; push ret addr 11938 0000a7ec 2fbd0010 subui r29,r29,#16; alloc local storage 11939 0000a7f0 afa20000 sw 0(r29),r2 11940 0000a7f4 23bdfff8 addi r29,r29,#-8 11941 0000a7f8 2002000f addi r2,r0,#15 11942 0000a7fc afa20000 sw (r29),r2 11943 0000a800 0fff6a84 jal _SetIntrs 11944 0000a804 54000000 nop; not filled. 11945 0000a808 23bd0008 addi r29,r29,#8 11946 0000a80c 8fa20000 lw r2,0(r29) 11947 0000a810 8fdffff8 lw r31,-8(r30) 11948 0000a814 001ee820 add r29,r0,r30 11949 0000a818 8fdefffc lw r30,-4(r30) 11950 0000a81c 4be00000 jr r31 11951 0000a820 54000000 nop 11952 0000a824 .endproc _DisableIntrs 11953 0000a824 .align 2 11954 0000a824 .proc _EnableIntrs 11955 0000a824 .global _EnableIntrs 11956 0000a824 _EnableIntrs: 11957 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 11958 0000a824 afbefffc sw -4(r29),r30; push fp 11959 0000a828 001df020 add r30,r0,r29; fp = sp 11960 0000a82c afbffff8 sw -8(r29),r31; push ret addr 11961 0000a830 2fbd0010 subui r29,r29,#16; alloc local storage 11962 0000a834 afa20000 sw 0(r29),r2 11963 0000a838 23bdfff8 addi r29,r29,#-8 11964 0000a83c 20020000 addi r2,r0,#0 11965 0000a840 afa20000 sw (r29),r2 11966 0000a844 0fff6a40 jal _SetIntrs 11967 0000a848 54000000 nop; not filled. 11968 0000a84c 23bd0008 addi r29,r29,#8 11969 0000a850 8fa20000 lw r2,0(r29) 11970 0000a854 8fdffff8 lw r31,-8(r30) 11971 0000a858 001ee820 add r29,r0,r30 11972 0000a85c 8fdefffc lw r30,-4(r30) 11973 0000a860 4be00000 jr r31 11974 0000a864 54000000 nop 11975 0000a868 .endproc _EnableIntrs 11976 0000a868 .align 2 11977 0000a868 .proc _RestoreIntrs 11978 0000a868 .global _RestoreIntrs 11979 0000a868 _RestoreIntrs: 11980 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 11981 0000a868 afbefffc sw -4(r29),r30; push fp 11982 0000a86c 001df020 add r30,r0,r29; fp = sp 11983 0000a870 afbffff8 sw -8(r29),r31; push ret addr 11984 0000a874 2fbd0010 subui r29,r29,#16; alloc local storage 11985 0000a878 afa20000 sw 0(r29),r2 11986 0000a87c 23bdfff8 addi r29,r29,#-8 11987 0000a880 8fc20000 lw r2,(r30) 11988 0000a884 afa20000 sw (r29),r2 11989 0000a888 0fff69fc jal _SetIntrs 11990 0000a88c 54000000 nop; not filled. 11991 0000a890 23bd0008 addi r29,r29,#8 11992 0000a894 8fa20000 lw r2,0(r29) 11993 0000a898 8fdffff8 lw r31,-8(r30) 11994 0000a89c 001ee820 add r29,r0,r30 11995 0000a8a0 8fdefffc lw r30,-4(r30) 11996 0000a8a4 4be00000 jr r31 11997 0000a8a8 54000000 nop 11998 0000a8ac .endproc _RestoreIntrs 11999 0000a8ac .align 2 12000 0000a8ac .proc _QueueLinkInit 12001 0000a8ac .global _QueueLinkInit 12002 0000a8ac _QueueLinkInit: 12003 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 12004 0000a8ac afbefffc sw -4(r29),r30; push fp 12005 0000a8b0 001df020 add r30,r0,r29; fp = sp 12006 0000a8b4 afbffff8 sw -8(r29),r31; push ret addr 12007 0000a8b8 2fbd0010 subui r29,r29,#16; alloc local storage 12008 0000a8bc afa20000 sw 0(r29),r2 12009 0000a8c0 8fc10000 lw r1,(r30) 12010 0000a8c4 8fc20004 lw r2,4(r30) 12011 0000a8c8 201f0000 addi r31,r0,#0 12012 0000a8cc ac3f0000 sw (r1),r31 12013 0000a8d0 ac22000c sw 12(r1),r2 12014 0000a8d4 8fa20000 lw r2,0(r29) 12015 0000a8d8 8fdffff8 lw r31,-8(r30) 12016 0000a8dc 001ee820 add r29,r0,r30 12017 0000a8e0 8fdefffc lw r30,-4(r30) 12018 0000a8e4 4be00000 jr r31 12019 0000a8e8 54000000 nop 12020 0000a8ec .endproc _QueueLinkInit 12021 0000a8ec .align 2 12022 0000a8ec .proc _QueueNext 12023 0000a8ec .global _QueueNext 12024 0000a8ec _QueueNext: 12025 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 12026 0000a8ec afbefffc sw -4(r29),r30; push fp 12027 0000a8f0 001df020 add r30,r0,r29; fp = sp 12028 0000a8f4 afbffff8 sw -8(r29),r31; push ret addr 12029 0000a8f8 2fbd0008 subui r29,r29,#8; alloc local storage 12030 0000a8fc 8fc10000 lw r1,(r30) 12031 0000a900 8c210000 lw r1,(r1) 12032 0000a904 8fdffff8 lw r31,-8(r30) 12033 0000a908 001ee820 add r29,r0,r30 12034 0000a90c 8fdefffc lw r30,-4(r30) 12035 0000a910 4be00000 jr r31 12036 0000a914 54000000 nop 12037 0000a918 .endproc _QueueNext 12038 0000a918 .align 2 12039 0000a918 .proc _QueuePrev 12040 0000a918 .global _QueuePrev 12041 0000a918 _QueuePrev: 12042 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 12043 0000a918 afbefffc sw -4(r29),r30; push fp 12044 0000a91c 001df020 add r30,r0,r29; fp = sp 12045 0000a920 afbffff8 sw -8(r29),r31; push ret addr 12046 0000a924 2fbd0008 subui r29,r29,#8; alloc local storage 12047 0000a928 8fc10000 lw r1,(r30) 12048 0000a92c 8c210004 lw r1,4(r1) 12049 0000a930 8fdffff8 lw r31,-8(r30) 12050 0000a934 001ee820 add r29,r0,r30 12051 0000a938 8fdefffc lw r30,-4(r30) 12052 0000a93c 4be00000 jr r31 12053 0000a940 54000000 nop 12054 0000a944 .endproc _QueuePrev 12055 0000a944 .align 2 12056 0000a944 .proc _QueueFirst 12057 0000a944 .global _QueueFirst 12058 0000a944 _QueueFirst: 12059 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 12060 0000a944 afbefffc sw -4(r29),r30; push fp 12061 0000a948 001df020 add r30,r0,r29; fp = sp 12062 0000a94c afbffff8 sw -8(r29),r31; push ret addr 12063 0000a950 2fbd0008 subui r29,r29,#8; alloc local storage 12064 0000a954 8fc10000 lw r1,(r30) 12065 0000a958 8c210000 lw r1,(r1) 12066 0000a95c 8fdffff8 lw r31,-8(r30) 12067 0000a960 001ee820 add r29,r0,r30 12068 0000a964 8fdefffc lw r30,-4(r30) 12069 0000a968 4be00000 jr r31 12070 0000a96c 54000000 nop 12071 0000a970 .endproc _QueueFirst 12072 0000a970 .align 2 12073 0000a970 .proc _QueueLast 12074 0000a970 .global _QueueLast 12075 0000a970 _QueueLast: 12076 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 12077 0000a970 afbefffc sw -4(r29),r30; push fp 12078 0000a974 001df020 add r30,r0,r29; fp = sp 12079 0000a978 afbffff8 sw -8(r29),r31; push ret addr 12080 0000a97c 2fbd0008 subui r29,r29,#8; alloc local storage 12081 0000a980 8fc10000 lw r1,(r30) 12082 0000a984 8c210004 lw r1,4(r1) 12083 0000a988 8fdffff8 lw r31,-8(r30) 12084 0000a98c 001ee820 add r29,r0,r30 12085 0000a990 8fdefffc lw r30,-4(r30) 12086 0000a994 4be00000 jr r31 12087 0000a998 54000000 nop 12088 0000a99c .endproc _QueueLast 12089 0000a99c .align 2 12090 0000a99c .proc _QueueInsertAfter 12091 0000a99c .global _QueueInsertAfter 12092 0000a99c _QueueInsertAfter: 12093 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 12094 0000a99c afbefffc sw -4(r29),r30; push fp 12095 0000a9a0 001df020 add r30,r0,r29; fp = sp 12096 0000a9a4 afbffff8 sw -8(r29),r31; push ret addr 12097 0000a9a8 2fbd0010 subui r29,r29,#16; alloc local storage 12098 0000a9ac afa20000 sw 0(r29),r2 12099 0000a9b0 afa30004 sw 4(r29),r3 12100 0000a9b4 8fc30000 lw r3,(r30) 12101 0000a9b8 8fc20004 lw r2,4(r30) 12102 0000a9bc 8fc10008 lw r1,8(r30) 12103 0000a9c0 ac230008 sw 8(r1),r3 12104 0000a9c4 ac220004 sw 4(r1),r2 12105 0000a9c8 8c5f0000 lw r31,(r2) 12106 0000a9cc ac3f0000 sw (r1),r31 12107 0000a9d0 ac410000 sw (r2),r1 12108 0000a9d4 8c220000 lw r2,(r1) 12109 0000a9d8 ac410004 sw 4(r2),r1 12110 0000a9dc 8c610008 lw r1,8(r3) 12111 0000a9e0 20210001 addi r1,r1,#1 12112 0000a9e4 ac610008 sw 8(r3),r1 12113 0000a9e8 8fa20000 lw r2,0(r29) 12114 0000a9ec 8fa30004 lw r3,4(r29) 12115 0000a9f0 8fdffff8 lw r31,-8(r30) 12116 0000a9f4 001ee820 add r29,r0,r30 12117 0000a9f8 8fdefffc lw r30,-4(r30) 12118 0000a9fc 4be00000 jr r31 12119 0000aa00 54000000 nop 12120 0000aa04 .endproc _QueueInsertAfter 12121 0000aa04 .align 2 12122 0000aa04 .proc _QueueInsertFirst 12123 0000aa04 .global _QueueInsertFirst 12124 0000aa04 _QueueInsertFirst: 12125 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 12126 0000aa04 afbefffc sw -4(r29),r30; push fp 12127 0000aa08 001df020 add r30,r0,r29; fp = sp 12128 0000aa0c afbffff8 sw -8(r29),r31; push ret addr 12129 0000aa10 2fbd0010 subui r29,r29,#16; alloc local storage 12130 0000aa14 afa20000 sw 0(r29),r2 12131 0000aa18 afa30004 sw 4(r29),r3 12132 0000aa1c 8fc30000 lw r3,(r30) 12133 0000aa20 8fc10004 lw r1,4(r30) 12134 0000aa24 ac230008 sw 8(r1),r3 12135 0000aa28 ac230004 sw 4(r1),r3 12136 0000aa2c 8c7f0000 lw r31,(r3) 12137 0000aa30 ac3f0000 sw (r1),r31 12138 0000aa34 ac610000 sw (r3),r1 12139 0000aa38 8c220000 lw r2,(r1) 12140 0000aa3c ac410004 sw 4(r2),r1 12141 0000aa40 8c610008 lw r1,8(r3) 12142 0000aa44 20210001 addi r1,r1,#1 12143 0000aa48 ac610008 sw 8(r3),r1 12144 0000aa4c 8fa20000 lw r2,0(r29) 12145 0000aa50 8fa30004 lw r3,4(r29) 12146 0000aa54 8fdffff8 lw r31,-8(r30) 12147 0000aa58 001ee820 add r29,r0,r30 12148 0000aa5c 8fdefffc lw r30,-4(r30) 12149 0000aa60 4be00000 jr r31 12150 0000aa64 54000000 nop 12151 0000aa68 .endproc _QueueInsertFirst 12152 0000aa68 .align 2 12153 0000aa68 .proc _QueueInsertLast 12154 0000aa68 .global _QueueInsertLast 12155 0000aa68 _QueueInsertLast: 12156 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 12157 0000aa68 afbefffc sw -4(r29),r30; push fp 12158 0000aa6c 001df020 add r30,r0,r29; fp = sp 12159 0000aa70 afbffff8 sw -8(r29),r31; push ret addr 12160 0000aa74 2fbd0010 subui r29,r29,#16; alloc local storage 12161 0000aa78 afa20000 sw 0(r29),r2 12162 0000aa7c afa30004 sw 4(r29),r3 12163 0000aa80 8fc30000 lw r3,(r30) 12164 0000aa84 8fc10004 lw r1,4(r30) 12165 0000aa88 8c620004 lw r2,4(r3) 12166 0000aa8c ac230008 sw 8(r1),r3 12167 0000aa90 ac220004 sw 4(r1),r2 12168 0000aa94 8c5f0000 lw r31,(r2) 12169 0000aa98 ac3f0000 sw (r1),r31 12170 0000aa9c ac410000 sw (r2),r1 12171 0000aaa0 8c220000 lw r2,(r1) 12172 0000aaa4 ac410004 sw 4(r2),r1 12173 0000aaa8 8c610008 lw r1,8(r3) 12174 0000aaac 20210001 addi r1,r1,#1 12175 0000aab0 ac610008 sw 8(r3),r1 12176 0000aab4 8fa20000 lw r2,0(r29) 12177 0000aab8 8fa30004 lw r3,4(r29) 12178 0000aabc 8fdffff8 lw r31,-8(r30) 12179 0000aac0 001ee820 add r29,r0,r30 12180 0000aac4 8fdefffc lw r30,-4(r30) 12181 0000aac8 4be00000 jr r31 12182 0000aacc 54000000 nop 12183 0000aad0 .endproc _QueueInsertLast 12184 0000aad0 .align 2 12185 0000aad0 .proc _QueueRemove 12186 0000aad0 .global _QueueRemove 12187 0000aad0 _QueueRemove: 12188 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 12189 0000aad0 afbefffc sw -4(r29),r30; push fp 12190 0000aad4 001df020 add r30,r0,r29; fp = sp 12191 0000aad8 afbffff8 sw -8(r29),r31; push ret addr 12192 0000aadc 2fbd0010 subui r29,r29,#16; alloc local storage 12193 0000aae0 afa20000 sw 0(r29),r2 12194 0000aae4 afa30004 sw 4(r29),r3 12195 0000aae8 8fdf0000 lw r31,(r30) 12196 0000aaec 8fe10008 lw r1,8(r31) 12197 0000aaf0 8c210008 lw r1,8(r1) 12198 0000aaf4 6c210000 sgti r1,r1,#0 12199 0000aaf8 1020002c beqz r1,L44_LF9 12200 0000aafc 54000000 nop; not filled. 12201 0000ab00 8fe10004 lw r1,4(r31) 12202 0000ab04 8fe30000 lw r3,(r31) 12203 0000ab08 ac230000 sw (r1),r3 12204 0000ab0c 8fe10000 lw r1,(r31) 12205 0000ab10 8fe30004 lw r3,4(r31) 12206 0000ab14 ac230004 sw 4(r1),r3 12207 0000ab18 8fe20008 lw r2,8(r31) 12208 0000ab1c 8c410008 lw r1,8(r2) 12209 0000ab20 2021ffff addi r1,r1,#-1 12210 0000ab24 ac410008 sw 8(r2),r1 12211 0000ab28 L44_LF9: 12212 0000ab28 20030000 addi r3,r0,#0 12213 0000ab2c afe30000 sw (r31),r3 12214 0000ab30 8fa20000 lw r2,0(r29) 12215 0000ab34 8fa30004 lw r3,4(r29) 12216 0000ab38 8fdffff8 lw r31,-8(r30) 12217 0000ab3c 001ee820 add r29,r0,r30 12218 0000ab40 8fdefffc lw r30,-4(r30) 12219 0000ab44 4be00000 jr r31 12220 0000ab48 54000000 nop 12221 0000ab4c .endproc _QueueRemove 12222 0000ab4c .align 2 12223 0000ab4c .proc _QueueLength 12224 0000ab4c .global _QueueLength 12225 0000ab4c _QueueLength: 12226 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 12227 0000ab4c afbefffc sw -4(r29),r30; push fp 12228 0000ab50 001df020 add r30,r0,r29; fp = sp 12229 0000ab54 afbffff8 sw -8(r29),r31; push ret addr 12230 0000ab58 2fbd0008 subui r29,r29,#8; alloc local storage 12231 0000ab5c 8fc10000 lw r1,(r30) 12232 0000ab60 8c210008 lw r1,8(r1) 12233 0000ab64 8fdffff8 lw r31,-8(r30) 12234 0000ab68 001ee820 add r29,r0,r30 12235 0000ab6c 8fdefffc lw r30,-4(r30) 12236 0000ab70 4be00000 jr r31 12237 0000ab74 54000000 nop 12238 0000ab78 .endproc _QueueLength 12239 0000ab78 .align 2 12240 0000ab78 .proc _QueueEmpty 12241 0000ab78 .global _QueueEmpty 12242 0000ab78 _QueueEmpty: 12243 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 12244 0000ab78 afbefffc sw -4(r29),r30; push fp 12245 0000ab7c 001df020 add r30,r0,r29; fp = sp 12246 0000ab80 afbffff8 sw -8(r29),r31; push ret addr 12247 0000ab84 2fbd0008 subui r29,r29,#8; alloc local storage 12248 0000ab88 8fc10000 lw r1,(r30) 12249 0000ab8c 8c210008 lw r1,8(r1) 12250 0000ab90 60210000 seqi r1,r1,#0 12251 0000ab94 8fdffff8 lw r31,-8(r30) 12252 0000ab98 001ee820 add r29,r0,r30 12253 0000ab9c 8fdefffc lw r30,-4(r30) 12254 0000aba0 4be00000 jr r31 12255 0000aba4 54000000 nop 12256 0000aba8 .endproc _QueueEmpty 12257 0000aba8 .data 12258 00012c8b .align 2 12259 00012c8c LC0_LF9: 12260 00012c8c 50726f63 .ascii "Process #\000" 12260 00012c90 65737320 12260 00012c94 2300 12261 00012c96 .align 2 12262 00012c98 LC1_LF9: 12263 00012c98 52756e6e .ascii "Running process %d (iteration %d)!\n\000" 12263 00012c9c 696e6720 12263 00012ca0 70726f63 12263 00012ca4 65737320 12263 00012ca8 25642028 12263 00012cac 69746572 12263 00012cb0 6174696f 12263 00012cb4 6e202564 12263 00012cb8 29210a00 12264 00012cbc .text 12265 0000aba8 .align 2 12266 0000aba8 .proc _doSomething_LF9 12267 0000aba8 _doSomething_LF9: 12268 ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. 12269 0000aba8 afbefffc sw -4(r29),r30; push fp 12270 0000abac 001df020 add r30,r0,r29; fp = sp 12271 0000abb0 afbffff8 sw -8(r29),r31; push ret addr 12272 0000abb4 2fbd0078 subui r29,r29,#120; alloc local storage 12273 0000abb8 afa20000 sw 0(r29),r2 12274 0000abbc afa30004 sw 4(r29),r3 12275 0000abc0 afa40008 sw 8(r29),r4 12276 0000abc4 afa5000c sw 12(r29),r5 12277 0000abc8 afa60010 sw 16(r29),r6 12278 0000abcc afa70014 sw 20(r29),r7 12279 0000abd0 afa80018 sw 24(r29),r8 12280 0000abd4 8fc60000 lw r6,(r30) 12281 0000abd8 2001000a addi r1,r0,#10 12282 0000abdc 00c00035 movi2fp f0,r6 12283 0000abe0 00200835 movi2fp f1,r1 12284 0000abe4 0401000f div f0,f0,f1 12285 0000abe8 00001034 movfp2i r2,f0 12286 0000abec 50410002 slli r1,r2,#0x2 12287 0000abf0 00220820 add r1,r1,r2 12288 0000abf4 50210001 slli r1,r1,#0x1 12289 0000abf8 00c13822 sub r7,r6,r1 12290 0000abfc 70c10063 slei r1,r6,#99 12291 0000ac00 102000dc beqz r1,L52_LF9 12292 0000ac04 54000000 nop; not filled. 12293 0000ac08 23bdfff8 addi r29,r29,#-8 12294 0000ac0c 50e10002 slli r1,r7,#0x2 12295 0000ac10 00270820 add r1,r1,r7 12296 0000ac14 50210002 slli r1,r1,#0x2 12297 0000ac18 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12298 0000ac1c 25082d30 addui r8,r8,(_mysems_LF9)&0xffff 12299 0000ac20 00280820 add r1,r1,r8 12300 0000ac24 afa10000 sw (r29),r1 12301 0000ac28 20080001 addi r8,r0,#1 12302 0000ac2c afa80004 sw 4(r29),r8 12303 0000ac30 0fffdc34 jal _SemInit 12304 0000ac34 54000000 nop; not filled. 12305 0000ac38 20030001 addi r3,r0,#1 12306 0000ac3c 23bd0008 addi r29,r29,#8 12307 0000ac40 23c4ffd0 addi r4,r30,#-48 12308 0000ac44 23c5ffa8 addi r5,r30,#-88 12309 0000ac48 00061020 add r2,r0,r6 12310 0000ac4c L56_LF9: 12311 0000ac4c 23bdfff8 addi r29,r29,#-8 12312 0000ac50 afa40000 sw (r29),r4 12313 0000ac54 3c080001 lhi r8,((LC0_LF9)>>16)&0xffff 12314 0000ac58 25082c8c addui r8,r8,(LC0_LF9)&0xffff 12315 0000ac5c afa80004 sw 4(r29),r8 12316 0000ac60 0fff8d10 jal _dstrcpy 12317 0000ac64 54000000 nop; not filled. 12318 0000ac68 afa30000 sw (r29),r3 12319 0000ac6c afa50004 sw 4(r29),r5 12320 0000ac70 0fff923c jal _ditoa 12321 0000ac74 54000000 nop; not filled. 12322 0000ac78 afa40000 sw (r29),r4 12323 0000ac7c afa50004 sw 4(r29),r5 12324 0000ac80 0fff8de0 jal _dstrcat 12325 0000ac84 54000000 nop; not filled. 12326 0000ac88 23bdfff8 addi r29,r29,#-8 12327 0000ac8c 3c080000 lhi r8,((_doSomething_LF9)>>16)&0xffff 12328 0000ac90 2508aba8 addui r8,r8,(_doSomething_LF9)&0xffff 12329 0000ac94 afa80000 sw (r29),r8 12330 0000ac98 50410005 slli r1,r2,#0x5 12331 0000ac9c 00220822 sub r1,r1,r2 12332 0000aca0 50210002 slli r1,r1,#0x2 12333 0000aca4 00220820 add r1,r1,r2 12334 0000aca8 50210003 slli r1,r1,#0x3 12335 0000acac 00260820 add r1,r1,r6 12336 0000acb0 afa10004 sw 4(r29),r1 12337 0000acb4 afa40008 sw 8(r29),r4 12338 0000acb8 20080000 addi r8,r0,#0 12339 0000acbc afa8000c sw 12(r29),r8 12340 0000acc0 0fffa908 jal _ProcessFork 12341 0000acc4 54000000 nop; not filled. 12342 0000acc8 23bd0010 addi r29,r29,#16 12343 0000accc 00461020 add r2,r2,r6 12344 0000acd0 20630001 addi r3,r3,#1 12345 0000acd4 70610006 slei r1,r3,#6 12346 0000acd8 1420ff70 bnez r1,L56_LF9 12347 0000acdc 54000000 nop; not filled. 12348 0000ace0 L52_LF9: 12349 0000ace0 23bdfff8 addi r29,r29,#-8 12350 0000ace4 50e10002 slli r1,r7,#0x2 12351 0000ace8 00270820 add r1,r1,r7 12352 0000acec 50210002 slli r1,r1,#0x2 12353 0000acf0 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12354 0000acf4 25082d30 addui r8,r8,(_mysems_LF9)&0xffff 12355 0000acf8 00280820 add r1,r1,r8 12356 0000acfc afa10000 sw (r29),r1 12357 0000ad00 0fffdcc0 jal _SemWait 12358 0000ad04 54000000 nop; not filled. 12359 0000ad08 20030000 addi r3,r0,#0 12360 0000ad0c 23bd0008 addi r29,r29,#8 12361 0000ad10 50c20001 slli r2,r6,#0x1 12362 0000ad14 0062082a slt r1,r3,r2 12363 0000ad18 10200070 beqz r1,L59_LF9 12364 0000ad1c 54000000 nop; not filled. 12365 0000ad20 200503e8 addi r5,r0,#1000 12366 0000ad24 00022020 add r4,r0,r2 12367 0000ad28 L61_LF9: 12368 0000ad28 00600035 movi2fp f0,r3 12369 0000ad2c 00a00835 movi2fp f1,r5 12370 0000ad30 0401000f div f0,f0,f1 12371 0000ad34 00001034 movfp2i r2,f0 12372 0000ad38 50410005 slli r1,r2,#0x5 12373 0000ad3c 00220822 sub r1,r1,r2 12374 0000ad40 50210002 slli r1,r1,#0x2 12375 0000ad44 00220820 add r1,r1,r2 12376 0000ad48 50210003 slli r1,r1,#0x3 12377 0000ad4c 00610829 sne r1,r3,r1 12378 0000ad50 14200028 bnez r1,L62_LF9 12379 0000ad54 54000000 nop; not filled. 12380 0000ad58 23bdfff0 addi r29,r29,#-16 12381 0000ad5c 3c080001 lhi r8,((LC1_LF9)>>16)&0xffff 12382 0000ad60 25082c98 addui r8,r8,(LC1_LF9)&0xffff 12383 0000ad64 afa80000 sw (r29),r8 12384 0000ad68 afa60004 sw 4(r29),r6 12385 0000ad6c afa30008 sw 8(r29),r3 12386 0000ad70 0c000278 jal _printf 12387 0000ad74 54000000 nop; not filled. 12388 0000ad78 23bd0010 addi r29,r29,#16 12389 0000ad7c L62_LF9: 12390 0000ad7c 20630001 addi r3,r3,#1 12391 0000ad80 0064082a slt r1,r3,r4 12392 0000ad84 1420ffa0 bnez r1,L61_LF9 12393 0000ad88 54000000 nop; not filled. 12394 0000ad8c L59_LF9: 12395 0000ad8c 23bdfff8 addi r29,r29,#-8 12396 0000ad90 50e10002 slli r1,r7,#0x2 12397 0000ad94 00270820 add r1,r1,r7 12398 0000ad98 50210002 slli r1,r1,#0x2 12399 0000ad9c 3c080001 lhi r8,((_mysems_LF9)>>16)&0xffff 12400 0000ada0 25082d30 addui r8,r8,(_mysems_LF9)&0xffff 12401 0000ada4 00280820 add r1,r1,r8 12402 0000ada8 afa10000 sw (r29),r1 12403 0000adac 0fffdf24 jal _SemSignal 12404 0000adb0 54000000 nop; not filled. 12405 0000adb4 23bd0008 addi r29,r29,#8 12406 0000adb8 8fa20000 lw r2,0(r29) 12407 0000adbc 8fa30004 lw r3,4(r29) 12408 0000adc0 8fa40008 lw r4,8(r29) 12409 0000adc4 8fa5000c lw r5,12(r29) 12410 0000adc8 8fa60010 lw r6,16(r29) 12411 0000adcc 8fa70014 lw r7,20(r29) 12412 0000add0 8fa80018 lw r8,24(r29) 12413 0000add4 8fdffff8 lw r31,-8(r30) 12414 0000add8 001ee820 add r29,r0,r30 12415 0000addc 8fdefffc lw r30,-4(r30) 12416 0000ade0 4be00000 jr r31 12417 0000ade4 54000000 nop 12418 0000ade8 .endproc _doSomething_LF9 12419 0000ade8 .data 12420 00012cbc .align 2 12421 00012cbc LC2_LF9: 12422 00012cbc 63686173 .ascii "chasetail\000" 12422 00012cc0 65746169 12422 00012cc4 6c00 12423 00012cc6 .align 2 12424 00012cc8 LC3_LF9: 12425 00012cc8 43686173 .ascii "Chasing tail %d.\n\000" 12425 00012ccc 696e6720 12425 00012cd0 7461696c 12425 00012cd4 2025642e 12425 00012cd8 0a00 12426 00012cda .align 2 12427 00012cdc LC4_LF9: 12428 00012cdc 4f70656e .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" 12428 00012ce0 206f6620 12428 00012ce4 2825732c 12428 00012ce8 30782578 12428 00012cec 29207265 12428 00012cf0 7475726e 12428 00012cf4 73203078 12428 00012cf8 25782e0a 12428 00012cfc 00 12429 00012cfd .align 2 12430 00012d00 LC5_LF9: 12431 00012d00 43686173 .ascii "ChaseTail\000" 12431 00012d04 65546169 12431 00012d08 6c00 12432 00012d0a .text 12433 0000ade8 .align 2 12434 0000ade8 .proc _chaseTail_LF9 12435 0000ade8 _chaseTail_LF9: 12436 ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. 12437 0000ade8 afbefffc sw -4(r29),r30; push fp 12438 0000adec 001df020 add r30,r0,r29; fp = sp 12439 0000adf0 afbffff8 sw -8(r29),r31; push ret addr 12440 0000adf4 2fbd0018 subui r29,r29,#24; alloc local storage 12441 0000adf8 afa20000 sw 0(r29),r2 12442 0000adfc afa30004 sw 4(r29),r3 12443 0000ae00 afa40008 sw 8(r29),r4 12444 0000ae04 afa5000c sw 12(r29),r5 12445 0000ae08 8fc40000 lw r4,(r30) 12446 0000ae0c 3c030001 lhi r3,((LC2_LF9)>>16)&0xffff 12447 0000ae10 24632cbc addui r3,r3,(LC2_LF9)&0xffff 12448 0000ae14 23bdfff8 addi r29,r29,#-8 12449 0000ae18 3c050001 lhi r5,((LC3_LF9)>>16)&0xffff 12450 0000ae1c 24a52cc8 addui r5,r5,(LC3_LF9)&0xffff 12451 0000ae20 afa50000 sw (r29),r5 12452 0000ae24 afa40004 sw 4(r29),r4 12453 0000ae28 0c0001c0 jal _printf 12454 0000ae2c 54000000 nop; not filled. 12455 0000ae30 afa30000 sw (r29),r3 12456 0000ae34 20822000 addi r2,r4,#8192 12457 0000ae38 afa20004 sw 4(r29),r2 12458 0000ae3c 0c000158 jal _Open 12459 0000ae40 54000000 nop; not filled. 12460 0000ae44 23bdfff8 addi r29,r29,#-8 12461 0000ae48 3c050001 lhi r5,((LC4_LF9)>>16)&0xffff 12462 0000ae4c 24a52cdc addui r5,r5,(LC4_LF9)&0xffff 12463 0000ae50 afa50000 sw (r29),r5 12464 0000ae54 afa30004 sw 4(r29),r3 12465 0000ae58 afa20008 sw 8(r29),r2 12466 0000ae5c afa1000c sw 12(r29),r1 12467 0000ae60 0c000188 jal _printf 12468 0000ae64 54000000 nop; not filled. 12469 0000ae68 23bd0010 addi r29,r29,#16 12470 0000ae6c 70810027 slei r1,r4,#39 12471 0000ae70 1020003c beqz r1,L67_LF9 12472 0000ae74 54000000 nop; not filled. 12473 0000ae78 23bdfff0 addi r29,r29,#-16 12474 0000ae7c 3c050000 lhi r5,((_chaseTail_LF9)>>16)&0xffff 12475 0000ae80 24a5ade8 addui r5,r5,(_chaseTail_LF9)&0xffff 12476 0000ae84 afa50000 sw (r29),r5 12477 0000ae88 20810001 addi r1,r4,#1 12478 0000ae8c afa10004 sw 4(r29),r1 12479 0000ae90 3c050001 lhi r5,((LC5_LF9)>>16)&0xffff 12480 0000ae94 24a52d00 addui r5,r5,(LC5_LF9)&0xffff 12481 0000ae98 afa50008 sw 8(r29),r5 12482 0000ae9c 20050000 addi r5,r0,#0 12483 0000aea0 afa5000c sw 12(r29),r5 12484 0000aea4 0fffa724 jal _ProcessFork 12485 0000aea8 54000000 nop; not filled. 12486 0000aeac 23bd0010 addi r29,r29,#16 12487 0000aeb0 L67_LF9: 12488 0000aeb0 8fa20000 lw r2,0(r29) 12489 0000aeb4 8fa30004 lw r3,4(r29) 12490 0000aeb8 8fa40008 lw r4,8(r29) 12491 0000aebc 8fa5000c lw r5,12(r29) 12492 0000aec0 8fdffff8 lw r31,-8(r30) 12493 0000aec4 001ee820 add r29,r0,r30 12494 0000aec8 8fdefffc lw r30,-4(r30) 12495 0000aecc 4be00000 jr r31 12496 0000aed0 54000000 nop 12497 0000aed4 .endproc _chaseTail_LF9 12498 0000aed4 .data 12499 00012d0a .align 2 12500 00012d0c LC6_LF9: 12501 00012d0c 25642000 .ascii "%d \000" 12502 00012d10 .align 2 12503 00012d10 LC7_LF9: 12504 00012d10 52616e64 .ascii "Random number %02i is 0x%08x.\n\000" 12504 00012d14 6f6d206e 12504 00012d18 756d6265 12504 00012d1c 72202530 12504 00012d20 32692069 12504 00012d24 73203078 12504 00012d28 25303878 12504 00012d2c 2e0a00 12505 00012d2f .text 12506 0000aed4 .align 2 12507 0000aed4 .proc _SysprocCreateProcesses 12508 0000aed4 .global _SysprocCreateProcesses 12509 0000aed4 _SysprocCreateProcesses: 12510 ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. 12511 0000aed4 afbefffc sw -4(r29),r30; push fp 12512 0000aed8 001df020 add r30,r0,r29; fp = sp 12513 0000aedc afbffff8 sw -8(r29),r31; push ret addr 12514 0000aee0 2fbd0018 subui r29,r29,#24; alloc local storage 12515 0000aee4 afa20000 sw 0(r29),r2 12516 0000aee8 afa30004 sw 4(r29),r3 12517 0000aeec afa40008 sw 8(r29),r4 12518 0000aef0 3c020001 lhi r2,((_mysems_LF9)>>16)&0xffff 12519 0000aef4 24422d30 addui r2,r2,(_mysems_LF9)&0xffff 12520 0000aef8 204300b4 addi r3,r2,#180 12521 0000aefc L90_LF9: 12522 0000aefc 23bdfff8 addi r29,r29,#-8 12523 0000af00 afa20000 sw (r29),r2 12524 0000af04 20040001 addi r4,r0,#1 12525 0000af08 afa40004 sw 4(r29),r4 12526 0000af0c 0fffd958 jal _SemInit 12527 0000af10 54000000 nop; not filled. 12528 0000af14 23bd0008 addi r29,r29,#8 12529 0000af18 20420014 addi r2,r2,#20 12530 0000af1c 0043082c sle r1,r2,r3 12531 0000af20 1420ffd8 bnez r1,L90_LF9 12532 0000af24 54000000 nop; not filled. 12533 0000af28 8fa20000 lw r2,0(r29) 12534 0000af2c 8fa30004 lw r3,4(r29) 12535 0000af30 8fa40008 lw r4,8(r29) 12536 0000af34 8fdffff8 lw r31,-8(r30) 12537 0000af38 001ee820 add r29,r0,r30 12538 0000af3c 8fdefffc lw r30,-4(r30) 12539 0000af40 4be00000 jr r31 12540 0000af44 54000000 nop 12541 0000af48 .endproc _SysprocCreateProcesses 12542 0000af48 .data 12543 00012d2f .align 2 12544 00012d30 _mysems_LF9: 12545 00012d30 .space 200 12546 ;;; This file just includes a single variable that contains the last address 12547 ;;; in the operating system. The rest of memory is available for use by 12548 ;;; processes. 12550 00012df8 .align 2 12551 00012df8 .global _lastosaddress 12552 00012df8 _lastosaddress: 12553 00012df8 00012e00 .word _lastosaddress+8 12554 ;;; Ethan L. Miller, 1999. Released to the public domain 12555 ;;; 12556 ;;; Most of the traps are called in files from libtraps. 12558 00012dfc .text 12559 0000af48 .align 2 12560 0000af48 .proc _exit 12561 0000af48 .global _exit 12562 0000af48 _exit: 12563 0000af48 44000300 trap #0x300 12564 0000af4c 4be00000 jr r31 12565 0000af50 54000000 nop 12566 0000af54 .endproc _exit 12568 ; for the benefit of gcc. 12569 0000af54 .proc ___main 12570 0000af54 .global ___main 12571 0000af54 ___main: 12572 0000af54 4be00000 jr r31 12573 0000af58 54000000 nop 12574 0000af5c .endproc ___main 12575 ;;; 12576 ;;; Stub functions for DLX traps. 12577 ;;; 12578 ;;; Ethan L. Miller, 1999. Released to the public domain. 12579 ;;; 12580 ;;; There are two sets of traps here. The traps such as Open and Close 12581 ;;; (note the capital letters) are for use by user programs. The traps 12582 ;;; with names such as open and close (lower case) are for use by the OS. 12583 ;;; 12586 0000af5c .align 2 12587 0000af5c .proc _open 12588 0000af5c .global _open 12589 0000af5c _open: 12590 0000af5c 44002013 trap #0x2013 12591 0000af60 4be00000 jr r31 12592 0000af64 54000000 nop 12593 0000af68 .endproc _open 12595 0000af68 .proc _close 12596 0000af68 .global _close 12597 0000af68 _close: 12598 0000af68 44002014 trap #0x2014 12599 0000af6c 4be00000 jr r31 12600 0000af70 54000000 nop 12601 0000af74 .endproc _close 12603 0000af74 .proc _read 12604 0000af74 .global _read 12605 0000af74 _read: 12606 0000af74 44002010 trap #0x2010 12607 0000af78 4be00000 jr r31 12608 0000af7c 54000000 nop 12609 0000af80 .endproc _read 12611 0000af80 .proc _write 12612 0000af80 .global _write 12613 0000af80 _write: 12614 0000af80 44002011 trap #0x2011 12615 0000af84 4be00000 jr r31 12616 0000af88 54000000 nop 12617 0000af8c .endproc _write 12619 0000af8c .proc _lseek 12620 0000af8c .global _lseek 12621 0000af8c _lseek: 12622 0000af8c 44002012 trap #0x2012 12623 0000af90 4be00000 jr r31 12624 0000af94 54000000 nop 12625 0000af98 .endproc _lseek 12627 ;;; The following are the traps to be used by user-level programs 12628 ;;; 12630 0000af98 .align 2 12631 0000af98 .proc _Open 12632 0000af98 .global _Open 12633 0000af98 _Open: 12634 0000af98 44000213 trap #0x213 12635 0000af9c 4be00000 jr r31 12636 0000afa0 54000000 nop 12637 0000afa4 .endproc _Open 12639 0000afa4 .proc _Close 12640 0000afa4 .global _Close 12641 0000afa4 _Close: 12642 0000afa4 44000214 trap #0x214 12643 0000afa8 4be00000 jr r31 12644 0000afac 54000000 nop 12645 0000afb0 .endproc _Close 12647 0000afb0 .proc _Read 12648 0000afb0 .global _Read 12649 0000afb0 _Read: 12650 0000afb0 44000210 trap #0x210 12651 0000afb4 4be00000 jr r31 12652 0000afb8 54000000 nop 12653 0000afbc .endproc _Read 12655 0000afbc .proc _Write 12656 0000afbc .global _Write 12657 0000afbc _Write: 12658 0000afbc 44000211 trap #0x211 12659 0000afc0 4be00000 jr r31 12660 0000afc4 54000000 nop 12661 0000afc8 .endproc _Write 12663 0000afc8 .proc _Lseek 12664 0000afc8 .global _Lseek 12665 0000afc8 _Lseek: 12666 0000afc8 44000212 trap #0x212 12667 0000afcc 4be00000 jr r31 12668 0000afd0 54000000 nop 12669 0000afd4 .endproc _Lseek 12671 ;;; 12672 ;;; Stub functions for DLX traps. 12673 ;;; 12674 ;;; Ethan L. Miller, 1999. Released to the public domain. 12675 ;;; 12676 ;;; There are two exit traps. The first, _exitsim, actually exits the 12677 ;;; simulator. The second, _exit, simply calls a regular trap in the 12678 ;;; DLX simulator, and would be suitable for a user program that wants 12679 ;;; to signal the OS that it's exiting. 12680 ;;; 12681 ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and 12682 ;;; programs run without an OS - should call exitsim() rather than just 12683 ;;; falling through to exit. 12684 ;;; 12687 0000afd4 .align 2 12688 0000afd4 .proc _exitsim 12689 0000afd4 .global _exitsim 12690 0000afd4 _exitsim: 12691 0000afd4 44002f00 trap #0x2f00 12692 0000afd8 4be00000 jr r31 12693 0000afdc 54000000 nop 12694 0000afe0 .endproc _exitsim 12696 0000afe0 .proc _exit 12697 0000afe0 .global _exit 12698 0000afe0 _exit: 12699 0000afe0 44000300 trap #0x300 12700 0000afe4 4be00000 jr r31 12701 0000afe8 54000000 nop 12702 0000afec .endproc _exit 12704 ; 12705 ; Stub functions for DLX traps. 12706 ; 12707 ; Aaron Sawdey 1996; released to the Public Domain. 12708 ; 12710 0000afec .proc _printf 12711 0000afec .global _printf 12712 0000afec _printf: 12713 0000afec 44002001 trap #0x2001 12714 0000aff0 4be00000 jr r31 12715 0000aff4 54000000 nop 12716 0000aff8 .endproc _printf 12718 0000aff8 .text 12719 0000aff8 .global _etext 12720 0000aff8 _etext: 12721 0000aff8 .align 3 12722 0000aff8 .data 12723 00012dfc .global _edata 12724 00012dfc _edata:

option1/lab4_1/src/dlxos.ps

option1/lab4_1/src/#Makefile#

# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c \ OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog1 userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o $(CC) -mtraps -O3 dlxos.o trap_random.o $(OBJS) osend.o -o os.dlx osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog: userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -L userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog1: userprog1.o usertraps.o misc.o $(CC) -mtraps -O3 userprog1.o usertraps.o misc.o -o userprog1.dlx $(AS) -L userprog1.lst userprog1.dlx mv userprog1.dlx.obj ../execs userprog2: userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -L userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend

option1/lab4_1/src/sysproc.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Process #\000" .align 2 LC1: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething _doSomething: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#120 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52 nop ; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop ; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw 4(r29),r8 jal _dstrcpy nop ; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop ; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop ; not filled. addi r29,r29,#-8 lhi r8,((_doSomething)>>16)&0xffff addui r8,r8,(_doSomething)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop ; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56 nop ; not filled. L52: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59 nop ; not filled. addi r5,r0,#1000 add r4,r0,r2 L61: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62 nop ; not filled. addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 L62: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61 nop ; not filled. L59: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething .data .align 2 LC2: .ascii "chasetail\000" .align 2 LC3: .ascii "Chasing tail %d.\n\000" .align 2 LC4: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail _chaseTail: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2)>>16)&0xffff addui r3,r3,(LC2)&0xffff addi r29,r29,#-8 lhi r5,((LC3)>>16)&0xffff addui r5,r5,(LC3)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop ; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop ; not filled. addi r29,r29,#-8 lhi r5,((LC4)>>16)&0xffff addui r5,r5,(LC4)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail)>>16)&0xffff addui r5,r5,(_chaseTail)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop ; not filled. addi r29,r29,#16 L67: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail .data .align 2 LC6: .ascii "%d \000" .align 2 LC7: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems)>>16)&0xffff addui r2,r2,(_mysems)&0xffff addi r3,r2,#180 L90: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop ; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems: .space 200

option1/lab4_1/src/process.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum: .word 10000 .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L52: addi r29,r29,#-8 lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff sw (r29),r2 jal _QueueInit nop ; not filled. lhi r8,((_runQueue)>>16)&0xffff addui r8,r8,(_runQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_waitQueue)>>16)&0xffff addui r8,r8,(_waitQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_zombieQueue)>>16)&0xffff addui r8,r8,(_zombieQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs)>>16)&0xffff addui r1,r1,(_pcbs)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L58: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57 nop ; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83 nop ; not filled. add r3,r0,r4 L85: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85 nop ; not filled. L83: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L91: lhi r5,((_runQueue)>>16)&0xffff addui r5,r5,(_runQueue)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94 nop ; not filled. addi r29,r29,#-8 lhi r8,((LC4)>>16)&0xffff addui r8,r8,(LC4)&0xffff sw (r29),r8 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L94: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98 nop ; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100 nop ; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105 nop ; not filled. L106: addi r29,r29,#-16 lhi r8,((LC5)>>16)&0xffff addui r8,r8,(LC5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L105: lhi r7,((_zombieQueue)>>16)&0xffff addui r7,r7,(_zombieQueue)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs)>>16)&0xffff addui r5,r5,(_freepcbs)&0xffff L107: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108 nop ; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114 nop ; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113 nop ; not filled. L114: addi r29,r29,#-8 lhi r8,((LC6)>>16)&0xffff addui r8,r8,(LC6)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop ; not filled. addi r29,r29,#8 L113: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116 nop ; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122 nop ; not filled. add r2,r0,r4 L124: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124 nop ; not filled. L122: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107 nop ; not filled. L108: addi r29,r29,#-8 lhi r1,((_processQuantum)>>16)&0xffff addui r1,r1,(_processQuantum)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127 nop ; not filled. L128: addi r29,r29,#-8 lhi r8,((LC7)>>16)&0xffff addui r8,r8,(LC7)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L127: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9: .ascii "%s: %s\n\000" .align 2 LC10: .ascii "ProcessSuspend\000" .align 2 LC11: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-16 lhi r4,((LC8)>>16)&0xffff addui r4,r4,(LC8)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L130: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC10)>>16)&0xffff addui r1,r1,(LC10)&0xffff sw 4(r29),r1 lhi r4,((LC11)>>16)&0xffff addui r4,r4,(LC11)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L133: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue)>>16)&0xffff addui r2,r2,(_waitQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13: .ascii "ProcessWakeup\000" .align 2 LC14: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141 nop ; not filled. L142: addi r29,r29,#-8 lhi r4,((LC12)>>16)&0xffff addui r4,r4,(LC12)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L141: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC13)>>16)&0xffff addui r1,r1,(LC13)&0xffff sw 4(r29),r1 lhi r4,((LC14)>>16)&0xffff addui r4,r4,(LC14)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L144: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue)>>16)&0xffff addui r2,r2,(_runQueue)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152 nop ; not filled. L153: addi r29,r29,#-8 lhi r4,((LC15)>>16)&0xffff addui r4,r4,(LC15)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L152: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156 nop ; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue)>>16)&0xffff addui r2,r2,(_zombieQueue)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159 nop ; not filled. L160: addi r29,r29,#-8 lhi r4,((LC16)>>16)&0xffff addui r4,r4,(LC16)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L159: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52: .space 4 .align 2 _location53: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r2 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r5,r0,#0 sw (r1),r5 L173: lhi r31,((_location53)>>16)&0xffff addui r31,r31,(_location53)&0xffff lw r3,(r31) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175 nop ; not filled. sgti r1,r3,#98 beqz r1,L174 nop ; not filled. L175: addi r1,r0,#0 j L182 nop ; not filled. L183: addi r1,r31,#1 sw (r2),r1 j L177 nop ; not filled. L174: slei r1,r3,#99 beqz r1,L177 nop ; not filled. add r4,r0,r2 add r2,r0,r31 L179: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183 nop ; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179 nop ; not filled. L177: add r1,r0,r3 L182: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26: .ascii "About to load %s\n\000" .align 2 LC27: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#728 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186 nop ; not filled. L187: addi r29,r29,#-8 lhi r13,((LC17)>>16)&0xffff addui r13,r13,(LC17)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L186: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188 nop ; not filled. L189: addi r29,r29,#-24 lhi r13,((LC18)>>16)&0xffff addui r13,r13,(LC18)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop ; not filled. addi r29,r29,#24 L188: lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC19)>>16)&0xffff addui r13,r13,(LC19)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L190: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194 nop ; not filled. L195: addi r29,r29,#-8 lhi r13,((LC20)>>16)&0xffff addui r13,r13,(LC20)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L194: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197 nop ; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199 nop ; not filled. L200: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC21)>>16)&0xffff addui r13,r13,(LC21)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L199: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202 nop ; not filled. L203: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r13,((LC22)>>16)&0xffff addui r13,r13,(LC22)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L202: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop ; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC23)>>16)&0xffff addui r13,r13,(LC23)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L204: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop ; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205 nop ; not filled. addi r29,r29,#-8 lhi r13,((LC24)>>16)&0xffff addui r13,r13,(LC24)&0xffff sw (r29),r13 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L205: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206 nop ; not filled. L207: addi r29,r29,#-24 lhi r13,((LC25)>>16)&0xffff addui r13,r13,(LC25)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 L206: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209 nop ; not filled. L210: addi r29,r29,#-8 lhi r13,((LC26)>>16)&0xffff addui r13,r13,(LC26)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L209: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211 nop ; not filled. lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217 nop ; not filled. add r3,r0,r6 L219: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219 nop ; not filled. L217: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268 nop ; not filled. L211: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222 nop ; not filled. L223: addi r29,r29,#-16 lhi r13,((LC27)>>16)&0xffff addui r13,r13,(LC27)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L222: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224 nop ; not filled. L225: addi r29,r29,#-16 lhi r13,((LC28)>>16)&0xffff addui r13,r13,(LC28)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L224: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226 nop ; not filled. L227: addi r29,r29,#-16 lhi r13,((LC29)>>16)&0xffff addui r13,r13,(LC29)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L226: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop ; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231 nop ; not filled. L232: addi r29,r29,#-16 lhi r13,((LC30)>>16)&0xffff addui r13,r13,(LC30)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L231: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 j L228 nop ; not filled. L229: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop ; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234 nop ; not filled. lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff sw (r1),r10 lhi r1,((_location53)>>16)&0xffff addui r1,r1,(_location53)&0xffff addi r13,r0,#0 sw (r1),r13 L234: lhi r3,((_location53)>>16)&0xffff addui r3,r3,(_location53)&0xffff lw r4,(r3) lhi r1,((_str52)>>16)&0xffff addui r1,r1,(_str52)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236 nop ; not filled. sgti r1,r4,#98 beqz r1,L235 nop ; not filled. L236: addi r3,r0,#0 j L233 nop ; not filled. L269: addi r1,r2,#1 sw (r3),r1 j L238 nop ; not filled. L235: slei r1,r4,#99 beqz r1,L238 nop ; not filled. add r5,r0,r2 L240: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269 nop ; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240 nop ; not filled. L238: add r3,r0,r4 L233: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53)>>16)&0xffff addui r4,r4,(_location53)&0xffff lhi r11,((_str52)>>16)&0xffff addui r11,r11,(_str52)&0xffff add r10,r0,r2 addi r5,r30,#4 L243: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249 nop ; not filled. sgti r1,r31,#98 beqz r1,L248 nop ; not filled. L249: addi r3,r0,#0 j L246 nop ; not filled. L270: addi r1,r3,#1 sw (r4),r1 j L251 nop ; not filled. L248: slei r1,r31,#99 beqz r1,L251 nop ; not filled. add r2,r0,r3 L253: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270 nop ; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253 nop ; not filled. L251: add r3,r0,r31 L246: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244 nop ; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243 nop ; not filled. L244: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257 nop ; not filled. L208: lhi r13,((_ProcessExit)>>16)&0xffff addui r13,r13,(_ProcessExit)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r3,((_runQueue)>>16)&0xffff addui r3,r3,(_runQueue)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264 nop ; not filled. L265: addi r29,r29,#-16 lhi r13,((LC31)>>16)&0xffff addui r13,r13,(LC31)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop ; not filled. addi r29,r29,#16 L264: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266 nop ; not filled. L267: addi r29,r29,#-8 lhi r13,((LC32)>>16)&0xffff addui r13,r13,(LC32)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop ; not filled. addi r29,r29,#8 L266: lhi r13,((_pcbs)>>16)&0xffff addui r13,r13,(_pcbs)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34: .ascii "File descriptor is now %d.\n\000" .align 2 LC35: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36: .ascii "start:\000" .align 2 LC37: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#168 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop ; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L281: addi r29,r29,#-16 lhi r12,((LC33)>>16)&0xffff addui r12,r12,(LC33)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 j L288 nop ; not filled. L279: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282 nop ; not filled. L283: addi r29,r29,#-8 lhi r12,((LC34)>>16)&0xffff addui r12,r12,(LC34)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L282: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285 nop ; not filled. L286: addi r29,r29,#-16 lhi r12,((LC35)>>16)&0xffff addui r12,r12,(LC35)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L285: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop ; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278 nop ; not filled. L284: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36)>>16)&0xffff addui r1,r1,(LC36)&0xffff sw 4(r29),r1 jal _dstrstr nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288 nop ; not filled. L289: addi r29,r29,#-8 lhi r12,((LC37)>>16)&0xffff addui r12,r12,(LC37)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L288: addi r1,r0,#-1 j L278 nop ; not filled. L287: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop ; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r1,r0,r3 addi r29,r29,#16 L278: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39: .ascii " terminated at %d.\n\000" .align 2 LC40: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41: .ascii "New address is 0x%x.\n\000" .align 2 LC42: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#272 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292 nop ; not filled. addi r2,r0,#200 L292: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293 nop ; not filled. addi r1,r0,#0 j L347 nop ; not filled. L293: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294 nop ; not filled. L295: addi r29,r29,#-16 lhi r12,((LC38)>>16)&0xffff addui r12,r12,(LC38)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop ; not filled. addi r29,r29,#16 L294: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350 nop ; not filled. L296: addi r2,r2,#-1 addi r5,r5,#-1 L350: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296 nop ; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300 nop ; not filled. L301: addi r29,r29,#-8 lhi r12,((LC39)>>16)&0xffff addui r12,r12,(LC39)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L300: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302 nop ; not filled. L303: addi r29,r29,#-8 lhi r12,((LC40)>>16)&0xffff addui r12,r12,(LC40)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L302: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305 nop ; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349 nop ; not filled. sgti r1,r5,#0 bnez r1,L305 nop ; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311 nop ; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308 nop ; not filled. L311: addi r29,r29,#-8 lhi r12,((LC41)>>16)&0xffff addui r12,r12,(LC41)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L308: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305 nop ; not filled. L349: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315: lw r1,-220(r30) j L351 nop ; not filled. L318: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318 nop ; not filled. seqi r1,r31,#9 bnez r1,L318 nop ; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320 nop ; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304 nop ; not filled. L320: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326 nop ; not filled. snei r1,r3,#65 bnez r1,L325 nop ; not filled. L326: addi r2,r0,#1 L325: snei r1,r2,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329 nop ; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329 nop ; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328 nop ; not filled. L329: addi r3,r0,#1 L328: snei r1,r3,#0 beqz r1,L304 nop ; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331 nop ; not filled. add r4,r0,r31 j L330 nop ; not filled. L331: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333 nop ; not filled. addi r4,r2,#-87 j L330 nop ; not filled. L333: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330 nop ; not filled. addi r4,r3,#-55 L330: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338 nop ; not filled. add r2,r0,r31 j L337 nop ; not filled. L338: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340 nop ; not filled. addi r2,r2,#-87 j L337 nop ; not filled. L340: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337 nop ; not filled. addi r2,r3,#-55 L337: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315 nop ; not filled. L305: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345 nop ; not filled. L346: addi r29,r29,#-16 lhi r12,((LC42)>>16)&0xffff addui r12,r12,(LC42)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L345: add r1,r0,r5 L347: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64: .space 120 .align 2 LC43: .ascii "Got %d arguments.\n\000" .align 2 LC44: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC45: .ascii "Argument count is %d.\n\000" .align 2 LC46: .ascii "Argument %d is %s.\n\000" .align 2 LC47: .ascii "Converted %s to %d=%s\n\000" _buf65: .space 200 .align 2 LC48: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC49: .ascii "Option %s not recognized.\n\000" .align 2 LC50: .ascii "About to initialize queues.\n\000" .align 2 LC51: .ascii "After initializing queues.\n\000" .align 2 LC52: .ascii "After initializing memory.\n\000" .align 2 LC53: .ascii "After initializing processes.\n\000" .align 2 LC54: .ascii "After initializing synchronization tools.\n\000" .align 2 LC55: .ascii "After initializing keyboard.\n\000" .align 2 LC56: .ascii "vm\000" .align 2 LC57: .ascii "VM Descriptor is %d\n\000" .align 2 LC58: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC59: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#200 ; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop ; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb 1(r1),r21 jal _MyFuncRetZero nop ; not filled. addi r29,r29,#-8 lhi r21,((LC43)>>16)&0xffff addui r21,r21,(LC43)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. jal _MemoryGetSize nop ; not filled. addi r29,r29,#-8 lhi r21,((LC44)>>16)&0xffff addui r21,r21,(LC44)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop ; not filled. lhi r21,((LC45)>>16)&0xffff addui r21,r21,(LC45)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354 nop ; not filled. add r2,r0,r20 L356: addi r29,r29,#-16 lhi r21,((LC46)>>16)&0xffff addui r21,r21,(LC46)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop ; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356 nop ; not filled. L354: jal _FsModuleInit nop ; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359 nop ; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65)>>16)&0xffff addui r15,r15,(_buf65)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360 nop ; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366 nop ; not filled. sgti r1,r2,#102 bnez r1,L378 nop ; not filled. seqi r1,r2,#68 beqz r1,L376 nop ; not filled. j L364 nop ; not filled. L378: seqi r1,r2,#105 bnez r1,L365 nop ; not filled. seqi r1,r2,#117 beqz r1,L376 nop ; not filled. j L375 nop ; not filled. L364: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop ; not filled. j L411 nop ; not filled. L365: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop ; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop ; not filled. lhi r21,((LC47)>>16)&0xffff addui r21,r21,(LC47)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 j L363 nop ; not filled. L366: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r10,r0,r1 lhi r21,((LC27)>>16)&0xffff addui r21,r21,(LC27)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop ; not filled. lhi r21,((LC28)>>16)&0xffff addui r21,r21,(LC28)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop ; not filled. lhi r21,((LC29)>>16)&0xffff addui r21,r21,(LC29)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop ; not filled. addi r29,r29,#24 lhi r11,((_buf65+3)>>16)&0xffff addui r11,r11,(_buf65+3)&0xffff L367: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65)>>16)&0xffff addui r21,r21,(_buf65)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop ; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368 nop ; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367 nop ; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373: addi r29,r29,#-24 lhi r21,((LC48)>>16)&0xffff addui r21,r21,(LC48)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373 nop ; not filled. j L367 nop ; not filled. L368: addi r29,r29,#-8 sw (r29),r10 jal _close nop ; not filled. j L411 nop ; not filled. L375: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363 nop ; not filled. L376: addi r29,r29,#-8 lhi r21,((LC49)>>16)&0xffff addui r21,r21,(LC49)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop ; not filled. L411: addi r29,r29,#8 L363: snei r1,r16,#0 bnez r1,L359 nop ; not filled. L360: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361 nop ; not filled. L359: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381 nop ; not filled. L382: addi r29,r29,#-8 lhi r21,((LC50)>>16)&0xffff addui r21,r21,(LC50)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L381: jal _QueueModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383 nop ; not filled. L384: addi r29,r29,#-8 lhi r21,((LC51)>>16)&0xffff addui r21,r21,(LC51)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L383: jal _MemoryModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385 nop ; not filled. L386: addi r29,r29,#-8 lhi r21,((LC52)>>16)&0xffff addui r21,r21,(LC52)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L385: jal _ProcessModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387 nop ; not filled. L388: addi r29,r29,#-8 lhi r21,((LC53)>>16)&0xffff addui r21,r21,(LC53)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L387: jal _SynchModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389 nop ; not filled. L390: addi r29,r29,#-8 lhi r21,((LC54)>>16)&0xffff addui r21,r21,(LC54)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L389: jal _KbdModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391 nop ; not filled. L392: addi r29,r29,#-8 lhi r21,((LC55)>>16)&0xffff addui r21,r21,(LC55)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L391: addi r2,r30,#-128 addi r3,r30,#-29 L396: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396 nop ; not filled. addi r29,r29,#-8 lhi r21,((LC56)>>16)&0xffff addui r21,r21,(LC56)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop ; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398 nop ; not filled. L399: addi r29,r29,#-8 lhi r21,((LC57)>>16)&0xffff addui r21,r21,(LC57)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L398: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop ; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop ; not filled. sw (r29),r9 jal _FsClose nop ; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400 nop ; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402 nop ; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402 nop ; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406 nop ; not filled. L402: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop ; not filled. addi r29,r29,#48 L400: jal _SysprocCreateProcesses nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407 nop ; not filled. L408: addi r29,r29,#-8 lhi r21,((LC58)>>16)&0xffff addui r21,r21,(LC58)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L407: addi r29,r29,#-8 lhi r3,((_processQuantum)>>16)&0xffff addui r3,r3,(_processQuantum)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409 nop ; not filled. L410: addi r29,r29,#-8 lhi r21,((LC59)>>16)&0xffff addui r21,r21,(LC59)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L409: jal _intrreturn nop ; not filled. jal _exitsim nop ; not filled. jal _exit nop .endproc _main .data .align 2 LC61: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,((LC61)>>16)&0xffff addui r1,r1,(LC61)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1032 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420 nop ; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422: addi r2,r0,#0 add r3,r4,r5 L423: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423 nop ; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422 nop ; not filled. L420: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _ProcessSchedule nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs: .space 12 .align 2 _runQueue: .space 12 .align 2 _waitQueue: .space 12 .align 2 _zombieQueue: .space 12 .align 2 _pcbs: .space 3840 .text .align 2 .proc _ProcessExit _ProcessExit: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _exit nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit

option1/lab4_1/src/userprog.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 116 4 ; Text size: 3060 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a546573 .ascii "\nTesting case %d\n\000" 12 00002004 74696e67 12 00002008 20636173 12 0000200c 65202564 12 00002010 0a00 13 00002012 .align 2 14 00002014 LC1_LF0: 15 00002014 0a557361 .ascii "\nUsage: \000" 15 00002018 67653a20 15 0000201c 00 16 0000201d .align 2 17 00002020 LC2_LF0: 18 00002020 205b6361 .ascii " [case id]\n\n\000" 18 00002024 73652069 18 00002028 645d0a0a 18 0000202c 00 19 0000202d .align 2 20 00002030 LC3_LF0: 21 00002030 75736572 .ascii "userprog1.dlx.obj\000" 21 00002034 70726f67 21 00002038 312e646c 21 0000203c 782e6f62 21 00002040 6a00 22 00002042 .align 2 23 00002044 LC4_LF0: 24 00002044 75736572 .ascii "userprog2.dlx.obj\000" 24 00002048 70726f67 24 0000204c 322e646c 24 00002050 782e6f62 24 00002054 6a00 25 00002056 .align 2 26 00002058 LC5_LF0: 27 00002058 54657374 .ascii "Test case %d not supported\n\000" 27 0000205c 20636173 27 00002060 65202564 27 00002064 206e6f74 27 00002068 20737570 27 0000206c 706f7274 27 00002070 65640a00 28 00002074 .text 29 00001000 .align 2 30 00001000 .proc _main 31 00001000 .global _main 32 00001000 _main: 33 ; Function 'main'; 0 bytes of locals, 0 regs to save. 34 00001000 afbefffc sw -4(r29),r30; push fp 35 00001004 001df020 add r30,r0,r29; fp = sp 36 00001008 afbffff8 sw -8(r29),r31; push ret addr 37 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 38 00001010 8fc20000 lw r2,(r30) 39 00001014 8fc30004 lw r3,4(r30) 40 00001018 0c000bd0 jal ___main 41 0000101c 54000000 nop; not filled. 42 00001020 60410002 seqi r1,r2,#2 43 00001024 10200050 beqz r1,L14_LF0 44 00001028 54000000 nop; not filled. 45 0000102c 23bdfff0 addi r29,r29,#-16 46 00001030 8c630004 lw r3,4(r3) 47 00001034 afa30000 sw (r29),r3 48 00001038 20040000 addi r4,r0,#0 49 0000103c afa40004 sw 4(r29),r4 50 00001040 2004000a addi r4,r0,#10 51 00001044 afa40008 sw 8(r29),r4 52 00001048 0c0008b4 jal _dstrtol 53 0000104c 54000000 nop; not filled. 54 00001050 00011020 add r2,r0,r1 55 00001054 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 56 00001058 24842000 addui r4,r4,(LC0_LF0)&0xffff 57 0000105c afa40000 sw (r29),r4 58 00001060 afa20004 sw 4(r29),r2 59 00001064 0c000134 jal _Printf 60 00001068 54000000 nop; not filled. 61 0000106c 23bd0010 addi r29,r29,#16 62 00001070 08000048 j L12_LF0 63 00001074 54000000 nop; not filled. 64 00001078 L14_LF0: 65 00001078 23bdfff8 addi r29,r29,#-8 66 0000107c 3c040000 lhi r4,((LC1_LF0)>>16)&0xffff 67 00001080 24842014 addui r4,r4,(LC1_LF0)&0xffff 68 00001084 afa40000 sw (r29),r4 69 00001088 0c000110 jal _Printf 70 0000108c 54000000 nop; not filled. 71 00001090 8c630000 lw r3,(r3) 72 00001094 afa30000 sw (r29),r3 73 00001098 0c000100 jal _Printf 74 0000109c 54000000 nop; not filled. 75 000010a0 3c040000 lhi r4,((LC2_LF0)>>16)&0xffff 76 000010a4 24842020 addui r4,r4,(LC2_LF0)&0xffff 77 000010a8 afa40000 sw (r29),r4 78 000010ac 0c0000ec jal _Printf 79 000010b0 54000000 nop; not filled. 80 000010b4 0c000b28 jal _exit 81 000010b8 54000000 nop; not filled. 82 000010bc L12_LF0: 83 000010bc 60410001 seqi r1,r2,#1 84 000010c0 14200018 bnez r1,L17_LF0 85 000010c4 54000000 nop; not filled. 86 000010c8 60410002 seqi r1,r2,#2 87 000010cc 1020005c beqz r1,L19_LF0 88 000010d0 54000000 nop; not filled. 89 000010d4 0800002c j L18_LF0 90 000010d8 54000000 nop; not filled. 91 000010dc L17_LF0: 92 000010dc 23bdfff8 addi r29,r29,#-8 93 000010e0 3c040000 lhi r4,((LC3_LF0)>>16)&0xffff 94 000010e4 24842030 addui r4,r4,(LC3_LF0)&0xffff 95 000010e8 afa40000 sw (r29),r4 96 000010ec 20040000 addi r4,r0,#0 97 000010f0 afa40004 sw 4(r29),r4 98 000010f4 0c0000bc jal _process_create 99 000010f8 54000000 nop; not filled. 100 000010fc 08000048 j L21_LF0 101 00001100 54000000 nop; not filled. 102 00001104 L18_LF0: 103 00001104 23bdfff8 addi r29,r29,#-8 104 00001108 3c040000 lhi r4,((LC4_LF0)>>16)&0xffff 105 0000110c 24842044 addui r4,r4,(LC4_LF0)&0xffff 106 00001110 afa40000 sw (r29),r4 107 00001114 20040000 addi r4,r0,#0 108 00001118 afa40004 sw 4(r29),r4 109 0000111c 0c000094 jal _process_create 110 00001120 54000000 nop; not filled. 111 00001124 08000020 j L21_LF0 112 00001128 54000000 nop; not filled. 113 0000112c L19_LF0: 114 0000112c 23bdfff8 addi r29,r29,#-8 115 00001130 3c040000 lhi r4,((LC5_LF0)>>16)&0xffff 116 00001134 24842058 addui r4,r4,(LC5_LF0)&0xffff 117 00001138 afa40000 sw (r29),r4 118 0000113c afa20004 sw 4(r29),r2 119 00001140 0c000058 jal _Printf 120 00001144 54000000 nop; not filled. 121 00001148 L21_LF0: 122 00001148 23bd0008 addi r29,r29,#8 123 0000114c 0c000a90 jal _exit 124 00001150 54000000 nop 125 00001154 .endproc _main 126 ;;; 127 ;;; Stub functions for DLX traps. 128 ;;; 129 ;;; Ethan L. Miller, 1999. Released to the public domain. 130 ;;; 131 ;;; The traps such as Open and Close 132 ;;; (note the capital letters) are for use by user programs. The traps 133 ;;; with names such as open and close (lower case) are for use by the OS. 134 ;;; 137 00001154 .align 2 139 ;;; The following are the traps to be used by user-level programs 140 ;;; 142 00001154 .align 2 143 00001154 .proc _Open 144 00001154 .global _Open 145 00001154 _Open: 146 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 147 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 148 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 149 00001154 44000213 trap #0x213 150 00001158 4be00000 jr r31 151 0000115c 54000000 nop 152 00001160 .endproc _Open 154 00001160 .proc _Close 155 00001160 .global _Close 156 00001160 _Close: 157 00001160 44000214 trap #0x214 158 00001164 4be00000 jr r31 159 00001168 54000000 nop 160 0000116c .endproc _Close 162 0000116c .proc _Read 163 0000116c .global _Read 164 0000116c _Read: 165 0000116c 44000210 trap #0x210 166 00001170 4be00000 jr r31 167 00001174 54000000 nop 168 00001178 .endproc _Read 170 00001178 .proc _Write 171 00001178 .global _Write 172 00001178 _Write: 173 00001178 44000211 trap #0x211 174 0000117c 4be00000 jr r31 175 00001180 54000000 nop 176 00001184 .endproc _Write 178 00001184 .proc _Lseek 179 00001184 .global _Lseek 180 00001184 _Lseek: 181 00001184 44000212 trap #0x212 182 00001188 4be00000 jr r31 183 0000118c 54000000 nop 184 00001190 .endproc _Lseek 186 00001190 .proc _Putchar 187 00001190 .global _Putchar 188 00001190 _Putchar: 189 00001190 44000280 trap #0x280 190 00001194 4be00000 jr r31 191 00001198 54000000 nop 192 0000119c .endproc _Putchar 194 0000119c .proc _Printf 195 0000119c .global _Printf 196 0000119c _Printf: 197 0000119c 44000201 trap #0x201 198 000011a0 4be00000 jr r31 199 000011a4 54000000 nop 200 000011a8 .endproc _Printf 202 000011a8 .proc _getpid 203 000011a8 .global _getpid 204 000011a8 _getpid: 205 000011a8 44000431 trap #0x431 206 000011ac 4be00000 jr r31 207 000011b0 54000000 nop 208 000011b4 .endproc _getpid 210 000011b4 .proc _process_create 211 000011b4 .global _process_create 212 000011b4 _process_create: 213 000011b4 44000432 trap #0x432 214 000011b8 4be00000 jr r31 215 000011bc 54000000 nop 216 000011c0 .endproc _process_create 219 000011c0 .proc _sem_create 220 000011c0 .global _sem_create 221 000011c0 _sem_create: 222 000011c0 44000450 trap #0x450 223 000011c4 4be00000 jr r31 224 000011c8 54000000 nop 225 000011cc .endproc _sem_create 227 000011cc .proc _sem_wait 228 000011cc .global _sem_wait 229 000011cc _sem_wait: 230 000011cc 44000451 trap #0x451 231 000011d0 4be00000 jr r31 232 000011d4 54000000 nop 233 000011d8 .endproc _sem_wait 235 000011d8 .proc _sem_signal 236 000011d8 .global _sem_signal 237 000011d8 _sem_signal: 238 000011d8 44000452 trap #0x452 239 000011dc 4be00000 jr r31 240 000011e0 54000000 nop 241 000011e4 .endproc _sem_signal 244 ; Compiled by GCC 246 000011e4 .align 2 247 000011e4 .proc _isspace 248 000011e4 .global _isspace 249 000011e4 _isspace: 250 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 251 000011e4 afbefffc sw -4(r29),r30; push fp 252 000011e8 001df020 add r30,r0,r29; fp = sp 253 000011ec afbffff8 sw -8(r29),r31; push ret addr 254 000011f0 2fbd0010 subui r29,r29,#16; alloc local storage 255 000011f4 afa20000 sw 0(r29),r2 256 000011f8 83c20003 lb r2,3(r30) 257 000011fc 201f0000 addi r31,r0,#0 258 00001200 304100ff andi r1,r2,#0x00ff 259 00001204 60210020 seqi r1,r1,#32 260 00001208 14200018 bnez r1,L6_LF2 261 0000120c 54000000 nop; not filled. 262 00001210 2041fff7 addi r1,r2,#-9 263 00001214 302100ff andi r1,r1,#0x00ff 264 00001218 70210001 sleui r1,r1,#1 265 0000121c 10200008 beqz r1,L5_LF2 266 00001220 54000000 nop; not filled. 267 00001224 L6_LF2: 268 00001224 201f0001 addi r31,r0,#1 269 00001228 L5_LF2: 270 00001228 001f0820 add r1,r0,r31 271 0000122c 8fa20000 lw r2,0(r29) 272 00001230 8fdffff8 lw r31,-8(r30) 273 00001234 001ee820 add r29,r0,r30 274 00001238 8fdefffc lw r30,-4(r30) 275 0000123c 4be00000 jr r31 276 00001240 54000000 nop 277 00001244 .endproc _isspace 278 00001244 .align 2 279 00001244 .proc _isxdigit 280 00001244 .global _isxdigit 281 00001244 _isxdigit: 282 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 283 00001244 afbefffc sw -4(r29),r30; push fp 284 00001248 001df020 add r30,r0,r29; fp = sp 285 0000124c afbffff8 sw -8(r29),r31; push ret addr 286 00001250 2fbd0010 subui r29,r29,#16; alloc local storage 287 00001254 afa20000 sw 0(r29),r2 288 00001258 83df0003 lb r31,3(r30) 289 0000125c 20020000 addi r2,r0,#0 290 00001260 23e1ffd0 addi r1,r31,#-48 291 00001264 302100ff andi r1,r1,#0x00ff 292 00001268 70210009 sleui r1,r1,#9 293 0000126c 14200028 bnez r1,L12_LF2 294 00001270 54000000 nop; not filled. 295 00001274 23e1ff9f addi r1,r31,#-97 296 00001278 302100ff andi r1,r1,#0x00ff 297 0000127c 70210005 sleui r1,r1,#5 298 00001280 14200014 bnez r1,L12_LF2 299 00001284 54000000 nop; not filled. 300 00001288 33e100ff andi r1,r31,#0x00ff 301 0000128c 64210041 snei r1,r1,#65 302 00001290 14200008 bnez r1,L11_LF2 303 00001294 54000000 nop; not filled. 304 00001298 L12_LF2: 305 00001298 20020001 addi r2,r0,#1 306 0000129c L11_LF2: 307 0000129c 00020820 add r1,r0,r2 308 000012a0 8fa20000 lw r2,0(r29) 309 000012a4 8fdffff8 lw r31,-8(r30) 310 000012a8 001ee820 add r29,r0,r30 311 000012ac 8fdefffc lw r30,-4(r30) 312 000012b0 4be00000 jr r31 313 000012b4 54000000 nop 314 000012b8 .endproc _isxdigit 315 000012b8 .align 2 316 000012b8 .proc _dstrcpy 317 000012b8 .global _dstrcpy 318 000012b8 _dstrcpy: 319 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 320 000012b8 afbefffc sw -4(r29),r30; push fp 321 000012bc 001df020 add r30,r0,r29; fp = sp 322 000012c0 afbffff8 sw -8(r29),r31; push ret addr 323 000012c4 2fbd0010 subui r29,r29,#16; alloc local storage 324 000012c8 afa20000 sw 0(r29),r2 325 000012cc afa30004 sw 4(r29),r3 326 000012d0 8fdf0000 lw r31,(r30) 327 000012d4 8fc20004 lw r2,4(r30) 328 000012d8 001f1820 add r3,r0,r31 329 000012dc L19_LF2: 330 000012dc 80410000 lb r1,(r2) 331 000012e0 a3e10000 sb (r31),r1 332 000012e4 20420001 addi r2,r2,#1 333 000012e8 23ff0001 addi r31,r31,#1 334 000012ec 302100ff andi r1,r1,#0x00ff 335 000012f0 64210000 snei r1,r1,#0 336 000012f4 1420ffe4 bnez r1,L19_LF2 337 000012f8 54000000 nop; not filled. 338 000012fc 00030820 add r1,r0,r3 339 00001300 8fa20000 lw r2,0(r29) 340 00001304 8fa30004 lw r3,4(r29) 341 00001308 8fdffff8 lw r31,-8(r30) 342 0000130c 001ee820 add r29,r0,r30 343 00001310 8fdefffc lw r30,-4(r30) 344 00001314 4be00000 jr r31 345 00001318 54000000 nop 346 0000131c .endproc _dstrcpy 347 0000131c .align 2 348 0000131c .proc _dstrncpy 349 0000131c .global _dstrncpy 350 0000131c _dstrncpy: 351 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 352 0000131c afbefffc sw -4(r29),r30; push fp 353 00001320 001df020 add r30,r0,r29; fp = sp 354 00001324 afbffff8 sw -8(r29),r31; push ret addr 355 00001328 2fbd0018 subui r29,r29,#24; alloc local storage 356 0000132c afa20000 sw 0(r29),r2 357 00001330 afa30004 sw 4(r29),r3 358 00001334 afa40008 sw 8(r29),r4 359 00001338 8fc20000 lw r2,(r30) 360 0000133c 8fc30004 lw r3,4(r30) 361 00001340 8fdf0008 lw r31,8(r30) 362 00001344 00022020 add r4,r0,r2 363 00001348 08000024 j L37_LF2 364 0000134c 54000000 nop; not filled. 365 00001350 L34_LF2: 366 00001350 80610000 lb r1,(r3) 367 00001354 a0410000 sb (r2),r1 368 00001358 20630001 addi r3,r3,#1 369 0000135c 20420001 addi r2,r2,#1 370 00001360 302100ff andi r1,r1,#0x00ff 371 00001364 64210000 snei r1,r1,#0 372 00001368 10200018 beqz r1,L32_LF2 373 0000136c 54000000 nop; not filled. 374 00001370 L37_LF2: 375 00001370 001f0820 add r1,r0,r31 376 00001374 23ffffff addi r31,r31,#-1 377 00001378 70210000 slei r1,r1,#0 378 0000137c 1020ffd0 beqz r1,L34_LF2 379 00001380 54000000 nop; not filled. 380 00001384 L32_LF2: 381 00001384 00040820 add r1,r0,r4 382 00001388 8fa20000 lw r2,0(r29) 383 0000138c 8fa30004 lw r3,4(r29) 384 00001390 8fa40008 lw r4,8(r29) 385 00001394 8fdffff8 lw r31,-8(r30) 386 00001398 001ee820 add r29,r0,r30 387 0000139c 8fdefffc lw r30,-4(r30) 388 000013a0 4be00000 jr r31 389 000013a4 54000000 nop 390 000013a8 .endproc _dstrncpy 391 000013a8 .align 2 392 000013a8 .proc _dstrcat 393 000013a8 .global _dstrcat 394 000013a8 _dstrcat: 395 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 396 000013a8 afbefffc sw -4(r29),r30; push fp 397 000013ac 001df020 add r30,r0,r29; fp = sp 398 000013b0 afbffff8 sw -8(r29),r31; push ret addr 399 000013b4 2fbd0010 subui r29,r29,#16; alloc local storage 400 000013b8 afa20000 sw 0(r29),r2 401 000013bc afa30004 sw 4(r29),r3 402 000013c0 8fdf0000 lw r31,(r30) 403 000013c4 001f1820 add r3,r0,r31 404 000013c8 90610000 lbu r1,(r3) 405 000013cc 64210000 snei r1,r1,#0 406 000013d0 10200018 beqz r1,L50_LF2 407 000013d4 54000000 nop; not filled. 408 000013d8 L51_LF2: 409 000013d8 23ff0001 addi r31,r31,#1 410 000013dc 93e10000 lbu r1,(r31) 411 000013e0 64210000 snei r1,r1,#0 412 000013e4 1420fff0 bnez r1,L51_LF2 413 000013e8 54000000 nop; not filled. 414 000013ec L50_LF2: 415 000013ec 001f1020 add r2,r0,r31 416 000013f0 8fdf0004 lw r31,4(r30) 417 000013f4 L54_LF2: 418 000013f4 83e10000 lb r1,(r31) 419 000013f8 a0410000 sb (r2),r1 420 000013fc 23ff0001 addi r31,r31,#1 421 00001400 20420001 addi r2,r2,#1 422 00001404 302100ff andi r1,r1,#0x00ff 423 00001408 64210000 snei r1,r1,#0 424 0000140c 1420ffe4 bnez r1,L54_LF2 425 00001410 54000000 nop; not filled. 426 00001414 00030820 add r1,r0,r3 427 00001418 8fa20000 lw r2,0(r29) 428 0000141c 8fa30004 lw r3,4(r29) 429 00001420 8fdffff8 lw r31,-8(r30) 430 00001424 001ee820 add r29,r0,r30 431 00001428 8fdefffc lw r30,-4(r30) 432 0000142c 4be00000 jr r31 433 00001430 54000000 nop 434 00001434 .endproc _dstrcat 435 00001434 .align 2 436 00001434 .proc _dstrncmp 437 00001434 .global _dstrncmp 438 00001434 _dstrncmp: 439 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 440 00001434 afbefffc sw -4(r29),r30; push fp 441 00001438 001df020 add r30,r0,r29; fp = sp 442 0000143c afbffff8 sw -8(r29),r31; push ret addr 443 00001440 2fbd0018 subui r29,r29,#24; alloc local storage 444 00001444 afa20000 sw 0(r29),r2 445 00001448 afa30004 sw 4(r29),r3 446 0000144c afa40008 sw 8(r29),r4 447 00001450 afa5000c sw 12(r29),r5 448 00001454 8fc30000 lw r3,(r30) 449 00001458 8fc40004 lw r4,4(r30) 450 0000145c 8fc50008 lw r5,8(r30) 451 00001460 20020000 addi r2,r0,#0 452 00001464 0045082a slt r1,r2,r5 453 00001468 1020003c beqz r1,L73_LF2 454 0000146c 54000000 nop; not filled. 455 00001470 L75_LF2: 456 00001470 909f0000 lbu r31,(r4) 457 00001474 67e10000 snei r1,r31,#0 458 00001478 10200038 beqz r1,L86_LF2 459 0000147c 54000000 nop; not filled. 460 00001480 90610000 lbu r1,(r3) 461 00001484 003f0829 sne r1,r1,r31 462 00001488 1420001c bnez r1,L73_LF2 463 0000148c 54000000 nop; not filled. 464 00001490 20630001 addi r3,r3,#1 465 00001494 20840001 addi r4,r4,#1 466 00001498 20420001 addi r2,r2,#1 467 0000149c 0045082a slt r1,r2,r5 468 000014a0 1420ffcc bnez r1,L75_LF2 469 000014a4 54000000 nop; not filled. 470 000014a8 L73_LF2: 471 000014a8 00450828 seq r1,r2,r5 472 000014ac 10200010 beqz r1,L80_LF2 473 000014b0 54000000 nop; not filled. 474 000014b4 L86_LF2: 475 000014b4 20010000 addi r1,r0,#0 476 000014b8 08000028 j L84_LF2 477 000014bc 54000000 nop; not filled. 478 000014c0 L80_LF2: 479 000014c0 907f0000 lbu r31,(r3) 480 000014c4 90830000 lbu r3,(r4) 481 000014c8 03e30822 sub r1,r31,r3 482 000014cc 74210000 sgei r1,r1,#0 483 000014d0 2002ffff addi r2,r0,#-1 484 000014d4 10200008 beqz r1,L82_LF2 485 000014d8 54000000 nop; not filled. 486 000014dc 03e31029 sne r2,r31,r3 487 000014e0 L82_LF2: 488 000014e0 00020820 add r1,r0,r2 489 000014e4 L84_LF2: 490 000014e4 8fa20000 lw r2,0(r29) 491 000014e8 8fa30004 lw r3,4(r29) 492 000014ec 8fa40008 lw r4,8(r29) 493 000014f0 8fa5000c lw r5,12(r29) 494 000014f4 8fdffff8 lw r31,-8(r30) 495 000014f8 001ee820 add r29,r0,r30 496 000014fc 8fdefffc lw r30,-4(r30) 497 00001500 4be00000 jr r31 498 00001504 54000000 nop 499 00001508 .endproc _dstrncmp 500 00001508 .align 2 501 00001508 .proc _dstrlen 502 00001508 .global _dstrlen 503 00001508 _dstrlen: 504 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 505 00001508 afbefffc sw -4(r29),r30; push fp 506 0000150c 001df020 add r30,r0,r29; fp = sp 507 00001510 afbffff8 sw -8(r29),r31; push ret addr 508 00001514 2fbd0010 subui r29,r29,#16; alloc local storage 509 00001518 afa20000 sw 0(r29),r2 510 0000151c 8fdf0000 lw r31,(r30) 511 00001520 20020000 addi r2,r0,#0 512 00001524 08000008 j L97_LF2 513 00001528 54000000 nop; not filled. 514 0000152c L95_LF2: 515 0000152c 20420001 addi r2,r2,#1 516 00001530 L97_LF2: 517 00001530 93e10000 lbu r1,(r31) 518 00001534 23ff0001 addi r31,r31,#1 519 00001538 64210000 snei r1,r1,#0 520 0000153c 1420ffec bnez r1,L95_LF2 521 00001540 54000000 nop; not filled. 522 00001544 00020820 add r1,r0,r2 523 00001548 8fa20000 lw r2,0(r29) 524 0000154c 8fdffff8 lw r31,-8(r30) 525 00001550 001ee820 add r29,r0,r30 526 00001554 8fdefffc lw r30,-4(r30) 527 00001558 4be00000 jr r31 528 0000155c 54000000 nop 529 00001560 .endproc _dstrlen 530 00001560 .align 2 531 00001560 .proc _dstrstr 532 00001560 .global _dstrstr 533 00001560 _dstrstr: 534 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 535 00001560 afbefffc sw -4(r29),r30; push fp 536 00001564 001df020 add r30,r0,r29; fp = sp 537 00001568 afbffff8 sw -8(r29),r31; push ret addr 538 0000156c 2fbd0020 subui r29,r29,#32; alloc local storage 539 00001570 afa20000 sw 0(r29),r2 540 00001574 afa30004 sw 4(r29),r3 541 00001578 afa40008 sw 8(r29),r4 542 0000157c afa5000c sw 12(r29),r5 543 00001580 afa60010 sw 16(r29),r6 544 00001584 afa70014 sw 20(r29),r7 545 00001588 8fc50000 lw r5,(r30) 546 0000158c 8fc70004 lw r7,4(r30) 547 00001590 20030000 addi r3,r0,#0 548 00001594 90e10000 lbu r1,(r7) 549 00001598 20e20001 addi r2,r7,#1 550 0000159c 64210000 snei r1,r1,#0 551 000015a0 1020001c beqz r1,L125_LF2 552 000015a4 54000000 nop; not filled. 553 000015a8 L126_LF2: 554 000015a8 20630001 addi r3,r3,#1 555 000015ac 90410000 lbu r1,(r2) 556 000015b0 20420001 addi r2,r2,#1 557 000015b4 64210000 snei r1,r1,#0 558 000015b8 1420ffec bnez r1,L126_LF2 559 000015bc 54000000 nop; not filled. 560 000015c0 L125_LF2: 561 000015c0 00033020 add r6,r0,r3 562 000015c4 080000ac j L149_LF2 563 000015c8 54000000 nop; not filled. 564 000015cc L130_LF2: 565 000015cc 00051820 add r3,r0,r5 566 000015d0 00072020 add r4,r0,r7 567 000015d4 20020000 addi r2,r0,#0 568 000015d8 0046082a slt r1,r2,r6 569 000015dc 1020003c beqz r1,L134_LF2 570 000015e0 54000000 nop; not filled. 571 000015e4 L136_LF2: 572 000015e4 909f0000 lbu r31,(r4) 573 000015e8 67e10000 snei r1,r31,#0 574 000015ec 10200038 beqz r1,L150_LF2 575 000015f0 54000000 nop; not filled. 576 000015f4 90610000 lbu r1,(r3) 577 000015f8 003f0829 sne r1,r1,r31 578 000015fc 1420001c bnez r1,L134_LF2 579 00001600 54000000 nop; not filled. 580 00001604 20630001 addi r3,r3,#1 581 00001608 20840001 addi r4,r4,#1 582 0000160c 20420001 addi r2,r2,#1 583 00001610 0046082a slt r1,r2,r6 584 00001614 1420ffcc bnez r1,L136_LF2 585 00001618 54000000 nop; not filled. 586 0000161c L134_LF2: 587 0000161c 00460828 seq r1,r2,r6 588 00001620 10200010 beqz r1,L141_LF2 589 00001624 54000000 nop; not filled. 590 00001628 L150_LF2: 591 00001628 20010000 addi r1,r0,#0 592 0000162c 08000028 j L132_LF2 593 00001630 54000000 nop; not filled. 594 00001634 L141_LF2: 595 00001634 90630000 lbu r3,(r3) 596 00001638 90820000 lbu r2,(r4) 597 0000163c 00620822 sub r1,r3,r2 598 00001640 74210000 sgei r1,r1,#0 599 00001644 201fffff addi r31,r0,#-1 600 00001648 10200008 beqz r1,L143_LF2 601 0000164c 54000000 nop; not filled. 602 00001650 0062f829 sne r31,r3,r2 603 00001654 L143_LF2: 604 00001654 001f0820 add r1,r0,r31 605 00001658 L132_LF2: 606 00001658 64210000 snei r1,r1,#0 607 0000165c 14200010 bnez r1,L131_LF2 608 00001660 54000000 nop; not filled. 609 00001664 00050820 add r1,r0,r5 610 00001668 0800001c j L146_LF2 611 0000166c 54000000 nop; not filled. 612 00001670 L131_LF2: 613 00001670 20a50001 addi r5,r5,#1 614 00001674 L149_LF2: 615 00001674 90a10000 lbu r1,(r5) 616 00001678 64210000 snei r1,r1,#0 617 0000167c 1420ff4c bnez r1,L130_LF2 618 00001680 54000000 nop; not filled. 619 00001684 20010000 addi r1,r0,#0 620 00001688 L146_LF2: 621 00001688 8fa20000 lw r2,0(r29) 622 0000168c 8fa30004 lw r3,4(r29) 623 00001690 8fa40008 lw r4,8(r29) 624 00001694 8fa5000c lw r5,12(r29) 625 00001698 8fa60010 lw r6,16(r29) 626 0000169c 8fa70014 lw r7,20(r29) 627 000016a0 8fdffff8 lw r31,-8(r30) 628 000016a4 001ee820 add r29,r0,r30 629 000016a8 8fdefffc lw r30,-4(r30) 630 000016ac 4be00000 jr r31 631 000016b0 54000000 nop 632 000016b4 .endproc _dstrstr 633 000016b4 .align 2 634 000016b4 .proc _dmindex 635 000016b4 .global _dmindex 636 000016b4 _dmindex: 637 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 638 000016b4 afbefffc sw -4(r29),r30; push fp 639 000016b8 001df020 add r30,r0,r29; fp = sp 640 000016bc afbffff8 sw -8(r29),r31; push ret addr 641 000016c0 2fbd0020 subui r29,r29,#32; alloc local storage 642 000016c4 afa20000 sw 0(r29),r2 643 000016c8 afa30004 sw 4(r29),r3 644 000016cc afa40008 sw 8(r29),r4 645 000016d0 afa5000c sw 12(r29),r5 646 000016d4 afa60010 sw 16(r29),r6 647 000016d8 8fc40000 lw r4,(r30) 648 000016dc 8fc60004 lw r6,4(r30) 649 000016e0 90810000 lbu r1,(r4) 650 000016e4 64210000 snei r1,r1,#0 651 000016e8 10200060 beqz r1,L164_LF2 652 000016ec 54000000 nop; not filled. 653 000016f0 00012820 add r5,r0,r1 654 000016f4 L165_LF2: 655 000016f4 00061020 add r2,r0,r6 656 000016f8 80df0000 lb r31,(r6) 657 000016fc 33e100ff andi r1,r31,#0x00ff 658 00001700 64210000 snei r1,r1,#0 659 00001704 1020003c beqz r1,L163_LF2 660 00001708 54000000 nop; not filled. 661 0000170c 90830000 lbu r3,(r4) 662 00001710 L169_LF2: 663 00001710 33e100ff andi r1,r31,#0x00ff 664 00001714 00610828 seq r1,r3,r1 665 00001718 10200010 beqz r1,L168_LF2 666 0000171c 54000000 nop; not filled. 667 00001720 00040820 add r1,r0,r4 668 00001724 08000028 j L173_LF2 669 00001728 54000000 nop; not filled. 670 0000172c L168_LF2: 671 0000172c 20420001 addi r2,r2,#1 672 00001730 805f0000 lb r31,(r2) 673 00001734 33e100ff andi r1,r31,#0x00ff 674 00001738 64210000 snei r1,r1,#0 675 0000173c 1420ffd0 bnez r1,L169_LF2 676 00001740 54000000 nop; not filled. 677 00001744 L163_LF2: 678 00001744 14a0ffac bnez r5,L165_LF2 679 00001748 54000000 nop; not filled. 680 0000174c L164_LF2: 681 0000174c 20010000 addi r1,r0,#0 682 00001750 L173_LF2: 683 00001750 8fa20000 lw r2,0(r29) 684 00001754 8fa30004 lw r3,4(r29) 685 00001758 8fa40008 lw r4,8(r29) 686 0000175c 8fa5000c lw r5,12(r29) 687 00001760 8fa60010 lw r6,16(r29) 688 00001764 8fdffff8 lw r31,-8(r30) 689 00001768 001ee820 add r29,r0,r30 690 0000176c 8fdefffc lw r30,-4(r30) 691 00001770 4be00000 jr r31 692 00001774 54000000 nop 693 00001778 .endproc _dmindex 694 00001778 .align 2 695 00001778 .proc _dindex 696 00001778 .global _dindex 697 00001778 _dindex: 698 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 699 00001778 afbefffc sw -4(r29),r30; push fp 700 0000177c 001df020 add r30,r0,r29; fp = sp 701 00001780 afbffff8 sw -8(r29),r31; push ret addr 702 00001784 2fbd0010 subui r29,r29,#16; alloc local storage 703 00001788 afa20000 sw 0(r29),r2 704 0000178c afa30004 sw 4(r29),r3 705 00001790 8fc20000 lw r2,(r30) 706 00001794 8fc30004 lw r3,4(r30) 707 00001798 08000024 j L187_LF2 708 0000179c 54000000 nop; not filled. 709 000017a0 L183_LF2: 710 000017a0 33e100ff andi r1,r31,#0x00ff 711 000017a4 00230828 seq r1,r1,r3 712 000017a8 10200010 beqz r1,L184_LF2 713 000017ac 54000000 nop; not filled. 714 000017b0 00020820 add r1,r0,r2 715 000017b4 08000020 j L186_LF2 716 000017b8 54000000 nop; not filled. 717 000017bc L184_LF2: 718 000017bc 20420001 addi r2,r2,#1 719 000017c0 L187_LF2: 720 000017c0 805f0000 lb r31,(r2) 721 000017c4 33e100ff andi r1,r31,#0x00ff 722 000017c8 64210000 snei r1,r1,#0 723 000017cc 1420ffd0 bnez r1,L183_LF2 724 000017d0 54000000 nop; not filled. 725 000017d4 20010000 addi r1,r0,#0 726 000017d8 L186_LF2: 727 000017d8 8fa20000 lw r2,0(r29) 728 000017dc 8fa30004 lw r3,4(r29) 729 000017e0 8fdffff8 lw r31,-8(r30) 730 000017e4 001ee820 add r29,r0,r30 731 000017e8 8fdefffc lw r30,-4(r30) 732 000017ec 4be00000 jr r31 733 000017f0 54000000 nop 734 000017f4 .endproc _dindex 735 000017f4 .align 2 736 000017f4 .proc _ditoa 737 000017f4 .global _ditoa 738 000017f4 _ditoa: 739 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 740 000017f4 afbefffc sw -4(r29),r30; push fp 741 000017f8 001df020 add r30,r0,r29; fp = sp 742 000017fc afbffff8 sw -8(r29),r31; push ret addr 743 00001800 2fbd0020 subui r29,r29,#32; alloc local storage 744 00001804 afa20000 sw 0(r29),r2 745 00001808 afa30004 sw 4(r29),r3 746 0000180c afa40008 sw 8(r29),r4 747 00001810 afa5000c sw 12(r29),r5 748 00001814 afa60010 sw 16(r29),r6 749 00001818 8fc30000 lw r3,(r30) 750 0000181c 8fc40004 lw r4,4(r30) 751 00001820 68610000 slti r1,r3,#0 752 00001824 10200010 beqz r1,L203_LF2 753 00001828 54000000 nop; not filled. 754 0000182c 2006002d addi r6,r0,(#0x2d)&0xff 755 00001830 08000014 j L216_LF2 756 00001834 54000000 nop; not filled. 757 00001838 L203_LF2: 758 00001838 64610000 snei r1,r3,#0 759 0000183c 14200018 bnez r1,L205_LF2 760 00001840 54000000 nop; not filled. 761 00001844 20060030 addi r6,r0,(#0x30)&0xff 762 00001848 L216_LF2: 763 00001848 a0860000 sb (r4),r6 764 0000184c 20840001 addi r4,r4,#1 765 00001850 0800007c j L204_LF2 766 00001854 54000000 nop; not filled. 767 00001858 L205_LF2: 768 00001858 201f0001 addi r31,r0,#1 769 0000185c 03e3082c sle r1,r31,r3 770 00001860 1020001c beqz r1,L208_LF2 771 00001864 54000000 nop; not filled. 772 00001868 L209_LF2: 773 00001868 53e10002 slli r1,r31,#0x2 774 0000186c 003f0820 add r1,r1,r31 775 00001870 503f0001 slli r31,r1,#0x1 776 00001874 03e3082c sle r1,r31,r3 777 00001878 1420ffec bnez r1,L209_LF2 778 0000187c 54000000 nop; not filled. 779 00001880 L208_LF2: 780 00001880 2005000a addi r5,r0,#10 781 00001884 L212_LF2: 782 00001884 03e00035 movi2fp f0,r31 783 00001888 00a00835 movi2fp f1,r5 784 0000188c 0401000f div f0,f0,f1 785 00001890 0000f834 movfp2i r31,f0 786 00001894 00600035 movi2fp f0,r3 787 00001898 03e00835 movi2fp f1,r31 788 0000189c 0401000f div f0,f0,f1 789 000018a0 00001034 movfp2i r2,f0 790 000018a4 20410030 addi r1,r2,#48 791 000018a8 a0810000 sb (r4),r1 792 000018ac 20840001 addi r4,r4,#1 793 000018b0 00400035 movi2fp f0,r2 794 000018b4 03e00835 movi2fp f1,r31 795 000018b8 0401000e mult f0,f0,f1 796 000018bc 00000834 movfp2i r1,f0 797 000018c0 00611822 sub r3,r3,r1 798 000018c4 6fe10001 sgti r1,r31,#1 799 000018c8 1420ffb8 bnez r1,L212_LF2 800 000018cc 54000000 nop; not filled. 801 000018d0 L204_LF2: 802 000018d0 20060000 addi r6,r0,(#0x0)&0xff 803 000018d4 a0860000 sb (r4),r6 804 000018d8 8fa20000 lw r2,0(r29) 805 000018dc 8fa30004 lw r3,4(r29) 806 000018e0 8fa40008 lw r4,8(r29) 807 000018e4 8fa5000c lw r5,12(r29) 808 000018e8 8fa60010 lw r6,16(r29) 809 000018ec 8fdffff8 lw r31,-8(r30) 810 000018f0 001ee820 add r29,r0,r30 811 000018f4 8fdefffc lw r30,-4(r30) 812 000018f8 4be00000 jr r31 813 000018fc 54000000 nop 814 00001900 .endproc _ditoa 815 00001900 .align 2 816 00001900 .proc _dstrtol 817 00001900 .global _dstrtol 818 00001900 _dstrtol: 819 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 820 00001900 afbefffc sw -4(r29),r30; push fp 821 00001904 001df020 add r30,r0,r29; fp = sp 822 00001908 afbffff8 sw -8(r29),r31; push ret addr 823 0000190c 2fbd0020 subui r29,r29,#32; alloc local storage 824 00001910 afa20000 sw 0(r29),r2 825 00001914 afa30004 sw 4(r29),r3 826 00001918 afa40008 sw 8(r29),r4 827 0000191c afa5000c sw 12(r29),r5 828 00001920 afa60010 sw 16(r29),r6 829 00001924 8fc20000 lw r2,(r30) 830 00001928 8fc50004 lw r5,4(r30) 831 0000192c 8fc40008 lw r4,8(r30) 832 00001930 20030000 addi r3,r0,#0 833 00001934 08000008 j L247_LF2 834 00001938 54000000 nop; not filled. 835 0000193c L220_LF2: 836 0000193c 20420001 addi r2,r2,#1 837 00001940 L247_LF2: 838 00001940 805f0000 lb r31,(r2) 839 00001944 33e100ff andi r1,r31,#0x00ff 840 00001948 60210020 seqi r1,r1,#32 841 0000194c 1420ffec bnez r1,L220_LF2 842 00001950 54000000 nop; not filled. 843 00001954 23e1fff7 addi r1,r31,#-9 844 00001958 302100ff andi r1,r1,#0x00ff 845 0000195c 70210001 sleui r1,r1,#1 846 00001960 1420ffd8 bnez r1,L220_LF2 847 00001964 54000000 nop; not filled. 848 00001968 64a10000 snei r1,r5,#0 849 0000196c 10200008 beqz r1,L222_LF2 850 00001970 54000000 nop; not filled. 851 00001974 aca20000 sw (r5),r2 852 00001978 L222_LF2: 853 00001978 905f0000 lbu r31,(r2) 854 0000197c 67e10000 snei r1,r31,#0 855 00001980 10200090 beqz r1,L248_LF2 856 00001984 54000000 nop; not filled. 857 00001988 63e1002d seqi r1,r31,#45 858 0000198c 10200014 beqz r1,L224_LF2 859 00001990 54000000 nop; not filled. 860 00001994 2006ffff addi r6,r0,#-1 861 00001998 20420001 addi r2,r2,#1 862 0000199c 08000008 j L225_LF2 863 000019a0 54000000 nop; not filled. 864 000019a4 L224_LF2: 865 000019a4 20060001 addi r6,r0,#1 866 000019a8 L225_LF2: 867 000019a8 64810000 snei r1,r4,#0 868 000019ac 14200054 bnez r1,L226_LF2 869 000019b0 54000000 nop; not filled. 870 000019b4 90410000 lbu r1,(r2) 871 000019b8 60210030 seqi r1,r1,#48 872 000019bc 10200040 beqz r1,L227_LF2 873 000019c0 54000000 nop; not filled. 874 000019c4 20420001 addi r2,r2,#1 875 000019c8 905f0000 lbu r31,(r2) 876 000019cc 63e10078 seqi r1,r31,#120 877 000019d0 14200010 bnez r1,L229_LF2 878 000019d4 54000000 nop; not filled. 879 000019d8 63e10058 seqi r1,r31,#88 880 000019dc 10200014 beqz r1,L228_LF2 881 000019e0 54000000 nop; not filled. 882 000019e4 L229_LF2: 883 000019e4 20040010 addi r4,r0,#16 884 000019e8 20420001 addi r2,r2,#1 885 000019ec 08000014 j L226_LF2 886 000019f0 54000000 nop; not filled. 887 000019f4 L228_LF2: 888 000019f4 20040008 addi r4,r0,#8 889 000019f8 08000008 j L226_LF2 890 000019fc 54000000 nop; not filled. 891 00001a00 L227_LF2: 892 00001a00 2004000a addi r4,r0,#10 893 00001a04 L226_LF2: 894 00001a04 2081ffff addi r1,r4,#-1 895 00001a08 6c21000f sgtui r1,r1,#15 896 00001a0c 10200010 beqz r1,L233_LF2 897 00001a10 54000000 nop; not filled. 898 00001a14 L248_LF2: 899 00001a14 00030820 add r1,r0,r3 900 00001a18 080000c4 j L245_LF2 901 00001a1c 54000000 nop; not filled. 902 00001a20 L233_LF2: 903 00001a20 805f0000 lb r31,(r2) 904 00001a24 23e1ffd0 addi r1,r31,#-48 905 00001a28 302100ff andi r1,r1,#0x00ff 906 00001a2c 70210009 sleui r1,r1,#9 907 00001a30 10200014 beqz r1,L236_LF2 908 00001a34 54000000 nop; not filled. 909 00001a38 33e100ff andi r1,r31,#0x00ff 910 00001a3c 2021ffd0 addi r1,r1,#-48 911 00001a40 08000050 j L237_LF2 912 00001a44 54000000 nop; not filled. 913 00001a48 L236_LF2: 914 00001a48 23e1ff9f addi r1,r31,#-97 915 00001a4c 302100ff andi r1,r1,#0x00ff 916 00001a50 70210019 sleui r1,r1,#25 917 00001a54 10200014 beqz r1,L238_LF2 918 00001a58 54000000 nop; not filled. 919 00001a5c 33e100ff andi r1,r31,#0x00ff 920 00001a60 2021ffa9 addi r1,r1,#-87 921 00001a64 0800002c j L237_LF2 922 00001a68 54000000 nop; not filled. 923 00001a6c L238_LF2: 924 00001a6c 23e1ffbf addi r1,r31,#-65 925 00001a70 302100ff andi r1,r1,#0x00ff 926 00001a74 70210019 sleui r1,r1,#25 927 00001a78 10200014 beqz r1,L240_LF2 928 00001a7c 54000000 nop; not filled. 929 00001a80 33e100ff andi r1,r31,#0x00ff 930 00001a84 2021ffc9 addi r1,r1,#-55 931 00001a88 08000008 j L237_LF2 932 00001a8c 54000000 nop; not filled. 933 00001a90 L240_LF2: 934 00001a90 200103e8 addi r1,r0,#1000 935 00001a94 L237_LF2: 936 00001a94 0024f82a slt r31,r1,r4 937 00001a98 13e00024 beqz r31,L246_LF2 938 00001a9c 54000000 nop; not filled. 939 00001aa0 00600035 movi2fp f0,r3 940 00001aa4 00800835 movi2fp f1,r4 941 00001aa8 0401000e mult f0,f0,f1 942 00001aac 00001834 movfp2i r3,f0 943 00001ab0 00611820 add r3,r3,r1 944 00001ab4 20420001 addi r2,r2,#1 945 00001ab8 17e0ff64 bnez r31,L233_LF2 946 00001abc 54000000 nop; not filled. 947 00001ac0 L246_LF2: 948 00001ac0 64a10000 snei r1,r5,#0 949 00001ac4 10200008 beqz r1,L244_LF2 950 00001ac8 54000000 nop; not filled. 951 00001acc aca20000 sw (r5),r2 952 00001ad0 L244_LF2: 953 00001ad0 00600035 movi2fp f0,r3 954 00001ad4 00c00835 movi2fp f1,r6 955 00001ad8 0401000e mult f0,f0,f1 956 00001adc 00000834 movfp2i r1,f0 957 00001ae0 L245_LF2: 958 00001ae0 8fa20000 lw r2,0(r29) 959 00001ae4 8fa30004 lw r3,4(r29) 960 00001ae8 8fa40008 lw r4,8(r29) 961 00001aec 8fa5000c lw r5,12(r29) 962 00001af0 8fa60010 lw r6,16(r29) 963 00001af4 8fdffff8 lw r31,-8(r30) 964 00001af8 001ee820 add r29,r0,r30 965 00001afc 8fdefffc lw r30,-4(r30) 966 00001b00 4be00000 jr r31 967 00001b04 54000000 nop 968 00001b08 .endproc _dstrtol 969 00001b08 .align 2 970 00001b08 .proc _bcopy 971 00001b08 .global _bcopy 972 00001b08 _bcopy: 973 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 974 00001b08 afbefffc sw -4(r29),r30; push fp 975 00001b0c 001df020 add r30,r0,r29; fp = sp 976 00001b10 afbffff8 sw -8(r29),r31; push ret addr 977 00001b14 2fbd0018 subui r29,r29,#24; alloc local storage 978 00001b18 afa20000 sw 0(r29),r2 979 00001b1c afa30004 sw 4(r29),r3 980 00001b20 afa40008 sw 8(r29),r4 981 00001b24 8fc30000 lw r3,(r30) 982 00001b28 8fc20004 lw r2,4(r30) 983 00001b2c 8fdf0008 lw r31,8(r30) 984 00001b30 08000014 j L259_LF2 985 00001b34 54000000 nop; not filled. 986 00001b38 L257_LF2: 987 00001b38 80640000 lb r4,(r3) 988 00001b3c a0440000 sb (r2),r4 989 00001b40 20630001 addi r3,r3,#1 990 00001b44 20420001 addi r2,r2,#1 991 00001b48 L259_LF2: 992 00001b48 001f0820 add r1,r0,r31 993 00001b4c 23ffffff addi r31,r31,#-1 994 00001b50 6c210000 sgti r1,r1,#0 995 00001b54 1420ffe0 bnez r1,L257_LF2 996 00001b58 54000000 nop; not filled. 997 00001b5c 8fa20000 lw r2,0(r29) 998 00001b60 8fa30004 lw r3,4(r29) 999 00001b64 8fa40008 lw r4,8(r29) 1000 00001b68 8fdffff8 lw r31,-8(r30) 1001 00001b6c 001ee820 add r29,r0,r30 1002 00001b70 8fdefffc lw r30,-4(r30) 1003 00001b74 4be00000 jr r31 1004 00001b78 54000000 nop 1005 00001b7c .endproc _bcopy 1006 00001b7c .align 2 1007 00001b7c .proc _bzero 1008 00001b7c .global _bzero 1009 00001b7c _bzero: 1010 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 1011 00001b7c afbefffc sw -4(r29),r30; push fp 1012 00001b80 001df020 add r30,r0,r29; fp = sp 1013 00001b84 afbffff8 sw -8(r29),r31; push ret addr 1014 00001b88 2fbd0010 subui r29,r29,#16; alloc local storage 1015 00001b8c afa20000 sw 0(r29),r2 1016 00001b90 afa30004 sw 4(r29),r3 1017 00001b94 8fc20000 lw r2,(r30) 1018 00001b98 8fdf0004 lw r31,4(r30) 1019 00001b9c 08000010 j L270_LF2 1020 00001ba0 54000000 nop; not filled. 1021 00001ba4 L268_LF2: 1022 00001ba4 20030000 addi r3,r0,(#0x0)&0xff 1023 00001ba8 a0430000 sb (r2),r3 1024 00001bac 20420001 addi r2,r2,#1 1025 00001bb0 L270_LF2: 1026 00001bb0 001f0820 add r1,r0,r31 1027 00001bb4 23ffffff addi r31,r31,#-1 1028 00001bb8 6c210000 sgti r1,r1,#0 1029 00001bbc 1420ffe4 bnez r1,L268_LF2 1030 00001bc0 54000000 nop; not filled. 1031 00001bc4 8fa20000 lw r2,0(r29) 1032 00001bc8 8fa30004 lw r3,4(r29) 1033 00001bcc 8fdffff8 lw r31,-8(r30) 1034 00001bd0 001ee820 add r29,r0,r30 1035 00001bd4 8fdefffc lw r30,-4(r30) 1036 00001bd8 4be00000 jr r31 1037 00001bdc 54000000 nop 1038 00001be0 .endproc _bzero 1039 ;;; Ethan L. Miller, 1999. Released to the public domain 1040 ;;; 1041 ;;; Most of the traps are called in files from libtraps. 1044 00001be0 .align 2 1045 00001be0 .proc _exit 1046 00001be0 .global _exit 1047 00001be0 _exit: 1048 00001be0 44000300 trap #0x300 1049 00001be4 4be00000 jr r31 1050 00001be8 54000000 nop 1051 00001bec .endproc _exit 1053 ; for the benefit of gcc. 1054 00001bec .proc ___main 1055 00001bec .global ___main 1056 00001bec ___main: 1057 00001bec 4be00000 jr r31 1058 00001bf0 54000000 nop 1059 00001bf4 .endproc ___main 1060 00001bf4 .text 1061 00001bf4 .global _etext 1062 00001bf4 _etext: 1063 00001bf4 .align 3 1064 00001bf8 .data 1065 00002074 .global _edata 1066 00002074 _edata:

option1/lab4_1/src/filesys.c

// // filesys.c // // This file has handlers for the file systems supported by the DLX // operating system. These include both the basic, simulator-provided // file system and the more complex file system from the file system // assignment. static char rcsid[] = "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "process.h" #include "filesys.h" // One entry for each type of file system. Currently, the file systems // are native Unix (0) and DLX (1). static Fs fs[2]; // One entry for each open file in the operating system. static FsOpenFile openfiles[FS_MAX_OPEN_FILES]; //---------------------------------------------------------------------- // // FdValid // // Return 1 if the file descriptor is valid, 0 otherwise. // //---------------------------------------------------------------------- static inline int FdValid (int fd) { return ((fd > 0) && (fd < FS_MAX_OPEN_FILES) && (openfiles[fd].flags != 0)); } //---------------------------------------------------------------------- // // FsFreeEntry // // Free an entry in the open files table. // //---------------------------------------------------------------------- static inline void FsFreeEntry (int x) { openfiles[x].flags = 0; } � //---------------------------------------------------------------------- // // FsOpen // // Open a file. The name of the file is passed, along with the file // mode (read or write). // // This function figures out which file system is desired using a // simple heuristic. Basically, if the file starts with "dlx:", it's // a DLX file system file. Otherwise, it's a UNIX file. // // Once the file system is figured out, this routine allocates a // file descriptor and calls the file-system specific open routine. // //---------------------------------------------------------------------- int FsOpen (const char *name, int mode) { int i, retval; dbprintf ('f', "Attepmting to open %s mode=%d.\n", name, mode); // Mask off all but the mode bits mode &= FS_MODE_RW; // ERROR if the caller hasn't specified a file mode. if (mode == 0) { return (-1); } for (i = 0; i < FS_MAX_OPEN_FILES; i++) { if (openfiles[i].flags == 0) { break; } } if (i >= FS_MAX_OPEN_FILES) { return (-1); } openfiles[i].flags = mode; // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxOpen. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" openfiles[i].fs = 1; } else { openfiles[i].fs = 0; } dbprintf ('f', "File %s opening in file system %d.\n",name,openfiles[i].fs); retval = fs[openfiles[i].fs].Open (i, name, mode); if (retval < 0) { // Open failed, so return error code FsFreeEntry (i); return (retval); } dbprintf ('f', "Opened %s in FS %d, mode=%d slot=%d.\n", name, openfiles[i].fs, mode, i); return (i); } //---------------------------------------------------------------------- // // FsClose // // Close an open file. Call the FS-specific routine, and then mark // the file table entry unused. // //---------------------------------------------------------------------- int FsClose (int fd) { int retval; if (!FdValid (fd)) { return (-1); } retval = fs[openfiles[fd].fs].Close (fd); FsFreeEntry (fd); return (retval); } � //---------------------------------------------------------------------- // // FsRead // // Read data from a file. // //---------------------------------------------------------------------- int FsRead (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Read (fd, buf, n)); } //---------------------------------------------------------------------- // // FsWrite // // Write data to a file. // //---------------------------------------------------------------------- int FsWrite (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Write (fd, buf, n)); } //---------------------------------------------------------------------- // // FsSeek // // Seek in a file. // //---------------------------------------------------------------------- int FsSeek (int fd, int offset, int whence) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Seek (fd, offset, whence)); } //---------------------------------------------------------------------- // // FsDelete // // Delete a file. // //---------------------------------------------------------------------- int FsDelete (const char *name) { // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxDelete. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" return (fs[1].Delete (name)); } else { return (fs[0].Delete (name)); } } � //---------------------------------------------------------------------- // // FsUnixOpen // FsUnixRead // FsUnixWrite // FsUnixSeek // FsUnixClose // // Unix file I/O routines. These are pretty simple, and just call // the simulator traps directly using the file descriptor stored in // the open file table. // //---------------------------------------------------------------------- int FsUnixOpen (int x, const char *name, int mode) { dbprintf ('f', "Attempting to open file %s into desc %d, mode %d.\n", name, x, mode); if ((openfiles[x].u.Unix.fd = open (name, mode)) < 0) { return (openfiles[x].u.Unix.fd); } return (1); } int FsUnixRead (int x, char *buf, int n) { return (read (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixWrite (int x, char *buf, int n) { return (write (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixSeek (int x, int offset, int where) { return (lseek (openfiles[x].u.Unix.fd, offset, where)); } int FsUnixClose (int x) { int retval; retval = close (openfiles[x].u.Unix.fd); return (retval); } int FsUnixDelete (const char *name) { // Refuse to delete Unix files via the simulator. This is for safety // reasons. return (-1); } � //---------------------------------------------------------------------- // // FsDlxIo // // Perform a read or a write on a DLX file. // //---------------------------------------------------------------------- int FsDlxIo (int fd, char *buf, int n, int which) { // Your code to read or write a DLX file goes here. return (1); } //---------------------------------------------------------------------- // // FsDlxRead // FsDlxWrite // // This is just a stub that calls FsDlxIo to do either a read or a // write in the DLX file system. // //---------------------------------------------------------------------- int FsDlxRead (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 0)); } int FsDlxWrite (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 1)); } � //---------------------------------------------------------------------- // // FsDlxOpen // // Open a file in the DLX file system. Currently, this just means // to set current position to 0. However, it should also check to // make sure that the file exists. // //---------------------------------------------------------------------- int FsDlxOpen (int f, const char *name, int mode) { openfiles[f].u.Dlx.curpos = 0; // You may want to put additional code here (checking to see if the // file exists, etc.) return (1); } //---------------------------------------------------------------------- // // FsDlxSeek // // Seek in a DLX file. This just requires adjusting the current // position as recorded in the open files table. // //---------------------------------------------------------------------- int FsDlxSeek (int f, int offset, int whence) { switch (whence) { case FS_SEEK_SET: break; case FS_SEEK_CUR: break; case FS_SEEK_END: break; }; return (openfiles[f].u.Dlx.curpos); } //---------------------------------------------------------------------- // // FsDlxClose // // Close a DLX file system file. //---------------------------------------------------------------------- int FsDlxClose (int f) { // You may want to add code to this routine. return (1); } � //---------------------------------------------------------------------- // // FsDlxDelete // // Delete a file in the DLX file system. // //---------------------------------------------------------------------- int FsDlxDelete (const char *file) { // Your code goes here. return (1); } � //---------------------------------------------------------------------- // // FsModuleInit // // Initialize the file system module. This consists simply of marking // all the file slots as available. // //---------------------------------------------------------------------- void FsModuleInit () { int i; for (i = 0; i < FS_MAX_OPEN_FILES; i++) { openfiles[i].flags = 0; } fs[0].Open = FsUnixOpen; fs[0].Close = FsUnixClose; fs[0].Read = FsUnixRead; fs[0].Write = FsUnixWrite; fs[0].Seek = FsUnixSeek; fs[0].Delete = FsUnixDelete; fs[1].Open = FsDlxOpen; fs[1].Close = FsDlxClose; fs[1].Read = FsDlxRead; fs[1].Write = FsDlxWrite; fs[1].Seek = FsDlxSeek; fs[1].Delete = FsDlxDelete; }

option1/lab4_1/src/queue.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool)>>16)&0xffff addui r2,r2,(_linkpool)&0xffff L63: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1: .ascii "%s: %s\n\000" .align 2 LC2: .ascii "QueueFreeLink\000" .align 2 LC3: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC2)>>16)&0xffff addui r1,r1,(LC2)&0xffff sw 4(r29),r1 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L77: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4: .ascii "QueueAllocLink\000" .align 2 LC5: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97: addi r4,r0,#0 sw (r3),r4 j L98 nop ; not filled. L92: addi r3,r0,#0 L98: snei r1,r3,#0 bnez r1,L100 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC4)>>16)&0xffff addui r1,r1,(LC4)&0xffff sw 4(r29),r1 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L100: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool: .space 6400

option1/lab4_1/src/misc.c

// // misc.c // // Miscellaneous routines for the operating system. These include // basic routines that would be in libc if we had access to it. // #include "misc.h" //---------------------------------------------------------------------- // // dstrcpy // dstrncpy // dstrcat // // These three functions do exactly what their counterparts in the // standard C library do. // //---------------------------------------------------------------------- char* dstrcpy (char *to, const char *from) { char *tokeep = to; char last; do { last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char* dstrncpy (char *to, const char *from, int n) { char *tokeep = to; char last; int cur = 0; do { // Stop if we're exceeded the maximum string length if (n-- <= 0) { break; } last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char * dstrcat (char *onto, const char *addn) { char *konto = onto; while (*onto != '\0') { onto++; } dstrcpy (onto, addn); return (konto); } int dstrncmp (const char *s1, const char *s2, int n) { int i; for (i = 0; i < n; i++) { // If they don't match, end the loop if (*s2 == '\0') { // If the second string is NULL, we're at the end of the string and // have a match. return (0); } else if (*s1 != *s2) { break; } s1++; s2++; } if (i == n) { return (0); } else { return (((*s1 - *s2) < 0) ? -1 : ((*s1 == *s2) ? 0 : 1)); } } int dstrlen (const char *s) { int i = 0; while (*(s++) != '\0') { i++; } return (i); } const char * dstrstr (const char *buf, const char *pattern) { int n = dstrlen (pattern); while (*buf != '\0') { if (dstrncmp (buf, pattern, n) == 0) { return (buf); } buf++; } return ((char *)0); } � //---------------------------------------------------------------------- // // dindex // dmindex // // dindex is identical to the libc function index. dmindex is // similar to dindex, but it reports the index in the string of the // first match for any one of the characters passed (rather than // matching only on a single specific character). // //---------------------------------------------------------------------- const char * dmindex (const char *s, const char *match) { const char *c; while (*s != '\0') { for (c = match; *c != '\0'; c++) { if (*s == *c) { return (s); } } } return ((const char *)0); } const char* dindex (const char *s, int c) { while (*s != '\0') { if (*s == c) { return (s); } s++; } return ((char *)0); } � //---------------------------------------------------------------------- // // ditoa: Convert an integer into an ASCII number. // dstrtol: Convert ASCII into an integer // //---------------------------------------------------------------------- void ditoa (int n, char *buf) { int k; if (n < 0) { *(buf++) = '-'; n = -n; } else if (n == 0) { *(buf++) = '0'; } else { for (k = 1; k <= n; k *= 10) { } do { k /= 10; *(buf++) = (n / k) + '0'; n %= k; } while (k > 1); } *buf = '\0'; } int dstrtol (char *c, char **newpos, int base) { int v = 0; int curdigit; int sign; while ((*c == ' ') || (*c == '\t') || (*c == '\n')) { c++; } if (newpos != (char **)0) { *newpos = c; } if (*c == '\0') { return (v); } if (*c == '-') { sign = -1; c++; } else { sign = 1; } if (base == 0) { if (*c == '0') { c++; if ((*c == 'x') || (*c == 'X')) { base = 16; c++; } else { base = 8; } } else { base = 10; } } if ((base <= 0) || (base > 16)) { return (v); } do { if ((*c >= '0') && (*c <= '9')) { curdigit = (*c) - '0'; } else if ((*c >= 'a') && (*c <= 'z')) { curdigit = (*c) + 10 - 'a'; } else if ((*c >= 'A') && (*c <= 'Z')) { curdigit = (*c) + 10 - 'A'; } else { curdigit = 1000; } if (curdigit < base) { v *= base; v += curdigit; c++; } } while (curdigit < base); if (newpos != (char **)0) { *newpos = c; } v *= sign; return (v); } � //---------------------------------------------------------------------- // // bcopy: Copy bytes from one location to another. // bzero: Set all the bytes in a region to zero. // //---------------------------------------------------------------------- void bcopy (char *src, char *dst, int count) { while (count-- > 0) { *(dst++) = *(src++); } } void bzero (char *dst, int count) { while (count-- > 0) { *(dst++) = 0; } }

option1/lab4_1/src/userprog1.c

/* This test program touches a character pointer in 12 different pages.. This will generate 12 page faults and the output should display as Sum = 66. */ main() { int i, sem; char Sum=0; char * charPtr=(char *)0x7000 ; for(i=0;i<12;i++) *(charPtr + 8192*i)=(char )i; for(i=0;i<12;i++) Sum+= *(charPtr + 8192 * i); Printf("\n\nIn Userprog1, Sum : %d\n\n",Sum); }

option1/lab4_1/src/Makefile

# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c \ OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog1 userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o $(CC) -mtraps -O3 dlxos.o trap_random.o $(OBJS) osend.o -o os.dlx osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog: userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -L userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog1: userprog1.o usertraps.o misc.o $(CC) -mtraps -O3 userprog1.o usertraps.o misc.o -o userprog1.dlx $(AS) -L userprog1.lst userprog1.dlx mv userprog1.dlx.obj ../execs userprog2: userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -L userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend

option1/lab4_1/src/usertraps.o

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

option1/lab4_1/src/synch.o

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r3,((LC0)>>16)&0xffff addui r3,r3,(LC0)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L52: lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff addi r2,r31,#620 L57: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59 nop ; not filled. L60: addi r29,r29,#-8 lhi r3,((LC1)>>16)&0xffff addui r3,r3,(LC1)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L59: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff L79: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79 nop ; not filled. L77: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83 nop ; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems)>>16)&0xffff addui r5,r5,(_sems)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85 nop ; not filled. L86: addi r5,r0,#1 sw 16(r31),r5 j L77 nop ; not filled. L83: addi r1,r0,#-1 L85: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop ; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89 nop ; not filled. L90: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L89: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-16 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 L91: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95 nop ; not filled. L96: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L95: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop ; not filled. L93: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105 nop ; not filled. L107: addi r1,r0,#1 j L105 nop ; not filled. L106: addi r1,r0,#1 L105: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-16 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L112: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117 nop ; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118 nop ; not filled. L119: addi r29,r29,#-8 lhi r5,((LC6)>>16)&0xffff addui r5,r5,(LC6)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L118: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L114: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125 nop ; not filled. L127: addi r1,r0,#1 j L125 nop ; not filled. L126: addi r1,r0,#1 L125: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems: .space 640

option1/lab4_1/src/syscall.h

// // syscall.h // // This file declares all of the system calls available as builtins // in the simulator. // #ifndef _syscall_h_ #define _syscall_h_ extern int open(const char *, int); extern int read(int, char *, int); extern int write(int, char *, int); extern int lseek(int, int, int); extern int close(int); #endif // _syscall_h_

option1/lab4_1/src/synch.h

// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // // Semaphores are the only "native" synchronization primitive. #ifndef _synch_h_ #define _synch_h_ #include "queue.h" #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system typedef int sem_t; #define INVALID_SEM -1 #define INVALID_PROC -1 typedef struct Sem { Queue waiting; int count; uint32 inuse; //indicates whether the semaphore is being //used by any process } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); #endif //_synch_h_

option1/lab4_1/src/dlx.h

// // Definitions of flags and other things defined by the DLX processor. // #ifndef _dlx_h_ #define _dlx_h_ #define DLX_STATUS_INTRMASK 0x0f // up to 16 interrupt levels #define DLX_STATUS_FPTRUE 0x20 // Set if last FP comparison was true #define DLX_STATUS_SYSMODE 0x40 // Set if CPU is in system mode #define DLX_STATUS_PAGE_TABLE 0x100 // Set -> use a page table #define DLX_STATUS_TLB 0x200 // Set -> use a software-loaded TLB #endif // _dlx_h_

option1/lab4_1/src/trap_random.s

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

option1/lab4_1/src/dlxos.s

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

option1/lab4_1/src/osend.s

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

option1/lab4_1/src/traps.c

// // traps.c // // This file handles the low-level trap stuff for an operating system // running under DLX. static char rcsid[] = "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlx.h" #include "dlxos.h" #include "traps.h" #include "process.h" //---------------------------------------------------------------------- // // TimerSet // // Set the timer to go off after a particular number of microseconds. // The number of microseconds is passed to the routine. // //---------------------------------------------------------------------- void TimerSet (int us) { *((int *)DLX_TIMER_ADDRESS) = us; } � //---------------------------------------------------------------------- // // KbdModuleInit // // Initialize the keyboard module. This involves turning on // interrupts for the keyboard. // //---------------------------------------------------------------------- void KbdModuleInit () { *((uint32 *)DLX_KBD_INTR) = 1; } //-------------------------------------------------------------------- // GetUintFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static uint32 GetUintFromTrapArg(uint32 *trapArgs, int sysmode) { uint32 arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // GetIntFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static int GetIntFromTrapArg(uint32 *trapArgs, int sysmode) { int arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // Here we support reading the arguments // Maximum 10 command-line arguments are allowed // Also the total length of the arguments including the terminating // '\0' should be less than or equal to 100 //-------------------------------------------------------------------- static void TrapProcessCreateHandler(uint32 *trapArgs, int sysmode) { char allargs[SIZE_ARG_BUFF]; char name[100]; int i=0, j=0, k=0; uint32 args[MAX_ARGS]; char *destination; // The first argument is the name of the executable file i=0; for(i=0;i<100; i++) allargs[i] = 0; i=0; if(!sysmode) { //Get the arguments into the sytem space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,name+i,1); i++; } while ((i < sizeof (name)) && (name[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], name, sizeof (name)); } name[sizeof(name)-1] = '\0'; // null terminate the name i=0; if(!sysmode) { //Copy the rest of the arguments to the system space for(j=0; (j<11)&&(args[j]!=0); j++) { k=0; do { MemoryCopyUserToSystem (currentPCB,((char*)args[j])+k,allargs+i,1); i++; k++; } while ((i<sizeof(allargs)) && (allargs[i-1]!='\0')); } } else { destination = &allargs[0]; for(j=0; (j<11)&&(args[j]!=0); j++) { k = dstrlen((char *)args[j]); //length of the argument if(&destination[k]-allargs>100) { printf("Fatal: Cumulative length of all arguments > 100\n"); exitsim(); } dstrcpy(destination, (char *)args[j]); destination[k] = '\0'; } } allargs[sizeof(allargs)-1] = '\0'; // null terminate the name ProcessFork(0, (uint32)allargs, name, 1); } � //---------------------------------------------------------------------- // // TrapPrintfHandler // // Handle a printf trap.here. This printf code will correctly // handle integers but will not correctly handle strings (yet). // Also, note that the maximum format string length is 79 characters. // Exceeding this length will cause the format to be truncated. // //---------------------------------------------------------------------- static void TrapPrintfHandler (uint32 *trapArgs, int sysMode) { char formatstr[80]; int i = 0; uint32 printfArgs[10]; uint32 args[10]; int nargs = 0; char *c; // The first argument is the print format string. Copy it to system // space, truncating if necessary. i = 0; if (!sysMode) { // Get the arguments themselves into system space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,formatstr+i,1); i++; } while ((i < sizeof (formatstr)) && (formatstr[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], formatstr, sizeof (formatstr)); } formatstr[sizeof(formatstr)-1] = '\0'; // null terminate the fmt str for (c = formatstr; *c != '\0'; c++) { if (*c == '%') { // if this is a %%, skip past second % if (*(c+1) == '%') { c++; continue; } // Get the current argument off the stack printfArgs[nargs] = args[nargs+1]; // dbprintf ('t', "Argument %d at 0x%x is %d (0x%x).\n", nargs, // args[nargs], args[nargs]); while (1) { c++; if (*c == 's') { // Handle strings here. They don't work for user programs (yet...) break; } else if (*c == 'l') { continue; } else if ((*c == 'f') || (*c == 'g') || (*c == 'e')) { // If it's a floating point number, it'll be passed as // a double, so grab the second word also. nargs += 1; printfArgs[nargs] = args[nargs+1]; break; } else if ((*c >= 'a') && (*c <= 'z')) { // If it's another formatting character, it's not // a string, but we can leave the loop anyway. break; } } nargs += 1; } } printf (formatstr,printfArgs[0],printfArgs[1],printfArgs[2], printfArgs[3], printfArgs[4], printfArgs[5], printfArgs[6], printfArgs[7]); } � //---------------------------------------------------------------------- // // doInterrupt // // Handle an interrupt or trap. // //---------------------------------------------------------------------- void dointerrupt (unsigned int cause, unsigned int iar, unsigned int isr, uint32 *trapArgs) { int result; int i; uint32 args[4]; int intrs; uint32 handle; int ihandle; dbprintf ('t',"Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n", cause, iar, isr, trapArgs); // If the TRAP_INSTR bit is set, this was from a trap instruction. // If the bit isn't set, this was a system interrupt. if (cause & TRAP_TRAP_INSTR) { cause &= ~TRAP_TRAP_INSTR; switch (cause) { case TRAP_CONTEXT_SWITCH: dbprintf ('t', "Got a context switch trap!\n"); ProcessSchedule (); break; case TRAP_EXIT: dbprintf ('t', "Got an exit trap!\n"); ProcessKill (currentPCB); break; case TRAP_PROCESS_FORK: dbprintf ('t', "Got a fork trap!\n"); break; case TRAP_PROCESS_SLEEP: dbprintf ('t', "Got a process sleep trap!\n"); ProcessSuspend (currentPCB); ProcessSchedule (); break; case TRAP_PRINTF: // Call the trap printf handler and pass the arguments and a flag // indicating whether the trap was called from system mode. dbprintf ('t', "Got a printf trap!\n"); TrapPrintfHandler (trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_OPEN: // Get the arguments to the trap handler. If this is a user mode trap, // copy them from user space. if (isr & DLX_STATUS_SYSMODE) { args[0] = trapArgs[0]; args[1] = trapArgs[1]; } else { char filename[32]; // trapArgs points to the trap arguments in user space. There are // two of them, so copy them to to system space. The first argument // is a string, so it has to be copied to system space and the // argument replaced with a pointer to the string in system space. MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof(args[0])*2); MemoryCopyUserToSystem (currentPCB, args[0], filename, 31); // Null-terminate the string in case it's longer than 31 characters. filename[31] = '\0'; // Set the argument to be the filename args[0] = (uint32)filename; } // Allow Open() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, args[1] + 0x10000); printf ("Got an open with parameters ('%s',0x%x)\n", args[0], args[1]); RestoreIntrs (intrs); break; case TRAP_CLOSE: // Allow Close() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_READ: // Allow Read() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_WRITE: // Allow Write() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_DELETE: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_SEEK: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_PROCESS_GETPID: ProcessSetResult(currentPCB, GetCurrentPid()); break; case TRAP_PROCESS_CREATE: TrapProcessCreateHandler(trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_SEM_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = SemCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_SEM_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleWait(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_SEM_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleSignal(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; default: printf ("Got an unrecognized trap (0x%x) - exiting!\n", cause); exitsim (); break; } } else { switch (cause) { case TRAP_TIMER: dbprintf ('t', "Got a timer interrupt!\n"); ProcessSchedule (); break; case TRAP_KBD: do { i = *((uint32 *)DLX_KBD_NCHARSIN); result = *((uint32 *)DLX_KBD_GETCHAR); printf ("Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n", result, result, i); } while (i > 1); break; case TRAP_ACCESS: // access beyond virtual address ProcessKill(currentPCB); break; case TRAP_ADDRESS: // illegal address access ProcessKill(currentPCB); break; case TRAP_ILLEGALINST: printf ("Exiting after illegal instruction at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_PAGEFAULT: // page fault PageFaultHandler(); break; default: printf ("Got an unrecognized system interrupt (0x%x) - exiting!\n", cause); exitsim (); break; } } dbprintf ('t',"About to return from dointerrupt.\n"); // Note that this return may schedule a new process! intrreturn (); }

option1/lab4_1/src/userprog.c

#include "lab4.h" main(int argc, char *argv[]) { int TestcaseId=0; switch(argc) { case 2: TestcaseId=dstrtol(argv[1],NULL,10); Printf("\nTesting case %d\n",TestcaseId); break; default: Printf("\nUsage: "); Printf(argv[0]); Printf(" [case id]\n\n"); exit(); } switch(TestcaseId) { case 1: process_create("userprog1.dlx.obj",NULL); break; case 2: process_create("userprog2.dlx.obj",NULL); break; default: Printf("Test case %d not supported\n", TestcaseId); break; } }

option1/lab4_1/src/memory.c

// // memory.c // // Routines for dealing with memory management. static char rcsid[] = "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "memory.h" #include "process.h" #include "queue.h" static uint32 pagestart; static int freemapmax; static int nfreepages; static uint32 freepages[MEMORY_MAX_PAGES/32]; static uint32 negativeone = 0xffffffff; //---------------------------------------------------------------------- // // This silliness is required because the compiler believes that // it can invert a number by subtracting it from zero and subtracting // an additional 1. This works unless you try to negate 0x80000000, // which causes an overflow when subtracted from 0. Simply // trying to do an XOR with 0xffffffff results in the same code // being emitted. // //---------------------------------------------------------------------- static inline uint32 invert (uint32 n) { return (n ^ negativeone); } //---------------------------------------------------------------------- // // MemoryGetSize // // Return the total size of memory in the simulator. This is // available by reading a special location. // //---------------------------------------------------------------------- int MemoryGetSize () { return (*((int *)DLX_MEMSIZE_ADDRESS)); } //---------------------------------------------------------------------- // // MemorySetFreemap // //---------------------------------------------------------------------- inline void MemorySetFreemap (int p, int b) { uint32 wd = p / 32; uint32 bitnum = p % 32; freepages[wd] = (freepages[wd] & invert(1 << bitnum)) | (b << bitnum); dbprintf ('m', "Set freemap entry %d to 0x%x.\n", wd, freepages[wd]); } � //---------------------------------------------------------------------- // // MemoryInitModule // // Initialize the memory module of the operating system. // //---------------------------------------------------------------------- void MemoryModuleInit () { int i; int maxpage = MemoryGetSize () / MEMORY_PAGE_SIZE; int curpage; pagestart = (lastosaddress + MEMORY_PAGE_SIZE - 4) / MEMORY_PAGE_SIZE; freemapmax = (maxpage+31) / 32; dbprintf ('m', "Map has %d entries, memory size is 0x%x.\n", freemapmax, maxpage); dbprintf ('m', "Free pages start with page # 0x%x.\n", pagestart); for (i = 0; i < freemapmax; i++) { // Initially, all pages are considered in use. This is done to make // sure we don't have any partially initialized freemap entries. freepages[i] = 0; } nfreepages = 0; for (curpage = pagestart; curpage < maxpage; curpage++) { nfreepages += 1; MemorySetFreemap (curpage, 1); } dbprintf ('m', "Initialized %d free pages.\n", nfreepages); } � //---------------------------------------------------------------------- // // MemoryAllocPage // // Allocate a page of memory. // //---------------------------------------------------------------------- inline int MemoryAllocPage () { static int mapnum = 0; int bitnum; uint32 v; if (nfreepages == 0) { printf("ERROR AT THIS POINT\n"); return (0); } dbprintf ('m', "Allocating memory, starting with page %d\n", mapnum); while (freepages[mapnum] == 0) { mapnum += 1; if (mapnum >= freemapmax) { mapnum = 0; } } v = freepages[mapnum]; for (bitnum = 0; (v & (1 << bitnum)) == 0; bitnum++) { } freepages[mapnum] &= invert(1 << bitnum); v = (mapnum * 32) + bitnum; dbprintf ('m', "Allocated memory, from map %d, page %d, map=0x%x.\n", mapnum, v, freepages[mapnum]); nfreepages -= 1; return (v); } //---------------------------------------------------------------------- // // MemoryFreePage // // Free a page of memory. // //---------------------------------------------------------------------- void MemoryFreePage(uint32 page) { MemorySetFreemap (page, 1); nfreepages += 1; dbprintf ('m',"Freed page 0x%x, %d remaining.\n", page, nfreepages); } � //---------------------------------------------------------------------- // // MemoryTranslateUserToSystem // // Translate a user address (in the process referenced by pcb) // into an OS (physical) address. This works for simple one-level // page tables, but will have to be modified for two-level page // tables. // //---------------------------------------------------------------------- uint32 MemoryTranslateUserToSystem (PCB *pcb, uint32 addr) { //------------------------------------------- // You need to change the code below //------------------------------------------- int page = addr / MEMORY_PAGE_SIZE; int offset = addr % MEMORY_PAGE_SIZE; if (page > pcb->npages) { return (0); } return ((pcb->pagetable[page] & MEMORY_PTE_MASK) + offset); } � //---------------------------------------------------------------------- // // moveBetweenSpaces // // Copy data between user and system spaces. This is done page by // page by: // * Translating the user address into system space. // * Copying all of the data in that page // * Repeating until all of the data is copied. // A positive direction means the copy goes from system to user // space; negative direction means the copy goes from user to system // space. // // This routine returns the number of bytes copied. Note that this // may be less than the number requested if there were unmapped pages // in the user range. If this happens, the copy stops at the // first unmapped address. // //---------------------------------------------------------------------- static int moveBetweenSpaces (PCB *pcb, unsigned char *s, unsigned char *u, int n, int dir) { unsigned char *curUser; int bytesCopied = 0; int bytesToCopy; while (n > 0) { // Translate current user page to system address. If this fails, return // the number of bytes copied so far. curUser = (unsigned char *)MemoryTranslateUserToSystem (pcb, (uint32)u); if (curUser == (unsigned char *)0) { // Leave the loop if translation fails. break; } // Calculate the number of bytes to copy this time. This is the minimum // of the bytes left on this page and the bytes left to copy. bytesToCopy = MEMORY_PAGE_SIZE - ((uint32)curUser % MEMORY_PAGE_SIZE); if (bytesToCopy > n) { bytesToCopy = n; } // Perform the copy. if (dir >= 0) { bcopy (s, curUser, bytesToCopy); } else { bcopy (curUser, s, bytesToCopy); } // Keep track of bytes copied and adjust addresses appropriately. n -= bytesToCopy; bytesCopied += bytesToCopy; s += bytesToCopy; u += bytesToCopy; } return (bytesCopied); } //---------------------------------------------------------------------- // // These two routines copy data between user and system spaces. // They call a common routine to do the copying; the only difference // between the calls is the actual call to do the copying. Everything // else is identical. // //---------------------------------------------------------------------- int MemoryCopySystemToUser (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, from, to, n, 1)); } int MemoryCopyUserToSystem (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, to, from, n, -1)); } � //---------------------------------------------------------------------- // // MemorySetupPte // // Set up a PTE given a page number. // //---------------------------------------------------------------------- uint32 MemorySetupPte (uint32 page) { return ((page * MEMORY_PAGE_SIZE) | MEMORY_PTE_VALID); } //---------------------------------------------------------------------- // // MemoryFreePte // // Free a page given its PTE. // //---------------------------------------------------------------------- void MemoryFreePte (uint32 pte) { MemoryFreePage ((pte & MEMORY_PTE_MASK) / MEMORY_PAGE_SIZE); } //---------------------------------------------------------------------- // // MemoryPteToPage // // Given a PTE, return the base address for the (virtual) page the // PTE references. // //---------------------------------------------------------------------- uint32 MemoryPteToPage (uint32 pte) { return (pte & MEMORY_PTE_MASK); } � //---------------------------------------------------------------------- // // MemoryGetOperandAddress // // This routine takes an instruction and a pointer to a PCB, and // returns the address that the instruction is trying to use // for its memory operand. If the instruction doesn't access memory, // it returns 0xffffffff. Note that this means it's impossible to // distinguish between a valid access to 0xffffffff and an instruction // without an operand.... // //---------------------------------------------------------------------- uint32 MemoryGetOperandAddress (PCB *pcb, uint32 instr) { static uint32 invalidOps = 0x3404; uint32 opcode = (instr >> 26) & 0x3f; uint32 reg; uint32 addr; uint32 offset; uint32 regValue; if ((opcode<0x20) || (opcode>0x2f) || ((invalidOps >> (opcode-0x20) & 1))) { return (0xffffffff); } reg = (instr >> 21) & 0x1f; offset = instr & 0xffff; if (offset & 0x8000) { offset |= 0xffff0000; } regValue = pcb->currentSavedFrame[PROCESS_STACK_IREG+reg]; addr = regValue + offset; dbprintf ('m', "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n", instr, addr, reg, regValue); return (addr); }

option1/lab4_1/src/osend.o

;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8

option1/lab4_1/src/userprog2.o

; Compiled by GCC .data .align 2 LC0: .ascii "\n in Userprog2, Sum : %d\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal ___main nop ; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#12 bnez r1,L16 nop ; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#32768 or r2,r31,r4 L21: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

option1/lab4_1/src/dlxsim.cc

option1/lab4_1/src/dlxsim.cc

//
//  dlxsim.cc
//
//  DLX simulator code.  This is a barebones simulator, but it does
//  include code to handle OS issues such as virtual memory translation.
//  This allows it to be used as a simulator for operating systems
//  classes.
//
//  Copyright (c) 1999 by Ethan L. Miller
//  University of Maryland Baltimore County
//

static   char  rcsid []   =   "$Id: dlxsim.cc,v 1.2 2000/09/20 22:16:34 elm Exp elm $" ;

#include   < stdio . h >
#include   < errno . h >
#include   < string . h >
#include   < ctype . h >
#include   < stdlib . h >
#include   < sys / time . h >
#include   "dlx.h"

extern   int  errno ;
char     debug [ 100 ];

//----------------------------------------------------------------------
//
//  Cpu::Cpu
//
//  Create a new CPU.
//
//----------------------------------------------------------------------
Cpu :: Cpu   ( int  msize )
{
   int        i ;
   struct  timeval t ;

  flags  =   0 ;
  usElapsed  =   0.0 ;
  instrsExecuted  =   0.0 ;
  usPerInst  =   1.0 ;
   for   ( =   0 ;  i  <   32 ;  i ++ )   {
    sreg [ i ]   =   0 ;
    ireg [ i ]   =   0 ;
    freg [ i ]   =   0 ;
   }
   SetStatusBit   ( DLX_STATUS_PAGE_TABLE );
   SetStatusBit   ( DLX_STATUS_SYSMODE );
   EnableInterrupts   ();
  timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
  memSize  =  msize ;
  memory  =   new  uint32 [ msize / sizeof ( uint32 )];
  basicBlockStart  =   1 ;    // basic block can never start at address 1!
   // Initialize the keyboard I/O stuff.
  kbdbufferedchars  =   0 ;
  kbdrpos  =  kbdwpos  =   0 ;
  kbdcounter  =   0 ;
   SetupRawIo   ();
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   ( double ) t . tv_sec  +   (( double ) t . tv_usec )   *   1e-6 ;
}

//----------------------------------------------------------------------
//
//  TraceFile
//
//  Open the passed file name for tracing.  If the file is NULL,
//  open stdout.
//
//----------------------------------------------------------------------
int
Cpu :: TraceFile   ( char   * name )
{
   if   (( name  ==  NULL )   ||   ( ! strcmp  ( name ,   "-" )))   {
    tracefp  =  stdout ;
     return   ( 1 );
   }   else   if   (( tracefp  =  fopen  ( name ,   "w" ))   ==  NULL )   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Instruction parsing functions
//
//  These functions take an instruction and return the relevant fields.
//
//----------------------------------------------------------------------
inline
void
Cpu :: GetRFields   ( uint32 inst ,  uint32 &  src1 ,  uint32 &  src2 ,  uint32 &  dst )
{
  src1  =   ( inst  >>  DLX_RFMT_SRC1_SHIFT )   &  DLX_REG_MASK ;
  src2  =   ( inst  >>  DLX_RFMT_SRC2_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_RFMT_DST_SHIFT )   &  DLX_REG_MASK ;
}

inline
void
Cpu :: GetIFields   ( uint32 inst ,  uint32 &  src ,  uint32 &  imm ,  uint32 &  dst )
{
  src  =   ( inst  >>  DLX_IFMT_SRC_SHIFT )   &  DLX_REG_MASK ;
  dst  =   ( inst  >>  DLX_IFMT_DST_SHIFT )   &  DLX_REG_MASK ;
  imm  =   ( inst  >>  DLX_IFMT_IMM_SHIFT )   &   0xffff ;
}

inline
void
Cpu :: GetJFields   ( uint32 inst ,  uint32 &  jaddr )
{
  jaddr  =  inst  &   0x1ffffff ;
   if   ( jaddr  &   0x1000000 )   {
    jaddr  |=   0xfe000000 ;
   }
}

inline
void
Cpu :: SignExtend16   ( uint32 &  v )
{
   if   ( &   0x8000 )   {
    v  |=   0xffff0000 ;
   }
}

inline
void
Cpu :: SignExtend8   ( uint32 &  v )
{
   if   ( &   0x80 )   {
    v  |=   0xffffff00 ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Jump
//
//  Jump to a particular location after dealing with the delay
//  slot.  Checks to ensure that the jump address could be valid
//  (ie, is on a word boundary).  It doesn't check to ensure that
//  the jump destination is valid; that's done on the first instruction
//  fetch to follow.
//
//----------------------------------------------------------------------
inline
int
Cpu :: Jump   ( uint32 jmpDst )
{
   if   (( jmpDst  &   0x3 )   ==   0 )   {
    DBPRINTF  ( 'j' ,   "Jump from 0x%x to 0x%x.\n" ,  PC (),  jmpDst );
     OutputBasicBlock   ( jmpDst );
     SetPC   ( jmpDst );
   }   else   {
     CauseException   ( DLX_EXC_ADDRESS );
   }
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Instruction functions
//
//  These functions implement individual instructions.  They return
//  the number of instructions executed, which will either be 1 if the
//  instruction completed successfully or 0 if the instruction caused
//  an exception.
//
//  Since the instructions are pretty simple (and similar), they won't
//  be documented extensively except for the more complex ones.
//----------------------------------------------------------------------

//----------------------------------------------------------------------
//
//  Generic ALU R-R instructions
//
//----------------------------------------------------------------------
static
int
InstAdd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSub   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( v2  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  +  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 );
  result  =  v1  -  v2 ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate arithmetic functions
//
//----------------------------------------------------------------------
static
int
InstAddi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of operands
   if   ((( v1  &   0x80000000 )   ==   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstSubi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  dst ,  imm ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   // Overflow if sign of result isn't the same as sign of first operand,
   // and if second operand has the opposite sign.
   if   ((( v1  &   0x80000000 )   !=   ( imm  &   0x80000000 ))   &&
       (( v1  &   0x80000000 )   !=   ( result  &   0x80000000 )))   {
    cpu -> CauseException   ( DLX_EXC_OVERFLOW );
   }
   // Instruction isn't redone after exception
   return   ( 1 );
}

static
int
InstAddui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for addui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  +  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSubui   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
   // XXX: do we sign extend values for subui?
   // cpu->SignExtend16 (imm);
  v1  =  cpu -> GetIreg ( src1 );
  result  =  v1  -  imm ;
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R logical functions
//
//----------------------------------------------------------------------

static
int
InstAnd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstOr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstXor   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  cpu -> GetIreg ( src2 ));
   return   ( 1 );
}

static
int
InstSll   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  v2 );
   return   ( 1 );
}

static
int
InstSra   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ,  result ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  result  =  v1  >>  v2 ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  v2 )   -   1 )   <<   ( 32   -  v2 );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrl   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  uint32    v1 ,  v2 ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  v2  =  cpu -> GetIreg ( src2 )   &   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  v2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate logical functions
//
//----------------------------------------------------------------------
static
int
InstAndi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   &  imm );
   return   ( 1 );
}

static
int
InstOri   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   |  imm );
   return   ( 1 );
}

static
int
InstXori   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetIreg ( src1 )   ^  imm );
   return   ( 1 );
}

static
int
InstSlli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  <<  imm );
   return   ( 1 );
}

static
int
InstSrai   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ,  result ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  result  =  v1  >>  imm ;
   // stick in sign bits if operand is negative
   if   ( v1  &   0x80000000 )   {
    result  |=   (( 1   <<  imm )   -   1 )   <<   ( 32   -  imm );
   }
  cpu -> PutIreg   ( dst ,  result );
   return   ( 1 );
}

static
int
InstSrli   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;
  uint32    v1 ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  v1  =  cpu -> GetIreg ( src1 );
  imm  &=   0x1f ;
  cpu -> PutIreg   ( dst ,  v1  >>  imm );
   return   ( 1 );
}

static
int
InstLhi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  dst ,  imm ;

  cpu -> GetIFields   ( inst ,  src ,  imm ,  dst );
  cpu -> PutIreg   ( dst ,  imm  <<   16 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  R-R set instructions
//
//----------------------------------------------------------------------
static
int
InstSeq   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSne   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  cpu -> GetIreg ( src2 ))   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSgt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSle   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}
static
int
InstSge   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) cpu -> GetIreg ( src2 ))
         ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Immediate set instructions
//
//----------------------------------------------------------------------
static
int
InstSeqi   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   ==  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSnei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   ( cpu -> GetIreg ( src1 )   !=  imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgti   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSlei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   <=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

static
int
InstSgei   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  imm ,  dst ;

  cpu -> GetIFields   ( inst ,  src1 ,  imm ,  dst );
  cpu -> SignExtend16   ( imm );
  cpu -> PutIreg   ( dst ,   (( int ) cpu -> GetIreg ( src1 )   >=   ( int ) imm )   ?   1   :   0 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Load instructions
//
//----------------------------------------------------------------------
static
int
InstLw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  DBPRINTF  ( 'l' ,   "Loading word 0x%08x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lw" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  DBPRINTF  ( 'l' , "Loading signed half 0x%04x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lh" ,  dst ,  addr ,  val );
  cpu -> SignExtend16   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLhu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // Half-word accesses must be 2-byte aligned
   if   (( addr  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xffff ;
  DBPRINTF  ( 'l' , "Loading unsigned half 0x%04x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lhu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading signed byte 0x%02x from location 0x%x.\n" ,  val ,  addr );
  cpu -> TraceAccess ( "lb" ,  dst ,  addr ,  val );
  cpu -> SignExtend8   ( val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

static
int
InstLbu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  val  >>=  shiftcount [ addr  &   0x3 ];
  val  &=   0xff ;
  DBPRINTF  ( 'l' , "Loading unsigned byte 0x%02x from location 0x%x.\n" , val , addr );
  cpu -> TraceAccess ( "lbu" ,  dst ,  addr ,  val );
  cpu -> PutIreg   ( dst ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Store instructions
//
//----------------------------------------------------------------------
static
int
InstSh   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 16 ,   16 ,   0 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   // ReadWord checks for misaligned accesses.
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffe ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xffff );
  val  &=   ~ ( 0xffff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing half 0x%04x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sh" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSb   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ,  kval ,  regval ,  shiftamt ;
   static   int     shiftcount [ 4 ]   =   { 24 ,   16 ,   8 ,   0 };

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  kval  =  val ;
  shiftamt  =  shiftcount [ addr  &   0x3 ];
  regval  =   ( cpu -> GetIreg   ( dst )   &   0xff );
  val  &=   ~ ( 0xff   <<  shiftamt );
  val  |=  regval  <<  shiftamt ;
  DBPRINTF  ( 's' , "Storing byte 0x%02x (0x%08x -> 0x%08x) to location 0x%x.\n" ,
        regval ,  kval ,  val ,  addr );
   // This should never fail (if ReadWord worked), but just in case...
   if   ( !  cpu -> WriteWord   ( addr  &   0xfffffffc ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sb" ,  dst ,  addr ,  regval );
   return   ( 1 );
}

static
int
InstSw   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetIreg   ( dst );
  DBPRINTF  ( 's' , "Storing word 0x%08x to location 0x%x.\n" ,  val ,  addr );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sw" ,  dst ,  addr ,  val );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  FP load/store instructions
//
//----------------------------------------------------------------------
static
int
InstLf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> PutFreg   ( dst ,  val );
  cpu -> TraceAccess ( "lf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstLd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
   if   (( dst  &   0x1 )   ==   1 )   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> ReadWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   if   ( !  cpu -> ReadWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  cpu -> PutFreg   ( dst ,  val1 );
  cpu -> PutFreg   ( dst + 1 , val2 );
#else
  cpu -> PutFreg   ( dst , val2 );
  cpu -> PutFreg   ( dst + 1 ,  val1 );
#endif
  DBPRINTF  ( 'f' , "Read double %lf from address %08x\n" ,  cpu -> GetFregD   ( dst ),
        addr );
  cpu -> TraceAccess ( "ld0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "ld1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

static
int
InstSf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
  val  =  cpu -> GetFreg   ( dst );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> WriteWord   ( addr ,  val ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sf" ,  dst ,  addr ,  val );
   return   ( 1 );
}

static
int
InstSd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    addrReg ,  offset ,  dst ,  addr ,  val1 ,  val2 ;

  cpu -> GetIFields   ( inst ,  addrReg ,  offset ,  dst );
  addr  =  cpu -> EffectiveAddress   ( addrReg ,  offset );
   // If access fails, this instruction isn't considered completed
   if   ( !  cpu -> TestWriteWord   ( addr + 4 ))   {
     return   ( 0 );
   }
#if   ( DLX_NATIVE_ENDIAN  ==  DLX_BIG_ENDIAN )
  val1  =  cpu -> GetFreg   ( dst );
  val2  =  cpu -> GetFreg   ( dst + 1 );
#else
  val1  =  cpu -> GetFreg   ( dst + 1 );
  val2  =  cpu -> GetFreg   ( dst );
#endif
   if   ( !  cpu -> WriteWord   ( addr ,  val1 ))   {
     return   ( 0 );
   }
   // Should never fail, since write was tested earlier
   if   ( !  cpu -> WriteWord   ( addr + 4 ,  val2 ))   {
     return   ( 0 );
   }
  cpu -> TraceAccess ( "sd0" ,  dst ,  addr ,  val1 );
  cpu -> TraceAccess ( "sd1" ,  dst ,  addr + 4 ,  val2 );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous FP move instructions
//
//----------------------------------------------------------------------
static
int
InstMovf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   (( dst  &   0x1 )   ||   ( src1  &   0x1 ))   {
    cpu -> CauseException   ( DLX_EXC_FORMAT );
     return   ( 1 );
   }
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 ));
  cpu -> PutFreg   ( dst + 1 ,  cpu -> GetFreg   ( src1 + 1 ));
   return   ( 1 );
}

static
int
InstMovfp2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetFreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovi2fp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Unconditional jumps & subroutine calls
//
//----------------------------------------------------------------------
static
int
InstJmp   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

static
int
InstJal   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    joffset ;

  cpu -> GetJFields   ( inst ,  joffset );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
  DBPRINTF  ( 'j' ,   "jal from 0x%x to 0x%x.\n" ,  cpu -> PC (),
        cpu -> PC ()   +   ( int ) joffset );
   return   ( cpu -> Jump   ( cpu -> PC ()   +   ( int ) joffset ));
}

static
int
InstJalr   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutIreg   ( 31 ,  cpu -> PC ());
   return   ( cpu -> Jump   ( cpu -> GetIreg ( src1 )));
}

//----------------------------------------------------------------------
//
//  Conditional branches
//
//----------------------------------------------------------------------
static
int
InstBeqz   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   ==   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBnez   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> GetIreg   ( src )   !=   0 )   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpt   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

static
int
InstBfpf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src ,  offset ,  dst ;

  cpu -> GetIFields   ( inst ,  src ,  offset ,  dst );
  cpu -> SignExtend16   ( offset );
   if   ( !  cpu -> StatusBit   ( DLX_STATUS_FPTRUE ))   {
     return   ( cpu -> Jump   ( cpu -> PC  ()   +   ( int ) offset ));
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Integer multiply and divide (done by FP unit).  Note that
//  multiplication overflows are NOT caught, and results are
//  unpredictable (may depend on machine on which simulator is
//  run).
//
//----------------------------------------------------------------------
static
int
InstMult   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   *   ( int ) cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstMultu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   *  cpu -> GetFreg   ( src2 ));
   return   ( 1 );
}

static
int
InstDiv   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFreg   ( src1 )   /   ( int ) denom );
   }
   return   ( 1 );
}

static
int
InstDivu   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ,  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFreg   ( src2 );
   if   ( denom  ==   0 )   {
    cpu -> CauseException ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFreg   ( dst ,  cpu -> GetFreg   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  trap
//
//  NOTE: different from the description in the DLX handbook.
//
//  The trap in DLX is unvectored; it's up to the interrupt handler
//  to do the vectoring.  However, the cause register is loaded with
//  the trap argument with the top 5 bits set to 00001.  This makes
//  it easy to identify traps and to vector them properly.
//
//  The trap instruction is also a way to access services from the
//  underlying machine.  In particular, we can do such things as
//  file access and printing.  Note that character access is handled
//  separately.
//----------------------------------------------------------------------
static
int
InstTrap   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    trapVector ;

  cpu -> GetJFields   ( inst ,  trapVector );
  trapVector  &=   0x0fffffff ;
  DBPRINTF  ( 't' , "Got a trap, inst=%08x, vector=%x\n" ,  inst ,  trapVector );
   if   (( trapVector  ==  DLX_TRAP_EXIT )   &&   !  cpu -> IgnoreExit ())   {
    cpu -> Exit   ();
   }
   if   ( trapVector  <   0x2000 )   {
     // Increment the PC so the address in the IAR is that of the
     // following instruction.
    cpu -> SetPC   ( cpu -> PC () + 4 );
    cpu -> CauseException   ( trapVector  |   0x08000000 );
   }   else   {
    cpu -> OutputBasicBlock   ( cpu -> PC () + 4 );
     if   ( cpu -> Flags ()   &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
      fprintf  ( cpu -> TraceFp (),   "T %x %x\n" ,  trapVector ,  cpu -> PC ());
     }
     // Handle simulator services here.  This isn't so performance
     // critical, so we can use a switch statement.
     // Parameters are passed on the stack.
     // Return values go into r1
     switch   ( trapVector )   {
     case  DLX_TRAP_EXITSIM :
      cpu -> Exit   ();
       break ;
     case  DLX_TRAP_PRINTF :
      cpu -> Printf   ();
       break ;
     case  DLX_TRAP_OPEN :
      cpu -> Open   ();
       break ;
     case  DLX_TRAP_READ :
      cpu -> Read   ();
       break ;
     case  DLX_TRAP_WRITE :
      cpu -> Write   ();
       break ;
     case  DLX_TRAP_LSEEK :
      cpu -> Seek   ();
       break ;
     case  DLX_TRAP_CLOSE :
      cpu -> Close   ();
       break ;
     case  DLX_TRAP_RANDOM :
      cpu -> Random   ();
       break ;
     case  DLX_TRAP_SRANDOM :
      cpu -> Srandom   ();
       break ;
     case  DLX_TRAP_TIMERGET :
      cpu -> Timerget ();
       break ;
     }
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//  rfe
//
//  When returning from an exception, jump to the IAR.  To avoid
//  illegal addresses, mask off the low two bits.  Also, turn
//  interrupts on.
//----------------------------------------------------------------------
static
int
InstRfe   ( uint32 inst ,   Cpu   * cpu )
{
   return   ( cpu -> DoRfe   ( inst ));
}

int
Cpu :: DoRfe   ( uint32 inst )
{
  uint32    iar ;
  uint32    isr ;

   if   ( UserMode   ())   {
     CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  iar  =   GetSreg   ( DLX_SREG_IAR )   &   ~ 0x3 ;
   OutputBasicBlock   ( iar );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "R %x %x\n" ,  PC () - 4 ,  iar );
   }
  isr  =   GetSreg   ( DLX_SREG_ISR );
   PutSreg   ( DLX_SREG_STATUS ,  isr );
   SetPC   ( iar );
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Miscellaneous instructions
//
//----------------------------------------------------------------------
static
int
InstMovi2s   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving integer reg %d (0x%x) to special reg %d.\n" ,
        src1 ,  cpu -> GetIreg ( src1 ),  dst );
  cpu -> PutSreg   ( dst ,  cpu -> GetIreg   ( src1 ));
   return   ( 1 );
}

static
int
InstMovs2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;

   if   ( cpu -> UserMode   ())   {
    cpu -> CauseException   ( DLX_EXC_PRIVILEGE );
     return   ( 1 );
   }
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'S' , "Moving special reg %d (0x%x) to integer reg %d.\n" ,
        src1 ,  cpu -> GetSreg ( src1 ),  dst );
  cpu -> PutIreg   ( dst ,  cpu -> GetSreg   ( src1 ));
   return   ( 1 );
}

static
int
InstIllegal   ( uint32 inst ,   Cpu   * cpu )
{
  cpu -> CauseException   ( DLX_EXC_ILLEGALINST );
   return   ( 1 );
}

static
int
InstNop   ( uint32 ,   Cpu   * cpu )
{
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Single precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   +  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstSubf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   -  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstMultf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   *  cpu -> GetFregF   ( src2 ));
   return   ( 1 );
}

static
int
InstDivf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   float  denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregF   ( src2 );
   if   ( denom  ==   ( float ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregF   ( dst ,  cpu -> GetFregF   ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Single precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   ==  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   !=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}
static
int
InstLtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtf   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   <=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGef   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregF   ( src1 )   >=  cpu -> GetFregF   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP math instructions.
//
//----------------------------------------------------------------------
static
int
InstAddd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   +  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstSubd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   -  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstMultd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,  cpu -> GetFregD   ( src1 )   *  cpu -> GetFregD   ( src2 ));
   return   ( 1 );
}

static
int
InstDivd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
   double     denom ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  denom  =  cpu -> GetFregD   ( src2 );
   if   ( denom  ==   ( double ) 0.0 )   {
    cpu -> CauseException   ( DLX_EXC_DIV0 );
   }   else   {
    cpu -> PutFregD   ( dst ,  cpu -> GetFregD ( src1 )   /  denom );
   }
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Double precision FP comparison instructions
//
//----------------------------------------------------------------------
static
int
InstEqd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   ==  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstNed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   !=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGtd   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstLed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   <=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

static
int
InstGed   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
   if   ( cpu -> GetFregD   ( src1 )   >=  cpu -> GetFregD   ( src2 ))   {
    cpu -> SetStatusBit   ( DLX_STATUS_FPTRUE );
   }   else   {
    cpu -> ClrStatusBit   ( DLX_STATUS_FPTRUE );
   }  
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  Conversion instructions
//
//----------------------------------------------------------------------
static
int
InstCvtf2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtf2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregF ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvtd2i   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFreg   ( dst ,   ( int ) cpu -> GetFregD ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2f   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  cpu -> PutFregF   ( dst ,   ( float ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

static
int
InstCvti2d   ( uint32 inst ,   Cpu   * cpu )
{
  uint32    src1 ,  src2 ,  dst ;
  cpu -> GetRFields   ( inst ,  src1 ,  src2 ,  dst );
  DBPRINTF  ( 'f' , "Converting f%d (%08x) to DFP (%lf) in f%d\n" ,
        src1 ,  cpu -> GetFreg ( src1 ),   ( double ) cpu -> GetFreg ( src1 ),  dst );
  cpu -> PutFregD   ( dst ,   ( double ) cpu -> GetFreg ( src1 ));
   return   ( 1 );
}

//----------------------------------------------------------------------
//
//  RR Instruction Table
//
//----------------------------------------------------------------------
Instruction   Cpu :: rrrInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x02 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x03 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x04 ,  DLX_FMT_RFMT ,   InstSll },
   { 0x05 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x06 ,  DLX_FMT_RFMT ,   InstSrl },
   { 0x07 ,  DLX_FMT_RFMT ,   InstSra },
   { 0x08 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x09 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0c ,  DLX_FMT_RFMT ,   InstIllegal },          // ALU TRAP instruction
   { 0x0d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x0f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x10 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x11 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x12 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x13 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x14 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x15 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x16 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x17 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x18 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x19 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_RFMT ,   InstAdd },
   { 0x21 ,  DLX_FMT_RFMT ,   InstAddu },
   { 0x22 ,  DLX_FMT_RFMT ,   InstSub },
   { 0x23 ,  DLX_FMT_RFMT ,   InstSubu },
   { 0x24 ,  DLX_FMT_RFMT ,   InstAnd },
   { 0x25 ,  DLX_FMT_RFMT ,   InstOr },
   { 0x26 ,  DLX_FMT_RFMT ,   InstXor },
   { 0x27 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x28 ,  DLX_FMT_RFMT ,   InstSeq },
   { 0x29 ,  DLX_FMT_RFMT ,   InstSne },
   { 0x2a ,  DLX_FMT_RFMT ,   InstSlt },
   { 0x2b ,  DLX_FMT_RFMT ,   InstSgt },
   { 0x2c ,  DLX_FMT_RFMT ,   InstSle },
   { 0x2d ,  DLX_FMT_RFMT ,   InstSge },
   { 0x2e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x2f ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x30 ,  DLX_FMT_RFMT ,   InstMovi2s },
   { 0x31 ,  DLX_FMT_RFMT ,   InstMovs2i },
   { 0x32 ,  DLX_FMT_RFMT ,   InstMovf },
   { 0x33 ,  DLX_FMT_RFMT ,   InstMovd },
   { 0x34 ,  DLX_FMT_RFMT ,   InstMovfp2i },
   { 0x35 ,  DLX_FMT_RFMT ,   InstMovi2fp },
   { 0x36 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of "regular" instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: regInstrs [ 64 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstIllegal },          // R-format instructions
   { 0x01 ,  DLX_FMT_RFMT ,   InstIllegal },          // FP instructions
   { 0x02 ,  DLX_FMT_JFMT ,   InstJmp },
   { 0x03 ,  DLX_FMT_JFMT ,   InstJal },
   { 0x04 ,  DLX_FMT_IFMT ,   InstBeqz },
   { 0x05 ,  DLX_FMT_IFMT ,   InstBnez },
   { 0x06 ,  DLX_FMT_IFMT ,   InstBfpt },
   { 0x07 ,  DLX_FMT_IFMT ,   InstBfpf },
   { 0x08 ,  DLX_FMT_IFMT ,   InstAddi },
   { 0x09 ,  DLX_FMT_IFMT ,   InstAddui },
   { 0x0a ,  DLX_FMT_IFMT ,   InstSubi },
   { 0x0b ,  DLX_FMT_IFMT ,   InstSubui },
   { 0x0c ,  DLX_FMT_IFMT ,   InstAndi },
   { 0x0d ,  DLX_FMT_IFMT ,   InstOri },
   { 0x0e ,  DLX_FMT_IFMT ,   InstXori },
   { 0x0f ,  DLX_FMT_IFMT ,   InstLhi },
   { 0x10 ,  DLX_FMT_JFMT ,   InstRfe },
   { 0x11 ,  DLX_FMT_JFMT ,   InstTrap },
   { 0x12 ,  DLX_FMT_JFMT ,   InstJr },
   { 0x13 ,  DLX_FMT_JFMT ,   InstJalr },
   { 0x14 ,  DLX_FMT_IFMT ,   InstSlli },
   { 0x15 ,  DLX_FMT_IFMT ,   InstNop },
   { 0x16 ,  DLX_FMT_IFMT ,   InstSrli },
   { 0x17 ,  DLX_FMT_IFMT ,   InstSrai },
   { 0x18 ,  DLX_FMT_IFMT ,   InstSeqi },
   { 0x19 ,  DLX_FMT_IFMT ,   InstSnei },
   { 0x1a ,  DLX_FMT_IFMT ,   InstSlti },
   { 0x1b ,  DLX_FMT_IFMT ,   InstSgti },
   { 0x1c ,  DLX_FMT_IFMT ,   InstSlei },
   { 0x1d ,  DLX_FMT_IFMT ,   InstSgei },
   { 0x1e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x20 ,  DLX_FMT_IFMT ,   InstLb },
   { 0x21 ,  DLX_FMT_IFMT ,   InstLh },
   { 0x22 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x23 ,  DLX_FMT_IFMT ,   InstLw },
   { 0x24 ,  DLX_FMT_IFMT ,   InstLbu },
   { 0x25 ,  DLX_FMT_IFMT ,   InstLhu },
   { 0x26 ,  DLX_FMT_IFMT ,   InstLf },
   { 0x27 ,  DLX_FMT_IFMT ,   InstLd },
   { 0x28 ,  DLX_FMT_IFMT ,   InstSb },
   { 0x29 ,  DLX_FMT_IFMT ,   InstSh },
   { 0x2a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2b ,  DLX_FMT_IFMT ,   InstSw },
   { 0x2c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x2e ,  DLX_FMT_IFMT ,   InstSf },
   { 0x2f ,  DLX_FMT_IFMT ,   InstSd },
   { 0x30 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x31 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x32 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x33 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x34 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x35 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x36 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x37 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x38 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x39 ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3a ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3b ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3c ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3d ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3e ,  DLX_FMT_IFMT ,   InstIllegal },
   { 0x3f ,  DLX_FMT_IFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Table of FP instructions
//
//----------------------------------------------------------------------
Instruction   Cpu :: fpInstrs [ 32 ]   =   {
   { 0x00 ,  DLX_FMT_RFMT ,   InstAddf },
   { 0x01 ,  DLX_FMT_RFMT ,   InstSubf },
   { 0x02 ,  DLX_FMT_RFMT ,   InstMultf },
   { 0x03 ,  DLX_FMT_RFMT ,   InstDivf },
   { 0x04 ,  DLX_FMT_RFMT ,   InstAddd },
   { 0x05 ,  DLX_FMT_RFMT ,   InstSubd },
   { 0x06 ,  DLX_FMT_RFMT ,   InstMultd },
   { 0x07 ,  DLX_FMT_RFMT ,   InstDivd },
   { 0x08 ,  DLX_FMT_RFMT ,   InstCvtf2d },
   { 0x09 ,  DLX_FMT_RFMT ,   InstCvtf2i },
   { 0x0a ,  DLX_FMT_RFMT ,   InstCvtd2f },
   { 0x0b ,  DLX_FMT_RFMT ,   InstCvtd2i },
   { 0x0c ,  DLX_FMT_RFMT ,   InstCvti2f },
   { 0x0d ,  DLX_FMT_RFMT ,   InstCvti2d },
   { 0x0e ,  DLX_FMT_RFMT ,   InstMult },
   { 0x0f ,  DLX_FMT_RFMT ,   InstDiv },
   { 0x10 ,  DLX_FMT_RFMT ,   InstEqf },
   { 0x11 ,  DLX_FMT_RFMT ,   InstNef },
   { 0x12 ,  DLX_FMT_RFMT ,   InstLtf },
   { 0x13 ,  DLX_FMT_RFMT ,   InstGtf },
   { 0x14 ,  DLX_FMT_RFMT ,   InstLef },
   { 0x15 ,  DLX_FMT_RFMT ,   InstGef },
   { 0x16 ,  DLX_FMT_RFMT ,   InstMultu },
   { 0x17 ,  DLX_FMT_RFMT ,   InstDivu },
   { 0x18 ,  DLX_FMT_RFMT ,   InstEqd },
   { 0x19 ,  DLX_FMT_RFMT ,   InstNed },
   { 0x1a ,  DLX_FMT_RFMT ,   InstLtd },
   { 0x1b ,  DLX_FMT_RFMT ,   InstGtd },
   { 0x1c ,  DLX_FMT_RFMT ,   InstLed },
   { 0x1d ,  DLX_FMT_RFMT ,   InstGed },
   { 0x1e ,  DLX_FMT_RFMT ,   InstIllegal },
   { 0x1f ,  DLX_FMT_RFMT ,   InstIllegal },
};

//----------------------------------------------------------------------
//
//  Cpu::CauseException
//
//  Cause an exception.  This loads the CAUSE register with the
//  exception cause, loads the IAR with the proper pointer, and
//  sets things up so that the exception will be taken after the
//  current instruction completes.
//
//----------------------------------------------------------------------
int
Cpu :: CauseException   ( int  excType )
{
  uint32    ivec ;

  DBPRINTF  ( 't' , "Exception being done (cause=0x%x @ pc=0x%x).\n" , excType ,
        PC () - 4 );
  ivec  =   GetSreg   ( DLX_SREG_INTRVEC );
   OutputBasicBlock   ( ivec );
   if   ( flags  &   ( DLX_TRACE_INSTRUCTIONS  |  DLX_TRACE_MEMORY ))   {
    fprintf  ( tracefp ,   "X %x %x\n" , excType ,  PC () - 4 );
   }
   PutSreg ( DLX_SREG_CAUSE ,  excType );
   // PC has already been incremented, so decrement it first.  If this
   // is a trap or interrupt, the PC will have already been incremented
   // (if necessary) so the IAR points to the next instruction to
   // execute.
   PutSreg ( DLX_SREG_IAR ,  PC () - 4 );
   // Save the current status register
   PutSreg ( DLX_SREG_ISR ,   GetSreg   ( DLX_SREG_STATUS ));
   // Save the current value of register 31.  This is necessary to give
   // the interrupt handler a temporary register that can be used to
   // switch to a system stack (rather than user stack)
   PutSreg ( DLX_SREG_IR31 ,   GetIreg   ( 31 ));
   // Set the next instruction to be run to be the interrupt vector.
   SetPC   ( ivec );
   // Set the status register to be system mode
   PutSreg ( DLX_SREG_STATUS ,   GetSreg   ( DLX_SREG_STATUS )   |  DLX_STATUS_SYSMODE );
   // Turn off interrupts
   DisableInterrupts   ();
   return   ( 1 );
}


//----------------------------------------------------------------------
//
//  Cpu::VaddrToPaddr
//
//  Read a single word from memory.  This involves translating
//  the virtual address to a physical address, checking that the
//  access is allowed, and ensuring that the address itself is
//  valid (ie, aligned).  An exception is caused (and 0 returned)
//  if the access fails for any reason.
//
//----------------------------------------------------------------------
inline
int
Cpu :: VaddrToPaddr   ( uint32 vaddr ,  uint32 &  paddr ,  uint32 op ,  uint32 pteflags )
{
  uint32    pt1base ,  pt2base ,  pt1pagebits ,  pt2pagebits ;
  uint32    pteaddr ;
  uint32    offsetinpage ,  entrynum ;
  uint32    pagemask ;

   if   (( vaddr  &   0x3 )   !=   0 )   {
     CauseException   ( DLX_EXC_ADDRESS );
     return   ( 0 );
   }
   if   ( StatusBit   ( DLX_STATUS_PAGE_TABLE ))   {
     // Translate if in user mode or if in system mode and the appropriate
     // translation bit is set in the status register.
     if   ( UserMode   ()   ||
     (( op  ==  DLX_MEM_READ )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_RD ))   ||
     (( op  ==  DLX_MEM_WRITE )   &&
      ( GetSreg   ( DLX_SREG_STATUS )   &  DLX_STATUS_XLATE_WR )))   {
      DBPRINTF  ( 'm' ,   "Translating 0x%x\n" ,  vaddr );
      pt1base  =   GetSreg   ( DLX_SREG_PGTBL_BASE );
      pt1pagebits  =   GetSreg   ( DLX_SREG_PGTBL_BITS );
      pt2pagebits  =   ( pt1pagebits  >>   16 )   &   0xffff ;
      pt1pagebits  &=   0xffff ;
      pagemask  =   ( 1   <<  pt2pagebits )   -   1 ;
      offsetinpage  =  vaddr  &  pagemask ;
       // Mask off the low bits
      vaddr  &=   ~ pagemask ;
       if   (( entrynum  =   ( vaddr  >>  pt1pagebits ))   >=
       GetSreg   ( DLX_SREG_PGTBL_SIZE ))   {
    DBPRINTF  ( 'm' ,   "Out of range (L1 = %db, L2 = %db size=%d entry=%d)\n" ,
          pt1pagebits ,  pt2pagebits ,   GetSreg ( DLX_SREG_PGTBL_SIZE ),
          entrynum );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
      pteaddr  =  pt1base  +   4   *  entrynum ;
      paddr  =   Memory   ( pteaddr );
       // If the L2 page size is the same as the L1 page size, there's
       // no L2 page table!
       if   ( pt1pagebits  !=  pt2pagebits )   {
    pt2base  =  paddr ;
     if   ( pt2base  ==   0 )   {
      DBPRINTF  ( 'm' ,   "No L2 table at entry %d! (base = 0x%x)\n" ,
            entrynum ,  pt1base );
       CauseException   ( DLX_EXC_PAGEFAULT );
       return   ( 0 );
     }
    pteaddr  =  pt2base  +   4   *   (( vaddr  >>  pt2pagebits )   &
                  (( 1   <<   ( pt1pagebits - pt2pagebits )) - 1 ));
    paddr  =   Memory   ( pteaddr );
       }
      DBPRINTF  ( 'M' ,   "Using PTE 0x%08x\n" ,  paddr );
       if   ( ! ( paddr  &  DLX_PTE_VALID ))   {
    DBPRINTF  ( 'm' ,   "PTE invalid (0x%08x)\n" ,  paddr );
     PutSreg   ( DLX_SREG_FAULT_ADDR ,  vaddr );
     CauseException   ( DLX_EXC_PAGEFAULT );
     return   ( 0 );
       }
       if   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     SetMemory   ( pteaddr ,
           paddr  |   ( pteflags  &   ( DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED )));
       }
      paddr  &=   ~ ( pagemask  |  DLX_PTE_MASK );
      paddr  |=  offsetinpage ;
      DBPRINTF  ( 'm' ,
         "0x%x => 0x%x (=%08x) using base1=0x%x/%d, entry %d\n" ,
        vaddr  |  offsetinpage ,  paddr ,
         Memory   ( paddr ),
        pt1base ,  pt1pagebits ,  entrynum );
       return   ( 1 );
     }   else   {
       // For system references, physical address is the same
       // as virtual address.
      paddr  =  vaddr ;
       if   (( vaddr  <=  memSize )   ||   (( vaddr  >=  DLX_IO_BASE )   &&
                  ( vaddr  <=   ( DLX_IO_BASE + DLX_IO_SIZE ))))   {
     return   ( 1 );
       }   else   {
    DBPRINTF  ( 't' , "Illegal system address: 0x%x.\n" ,  vaddr );
     CauseException   ( DLX_EXC_ACCESS );
     return   ( 0 );
       }
     }
   }   else   if   ( StatusBit   ( DLX_STATUS_TLB ))   {
     // DLX_STATUS_TLB
     return   ( 1 );
   }   else   {
    paddr  =  vaddr ;
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::ReadWord
//
//  Read a word from memory.  This can either be a regular memory
//  address or an I/O address.
//
//----------------------------------------------------------------------
int
Cpu :: ReadWord   ( uint32 vaddr ,  uint32  & val ,  uint32 op )
{
  uint32    paddr ;

  DBPRINTF  ( 'l' , "Trying to read virtual address: 0x%x.\n" ,  vaddr );
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  op ,  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
    val  =   Memory ( paddr );
   }   else   {
    DBPRINTF  ( 'l' , "Trying to load special address: 0x%x.\n" ,  paddr );
     switch   ( paddr )   {
     case  DLX_KBD_NCHARSIN :
      val  =   KbdNumInChars   ();
       break ;
     case  DLX_KBD_NCHARSOUT :
      val  =   KbdNumOutChars   ();
       break ;
     case  DLX_KBD_GETCHAR :
      val  =   KbdGetChar   ();
       break ;
     case  DLX_DISK_STATUS :
       break ;
     case  DLX_GETMEMSIZE :
      val  =  memSize ;
       break ;
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: WriteWord   ( uint32 vaddr ,  uint32 val )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ,
             DLX_PTE_DIRTY  |  DLX_PTE_REFERENCED ))   {
     return   ( 0 );
   }
   if   ( paddr  <=  memSize )   {
     SetMemory ( paddr ,  val );
   }   else   {
     switch   ( paddr )   {
     case  DLX_KBD_PUTCHAR :
       KbdPutChar   ( val );
       break ;
     case  DLX_KBD_INTR :
       if   ( val  ==   0 )   {
    flags  &=   ~ DLX_FLAG_KBD_INTERRUPT ;
       }   else   {
    flags  |=  DLX_FLAG_KBD_INTERRUPT ;
       }
       break ;
     case  DLX_TIMER_SETTIMER :
      DBPRINTF  ( 'o' , "Setting timer to %d us.\n" ,  val );
       SetTimer   ( val );
       break ;
#if   0
     case  DLX_DISK_REQUEST :
      diskReq  =  val ;
       StartDiskIo   ();
       break ;
     case  DLX_DISK_BLOCK :
      diskBlock  =  val ;
       break ;
     case  DLX_DISK_ADDR :
      diskAddr  =  val ;
       break ;
#endif
     default :
       CauseException   ( DLX_EXC_ACCESS );
       break ;
     }
   }
   return   ( 1 );
}

int
Cpu :: TestWriteWord   ( uint32 vaddr )
{
  uint32    paddr ;
   if   ( ! VaddrToPaddr   ( vaddr ,  paddr ,  DLX_MEM_WRITE ))   {
     return   ( 0 );
   }   else   {
     return   ( 1 );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Open
//
//  Open a file in the "real" file system.  All parameters (in
//  particular, the file name) must be passed by physical address in
//  the simulator's address space.
//  accessType = 1 for read, 2 for write, 3 for both.
//
//  The trap is called as:
//  Open (name, accesstype)
//
//----------------------------------------------------------------------
void
Cpu :: Open   ()
{
  uint32    name ;
   char   nameBuf [ 100 ];
   char    * tp ;
   int        accessType ;
   int        i ;

  name  =   GetParam ( 0 );
  accessType  =   GetParam ( 1 );
  DBPRINTF  ( 'F' ,   "Opening file %s (mode=%d).\n" ,   ( char   * ) memory  +  name ,
        accessType );
   switch   ( accessType )   {
   case   1 :
    tp  =   "r" ;
     break ;
   case   2 :
    tp  =   "w" ;
     break ;
   case   3 :
    tp  =   "r+" ;
     break ;
   default :
     SetResult   ( 0xffffffff );
     return ;
     break ;
   }
   for   ( =   0 ;  i  <  DLX_MAX_FILES ;  i ++ )   {
     if   ( fp [ i ]   ==  NULL )   {
       if   ( ! CheckAddr   ( name ))   {
     SetResult   ( 0xffffffff );
     return ;
       }
      strncpy  ( nameBuf ,   ( char   * ) memory  +  name ,   98 );
       // If fopen fails, it returns NULL, so it looks like no open
       // was done.
      fp [ i ]   =  fopen  ( nameBuf ,  tp );
       break ;
     }
   }
   if   ( >=  DLX_MAX_FILES )   {
    i  =   - 1 ;
   }   else   if   ( fp [ i ]   ==  NULL )   {
    i  =   - errno ;
   }
  DBPRINTF  ( 'F' ,   "Open returns file descriptor %d\n" ,  i );
   SetResult   ( i );
}

//----------------------------------------------------------------------
//
//  Cpu::Read
//  Cpu::Write
//
//  Read data from a previously opened file in the real world.
//  Called as:
//  Read (int desc, void* buf, int size)
//  Write (int desc, void* buf, int size)
//  Returns number of bytes read if there were more than 0, 0 on
//  end of file, and -1 otherwise.
//
//----------------------------------------------------------------------
void
Cpu :: Read   ()
{
   FileIo   ( DLX_FILE_READ );
}

void
Cpu :: Write   ()
{
   FileIo   ( DLX_FILE_WRITE );
}

void
Cpu :: FileIo   ( int  kind )
{
   int        fd ;
  uint32    buf ;
   int        size ;
   int        n ;

  fd  =   GetParam   ( 0 );
  buf  =   GetParam   ( 1 );
  size  =   GetParam   ( 2 );
  DBPRINTF  ( 'F' ,   "FileIo (%s) on fd %d, size %d, buffer=0x%x\n" ,
         ( kind  ==  DLX_FILE_WRITE )   ?   "write"   :   "read" ,
        fd ,  size ,  buf );
   if   ( !   CheckAddr   ( buf )   ||   ( !   CheckFd   ( fd )))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   ( kind  ==  DLX_FILE_WRITE )   {
    n  =  fwrite  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }   else   {
    n  =  fread  (( unsigned   char   * ) memory  +  buf ,   1 ,  size ,  fp [ fd ]);
   }
   if   ( >   0 )   {
     SetResult   ( n );
   }   else   if   ( feof  ( fp [ fd ]))   {
     SetResult   ( 0 );
   }   else   {
     SetResult   ( - errno );
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Seek
//
//  Seek to a position in the file.  Call it like:
//  Seek (int fd, int offset, int from)
//  Returns the new file position, or -1 if it fails.
//
//----------------------------------------------------------------------
void
Cpu :: Seek   ()
{
   int        fd ;
   int        offset ;
   int        whence ;
   int        rv ;

  fd  =   GetParam ( 0 );
  offset  =   GetParam ( 1 );
  whence  =   GetParam ( 2 );
   if   ( !   CheckFd   ( fd ))   {
     SetResult   ( 0xffffffff );
     return ;
   }
   if   (( rv  =  fseek  ( fp [ fd ],  offset ,  whence ))   <   0 )   {
     SetResult   ( rv );
   }   else   {
     SetResult   ( ftell  ( fp [ fd ]));
   }
}

//----------------------------------------------------------------------
//
//  Cpu::Close
//
//  Close a file and release its resources.
//
//----------------------------------------------------------------------
void
Cpu :: Close   ()
{
   int        fd ;
  uint32    retval ;

  fd  =   GetParam ( 0 );
   if   ( ! CheckFd   ( fd ))   {
    retval  =   0xffffffff ;
   }   else   {
    retval  =  fclose  ( fp [ fd ]);
   }
  DBPRINTF  ( 'F' ,   "Closing file %d.\n" ,  fd );
  fp [ fd ]   =  NULL ;
   SetResult   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::Random
//
//  Return a random number using the underlying random() function
//  call.
//
//----------------------------------------------------------------------
void
Cpu :: Random   ()
{
   int        n ;

  n  =  random  ();
   SetResult   ( n );
}

//----------------------------------------------------------------------
//
//  Cpu::Srandom
//
//  Set the random number generator to the number passed.
//
//----------------------------------------------------------------------
void
Cpu :: Srandom   ()
{
  uint32    seed ;

  seed  =   GetParam   ( 0 );
  srandom  ( seed );
   SetResult   ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::GetParam
//
//  Parameters are stored on the stack (r29), with the first parameter
//  stored at [r29].  Other parameters are stored at [r29+4], [r29+8],
//  etc.  Parameters are passed on word boundaries.
//
//----------------------------------------------------------------------
uint32
Cpu :: GetParam   ( int  p )
{
  uint32    stackPtr ;

  stackPtr  =   GetIreg   ( 29 );
   return   ( Memory ( stackPtr  +   ( <<   2 )));
}

//----------------------------------------------------------------------
//
//  Cpu::SetResult
//
//  Results are stored in register 1.
//
//----------------------------------------------------------------------
void
Cpu :: SetResult   ( uint32 r )
{
   PutIreg   ( 1 ,  r );
}

//----------------------------------------------------------------------
//
//  Cpu::Printf
//
//  This is the actual printf routine because we have to handle strings
//  differently because of the pointers involved.  Everything else works
//  as would be expected.
//
//  IMPORTANT: floating point numbers aren't supported.
//
//  IMPORTANT: all pointers must be passed as addresses in physical
//  simulated memory, not as virtual addresses.  This basically means
//  that you don't want to call printf from user level because the
//  format string itself is in user space.  Of course, you can always
//  copy it into kernel space, but it's harder to copy the other string
//  arguments.
//
//----------------------------------------------------------------------
void
Cpu :: Printf   ()
{
  uint32    fmtaddr ;
   char    * c ;
  uint32    args [ 10 ];
   int        nargs  =   0 ;

  fmtaddr  =   GetParam ( 0 );
   // 
   for   ( =  fmtaddr  +   ( char   * ) memory ;   * !=   '\0' ;  c ++ )   {
     if   ( * ==   '%' )   {
       // if this is a %%, skip past second %
       if   ( * ( c + 1 )   ==   '%' )   {
    c ++ ;
     continue ;
       }
       // Get the current argument off the stack
      args [ nargs ]   =   GetParam ( nargs + 1 );
      DBPRINTF  ( 'p' ,   "Argument %d at 0x%x is %d (0x%x).\n" ,  nargs ,
        args [ nargs ],  args [ nargs ]);
       while   ( 1 )   {
    c ++ ;
     if   ( * ==   's' )   {
       // If it's a string, the address is relative to the
       // start of emulated memory.
      args [ nargs ]   +=   ( uint32 ) memory ;
       break ;
     }   else   if   ( * ==   'l' )   {
       continue ;
     }   else   if   (( * ==   'f' )   ||   ( * ==   'g' )   ||   ( * ==   'e' ))   {
       // If it's a floating point number, it'll be passed as
       // a double, so grab the second word also.
      nargs  +=   1 ;
      args [ nargs ]   =   GetParam ( nargs + 1 );
       break ;
     }   else   if   (( * >=   'a' )   &&   ( * <=   'z' ))   {
       // If it's another formatting character, it's not
       // a string, but we can leave the loop anyway.
       break ;
     }
       }
      nargs  +=   1 ;
     }
   }
  printf  ( fmtaddr  +   ( char   * ) memory ,
      args [ 0 ],  args [ 1 ],  args [ 2 ],  args [ 3 ],
      args [ 4 ],  args [ 5 ],  args [ 6 ],  args [ 7 ]);
  fflush  ( stdout );
}

//----------------------------------------------------------------------
//
//  Cpu::Exit
//
//  Exit the CPU altogether.  Before doing so, print statistics on
//  instructions executed and time taken.
//
//----------------------------------------------------------------------
void
Cpu :: Exit   ()
{
   struct  timeval    t ;

  printf  ( "Exiting at program request.\n" );
  printf  ( "Instructions executed: %.0lf\n" ,  instrsExecuted );
  printf  ( "Time simulated: %.03lf secs\n" ,  usElapsed  /   1e6 );
  gettimeofday  ( & t ,   ( void   * ) 0 );
  realElapsed  =   (( double ) t . tv_sec  +   (( double ) t . tv_usec ) * 1e-6 )   -  realElapsed ;
  printf  ( "Real time elapsed: %.03lf secs\n" ,  realElapsed );
  printf  ( "Execution rate: %.2lfM simulated instructions per real second.\n" ,
      instrsExecuted  *   1e-6   /  realElapsed );
  exit  ( 0 );
}

//----------------------------------------------------------------------
//
//  Cpu::ExecOne
//
//  Execute a single CPU instruction in the simulator.
//
//----------------------------------------------------------------------
int
Cpu :: ExecOne   ()
{
  uint32    curInst ;
  uint32    tmpPc ;
  uint32    curOp ;
  uint32    retval ;
  uint32    funcCode ;         // subcode for RRR & FP ops

  usElapsed  +=  usPerInst ;
  instrsExecuted  +=   1.0 ;
   // Increment PC before checking for interrupts because CauseException
   // will subtract 4 off the PC before placing the value into the IAR.
   // By incrementing here, we ensure that the current instruction is
   // the one whose address goes into the IAR.
   SetPC   ( PC ()   +   4 );
   // Check for an input character.  If we got one and interrupts are
   // enabled, do an interrupt.
   if   ( kbdcounter ++   >  DLX_KBD_FREQUENCY )   {
    kbdcounter  =   0 ;
     if   ( GetCharIfAvail   ()   &&   ( IntrLevel   ()   <   8 ))   {
      DBPRINTF  ( 't' , "Keyboard interrupt at PC=0x%x, t=%.0fus\n" ,
        PC () - 4 ,  usElapsed );
       CauseException   ( DLX_EXC_KBD );
       return   ( 0 );
     }
   }
   if   ( IntrLevel ()   <   8 )   {
     if   ( timerInterrupt  <  usElapsed )   {
      DBPRINTF  ( 't' ,   "Timer interrupt at PC=0x%x, t=%.0fus, intr@%.0fus\n" ,
        PC () - 4 ,  usElapsed ,  timerInterrupt );
      timerInterrupt  =  DLX_TIMER_NOT_ACTIVE ;
       CauseException   ( DLX_EXC_TIMER );
       return   ( 0 );
     }
   }
   if   ( !   ReadWord   ( PC () - 4 ,  curInst ,  DLX_MEM_INSTR ))   {
    DBPRINTF  ( 'I' ,   "Instruction fetch at 0x%x failed!\n" ,  PC () - 4 );
     return   ( 0 );
   }
  curOp  =   ( curInst  >>  DLX_OPCODE_SHIFT )   &  DLX_OPCODE_MASK ;
  DBPRINTF  ( 'I' ,   "Instr %06d: %08x : %08x (main=%02x, aux=%02x)\n" ,
         ( int ) instrsExecuted  %   1000000 ,
        curInst ,  PC ()   -   4 ,  curOp ,
         ( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &  DLX_ALU_FUNC_CODE_MASK );
   switch   ( curOp )   {
   case   0x00 :          // ALU and other R-R operations
    funcCode  =   (( curInst  >>  DLX_ALU_FUNC_CODE_SHIFT )   &
        DLX_ALU_FUNC_CODE_MASK );
    retval  =   ( rrrInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   case   0x01 :          // FP operations
    funcCode  =   (( curInst  >>  DLX_FPU_FUNC_CODE_SHIFT )   &
        DLX_FPU_FUNC_CODE_MASK );
    retval  =   ( fpInstrs [ funcCode ]. handler )( curInst ,   this );
     break ;
   default :
    retval  =   ( regInstrs [ curOp ]. handler )( curInst ,   this );
     break ;
   }
   return   ( retval );
}

//----------------------------------------------------------------------
//
//  Cpu::LoadMemory
//
//  Load a file into memory.  The file format consists of a
//  leading address, followed by a colon, followed by the data
//  to go at that address.  If the address is omitted, the data
//  follows that from the previous line of the file.
//
//----------------------------------------------------------------------
static
inline
int
getxvalue  ( int  x )
{
   if   (( >=   '0' )   &&   ( <=   '9' ))   {
     return   ( -   '0' );
   }   else   if   (( >=   'a' )   &&   ( <=   'f' ))   {
     return   ( +   10   -   'a' );
   }   else   if   (( >=   'A' )   &&   ( <=   'F' ))   {
     return   ( +   10   -   'A' );
   }   else   {
     return   ( 0 );
   }
}

int
Cpu :: LoadMemory   ( const   char   * file ,  uint32 &  startAt )
{
  FILE   * fp ;
   char   buffer [ 200 ];
   char    * pos ;
   int        nread  =   0 ;
  uint32    addr  =   0 ;
  uint32    val ;
   int        count ;

   if   (( fp  =  fopen  ( file ,   "r" ))   ==  NULL )   {
     return   ( 0 );
   }
   if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
     return   ( 0 );
   }
   // Read in the "start" line
   if   ( strstr  ( buffer ,   "start:" )   ==  NULL )   {
     return   ( 0 );
   }
  pos  =  index  ( buffer ,   ':' )   +   1 ;
  startAt  =  strtol  ( pos ,  NULL ,   16 );
   while   ( 1 )   {
    pos  =  buffer ;
     if   ( fgets  ( buffer ,   sizeof   ( buffer )   -   1 ,  fp )   ==  NULL )   {
       return   ( nread );
     }
     if   ( index  ( buffer ,   ':' )   ==  NULL )   {
       continue ;
     }
     if   ( * pos  !=   ':' )   {
      addr  =  strtol  ( pos ,   & pos ,   16 );
     }
     if   ( * pos  !=   ':' )   {
      fprintf  ( stderr ,   "Error reading data file near:\n%s\n" ,  buffer );
       return   ( nread );
     }
    pos ++ ;    // skip past colon
     while   ( 1 )   {
       while   ( isspace  ( * pos ))   {
    pos ++ ;
       }
       // Exit loop if at least one digit isn't a hex digit.
       if   ( ! ( isxdigit  ( * pos )   &&  isxdigit  ( * ( pos + 1 ))))   {
     break ;
       }
      val  =   ( getxvalue ( * pos )   *   16 )   +  getxvalue ( * ( pos + 1 ));
       * ((( unsigned   char   * ) memory )   +  addr )   =  val ;
      pos  +=   2 ;
      addr ++ ;
      nread ++ ;
     }
   }
}

//----------------------------------------------------------------------
//
//  Cpu::SetTimer
//
//  Set the CPU timer.  This simply causes an interrupt after the
//  specified time (in microseconds) has elapsed.
//
//----------------------------------------------------------------------
void
Cpu :: SetTimer   ( uint32 usecs )
{
  timerInterrupt  =  usElapsed  +   ( double ) usecs ;
}

//----------------------------------------------------------------------
//
//  Cpu::Timerget
//
//  return Simulated time(in milliseconds) 
//
//----------------------------------------------------------------------
uint32 
Cpu :: Timerget ()
{
    unsigned   int  result ;
   result  =   ( unsigned   int )( usElapsed / 1e3 );
    SetResult   ( result );
}
//----------------------------------------------------------------------
//
//  Cpu::KbdGetChar
//
//  Get a single character from the keyboard buffer.
//
//----------------------------------------------------------------------
uint32
Cpu :: KbdGetChar   ()
{
  uint32    v ;

   if   ( kbdbufferedchars  ==   0 )   {
     return   ( 0 );
   }
  v  =  kbdbuffer [ kbdrpos ++ ];
  kbdrpos  %=  DLX_KBD_BUFFER_SIZE ;
  kbdbufferedchars -- ;
   return   ( v );
}

//----------------------------------------------------------------------
//
//  Cpu::IgnoreExit
//
//----------------------------------------------------------------------
void
Cpu :: IgnoreExit   ( int  ignore )
{
  flags  &=   ~ DLX_FLAG_IGNORE_EXIT ;
   if   ( ignore )   {
    flags  |=  DLX_FLAG_IGNORE_EXIT ;
   }
}

//----------------------------------------------------------------------
//
//  Cpu::OutputBasicBlock
//
//  Print a basic block and reset statistics gathering.
//
//----------------------------------------------------------------------
void
Cpu :: OutputBasicBlockActual   ()
{
   int        i ,  ninstrs ;

  ninstrs  =   ( PC ()   -  basicBlockStart )   >>   2 ;
   // Print out the basic block information here
   if   ( flags  &  DLX_TRACE_INSTRUCTIONS )   {
    fprintf  ( tracefp ,   "I %x %d\n" ,  basicBlockStart ,  ninstrs );
   }
   if   ( flags  &  DLX_TRACE_MEMORY )   {
     for   ( =   0 ;  i  <  naccesses ;  i ++ )   {
      fprintf  ( tracefp ,   "%s r%d %x %x\n" ,  accesses [ i ]. inst ,  accesses [ i ]. reg ,
           accesses [ i ]. addr , accesses [ i ]. value );
     }
   }
  naccesses  =   0 ;
}

option1/lab4_1/src/lab4.h

#ifndef _LAB4_H_ #define _LAB4_H_ #define NULL (void *)0x0 #define INVALID_SEM -1 typedef unsigned int uint32; typedef int sem_t; //Related to processes uint32 getpid(); //trap 0x431 void process_create(char *arg1, ...); //trap 0x432 //Related to semaphores sem_t sem_create(int count); //trap 0x450 int sem_wait(sem_t sem); //trap 0x451 int sem_signal(sem_t sem); //trap 0x452 #endif _LAB4_H_

option1/lab4_1/src/filesys.h

// // filesys.h // // Includes for the file system. Includes the definition of the file // system interface structure. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: filesys.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _filesys_h_ #define _filesys_h_ #define FS_FS_BUILTIN 1 #define FS_FS_DLXOS 2 #define FS_MODE_READ 0x1 #define FS_MODE_WRITE 0x2 #define FS_MODE_RW (FS_MODE_READ | FS_MODE_WRITE) // If this flag is set, a new file is created if no file already exists. // This flag only works with the DLX file system. #define FS_MODE_CREATE 0x4 // IMPORTANT: These must match the underlying UNIX seek parameters. // These values are correct for Linux and should work elsewhere, but // be careful.... #define FS_SEEK_SET 0 #define FS_SEEK_CUR 1 #define FS_SEEK_END 2 #define FS_BUFFER_SIZE 256 #define FS_MAX_OPEN_FILES 32 typedef struct Fs { int (*Open)(int, const char *, int); int (*Read)(int, char *, int); int (*Write)(int, char *, int); int (*Seek)(int, int, int); int (*Close)(int); int (*Delete)(const char *); } Fs; typedef struct FsUnixInfo { int fd; // Unix file descriptor } FsUnixInfo; typedef struct FsDlxInfo { int curpos; // What's our current position in the file? } FsDlxInfo; typedef struct FsOpenFile { int fs; // which file system is this file in? int flags; char buffer[FS_BUFFER_SIZE]; union { FsUnixInfo Unix; FsDlxInfo Dlx; } u; } FsOpenFile; extern int FsOpen (const char *, int); extern int FsRead (int, char *, int); extern int FsWrite (int, char *, int); extern int FsSeek (int, int, int); extern int FsClose (int); extern int FsDelete (const char *); #endif // _filesys_h_

option1/lab4_1/src/trap_random.o

; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom

option1/lab4_1/src/dlxos.o

;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep

option1/lab4_1/src/usertraps.s

;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal

option1/lab4_1/src/dlxos.h

// // Routines used by the entire operating system. // #ifndef _dlxos_h_ #define _dlxos_h_ #include "misc.h" typedef unsigned int uint32; #define DLX_PROCESS_QUANTUM 10000 // in microseconds extern void SetTimer (int); extern char debugstr[]; #define ASSERT(cond,s) (cond ? 0 : printf ("%s: %s\n", __FUNCTION__,s)) // dbprintf() is a VERY useful macro. It gets used as follows: // dbprintf ('x', "This prints %d and %x\n", val1, val2); // This will print the expected string only if the debugging options contain // the letter 'x'. This allows users to turn on different debugging // statements at different times by using different letters. For example, // process debugging statements could use 'p', and memory 'm'. Specifying // a '+' in the debugging string will turn on all debugging printfs. #define dbprintf(flag, format, args...) \ if ((dindex(debugstr,flag)!=(char *)0) || \ (dindex(debugstr,'+')!=(char *)0)) { \ printf (format, ## args); \ } extern int CurrentIntrs (); extern int SetIntrs (int); extern void KbdModuleInit (); extern void intrreturn (); inline int DisableIntrs () { return (SetIntrs (0xf)); } inline int EnableIntrs () { return (SetIntrs (0x0)); } inline int RestoreIntrs (int intrs) { return (SetIntrs (intrs)); } #endif // _dlxos_h_

option1/lab4_1/src/sysproc.c

// // sysproc.c // // This file defines system processes run by the OS. It also // includes a routine to initialize system processes. #include "process.h" #include "synch.h" //---------------------------------------------------------------------- // // doSomething // // A useless little function that does some small stuff to test // process switching and the like. // //---------------------------------------------------------------------- static Sem mysems[10]; static void doSomething (int me) { int i; int j; int mygrp = me % 10; char buf[40]; char buf2[40]; if (me < 100) { SemInit (&(mysems[mygrp]), 1); for (i = 1; i <= 6; i++) { dstrcpy (buf, "Process #"); ditoa (i, buf2); dstrcat (buf, buf2); ProcessFork (&doSomething, i * me * 1000 + me, buf, 0); } } SemWait (&mysems[mygrp]); for (i = 0, j = 0; i < (me * 2); i++) { if ((i % 1000) == 0) { printf ("Running process %d (iteration %d)!\n", me, i); } j += (i & 3); } SemSignal (&mysems[mygrp]); } � //---------------------------------------------------------------------- // // chaseTail // // A little function that chases its tail, forking off other // processes before exiting. This can be used to test resource // allocation and reclamation. // //---------------------------------------------------------------------- static void chaseTail (int me) { char *str = "chasetail"; printf ("Chasing tail %d.\n", me); printf ("Open of (%s,0x%x) returns 0x%x.\n", str, me+0x2000, Open (str, me + 0x2000)); if (me < 40) { ProcessFork (&chaseTail, me + 1, "ChaseTail", 0); } } //---------------------------------------------------------------------- // // emptyLoop // // This is an empty loop. It's used to test running code. A similar // loop could be used as the "idle" process. // //---------------------------------------------------------------------- static void emptyLoop (int me) { int i; int limit = me * 50000; i = 0; while (1) { i += 1; if (i > limit) { i = 0; printf ("%d ", me); } } } � //---------------------------------------------------------------------- // // randomStuff // // This routine tests random number usage in DLXOS. // //---------------------------------------------------------------------- static void randomStuff (int seed) { int i,rn; extern int random(),srandom(); srandom (seed); for (i = 0; i < 40; i++) { rn = random (); printf ("Random number %02i is 0x%08x.\n", i, rn); } } //---------------------------------------------------------------------- // // SysprocCreateProcesses // // This is the routine that is called by main to create processes. // It must create at least one process, and there must always be // at least one runnable process. If there isn't, the OS will // exit. // //---------------------------------------------------------------------- void SysprocCreateProcesses () { int i; for (i = 0; i < 10; i++) { SemInit (&mysems[i], 1); } // ProcessFork (&emptyLoop, 1, "Loop1", 0); // ProcessFork (&emptyLoop, 2, "Loop1", 0); // ProcessFork (&emptyLoop, 3, "Loop1", 0); // ProcessFork (&doSomething, 1, "Creator1", 0); // ProcessFork (&doSomething, 2, "Creator2", 0); // ProcessFork (&randomStuff, 1234, "randomStuff", 0); // ProcessFork (&chaseTail, 10, "ChaseTail", 0); }

option1/lab4_1/src/process.c

// // process.c // // This file defines routines for dealing with processes. This // includes the "main" routine for the OS, which creates a process // for the initial thread of execution. It also includes // code to create and delete processes, as well as context switch // code. Note, however, that the actual context switching is // done in assembly language elsewhere. #include "dlxos.h" #include "memory.h" #include "process.h" #include "synch.h" #include "filesys.h" float MyFuncRetZero(); // Pointer to the current PCB. This is used by the assembly language // routines for context switches. PCB *currentPCB; // List of free PCBs. static Queue freepcbs; // List of processes that are ready to run (ie, not waiting for something // to happen). static Queue runQueue; // List of processes that are waiting for something to happen. There's no // reason why this must be a single list; there could be many lists for many // different conditions. static Queue waitQueue; // List of processes waiting to be deleted. See below for a description of // the reason that we need a separate queue for processes about to die. static Queue zombieQueue; // Static area for all process control blocks. This is necessary because // we can't use malloc() inside the OS. static PCB pcbs[PROCESS_MAX_PROCS]; // Default value for scheduler quantum. This could be set to any value. // In fact, it could even be dynamic, though that would require modifying // the timer trap handler.... static processQuantum = DLX_PROCESS_QUANTUM; // String listing debugging options to print out. char debugstr[200]; � //---------------------------------------------------------------------- // // ProcessModuleInit // // Initialize the process module. This involves initializing all // of the process control blocks to appropriate values (ie, free // and available). We also need to initialize all of the queues. // //---------------------------------------------------------------------- void ProcessModuleInit () { int i; dbprintf ('p', "Entering ProcessModuleInit\n"); QueueInit (&freepcbs); QueueInit (&runQueue); QueueInit (&waitQueue); QueueInit (&zombieQueue); for (i = 0; i < PROCESS_MAX_PROCS; i++) { dbprintf ('p', "Initializing PCB %d @ 0x%x.\n", i, &(pcbs[i])); pcbs[i].flags = PROCESS_STATUS_FREE; QueueLinkInit (&(pcbs[i].l), (void *)&pcbs[i]); QueueInsertFirst(&freepcbs, &(pcbs[i].l)); } currentPCB = NULL; dbprintf ('p', "Leaving ProcessModuleInit\n"); } � //---------------------------------------------------------------------- // // ProcessSetStatus // // Set the status of a process. // //---------------------------------------------------------------------- void ProcessSetStatus (PCB *pcb, int status) { pcb->flags &= ~PROCESS_STATUS_MASK; pcb->flags |= status; } //---------------------------------------------------------------------- // // ProcessFreeResources // // Free the resources associated with a process. This assumes the // process isn't currently on any queue. // //---------------------------------------------------------------------- void ProcessFreeResources (PCB *pcb) { int i; int npages; QueueInsertLast (&freepcbs, &pcb->l); // Free the process's memory. This is easy with a one-level page // table, but could get more complex with two-level page tables. //------------------------------------------ // You may change the code below //------------------------------------------ npages = pcb->npages; for (i = 0; i < pcb->npages; i++) { MemoryFreePte (pcb->pagetable[i]); } // Free the page allocated for the system stack MemoryFreePage (pcb->sysStackArea / MEMORY_PAGE_SIZE); ProcessSetStatus (pcb, PROCESS_STATUS_FREE); } //---------------------------------------------------------------------- // // ProcessSetResult // // Set the result returned to a process. This is done by storing // the value into the current register save area for r1. When the // context is restored, r1 will contain the return value. This // routine should only be called from a trap. Calling it at other // times (such as an interrupt handler) will cause unpredictable // results. // //---------------------------------------------------------------------- void ProcessSetResult (PCB * pcb, uint32 result) { pcb->currentSavedFrame[PROCESS_STACK_IREG+1] = result; } � //---------------------------------------------------------------------- // // ProcessSchedule // // Schedule the next process to run. If there are no processes to // run, exit. This means that there should be an idle loop process // if you want to allow the system to "run" when there's no real // work to be done. // // NOTE: the scheduler should only be called from a trap or interrupt // handler. This way, interrupts are disabled. Also, it must be // called consistently, and because it might be called from an interrupt // handler (the timer interrupt), it must ALWAYS be called from a trap // or interrupt handler. // // Note that this procedure doesn't actually START the next process. // It only changes the currentPCB and other variables so the next // return from interrupt will restore a different context from that // which was saved. // //---------------------------------------------------------------------- void ProcessSchedule () { PCB *pcb; int i; dbprintf ('p', "Now entering ProcessSchedule (cur=0x%x, %d ready)\n", currentPCB, QueueLength (&runQueue)); // The OS exits if there's no runnable process. This is a feature, not a // bug. An easy solution to allowing no runnable "user" processes is to // have an "idle" process that's simply an infinite loop. if (QueueEmpty (&runQueue)) { printf ("No runnable processes - exiting!\n"); exitsim (); // NEVER RETURNS } // Move the front of the queue to the end, if it is the running process. pcb = (PCB *)((QueueFirst (&runQueue))->object); if (pcb == currentPCB) { QueueRemove (&pcb->l); QueueInsertLast (&runQueue, &pcb->l); } // Now, run the one at the head of the queue. pcb = (PCB *)((QueueFirst (&runQueue))->object); currentPCB = pcb; dbprintf ('p',"About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n", pcb, pcb->flags, pcb->sysStackPtr[PROCESS_STACK_IAR]); // Clean up zombie processes here. This is done at interrupt time // because it can't be done while the process might still be running while (!QueueEmpty (&zombieQueue)) { pcb = (PCB *)(QueueFirst (&zombieQueue)->object); dbprintf ('p', "Freeing zombie PCB 0x%x.\n", pcb); QueueRemove (&pcb->l); ProcessFreeResources (pcb); } // Set the timer so this process gets at most a fixed quantum of time. TimerSet (processQuantum); dbprintf ('p', "Leaving ProcessSchedule (cur=0x%x)\n", currentPCB); } � //---------------------------------------------------------------------- // // ProcessSuspend // // Place a process in suspended animation until it's // awakened by ProcessAwaken. // // NOTE: This must only be called from an interrupt or trap. It // should be immediately followed by ProcessSchedule(). // //---------------------------------------------------------------------- void ProcessSuspend (PCB *suspend) { // Make sure it's already a runnable process. dbprintf ('p', "Suspending PCB 0x%x (%s).\n", suspend, suspend->name); ASSERT (suspend->flags & PROCESS_STATUS_RUNNABLE, "Trying to suspend a non-running process!\n"); ProcessSetStatus (suspend, PROCESS_STATUS_WAITING); QueueRemove (&suspend->l); QueueInsertLast (&waitQueue, &suspend->l); } //---------------------------------------------------------------------- // // ProcessWakeup // // Wake up a process from its slumber. This only involves putting // it on the run queue; it's not guaranteed to be the next one to // run. // // NOTE: This must only be called from an interrupt or trap. It // need not be followed immediately by ProcessSchedule() because // the currently running process is unaffected. // //---------------------------------------------------------------------- void ProcessWakeup (PCB *wakeup) { dbprintf ('p',"Waking up PCB 0x%x.\n", wakeup); // Make sure it's not yet a runnable process. ASSERT (wakeup->flags & PROCESS_STATUS_WAITING, "Trying to wake up a non-sleeping process!\n"); ProcessSetStatus (wakeup, PROCESS_STATUS_RUNNABLE); QueueRemove (&wakeup->l); QueueInsertLast (&runQueue, &wakeup->l); } � //---------------------------------------------------------------------- // // ProcessDestroy // // Destroy a process by setting its status to zombie and putting it // on the zombie queue. The next time the scheduler is called, this // process will be marked as free. We can't necessarily do it now // because we might be the currently running process. // // NOTE: This must only be called from an interrupt or trap. However, // it need not be followed immediately by a ProcessSchedule() because // the process can continue running. // //---------------------------------------------------------------------- void ProcessDestroy (PCB *pcb) { dbprintf('p', "Entering ProcessDestroy for 0x%x.\n", pcb); ProcessSetStatus (pcb, PROCESS_STATUS_ZOMBIE); QueueRemove (&pcb->l); QueueInsertFirst (&zombieQueue, &pcb->l); dbprintf('p', "Leaving ProcessDestroy for 0x%x.\n", pcb); } //---------------------------------------------------------------------- // // ProcessExit // // This routine is called to exit from a system process. It simply // calls an exit trap, which will be caught to exit the process. // //---------------------------------------------------------------------- static void ProcessExit () { exit (); } uint32 get_argument(char *string) { static char *str; static int location=0; int location2; if(string) { str=string; location = 0; } location2 = location; if(str[location]=='\0'||location>=99) return 0; for(;location<100;location++) { if(str[location]=='\0') { location++; break; } } return location2; } � //---------------------------------------------------------------------- // // ProcessFork // // Create a new process and make it runnable. This involves the // following steps: // * Allocate resources for the process (PCB, memory, etc.) // * Initialize the resources // * Place the PCB on the runnable queue // // NOTE: This code has been tested for system processes, but not // for user processes. // //---------------------------------------------------------------------- int ProcessFork (VoidFunc func, uint32 param, char *name, int isUser) { int i, j, fd, n; Link *l; int start, codeS, codeL, dataS, dataL; uint32 *stackframe; int newPage; PCB *pcb; int addr = 0; int intrs; unsigned char buf[100]; uint32 dum[MAX_ARGS+8], count, offset; char *str; intrs = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrs); dbprintf ('p', "Entering ProcessFork args=0x%x 0x%x %s %d\n", func, param, name, isUser); // Get a free PCB for the new process if (QueueEmpty (&freepcbs)) { printf ("FATAL error: no free processes!\n"); exitsim (); // NEVER RETURNS! } l = QueueFirst (&freepcbs); dbprintf ('p', "Got a link @ 0x%x\n", l); QueueRemove (l); pcb = (PCB *)(l->object); // This prevents someone else from grabbing this process ProcessSetStatus (pcb, PROCESS_STATUS_RUNNABLE); // At this point, the PCB is allocated and nobody else can get it. // However, it's not in the run queue, so it won't be run. Thus, we // can turn on interrupts here. dbprintf ('I', "Before restore interrupt value is 0x%x.\n", CurrentIntrs()); RestoreIntrs (intrs); dbprintf ('I', "New interrupt value is 0x%x.\n", CurrentIntrs()); // Copy the process name into the PCB. dstrcpy (pcb->name, name); //---------------------------------------------------------------------- // This section initializes the memory for this process //---------------------------------------------------------------------- // For now, we'll use one user page and a page for the system stack. // For system processes, though, all pages must be contiguous. // Of course, system processes probably need just a single page for // their stack, and don't need any code or data pages allocated for them. //------------------------------------------------------------ // Put your own code here //------------------------------------------------------------ pcb->npages = 1; newPage = MemoryAllocPage (); if (newPage == 0) { printf ("aFATAL: couldn't allocate memory - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->pagetable[0] = MemorySetupPte (newPage); newPage = MemoryAllocPage (); if (newPage == 0) { printf ("bFATAL: couldn't allocate system stack - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->sysStackArea = newPage * MEMORY_PAGE_SIZE; //---------------------------------------------------------------------- // Stacks grow down from the top. The current system stack pointer has // to be set to the bottom of the interrupt stack frame, which is at the // high end (address-wise) of the system stack. stackframe = ((uint32 *)(pcb->sysStackArea + MEMORY_PAGE_SIZE)) - (PROCESS_STACK_FRAME_SIZE + 8); // The system stack pointer is set to the base of the current interrupt // stack frame. pcb->sysStackPtr = stackframe; // The current stack frame pointer is set to the same thing. pcb->currentSavedFrame = stackframe; dbprintf ('p', "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n", pcb, pcb->sysStackArea, pcb->pagetable[0], pcb->npages * MEMORY_PAGE_SIZE); //---------------------------------------------------------------------- // This section sets up the stack frame for the process. This is done // so that the frame looks to the interrupt handler like the process // was "suspended" right before it began execution. The standard // mechanism of swapping in the registers and returning to the place // where it was "interrupted" will then work. //---------------------------------------------------------------------- // The previous stack frame pointer is set to 0, meaning there is no // previous frame. stackframe[PROCESS_STACK_PREV_FRAME] = 0; // Set the base of the level 1 page table. If there's only one page // table level, this is it. For 2-level page tables, put the address // of the level 1 page table here. For 2-level page tables, we'll also // have to build up the necessary tables.... stackframe[PROCESS_STACK_PTBASE] = (uint32)&(pcb->pagetable[0]); //---------------------------------------------- // You may change the code below //---------------------------------------------- // Set the size (maximum number of entries) of the level 1 page table. // In our case, it's just one page, but it could be larger. stackframe[PROCESS_STACK_PTSIZE] = pcb->npages; // Set the number of bits for both the level 1 and level 2 page tables. // This can be changed on a per-process basis if desired. For now, // though, it's fixed. stackframe[PROCESS_STACK_PTBITS] = (MEMORY_L1_PAGE_SIZE_BITS + (MEMORY_L2_PAGE_SIZE_BITS << 16)); if (isUser) { dbprintf ('p', "About to load %s\n", name); fd = ProcessGetCodeInfo (name, &start, &codeS, &codeL, &dataS, &dataL); if (fd < 0) { // Free newpage and pcb so we don't run out... ProcessFreeResources (pcb); return (-1); } dbprintf ('p', "File %s -> start=0x%08x\n", name, start); dbprintf ('p', "File %s -> code @ 0x%08x (size=0x%08x)\n", name, codeS, codeL); dbprintf ('p', "File %s -> data @ 0x%08x (size=0x%08x)\n", name, dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { dbprintf ('p', "Placing %d bytes at vaddr %08x.\n", n, addr - n); // Copy the data to user memory. Note that the user memory needs to // have enough space so that this copy will succeed! MemoryCopySystemToUser (pcb, buf, addr - n, n); } FsClose (fd); stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_USER; // Set the initial stack pointer correctly. Currently, it's just set // to the top of the (single) user address space allocated to this // process. str = (char *)param; stackframe[PROCESS_STACK_IREG+29] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF; // Copy the initial parameter to the top of stack MemoryCopySystemToUser (pcb, (char *)str, (char *)stackframe[PROCESS_STACK_IREG+29], SIZE_ARG_BUFF-32); offset = get_argument((char *)param); dum[2] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; for(count=3;;count++) { offset=get_argument(NULL); dum[count] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF + offset; if(offset==0) { break; } } dum[0] = count-2; dum[1] = TOP_VIRTUAL_ADDRESS_SPACE - SIZE_ARG_BUFF - (count-2)*4; MemoryCopySystemToUser (pcb, (char *)dum, (char *)(stackframe[PROCESS_STACK_IREG+29]-count*4), (count)*sizeof(uint32)); stackframe[PROCESS_STACK_IREG+29] -= 4*count; // Set the correct address at which to execute a user process. stackframe[PROCESS_STACK_IAR] = (uint32)start; pcb->flags |= PROCESS_TYPE_USER; } else { // Set r31 to ProcessExit(). This will only be called for a system // process; user processes do an exit() trap. stackframe[PROCESS_STACK_IREG+31] = (uint32)ProcessExit; // Set the stack register to the base of the system stack. stackframe[PROCESS_STACK_IREG+29]=pcb->sysStackArea + MEMORY_PAGE_SIZE-32; // Set the initial parameter properly by placing it on the stack frame // at the location pointed to by the "saved" stack pointer (r29). *((uint32 *)(stackframe[PROCESS_STACK_IREG+29])) = param; // Set up the initial address at which to execute. This is done by // placing the address into the IAR slot of the stack frame. stackframe[PROCESS_STACK_IAR] = (uint32)func; // Set the initial value for the interrupt status register stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_SYS; // Mark this as a system process. pcb->flags |= PROCESS_TYPE_SYSTEM; } // Place the PCB onto the run queue. intrs = DisableIntrs (); QueueInsertLast (&runQueue, l); RestoreIntrs (intrs); // If this is the first process, make it the current one if (currentPCB == NULL) { dbprintf ('p', "Setting currentPCB=0x%x, stackframe=0x%x\n", pcb, pcb->currentSavedFrame); currentPCB = pcb; } dbprintf ('p', "Leaving ProcessFork (%s)\n", name); // Return the process number (found by subtracting the PCB number // from the base of the PCB array). return (pcb - pcbs); } � //---------------------------------------------------------------------- // // getxvalue // // Convert a hex digit into an actual value. // //---------------------------------------------------------------------- static inline int getxvalue (int x) { if ((x >= '0') && (x <= '9')) { return (x - '0'); } else if ((x >= 'a') && (x <= 'f')) { return (x + 10 - 'a'); } else if ((x >= 'A') && (x <= 'F')) { return (x + 10 - 'A'); } else { return (0); } } � //---------------------------------------------------------------------- // // ProcessGetCodeSizes // // Get the code sizes (stack & data) for a file. A file descriptor // for the named file is returned. This descriptor MUST be closed // (presumably by the caller) at some point. // //---------------------------------------------------------------------- int ProcessGetCodeInfo (const char *file, uint32 *startAddr, uint32 *codeStart, uint32 *codeSize, uint32 *dataStart, uint32 *dataSize) { int fd; int totalsize; char buf[100]; char *pos; // Open the file for reading. If it returns a negative number, the open // didn't work. if ((fd = FsOpen (file, FS_MODE_READ)) < 0) { dbprintf ('f', "ProcessGetCodeInfo: open of %s failed (%d).\n", file, fd); return (-1); } dbprintf ('f', "File descriptor is now %d.\n", fd); if ((totalsize = FsRead (fd, buf, sizeof (buf))) != sizeof (buf)) { dbprintf ('f', "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n", totalsize, sizeof (buf), file); FsClose (fd); return (-1); } if (dstrstr (buf, "start:") == NULL) { dbprintf ('f', "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n", file); return (-1); } pos = (char *)dindex (buf, ':') + 1; // Get the start address and overall size *startAddr = dstrtol (pos, &pos, 16); totalsize = dstrtol (pos, &pos, 16); // Get code & data section start & sizes *codeStart = dstrtol (pos, &pos, 16); *codeSize = dstrtol (pos, &pos, 16); *dataStart = dstrtol (pos, &pos, 16); *dataSize = dstrtol (pos, &pos, 16); // Seek to start of first real line FsSeek (fd, 1 + dindex (buf, '\n') - buf, 0); return (fd); } � //---------------------------------------------------------------------- // // ProcessGetFromFile // // Inputs: // addr - points to an integer that contains the address of // the byte past that previously returned. If this is the // first call to this routine, *addr should be set to 0. // fd - File descriptor from which to read data. The file format // is the same as that used by the DLX simulator. // buf - points to a buffer that will receive data from the input // file. Note that the data is NOT 0-terminated, and may // include any number of 0 bytes. // max - maximum length of data to return. The routine collects data // until either the address changes or it has read max bytes. // // Returns the number of bytes actually stored into buf. In addition, // *addr is updated to point to the byte following the last byte in // the buffer. // // Load a file into memory. The file format consists of a // leading address, followed by a colon, followed by the data // to go at that address. If the address is omitted, the data // follows that from the previous line of the file. // //---------------------------------------------------------------------- int ProcessGetFromFile (int fd, unsigned char *buf, uint32 *addr, int max) { char localbuf[204]; int nbytes; int seekpos; unsigned char *pos = buf; char *lpos = localbuf; // Remember our position at the start of the routine so we can adjust // it later. seekpos = FsSeek (fd, 0, FS_SEEK_CUR); // The maximum number of characters we could read is limited to the // maximum buffer space available to the caller * 2 because each 2 // characters in the input file result in a single byte of program // info being read in. max = max * 2; // If the callers maximum is greater than the available buffer space, // limit the buffer space further. if (max > (sizeof(localbuf)-4)) { max = sizeof(localbuf)-4; } if ((nbytes = FsRead (fd, localbuf, max)) <= 0) { return (0); } // 'Z' is unused in load file, so use it to mark the end of the buffer // Back up until just after the last newline in the data we read. dbprintf ('f', "Got %d bytes at offset %d ...", nbytes, seekpos); while (localbuf[--nbytes] != '\n') { } localbuf[nbytes+1] = 'Z'; localbuf[nbytes+2] = '\0'; dbprintf ('f', " terminated at %d.\n", nbytes); dbprintf ('f', "Buffer is '%s'\n", localbuf); nbytes = 0; while (dindex (lpos, 'Z') != NULL) { if (dindex (lpos, ':') == NULL) { break; } if (*lpos != ':') { // If we're going to go to a new address, we break out of the // loop and return what we've got already. if (nbytes > 0) { break; } *addr = dstrtol (lpos, &lpos, 16); dbprintf ('f', "New address is 0x%x.\n", *addr); } if (*lpos != ':') { break; } lpos++; // skip past colon while (1) { while (((*lpos) == ' ') || (*lpos == '\t')) { lpos++; } if (*lpos == '\n') { lpos++; break; } else if (!(isxdigit (*lpos) && isxdigit (*(lpos+1)))) { // Exit loop if at least one digit isn't a hex digit. break; } pos[nbytes++] = (getxvalue(*lpos) * 16) + getxvalue(*(lpos+1)); lpos += 2; (*addr)++; } } // Seek to just past the last line we read. FsSeek (fd, seekpos + lpos - localbuf, FS_SEEK_SET); dbprintf ('f', "Seeking to %d and returning %d bytes!\n", seekpos + lpos - localbuf, nbytes); return (nbytes); } � //---------------------------------------------------------------------- // // main // // This routine is called when the OS starts up. It allocates a // PCB for the first process - the one corresponding to the initial // thread of execution. Note that the stack pointer is already // set correctly by _osinit (assembly language code) to point // to the stack for the 0th process. This stack isn't very big, // though, so it should be replaced by the system stack of the // currently running process. // //---------------------------------------------------------------------- main (int argc, char *argv[]) { int i, j; int n; char buf[120]; char *userprog = (char *)0; static PCB temppcb; uint32 addr; extern void SysprocCreateProcesses (); char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; int base; debugstr[1] = '\0'; MyFuncRetZero(); printf ("Got %d arguments.\n", argc); printf ("Available memory: 0x%x -> 0x%x.\n", lastosaddress, MemoryGetSize ()); printf ("Argument count is %d.\n", argc); for (i = 0; i < argc; i++) { printf ("Argument %d is %s.\n", i, argv[i]); } // *((int *)0xfff00100) = 't'; FsModuleInit (); for (i = 0; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'D': dstrcpy (debugstr, argv[++i]); break; case 'i': n = dstrtol (argv[++i], (void *)0, 0); ditoa (n, buf); printf ("Converted %s to %d=%s\n", argv[i], n, buf); break; case 'f': { int start, codeS, codeL, dataS, dataL, fd, j; int addr = 0; static unsigned char buf[200]; fd = ProcessGetCodeInfo (argv[++i], &start, &codeS, &codeL, &dataS, &dataL); printf ("File %s -> start=0x%08x\n", argv[i], start); printf ("File %s -> code @ 0x%08x (size=0x%08x)\n", argv[i], codeS, codeL); printf ("File %s -> data @ 0x%08x (size=0x%08x)\n", argv[i], dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { for (j = 0; j < n; j += 4) { printf ("%08x: %02x%02x%02x%02x\n", addr + j - n, buf[j], buf[j+1], buf[j+2], buf[j+3]); } } close (fd); break; } case 'u': userprog = argv[++i]; base = i; break; default: printf ("Option %s not recognized.\n", argv[i]); break; } if(userprog) break; } } dbprintf ('i', "About to initialize queues.\n"); QueueModuleInit (); dbprintf ('i', "After initializing queues.\n"); MemoryModuleInit (); dbprintf ('i', "After initializing memory.\n"); ProcessModuleInit (); dbprintf ('i', "After initializing processes.\n"); SynchModuleInit (); dbprintf ('i', "After initializing synchronization tools.\n"); KbdModuleInit (); dbprintf ('i', "After initializing keyboard.\n"); for (i = 0; i < 100; i++) { buf[i] = 'a'; } i = FsOpen ("vm", FS_MODE_WRITE); dbprintf ('i', "VM Descriptor is %d\n", i); FsSeek (i, 0, FS_SEEK_SET); FsWrite (i, buf, 80); FsClose (i); if (userprog != (char *)0) { for(i=base;i<argc&&i-base<11; i++) { param[i-base] = argv[i]; } process_create(param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7], param[8], param[9], param[10], param[11]); // ProcessFork (0, (uint32)"Help Me man!", userprog, 1); } SysprocCreateProcesses (); dbprintf ('i', "Created processes - about to set timer quantum.\n"); TimerSet (processQuantum); dbprintf ('i', "Set timer quantum to %d, about to run first process.\n", processQuantum); intrreturn (); // Should never be called because the scheduler exits when there // are no runnable processes left. exitsim(); // NEVER RETURNS! } float MyFuncRetZero() { return 0; } unsigned GetCurrentPid() { return (unsigned)(currentPCB - pcbs); } unsigned findpid(PCB *pcb) { return (unsigned)(pcb - pcbs); } void process_create(char *name, ...) { char **args; int i, j, k; char allargs[1000]; args = &name; k=0; for(i=0; args[i]!=NULL; i++) { j=0; do { allargs[k] = args[i][j]; j++; k++; } while(args[i][j-1]!='\0'); } allargs[k] = allargs[k+1] = 0; ProcessFork(0, (uint32)allargs, name, 1); } void ProcessKill (PCB *pcb) { // add your code below ProcessSchedule (); } void PageFaultHandler() { // add your code below uint32 *tempstackframe; uint32 faultaddress; // printf ("It does come to PageFaulthandler\n"); tempstackframe = currentPCB->currentSavedFrame ; faultaddress = tempstackframe[PROCESS_STACK_FAULT]; }

option1/lab4_1/src/filesys.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1: .ascii "dlx:\000" .align 2 LC2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55 nop ; not filled. L56: addi r29,r29,#-16 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L55: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74 nop ; not filled. addi r3,r0,#0 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r2,r0,r6 L61: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59 nop ; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61 nop ; not filled. L59: sgti r1,r3,#31 beqz r1,L64 nop ; not filled. L74: addi r1,r0,#-1 j L73 nop ; not filled. L64: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75 nop ; not filled. L65: addi r8,r0,#0 L75: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67 nop ; not filled. L68: addi r29,r29,#-16 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L67: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs)>>16)&0xffff addui r8,r8,(_fs)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop ; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69 nop ; not filled. lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73 nop ; not filled. L69: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-24 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L71: add r1,r0,r3 L73: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84 nop ; not filled. addi r2,r0,#1 L84: snei r1,r2,#0 beqz r1,L82 nop ; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs)>>16)&0xffff addui r4,r4,(_fs)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86 nop ; not filled. L82: addi r1,r0,#-1 L86: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94 nop ; not filled. addi r2,r0,#1 L94: snei r1,r2,#0 beqz r1,L92 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L91 nop ; not filled. L92: addi r1,r0,#-1 L91: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r2,r0,#1 L103: snei r1,r2,#0 beqz r1,L101 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L100 nop ; not filled. L101: addi r1,r0,#-1 L100: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112 nop ; not filled. addi r2,r0,#1 L112: snei r1,r2,#0 beqz r1,L110 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L109 nop ; not filled. L110: addi r1,r0,#-1 L109: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118 nop ; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs+44)>>16)&0xffff addui r1,r1,(_fs+44)&0xffff j L120 nop ; not filled. L118: addi r29,r29,#-8 lhi r1,((_fs+20)>>16)&0xffff addui r1,r1,(_fs+20)&0xffff L120: sw (r29),r2 lw r1,(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126 nop ; not filled. L127: addi r29,r29,#-16 lhi r6,((LC4)>>16)&0xffff addui r6,r6,(LC4)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L126: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop ; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128 nop ; not filled. addi r1,r0,#1 L128: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff addi r2,r31,#8308 L182: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182 nop ; not filled. lhi r1,((_fs)>>16)&0xffff addui r1,r1,(_fs)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs: .space 48 .align 2 _openfiles: .space 8576

option1/lab4_1/src/queue.c

// // queue.c // // Variables for queues, and a routine to initialize the pool of links. // // #include "dlxos.h" #include "queue.h" Queue freeLinks; static Link linkpool[QUEUE_MAX_LINKS]; void QueueModuleInit () { int i; QueueInit (&freeLinks); for (i = 0; i < QUEUE_MAX_LINKS; i++) { dbprintf ('i', "Initializing queue link %d.\n", i); linkpool[i].next = NULL; QueueFreeLink (&(linkpool[i])); } } void QueueInit (Queue *q) { q->first = (Link *)q; q->last = (Link *)q; q->nitems = 0; } void QueueFreeLink (Link *l) { extern Queue freeLinks; // Make sure the link has already been freed! ASSERT ((l->next == NULL), "Link not empty"); QueueInsertLast (&freeLinks, l); } Link * QueueAllocLink () { extern Queue freeLinks; Link *l; if (! QueueEmpty (&freeLinks)) { l = QueueFirst (&freeLinks); QueueRemove (l); } else { l = NULL; } ASSERT ((l != NULL), "Link not allocated!"); return (l); }

option1/lab4_1/src/traps.h

// // dlxtraps.h // // Traps used by the DLX simulator. These traps have to be handled by the // operating system. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: traps.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _dlxtraps_h_ #define _dlxtraps_h_ #define TRAP_ILLEGALINST 0x1 // Illegal instruction #define TRAP_ADDRESS 0x2 // Bad address #define TRAP_ACCESS 0x3 // Attempted to access illegal memory #define TRAP_OVERFLOW 0x4 // Math overflow #define TRAP_DIV0 0x5 // Divide by 0 #define TRAP_PRIVILEGE 0x6 // Instruction must be executed as sys #define TRAP_FORMAT 0x7 // Instruction is malformed #define TRAP_PAGEFAULT 0x20 #define TRAP_TLBFAULT 0x30 #define TRAP_TIMER 0x40 // timer interrupt #define TRAP_KBD 0x48 // keyboard interrupt // This bit is set in CAUSE if the interrupt was a trap instruction #define TRAP_TRAP_INSTR 0x08000000 // The following traps are all defined in the basic traps library. To // call TRAP_READ, use a Read() call from a user-level program. This applies // to every trap except EXIT, which is called via exit() [no uppercase]. #define TRAP_PRINTF 0x201 #define TRAP_READ 0x210 #define TRAP_WRITE 0x211 #define TRAP_LSEEK 0x212 #define TRAP_SEEK TRAP_LSEEK // SEEK and LSEEK are synonyms #define TRAP_OPEN 0x213 #define TRAP_CLOSE 0x214 #define TRAP_DELETE 0x580 #define TRAP_EXIT 0x300 // Following are user-defined traps. Traps should be in the range // 0x400 - 0xfff #define TRAP_CONTEXT_SWITCH 0x400 //#define TRAP_SEM_WAIT 0x401 //#define TRAP_SEM_SIGNAL 0x402 #define TRAP_PROCESS_SLEEP 0x410 #define TRAP_PROCESS_WAKEUP 0x420 #define TRAP_PROCESS_FORK 0x430 #define TRAP_PROCESS_GETPID 0x431 #define TRAP_PROCESS_CREATE 0x432 #define TRAP_SEM_CREATE 0x450 #define TRAP_SEM_WAIT 0x451 #define TRAP_SEM_SIGNAL 0x452 // The following are special I/O addresses for DLX. #define DLX_TIMER_ADDRESS 0xfff00010 #define DLX_KBD_PUTCHAR 0xfff00100 #define DLX_KBD_NCHARSOUT 0xfff00120 #define DLX_KBD_GETCHAR 0xfff00180 #define DLX_KBD_NCHARSIN 0xfff001a0 #define DLX_KBD_INTR 0xfff001c0 #define TRAP_STACK_SIZE 0x800 // interrupt stack is 2K words #endif /* _dlxtraps_h_ */

option1/lab4_1/src/userprog1.o

; Compiled by GCC .data .align 2 LC0: .ascii "\n\nIn Userprog1, Sum : %d\n\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal ___main nop ; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#11 bnez r1,L16 nop ; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#24576 add r2,r31,r4 L21: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21 nop ; not filled. addi r29,r29,#-8 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main

option1/lab4_1/src/memory.h

// // memory.h // // Definitions for dealing with memory. // // // $Id: memory.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ #ifndef _memory_h_ #define _memory_h_ // We can read this address in I/O space to figure out how much memory // is available on the system. #define DLX_MEMSIZE_ADDRESS 0xffff0000 // We currently support 64 KB pages. This is done as 64 KB pages in // the level 1 page table and no level 2 page table // These two constants should be set as follows: // L1_PAGE_SIZE_BITS -> amount mapped by a single entry in the L1 table // L2_PAGE_SIZE_BITS -> amount mapped by a single entry in the L2 table // // For example, if you have 4KB pages and each L2 page table has 512 entries, // you'd have 2MB per entry in a L1 table. That would mean L1_BITS=21 and // L2_BITS=12. #define MEMORY_L1_PAGE_SIZE_BITS 16 // each entry in L1 is 64 KB #define MEMORY_L2_PAGE_SIZE_BITS 16 // if L1 == L2, there's no L2 tables #define MEMORY_PAGE_SIZE (1 << MEMORY_L2_PAGE_SIZE_BITS) #define MEMORY_PAGE_MASK (MEMORY_PAGE_SIZE-1) #define MEMORY_MAX_PAGES 0x10000 #define L1_MAX_ENTRIES 0x01 // max entries in the L1 table - 1 #define TOP_VIRTUAL_ADDRESS_SPACE L1_MAX_ENTRIES * MEMORY_PAGE_SIZE // 1 entries * 64kb = 64 kb // The PTE is valid if this bit is set in the PTE! #define MEMORY_PTE_VALID 0x00000001 // The page is dirty if this bit is set in the PTE #define MEMORY_PTE_DIRTY 0x00000002 // The page has been referenced if this bit is set in the PTE #define MEMORY_PTE_REFERENCED 0x00000004 #define MEMORY_PTE_MASK (~(MEMORY_PTE_VALID|MEMORY_PTE_DIRTY|MEMORY_PTE_REFERENCED)) extern int lastosaddress; // Defined in an assembly file extern int MemoryGetSize (); extern int MemoryAllocPage (); extern void MemoryFreePage (uint32 page); extern uint32 MemorySetupPte (uint32 page); extern void MemoryFreePte (uint32 pte); extern uint32 MemoryPteToPage (); extern void MemoryModuleInit (); extern uint32 MemoryTranslateUserToSystem (); extern int MemoryCopySystemToUser (); extern int MemoryCopyUserToSystem (); #endif // _memory_h_

option1/lab4_1/src/misc.o

; Compiled by GCC
.text
.align 2
.proc _isspace
.global _isspace
_isspace:
; Function 'isspace'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r2,3(r30)
addi r31,r0,#0
andi r1,r2,#0x00ff
seqi r1,r1,#32
bnez r1,L6
nop ; not filled.
addi r1,r2,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
beqz r1,L5
nop ; not filled.
L6:
addi r31,r0,#1
L5:
add r1,r0,r31
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isspace
.align 2
.proc _isxdigit
.global _isxdigit
_isxdigit:
; Function 'isxdigit'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lb r31,3(r30)
addi r2,r0,#0
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
bnez r1,L12
nop ; not filled.
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#5
bnez r1,L12
nop ; not filled.
andi r1,r31,#0x00ff
snei r1,r1,#65
bnez r1,L11
nop ; not filled.
L12:
addi r2,r0,#1
L11:
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _isxdigit
.align 2
.proc _dstrcpy
.global _dstrcpy
_dstrcpy:
; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
lw r2,4(r30)
add r3,r0,r31
L19:
lb r1,(r2)
sb (r31),r1
addi r2,r2,#1
addi r31,r31,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L19
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcpy
.align 2
.proc _dstrncpy
.global _dstrncpy
_dstrncpy:
; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r2,(r30)
lw r3,4(r30)
lw r31,8(r30)
add r4,r0,r2
j L37
nop ; not filled.
L34:
lb r1,(r3)
sb (r2),r1
addi r3,r3,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
beqz r1,L32
nop ; not filled.
L37:
add r1,r0,r31
addi r31,r31,#-1
slei r1,r1,#0
beqz r1,L34
nop ; not filled.
L32:
add r1,r0,r4
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncpy
.align 2
.proc _dstrcat
.global _dstrcat
_dstrcat:
; Function 'dstrcat'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r31,(r30)
add r3,r0,r31
lbu r1,(r3)
snei r1,r1,#0
beqz r1,L50
nop ; not filled.
L51:
addi r31,r31,#1
lbu r1,(r31)
snei r1,r1,#0
bnez r1,L51
nop ; not filled.
L50:
add r2,r0,r31
lw r31,4(r30)
L54:
lb r1,(r31)
sb (r2),r1
addi r31,r31,#1
addi r2,r2,#1
andi r1,r1,#0x00ff
snei r1,r1,#0
bnez r1,L54
nop ; not filled.
add r1,r0,r3
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrcat
.align 2
.proc _dstrncmp
.global _dstrncmp
_dstrncmp:
; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
lw r3,(r30)
lw r4,4(r30)
lw r5,8(r30)
addi r2,r0,#0
slt r1,r2,r5
beqz r1,L73
nop ; not filled.
L75:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L86
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L73
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r5
bnez r1,L75
nop ; not filled.
L73:
seq r1,r2,r5
beqz r1,L80
nop ; not filled.
L86:
addi r1,r0,#0
j L84
nop ; not filled.
L80:
lbu r31,(r3)
lbu r3,(r4)
sub r1,r31,r3
sgei r1,r1,#0
addi r2,r0,#-1
beqz r1,L82
nop ; not filled.
sne r2,r31,r3
L82:
add r1,r0,r2
L84:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrncmp
.align 2
.proc _dstrlen
.global _dstrlen
_dstrlen:
; Function 'dstrlen'; 0 bytes of locals, 1 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
lw r31,(r30)
addi r2,r0,#0
j L97
nop ; not filled.
L95:
addi r2,r2,#1
L97:
lbu r1,(r31)
addi r31,r31,#1
snei r1,r1,#0
bnez r1,L95
nop ; not filled.
add r1,r0,r2
lw r2,0(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrlen
.align 2
.proc _dstrstr
.global _dstrstr
_dstrstr:
; Function 'dstrstr'; 0 bytes of locals, 6 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
sw 20(r29),r7
lw r5,(r30)
lw r7,4(r30)
addi r3,r0,#0
lbu r1,(r7)
addi r2,r7,#1
snei r1,r1,#0
beqz r1,L125
nop ; not filled.
L126:
addi r3,r3,#1
lbu r1,(r2)
addi r2,r2,#1
snei r1,r1,#0
bnez r1,L126
nop ; not filled.
L125:
add r6,r0,r3
j L149
nop ; not filled.
L130:
add r3,r0,r5
add r4,r0,r7
addi r2,r0,#0
slt r1,r2,r6
beqz r1,L134
nop ; not filled.
L136:
lbu r31,(r4)
snei r1,r31,#0
beqz r1,L150
nop ; not filled.
lbu r1,(r3)
sne r1,r1,r31
bnez r1,L134
nop ; not filled.
addi r3,r3,#1
addi r4,r4,#1
addi r2,r2,#1
slt r1,r2,r6
bnez r1,L136
nop ; not filled.
L134:
seq r1,r2,r6
beqz r1,L141
nop ; not filled.
L150:
addi r1,r0,#0
j L132
nop ; not filled.
L141:
lbu r3,(r3)
lbu r2,(r4)
sub r1,r3,r2
sgei r1,r1,#0
addi r31,r0,#-1
beqz r1,L143
nop ; not filled.
sne r31,r3,r2
L143:
add r1,r0,r31
L132:
snei r1,r1,#0
bnez r1,L131
nop ; not filled.
add r1,r0,r5
j L146
nop ; not filled.
L131:
addi r5,r5,#1
L149:
lbu r1,(r5)
snei r1,r1,#0
bnez r1,L130
nop ; not filled.
addi r1,r0,#0
L146:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r7,20(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrstr
.align 2
.proc _dmindex
.global _dmindex
_dmindex:
; Function 'dmindex'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r4,(r30)
lw r6,4(r30)
lbu r1,(r4)
snei r1,r1,#0
beqz r1,L164
nop ; not filled.
add r5,r0,r1
L165:
add r2,r0,r6
lb r31,(r6)
andi r1,r31,#0x00ff
snei r1,r1,#0
beqz r1,L163
nop ; not filled.
lbu r3,(r4)
L169:
andi r1,r31,#0x00ff
seq r1,r3,r1
beqz r1,L168
nop ; not filled.
add r1,r0,r4
j L173
nop ; not filled.
L168:
addi r2,r2,#1
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L169
nop ; not filled.
L163:
bnez r5,L165
nop ; not filled.
L164:
addi r1,r0,#0
L173:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dmindex
.align 2
.proc _dindex
.global _dindex
_dindex:
; Function 'dindex'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r3,4(r30)
j L187
nop ; not filled.
L183:
andi r1,r31,#0x00ff
seq r1,r1,r3
beqz r1,L184
nop ; not filled.
add r1,r0,r2
j L186
nop ; not filled.
L184:
addi r2,r2,#1
L187:
lb r31,(r2)
andi r1,r31,#0x00ff
snei r1,r1,#0
bnez r1,L183
nop ; not filled.
addi r1,r0,#0
L186:
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dindex
.align 2
.proc _ditoa
.global _ditoa
_ditoa:
; Function 'ditoa'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r3,(r30)
lw r4,4(r30)
slti r1,r3,#0
beqz r1,L203
nop ; not filled.
addi r6,r0,(#0x2d)&0xff
j L216
nop ; not filled.
L203:
snei r1,r3,#0
bnez r1,L205
nop ; not filled.
addi r6,r0,(#0x30)&0xff
L216:
sb (r4),r6
addi r4,r4,#1
j L204
nop ; not filled.
L205:
addi r31,r0,#1
sle r1,r31,r3
beqz r1,L208
nop ; not filled.
L209:
slli r1,r31,#0x2
add r1,r1,r31
slli r31,r1,#0x1
sle r1,r31,r3
bnez r1,L209
nop ; not filled.
L208:
addi r5,r0,#10
L212:
movi2fp f0,r31
movi2fp f1,r5
div f0,f0,f1
movfp2i r31,f0
movi2fp f0,r3
movi2fp f1,r31
div f0,f0,f1
movfp2i r2,f0
addi r1,r2,#48
sb (r4),r1
addi r4,r4,#1
movi2fp f0,r2
movi2fp f1,r31
mult f0,f0,f1
movfp2i r1,f0
sub r3,r3,r1
sgti r1,r31,#1
bnez r1,L212
nop ; not filled.
L204:
addi r6,r0,(#0x0)&0xff
sb (r4),r6
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _ditoa
.align 2
.proc _dstrtol
.global _dstrtol
_dstrtol:
; Function 'dstrtol'; 0 bytes of locals, 5 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#32 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
sw 12(r29),r5
sw 16(r29),r6
lw r2,(r30)
lw r5,4(r30)
lw r4,8(r30)
addi r3,r0,#0
j L247
nop ; not filled.
L220:
addi r2,r2,#1
L247:
lb r31,(r2)
andi r1,r31,#0x00ff
seqi r1,r1,#32
bnez r1,L220
nop ; not filled.
addi r1,r31,#-9
andi r1,r1,#0x00ff
sleui r1,r1,#1
bnez r1,L220
nop ; not filled.
snei r1,r5,#0
beqz r1,L222
nop ; not filled.
sw (r5),r2
L222:
lbu r31,(r2)
snei r1,r31,#0
beqz r1,L248
nop ; not filled.
seqi r1,r31,#45
beqz r1,L224
nop ; not filled.
addi r6,r0,#-1
addi r2,r2,#1
j L225
nop ; not filled.
L224:
addi r6,r0,#1
L225:
snei r1,r4,#0
bnez r1,L226
nop ; not filled.
lbu r1,(r2)
seqi r1,r1,#48
beqz r1,L227
nop ; not filled.
addi r2,r2,#1
lbu r31,(r2)
seqi r1,r31,#120
bnez r1,L229
nop ; not filled.
seqi r1,r31,#88
beqz r1,L228
nop ; not filled.
L229:
addi r4,r0,#16
addi r2,r2,#1
j L226
nop ; not filled.
L228:
addi r4,r0,#8
j L226
nop ; not filled.
L227:
addi r4,r0,#10
L226:
addi r1,r4,#-1
sgtui r1,r1,#15
beqz r1,L233
nop ; not filled.
L248:
add r1,r0,r3
j L245
nop ; not filled.
L233:
lb r31,(r2)
addi r1,r31,#-48
andi r1,r1,#0x00ff
sleui r1,r1,#9
beqz r1,L236
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-48
j L237
nop ; not filled.
L236:
addi r1,r31,#-97
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L238
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-87
j L237
nop ; not filled.
L238:
addi r1,r31,#-65
andi r1,r1,#0x00ff
sleui r1,r1,#25
beqz r1,L240
nop ; not filled.
andi r1,r31,#0x00ff
addi r1,r1,#-55
j L237
nop ; not filled.
L240:
addi r1,r0,#1000
L237:
slt r31,r1,r4
beqz r31,L246
nop ; not filled.
movi2fp f0,r3
movi2fp f1,r4
mult f0,f0,f1
movfp2i r3,f0
add r3,r3,r1
addi r2,r2,#1
bnez r31,L233
nop ; not filled.
L246:
snei r1,r5,#0
beqz r1,L244
nop ; not filled.
sw (r5),r2
L244:
movi2fp f0,r3
movi2fp f1,r6
mult f0,f0,f1
movfp2i r1,f0
L245:
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r5,12(r29)
lw r6,16(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _dstrtol
.align 2
.proc _bcopy
.global _bcopy
_bcopy:
; Function 'bcopy'; 0 bytes of locals, 3 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#24 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
sw 8(r29),r4
lw r3,(r30)
lw r2,4(r30)
lw r31,8(r30)
j L259
nop ; not filled.
L257:
lb r4,(r3)
sb (r2),r4
addi r3,r3,#1
addi r2,r2,#1
L259:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L257
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r4,8(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bcopy
.align 2
.proc _bzero
.global _bzero
_bzero:
; Function 'bzero'; 0 bytes of locals, 2 regs to save.
sw -4(r29),r30 ; push fp
add r30,r0,r29 ; fp = sp
sw -8(r29),r31 ; push ret addr
subui r29,r29,#16 ; alloc local storage
sw 0(r29),r2
sw 4(r29),r3
lw r2,(r30)
lw r31,4(r30)
j L270
nop ; not filled.
L268:
addi r3,r0,(#0x0)&0xff
sb (r2),r3
addi r2,r2,#1
L270:
add r1,r0,r31
addi r31,r31,#-1
sgti r1,r1,#0
bnez r1,L268
nop ; not filled.
lw r2,0(r29)
lw r3,4(r29)
lw r31,-8(r30)
add r29,r0,r30
lw r30,-4(r30)
jr r31
nop
.endproc _bzero

option1/lab4_1/src/synch.c

// // synch.c // // Routines for synchronization // // #include "dlxos.h" #include "process.h" #include "synch.h" static Sem sems[MAX_SEMS]; //All semaphores in the system extern struct PCB *currentPCB; //---------------------------------------------------------------------- // SynchModuleInit // // Initializes the synchronization primitives: the semaphores //---------------------------------------------------------------------- void SynchModuleInit() { int i; dbprintf ('p', "Entering SynchModuleInit\n"); for(i=0; i<MAX_SEMS; i++) sems[i].inuse = 0; dbprintf ('p', "Leaving SynchModuleInit\n"); } //--------------------------------------------------------------------- // // SemInit // // Initialize a semaphore to a particular value. This just means // initting the process queue and setting the counter. // //---------------------------------------------------------------------- void SemInit (Sem *sem, int count) { QueueInit (&sem->waiting); sem->count = count; } //---------------------------------------------------------------------- // SemCreate // // Grabs a Semaphore, initializes it and returns a handle to this // semaphore. All subsequent accesses to this semaphore should be made // through this handle //---------------------------------------------------------------------- sem_t SemCreate(int count) { sem_t sem; uint32 intrval; // grabbing a semaphore should be an atomic operation intrval = DisableIntrs(); for(sem=0; sem<MAX_SEMS; sem++) { if(sems[sem].inuse==0) { sems[sem].inuse = 1; break; } } RestoreIntrs(intrval); if(sem==MAX_SEMS) return INVALID_SEM; SemInit(&sems[sem], count); return sem; } � //---------------------------------------------------------------------- // // SemWait // // Wait on a semaphore. As described in Section 6.4 of _OSC_, // we decrement the counter and suspend the process if the // semaphore's value is less than 0. To ensure atomicity, // interrupts are disabled for the entire operation. Note that, // if the process is put to sleep, interrupts will be OFF when // it returns from sleep. Thus, we enable interrupts at the end of // the routine. // //---------------------------------------------------------------------- void SemWait (Sem *sem) { Link *l; int intrval; intrval = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrval); dbprintf ('s', "Proc 0x%x waiting on sem 0x%x, count=%d.\n", currentPCB, sem, sem->count); sem->count -= 1; if (sem->count < 0) { l = QueueAllocLink (); QueueLinkInit (l, (void *)currentPCB); dbprintf ('s', "Suspending current proc (0x%x).\n", currentPCB); QueueInsertLast (&sem->waiting, l); ProcessSleep (); } RestoreIntrs (intrval); } int SemHandleWait(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemWait(&sems[sem]); return 0; } return 1; } else { return 1; } } //---------------------------------------------------------------------- // // SemSignal // // Signal on a semaphore. Again, details are in Section 6.4 of // _OSC_. // //---------------------------------------------------------------------- void SemSignal (Sem *sem) { Link *l; int intrs; intrs = DisableIntrs (); dbprintf ('s', "Signalling on sem 0x%x, count=%d.\n", sem, sem->count); sem->count += 1; if (sem->count <= 0) { l = QueueFirst (&sem->waiting); QueueRemove (l); dbprintf ('s', "Waking up PCB 0x%x.\n", l->object); ProcessWakeup ((PCB *)(l->object)); QueueFreeLink (l); } RestoreIntrs (intrs); } int SemHandleSignal(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemSignal(&sems[sem]); return 0; } return 1; } else { return 1; } }

option1/lab4_1/src/synch.working.s

; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L38 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L38: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .data .align 2 LC0: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC1: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L49 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L48 nop ; not filled. L49: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r3 lw r6,12(r3) sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L48: lw r1,12(r3) addi r1,r1,#-1 sw 12(r3),r1 slti r1,r1,#0 beqz r1,L50 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r6,r0,#0 sw (r2),r6 sw 12(r2),r1 addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r6,r0,#115 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r6,((LC1)>>16)&0xffff addui r6,r6,(LC1)&0xffff sw (r29),r6 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L52: lw r1,4(r3) sw 8(r2),r3 sw 4(r2),r1 lw r6,(r1) sw (r2),r6 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 jal _ProcessSleep nop ; not filled. L50: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .data .align 2 LC2: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC3: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) jal _DisableIntrs nop ; not filled. addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 sw 4(r29),r2 lw r4,12(r2) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L58: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L60 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L63 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L63: addi r4,r0,#0 sw (r3),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#115 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r29,r29,#-8 lw r4,12(r3) sw (r29),r4 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L60: jal _EnableIntrs nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _LockInit .global _LockInit _LockInit: ; Function 'LockInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. addi r3,r0,#1 sw 12(r2),r3 addi r29,r29,#8 addi r1,r2,#16 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 28(r2),r3 addi r29,r29,#8 sw 32(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockInit .align 2 .proc _LockAcquire .global _LockAcquire _LockAcquire: ; Function 'LockAcquire'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lw r1,(r30) sw (r29),r1 jal _SemWait nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockAcquire .align 2 .proc _LockRelease .global _LockRelease _LockRelease: ; Function 'LockRelease'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,(r30) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L78 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L80 nop ; not filled. L78: addi r29,r29,#-8 sw (r29),r31 L80: jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockRelease .align 2 .proc _CondInit .global _CondInit _CondInit: ; Function 'CondInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) sw (r2),r3 addi r1,r2,#4 addi r29,r29,#-8 sw (r29),r1 jal _QueueInit nop ; not filled. addi r3,r0,#0 sw 16(r2),r3 addi r29,r29,#8 sw 20(r2),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondInit .align 2 .proc _CondWait .global _CondWait _CondWait: ; Function 'CondWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r2,(r30) lw r1,20(r2) addi r1,r1,#1 sw 20(r2),r1 lw r31,(r2) lw r1,32(r31) sgti r1,r1,#0 beqz r1,L89 nop ; not filled. addi r29,r29,#-8 addi r1,r31,#16 sw (r29),r1 j L91 nop ; not filled. L89: addi r29,r29,#-8 sw (r29),r31 L91: jal _SemSignal nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 addi r1,r2,#4 sw (r29),r1 jal _SemWait nop ; not filled. lw r1,(r2) addi r1,r1,#16 sw (r29),r1 jal _SemWait nop ; not filled. lw r2,(r2) lw r1,32(r2) addi r1,r1,#-1 sw 32(r2),r1 addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondWait .align 2 .proc _CondSignal .global _CondSignal _CondSignal: ; Function 'CondSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) lw r2,20(r31) sgti r1,r2,#0 beqz r1,L95 nop ; not filled. addi r1,r2,#-1 sw 20(r31),r1 lw r2,(r31) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 addi r1,r31,#4 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 L95: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondSignal .align 2 .proc _CondBroadcast .global _CondBroadcast _CondBroadcast: ; Function 'CondBroadcast'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r5,20(r4) addi r3,r0,#0 slt r1,r3,r5 beqz r1,L106 nop ; not filled. addi r6,r4,#4 L108: lw r2,20(r4) sgti r1,r2,#0 beqz r1,L107 nop ; not filled. addi r1,r2,#-1 sw 20(r4),r1 lw r2,(r4) lw r1,32(r2) addi r1,r1,#1 sw 32(r2),r1 addi r29,r29,#-8 sw (r29),r6 jal _SemSignal nop ; not filled. addi r29,r29,#8 L107: addi r3,r3,#1 slt r1,r3,r5 bnez r1,L108 nop ; not filled. L106: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondBroadcast

option1/lab4_1/src/userprog.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 116 ; Text size: 3060 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\nTesting case %d\n\000" .align 2 LC1_LF0: .ascii "\nUsage: \000" .align 2 LC2_LF0: .ascii " [case id]\n\n\000" .align 2 LC3_LF0: .ascii "userprog1.dlx.obj\000" .align 2 LC4_LF0: .ascii "userprog2.dlx.obj\000" .align 2 LC5_LF0: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop; not filled. seqi r1,r2,#2 beqz r1,L14_LF0 nop; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop; not filled. add r2,r0,r1 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. addi r29,r29,#16 j L12_LF0 nop; not filled. L14_LF0: addi r29,r29,#-8 lhi r4,((LC1_LF0)>>16)&0xffff addui r4,r4,(LC1_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop; not filled. lhi r4,((LC2_LF0)>>16)&0xffff addui r4,r4,(LC2_LF0)&0xffff sw (r29),r4 jal _Printf nop; not filled. jal _exit nop; not filled. L12_LF0: seqi r1,r2,#1 bnez r1,L17_LF0 nop; not filled. seqi r1,r2,#2 beqz r1,L19_LF0 nop; not filled. j L18_LF0 nop; not filled. L17_LF0: addi r29,r29,#-8 lhi r4,((LC3_LF0)>>16)&0xffff addui r4,r4,(LC3_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L18_LF0: addi r29,r29,#-8 lhi r4,((LC4_LF0)>>16)&0xffff addui r4,r4,(LC4_LF0)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop; not filled. j L21_LF0 nop; not filled. L19_LF0: addi r29,r29,#-8 lhi r4,((LC5_LF0)>>16)&0xffff addui r4,r4,(LC5_LF0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop; not filled. L21_LF0: addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_1/src/userprog1.lst

line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 27 4 ; Text size: 2864 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 0a0a496e .ascii "\n\nIn Userprog1, Sum : %d\n\n\000" 12 00002004 20557365 12 00002008 7270726f 12 0000200c 67312c20 12 00002010 53756d20 12 00002014 3a202564 12 00002018 0a0a00 13 0000201b .text 14 00001000 .align 2 15 00001000 .proc _main 16 00001000 .global _main 17 00001000 _main: 18 ; Function 'main'; 0 bytes of locals, 0 regs to save. 19 00001000 afbefffc sw -4(r29),r30; push fp 20 00001004 001df020 add r30,r0,r29; fp = sp 21 00001008 afbffff8 sw -8(r29),r31; push ret addr 22 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 23 00001010 0c000b14 jal ___main 24 00001014 54000000 nop; not filled. 25 00001018 20030000 addi r3,r0,(#0x0)&0xff 26 0000101c 201f0000 addi r31,r0,#0 27 00001020 20027000 addi r2,r0,#28672 28 00001024 L16_LF0: 29 00001024 a05f0000 sb (r2),r31 30 00001028 20422000 addi r2,r2,#8192 31 0000102c 23ff0001 addi r31,r31,#1 32 00001030 73e1000b slei r1,r31,#11 33 00001034 1420ffec bnez r1,L16_LF0 34 00001038 54000000 nop; not filled. 35 0000103c 201f7000 addi r31,r0,#28672 36 00001040 3c040001 lhi r4,#1 37 00001044 24846000 addui r4,r4,#24576 38 00001048 03e41020 add r2,r31,r4 39 0000104c L21_LF0: 40 0000104c 83e40000 lb r4,(r31) 41 00001050 00831820 add r3,r4,r3 42 00001054 23ff2000 addi r31,r31,#8192 43 00001058 03e2082c sle r1,r31,r2 44 0000105c 1420ffec bnez r1,L21_LF0 45 00001060 54000000 nop; not filled. 46 00001064 23bdfff8 addi r29,r29,#-8 47 00001068 3c040000 lhi r4,((LC0_LF0)>>16)&0xffff 48 0000106c 24842000 addui r4,r4,(LC0_LF0)&0xffff 49 00001070 afa40000 sw (r29),r4 50 00001074 306100ff andi r1,r3,#0x00ff 51 00001078 afa10004 sw 4(r29),r1 52 0000107c 0c000058 jal _Printf 53 00001080 54000000 nop; not filled. 54 00001084 23bd0008 addi r29,r29,#8 55 00001088 0c000a90 jal _exit 56 0000108c 54000000 nop 57 00001090 .endproc _main 58 ;;; 59 ;;; Stub functions for DLX traps. 60 ;;; 61 ;;; Ethan L. Miller, 1999. Released to the public domain. 62 ;;; 63 ;;; The traps such as Open and Close 64 ;;; (note the capital letters) are for use by user programs. The traps 65 ;;; with names such as open and close (lower case) are for use by the OS. 66 ;;; 69 00001090 .align 2 71 ;;; The following are the traps to be used by user-level programs 72 ;;; 74 00001090 .align 2 75 00001090 .proc _Open 76 00001090 .global _Open 77 00001090 _Open: 78 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 79 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 80 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 81 00001090 44000213 trap #0x213 82 00001094 4be00000 jr r31 83 00001098 54000000 nop 84 0000109c .endproc _Open 86 0000109c .proc _Close 87 0000109c .global _Close 88 0000109c _Close: 89 0000109c 44000214 trap #0x214 90 000010a0 4be00000 jr r31 91 000010a4 54000000 nop 92 000010a8 .endproc _Close 94 000010a8 .proc _Read 95 000010a8 .global _Read 96 000010a8 _Read: 97 000010a8 44000210 trap #0x210 98 000010ac 4be00000 jr r31 99 000010b0 54000000 nop 100 000010b4 .endproc _Read 102 000010b4 .proc _Write 103 000010b4 .global _Write 104 000010b4 _Write: 105 000010b4 44000211 trap #0x211 106 000010b8 4be00000 jr r31 107 000010bc 54000000 nop 108 000010c0 .endproc _Write 110 000010c0 .proc _Lseek 111 000010c0 .global _Lseek 112 000010c0 _Lseek: 113 000010c0 44000212 trap #0x212 114 000010c4 4be00000 jr r31 115 000010c8 54000000 nop 116 000010cc .endproc _Lseek 118 000010cc .proc _Putchar 119 000010cc .global _Putchar 120 000010cc _Putchar: 121 000010cc 44000280 trap #0x280 122 000010d0 4be00000 jr r31 123 000010d4 54000000 nop 124 000010d8 .endproc _Putchar 126 000010d8 .proc _Printf 127 000010d8 .global _Printf 128 000010d8 _Printf: 129 000010d8 44000201 trap #0x201 130 000010dc 4be00000 jr r31 131 000010e0 54000000 nop 132 000010e4 .endproc _Printf 134 000010e4 .proc _getpid 135 000010e4 .global _getpid 136 000010e4 _getpid: 137 000010e4 44000431 trap #0x431 138 000010e8 4be00000 jr r31 139 000010ec 54000000 nop 140 000010f0 .endproc _getpid 142 000010f0 .proc _process_create 143 000010f0 .global _process_create 144 000010f0 _process_create: 145 000010f0 44000432 trap #0x432 146 000010f4 4be00000 jr r31 147 000010f8 54000000 nop 148 000010fc .endproc _process_create 151 000010fc .proc _sem_create 152 000010fc .global _sem_create 153 000010fc _sem_create: 154 000010fc 44000450 trap #0x450 155 00001100 4be00000 jr r31 156 00001104 54000000 nop 157 00001108 .endproc _sem_create 159 00001108 .proc _sem_wait 160 00001108 .global _sem_wait 161 00001108 _sem_wait: 162 00001108 44000451 trap #0x451 163 0000110c 4be00000 jr r31 164 00001110 54000000 nop 165 00001114 .endproc _sem_wait 167 00001114 .proc _sem_signal 168 00001114 .global _sem_signal 169 00001114 _sem_signal: 170 00001114 44000452 trap #0x452 171 00001118 4be00000 jr r31 172 0000111c 54000000 nop 173 00001120 .endproc _sem_signal 176 ; Compiled by GCC 178 00001120 .align 2 179 00001120 .proc _isspace 180 00001120 .global _isspace 181 00001120 _isspace: 182 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 183 00001120 afbefffc sw -4(r29),r30; push fp 184 00001124 001df020 add r30,r0,r29; fp = sp 185 00001128 afbffff8 sw -8(r29),r31; push ret addr 186 0000112c 2fbd0010 subui r29,r29,#16; alloc local storage 187 00001130 afa20000 sw 0(r29),r2 188 00001134 83c20003 lb r2,3(r30) 189 00001138 201f0000 addi r31,r0,#0 190 0000113c 304100ff andi r1,r2,#0x00ff 191 00001140 60210020 seqi r1,r1,#32 192 00001144 14200018 bnez r1,L6_LF2 193 00001148 54000000 nop; not filled. 194 0000114c 2041fff7 addi r1,r2,#-9 195 00001150 302100ff andi r1,r1,#0x00ff 196 00001154 70210001 sleui r1,r1,#1 197 00001158 10200008 beqz r1,L5_LF2 198 0000115c 54000000 nop; not filled. 199 00001160 L6_LF2: 200 00001160 201f0001 addi r31,r0,#1 201 00001164 L5_LF2: 202 00001164 001f0820 add r1,r0,r31 203 00001168 8fa20000 lw r2,0(r29) 204 0000116c 8fdffff8 lw r31,-8(r30) 205 00001170 001ee820 add r29,r0,r30 206 00001174 8fdefffc lw r30,-4(r30) 207 00001178 4be00000 jr r31 208 0000117c 54000000 nop 209 00001180 .endproc _isspace 210 00001180 .align 2 211 00001180 .proc _isxdigit 212 00001180 .global _isxdigit 213 00001180 _isxdigit: 214 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 215 00001180 afbefffc sw -4(r29),r30; push fp 216 00001184 001df020 add r30,r0,r29; fp = sp 217 00001188 afbffff8 sw -8(r29),r31; push ret addr 218 0000118c 2fbd0010 subui r29,r29,#16; alloc local storage 219 00001190 afa20000 sw 0(r29),r2 220 00001194 83df0003 lb r31,3(r30) 221 00001198 20020000 addi r2,r0,#0 222 0000119c 23e1ffd0 addi r1,r31,#-48 223 000011a0 302100ff andi r1,r1,#0x00ff 224 000011a4 70210009 sleui r1,r1,#9 225 000011a8 14200028 bnez r1,L12_LF2 226 000011ac 54000000 nop; not filled. 227 000011b0 23e1ff9f addi r1,r31,#-97 228 000011b4 302100ff andi r1,r1,#0x00ff 229 000011b8 70210005 sleui r1,r1,#5 230 000011bc 14200014 bnez r1,L12_LF2 231 000011c0 54000000 nop; not filled. 232 000011c4 33e100ff andi r1,r31,#0x00ff 233 000011c8 64210041 snei r1,r1,#65 234 000011cc 14200008 bnez r1,L11_LF2 235 000011d0 54000000 nop; not filled. 236 000011d4 L12_LF2: 237 000011d4 20020001 addi r2,r0,#1 238 000011d8 L11_LF2: 239 000011d8 00020820 add r1,r0,r2 240 000011dc 8fa20000 lw r2,0(r29) 241 000011e0 8fdffff8 lw r31,-8(r30) 242 000011e4 001ee820 add r29,r0,r30 243 000011e8 8fdefffc lw r30,-4(r30) 244 000011ec 4be00000 jr r31 245 000011f0 54000000 nop 246 000011f4 .endproc _isxdigit 247 000011f4 .align 2 248 000011f4 .proc _dstrcpy 249 000011f4 .global _dstrcpy 250 000011f4 _dstrcpy: 251 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 252 000011f4 afbefffc sw -4(r29),r30; push fp 253 000011f8 001df020 add r30,r0,r29; fp = sp 254 000011fc afbffff8 sw -8(r29),r31; push ret addr 255 00001200 2fbd0010 subui r29,r29,#16; alloc local storage 256 00001204 afa20000 sw 0(r29),r2 257 00001208 afa30004 sw 4(r29),r3 258 0000120c 8fdf0000 lw r31,(r30) 259 00001210 8fc20004 lw r2,4(r30) 260 00001214 001f1820 add r3,r0,r31 261 00001218 L19_LF2: 262 00001218 80410000 lb r1,(r2) 263 0000121c a3e10000 sb (r31),r1 264 00001220 20420001 addi r2,r2,#1 265 00001224 23ff0001 addi r31,r31,#1 266 00001228 302100ff andi r1,r1,#0x00ff 267 0000122c 64210000 snei r1,r1,#0 268 00001230 1420ffe4 bnez r1,L19_LF2 269 00001234 54000000 nop; not filled. 270 00001238 00030820 add r1,r0,r3 271 0000123c 8fa20000 lw r2,0(r29) 272 00001240 8fa30004 lw r3,4(r29) 273 00001244 8fdffff8 lw r31,-8(r30) 274 00001248 001ee820 add r29,r0,r30 275 0000124c 8fdefffc lw r30,-4(r30) 276 00001250 4be00000 jr r31 277 00001254 54000000 nop 278 00001258 .endproc _dstrcpy 279 00001258 .align 2 280 00001258 .proc _dstrncpy 281 00001258 .global _dstrncpy 282 00001258 _dstrncpy: 283 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 284 00001258 afbefffc sw -4(r29),r30; push fp 285 0000125c 001df020 add r30,r0,r29; fp = sp 286 00001260 afbffff8 sw -8(r29),r31; push ret addr 287 00001264 2fbd0018 subui r29,r29,#24; alloc local storage 288 00001268 afa20000 sw 0(r29),r2 289 0000126c afa30004 sw 4(r29),r3 290 00001270 afa40008 sw 8(r29),r4 291 00001274 8fc20000 lw r2,(r30) 292 00001278 8fc30004 lw r3,4(r30) 293 0000127c 8fdf0008 lw r31,8(r30) 294 00001280 00022020 add r4,r0,r2 295 00001284 08000024 j L37_LF2 296 00001288 54000000 nop; not filled. 297 0000128c L34_LF2: 298 0000128c 80610000 lb r1,(r3) 299 00001290 a0410000 sb (r2),r1 300 00001294 20630001 addi r3,r3,#1 301 00001298 20420001 addi r2,r2,#1 302 0000129c 302100ff andi r1,r1,#0x00ff 303 000012a0 64210000 snei r1,r1,#0 304 000012a4 10200018 beqz r1,L32_LF2 305 000012a8 54000000 nop; not filled. 306 000012ac L37_LF2: 307 000012ac 001f0820 add r1,r0,r31 308 000012b0 23ffffff addi r31,r31,#-1 309 000012b4 70210000 slei r1,r1,#0 310 000012b8 1020ffd0 beqz r1,L34_LF2 311 000012bc 54000000 nop; not filled. 312 000012c0 L32_LF2: 313 000012c0 00040820 add r1,r0,r4 314 000012c4 8fa20000 lw r2,0(r29) 315 000012c8 8fa30004 lw r3,4(r29) 316 000012cc 8fa40008 lw r4,8(r29) 317 000012d0 8fdffff8 lw r31,-8(r30) 318 000012d4 001ee820 add r29,r0,r30 319 000012d8 8fdefffc lw r30,-4(r30) 320 000012dc 4be00000 jr r31 321 000012e0 54000000 nop 322 000012e4 .endproc _dstrncpy 323 000012e4 .align 2 324 000012e4 .proc _dstrcat 325 000012e4 .global _dstrcat 326 000012e4 _dstrcat: 327 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 328 000012e4 afbefffc sw -4(r29),r30; push fp 329 000012e8 001df020 add r30,r0,r29; fp = sp 330 000012ec afbffff8 sw -8(r29),r31; push ret addr 331 000012f0 2fbd0010 subui r29,r29,#16; alloc local storage 332 000012f4 afa20000 sw 0(r29),r2 333 000012f8 afa30004 sw 4(r29),r3 334 000012fc 8fdf0000 lw r31,(r30) 335 00001300 001f1820 add r3,r0,r31 336 00001304 90610000 lbu r1,(r3) 337 00001308 64210000 snei r1,r1,#0 338 0000130c 10200018 beqz r1,L50_LF2 339 00001310 54000000 nop; not filled. 340 00001314 L51_LF2: 341 00001314 23ff0001 addi r31,r31,#1 342 00001318 93e10000 lbu r1,(r31) 343 0000131c 64210000 snei r1,r1,#0 344 00001320 1420fff0 bnez r1,L51_LF2 345 00001324 54000000 nop; not filled. 346 00001328 L50_LF2: 347 00001328 001f1020 add r2,r0,r31 348 0000132c 8fdf0004 lw r31,4(r30) 349 00001330 L54_LF2: 350 00001330 83e10000 lb r1,(r31) 351 00001334 a0410000 sb (r2),r1 352 00001338 23ff0001 addi r31,r31,#1 353 0000133c 20420001 addi r2,r2,#1 354 00001340 302100ff andi r1,r1,#0x00ff 355 00001344 64210000 snei r1,r1,#0 356 00001348 1420ffe4 bnez r1,L54_LF2 357 0000134c 54000000 nop; not filled. 358 00001350 00030820 add r1,r0,r3 359 00001354 8fa20000 lw r2,0(r29) 360 00001358 8fa30004 lw r3,4(r29) 361 0000135c 8fdffff8 lw r31,-8(r30) 362 00001360 001ee820 add r29,r0,r30 363 00001364 8fdefffc lw r30,-4(r30) 364 00001368 4be00000 jr r31 365 0000136c 54000000 nop 366 00001370 .endproc _dstrcat 367 00001370 .align 2 368 00001370 .proc _dstrncmp 369 00001370 .global _dstrncmp 370 00001370 _dstrncmp: 371 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 372 00001370 afbefffc sw -4(r29),r30; push fp 373 00001374 001df020 add r30,r0,r29; fp = sp 374 00001378 afbffff8 sw -8(r29),r31; push ret addr 375 0000137c 2fbd0018 subui r29,r29,#24; alloc local storage 376 00001380 afa20000 sw 0(r29),r2 377 00001384 afa30004 sw 4(r29),r3 378 00001388 afa40008 sw 8(r29),r4 379 0000138c afa5000c sw 12(r29),r5 380 00001390 8fc30000 lw r3,(r30) 381 00001394 8fc40004 lw r4,4(r30) 382 00001398 8fc50008 lw r5,8(r30) 383 0000139c 20020000 addi r2,r0,#0 384 000013a0 0045082a slt r1,r2,r5 385 000013a4 1020003c beqz r1,L73_LF2 386 000013a8 54000000 nop; not filled. 387 000013ac L75_LF2: 388 000013ac 909f0000 lbu r31,(r4) 389 000013b0 67e10000 snei r1,r31,#0 390 000013b4 10200038 beqz r1,L86_LF2 391 000013b8 54000000 nop; not filled. 392 000013bc 90610000 lbu r1,(r3) 393 000013c0 003f0829 sne r1,r1,r31 394 000013c4 1420001c bnez r1,L73_LF2 395 000013c8 54000000 nop; not filled. 396 000013cc 20630001 addi r3,r3,#1 397 000013d0 20840001 addi r4,r4,#1 398 000013d4 20420001 addi r2,r2,#1 399 000013d8 0045082a slt r1,r2,r5 400 000013dc 1420ffcc bnez r1,L75_LF2 401 000013e0 54000000 nop; not filled. 402 000013e4 L73_LF2: 403 000013e4 00450828 seq r1,r2,r5 404 000013e8 10200010 beqz r1,L80_LF2 405 000013ec 54000000 nop; not filled. 406 000013f0 L86_LF2: 407 000013f0 20010000 addi r1,r0,#0 408 000013f4 08000028 j L84_LF2 409 000013f8 54000000 nop; not filled. 410 000013fc L80_LF2: 411 000013fc 907f0000 lbu r31,(r3) 412 00001400 90830000 lbu r3,(r4) 413 00001404 03e30822 sub r1,r31,r3 414 00001408 74210000 sgei r1,r1,#0 415 0000140c 2002ffff addi r2,r0,#-1 416 00001410 10200008 beqz r1,L82_LF2 417 00001414 54000000 nop; not filled. 418 00001418 03e31029 sne r2,r31,r3 419 0000141c L82_LF2: 420 0000141c 00020820 add r1,r0,r2 421 00001420 L84_LF2: 422 00001420 8fa20000 lw r2,0(r29) 423 00001424 8fa30004 lw r3,4(r29) 424 00001428 8fa40008 lw r4,8(r29) 425 0000142c 8fa5000c lw r5,12(r29) 426 00001430 8fdffff8 lw r31,-8(r30) 427 00001434 001ee820 add r29,r0,r30 428 00001438 8fdefffc lw r30,-4(r30) 429 0000143c 4be00000 jr r31 430 00001440 54000000 nop 431 00001444 .endproc _dstrncmp 432 00001444 .align 2 433 00001444 .proc _dstrlen 434 00001444 .global _dstrlen 435 00001444 _dstrlen: 436 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 437 00001444 afbefffc sw -4(r29),r30; push fp 438 00001448 001df020 add r30,r0,r29; fp = sp 439 0000144c afbffff8 sw -8(r29),r31; push ret addr 440 00001450 2fbd0010 subui r29,r29,#16; alloc local storage 441 00001454 afa20000 sw 0(r29),r2 442 00001458 8fdf0000 lw r31,(r30) 443 0000145c 20020000 addi r2,r0,#0 444 00001460 08000008 j L97_LF2 445 00001464 54000000 nop; not filled. 446 00001468 L95_LF2: 447 00001468 20420001 addi r2,r2,#1 448 0000146c L97_LF2: 449 0000146c 93e10000 lbu r1,(r31) 450 00001470 23ff0001 addi r31,r31,#1 451 00001474 64210000 snei r1,r1,#0 452 00001478 1420ffec bnez r1,L95_LF2 453 0000147c 54000000 nop; not filled. 454 00001480 00020820 add r1,r0,r2 455 00001484 8fa20000 lw r2,0(r29) 456 00001488 8fdffff8 lw r31,-8(r30) 457 0000148c 001ee820 add r29,r0,r30 458 00001490 8fdefffc lw r30,-4(r30) 459 00001494 4be00000 jr r31 460 00001498 54000000 nop 461 0000149c .endproc _dstrlen 462 0000149c .align 2 463 0000149c .proc _dstrstr 464 0000149c .global _dstrstr 465 0000149c _dstrstr: 466 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 467 0000149c afbefffc sw -4(r29),r30; push fp 468 000014a0 001df020 add r30,r0,r29; fp = sp 469 000014a4 afbffff8 sw -8(r29),r31; push ret addr 470 000014a8 2fbd0020 subui r29,r29,#32; alloc local storage 471 000014ac afa20000 sw 0(r29),r2 472 000014b0 afa30004 sw 4(r29),r3 473 000014b4 afa40008 sw 8(r29),r4 474 000014b8 afa5000c sw 12(r29),r5 475 000014bc afa60010 sw 16(r29),r6 476 000014c0 afa70014 sw 20(r29),r7 477 000014c4 8fc50000 lw r5,(r30) 478 000014c8 8fc70004 lw r7,4(r30) 479 000014cc 20030000 addi r3,r0,#0 480 000014d0 90e10000 lbu r1,(r7) 481 000014d4 20e20001 addi r2,r7,#1 482 000014d8 64210000 snei r1,r1,#0 483 000014dc 1020001c beqz r1,L125_LF2 484 000014e0 54000000 nop; not filled. 485 000014e4 L126_LF2: 486 000014e4 20630001 addi r3,r3,#1 487 000014e8 90410000 lbu r1,(r2) 488 000014ec 20420001 addi r2,r2,#1 489 000014f0 64210000 snei r1,r1,#0 490 000014f4 1420ffec bnez r1,L126_LF2 491 000014f8 54000000 nop; not filled. 492 000014fc L125_LF2: 493 000014fc 00033020 add r6,r0,r3 494 00001500 080000ac j L149_LF2 495 00001504 54000000 nop; not filled. 496 00001508 L130_LF2: 497 00001508 00051820 add r3,r0,r5 498 0000150c 00072020 add r4,r0,r7 499 00001510 20020000 addi r2,r0,#0 500 00001514 0046082a slt r1,r2,r6 501 00001518 1020003c beqz r1,L134_LF2 502 0000151c 54000000 nop; not filled. 503 00001520 L136_LF2: 504 00001520 909f0000 lbu r31,(r4) 505 00001524 67e10000 snei r1,r31,#0 506 00001528 10200038 beqz r1,L150_LF2 507 0000152c 54000000 nop; not filled. 508 00001530 90610000 lbu r1,(r3) 509 00001534 003f0829 sne r1,r1,r31 510 00001538 1420001c bnez r1,L134_LF2 511 0000153c 54000000 nop; not filled. 512 00001540 20630001 addi r3,r3,#1 513 00001544 20840001 addi r4,r4,#1 514 00001548 20420001 addi r2,r2,#1 515 0000154c 0046082a slt r1,r2,r6 516 00001550 1420ffcc bnez r1,L136_LF2 517 00001554 54000000 nop; not filled. 518 00001558 L134_LF2: 519 00001558 00460828 seq r1,r2,r6 520 0000155c 10200010 beqz r1,L141_LF2 521 00001560 54000000 nop; not filled. 522 00001564 L150_LF2: 523 00001564 20010000 addi r1,r0,#0 524 00001568 08000028 j L132_LF2 525 0000156c 54000000 nop; not filled. 526 00001570 L141_LF2: 527 00001570 90630000 lbu r3,(r3) 528 00001574 90820000 lbu r2,(r4) 529 00001578 00620822 sub r1,r3,r2 530 0000157c 74210000 sgei r1,r1,#0 531 00001580 201fffff addi r31,r0,#-1 532 00001584 10200008 beqz r1,L143_LF2 533 00001588 54000000 nop; not filled. 534 0000158c 0062f829 sne r31,r3,r2 535 00001590 L143_LF2: 536 00001590 001f0820 add r1,r0,r31 537 00001594 L132_LF2: 538 00001594 64210000 snei r1,r1,#0 539 00001598 14200010 bnez r1,L131_LF2 540 0000159c 54000000 nop; not filled. 541 000015a0 00050820 add r1,r0,r5 542 000015a4 0800001c j L146_LF2 543 000015a8 54000000 nop; not filled. 544 000015ac L131_LF2: 545 000015ac 20a50001 addi r5,r5,#1 546 000015b0 L149_LF2: 547 000015b0 90a10000 lbu r1,(r5) 548 000015b4 64210000 snei r1,r1,#0 549 000015b8 1420ff4c bnez r1,L130_LF2 550 000015bc 54000000 nop; not filled. 551 000015c0 20010000 addi r1,r0,#0 552 000015c4 L146_LF2: 553 000015c4 8fa20000 lw r2,0(r29) 554 000015c8 8fa30004 lw r3,4(r29) 555 000015cc 8fa40008 lw r4,8(r29) 556 000015d0 8fa5000c lw r5,12(r29) 557 000015d4 8fa60010 lw r6,16(r29) 558 000015d8 8fa70014 lw r7,20(r29) 559 000015dc 8fdffff8 lw r31,-8(r30) 560 000015e0 001ee820 add r29,r0,r30 561 000015e4 8fdefffc lw r30,-4(r30) 562 000015e8 4be00000 jr r31 563 000015ec 54000000 nop 564 000015f0 .endproc _dstrstr 565 000015f0 .align 2 566 000015f0 .proc _dmindex 567 000015f0 .global _dmindex 568 000015f0 _dmindex: 569 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 570 000015f0 afbefffc sw -4(r29),r30; push fp 571 000015f4 001df020 add r30,r0,r29; fp = sp 572 000015f8 afbffff8 sw -8(r29),r31; push ret addr 573 000015fc 2fbd0020 subui r29,r29,#32; alloc local storage 574 00001600 afa20000 sw 0(r29),r2 575 00001604 afa30004 sw 4(r29),r3 576 00001608 afa40008 sw 8(r29),r4 577 0000160c afa5000c sw 12(r29),r5 578 00001610 afa60010 sw 16(r29),r6 579 00001614 8fc40000 lw r4,(r30) 580 00001618 8fc60004 lw r6,4(r30) 581 0000161c 90810000 lbu r1,(r4) 582 00001620 64210000 snei r1,r1,#0 583 00001624 10200060 beqz r1,L164_LF2 584 00001628 54000000 nop; not filled. 585 0000162c 00012820 add r5,r0,r1 586 00001630 L165_LF2: 587 00001630 00061020 add r2,r0,r6 588 00001634 80df0000 lb r31,(r6) 589 00001638 33e100ff andi r1,r31,#0x00ff 590 0000163c 64210000 snei r1,r1,#0 591 00001640 1020003c beqz r1,L163_LF2 592 00001644 54000000 nop; not filled. 593 00001648 90830000 lbu r3,(r4) 594 0000164c L169_LF2: 595 0000164c 33e100ff andi r1,r31,#0x00ff 596 00001650 00610828 seq r1,r3,r1 597 00001654 10200010 beqz r1,L168_LF2 598 00001658 54000000 nop; not filled. 599 0000165c 00040820 add r1,r0,r4 600 00001660 08000028 j L173_LF2 601 00001664 54000000 nop; not filled. 602 00001668 L168_LF2: 603 00001668 20420001 addi r2,r2,#1 604 0000166c 805f0000 lb r31,(r2) 605 00001670 33e100ff andi r1,r31,#0x00ff 606 00001674 64210000 snei r1,r1,#0 607 00001678 1420ffd0 bnez r1,L169_LF2 608 0000167c 54000000 nop; not filled. 609 00001680 L163_LF2: 610 00001680 14a0ffac bnez r5,L165_LF2 611 00001684 54000000 nop; not filled. 612 00001688 L164_LF2: 613 00001688 20010000 addi r1,r0,#0 614 0000168c L173_LF2: 615 0000168c 8fa20000 lw r2,0(r29) 616 00001690 8fa30004 lw r3,4(r29) 617 00001694 8fa40008 lw r4,8(r29) 618 00001698 8fa5000c lw r5,12(r29) 619 0000169c 8fa60010 lw r6,16(r29) 620 000016a0 8fdffff8 lw r31,-8(r30) 621 000016a4 001ee820 add r29,r0,r30 622 000016a8 8fdefffc lw r30,-4(r30) 623 000016ac 4be00000 jr r31 624 000016b0 54000000 nop 625 000016b4 .endproc _dmindex 626 000016b4 .align 2 627 000016b4 .proc _dindex 628 000016b4 .global _dindex 629 000016b4 _dindex: 630 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 631 000016b4 afbefffc sw -4(r29),r30; push fp 632 000016b8 001df020 add r30,r0,r29; fp = sp 633 000016bc afbffff8 sw -8(r29),r31; push ret addr 634 000016c0 2fbd0010 subui r29,r29,#16; alloc local storage 635 000016c4 afa20000 sw 0(r29),r2 636 000016c8 afa30004 sw 4(r29),r3 637 000016cc 8fc20000 lw r2,(r30) 638 000016d0 8fc30004 lw r3,4(r30) 639 000016d4 08000024 j L187_LF2 640 000016d8 54000000 nop; not filled. 641 000016dc L183_LF2: 642 000016dc 33e100ff andi r1,r31,#0x00ff 643 000016e0 00230828 seq r1,r1,r3 644 000016e4 10200010 beqz r1,L184_LF2 645 000016e8 54000000 nop; not filled. 646 000016ec 00020820 add r1,r0,r2 647 000016f0 08000020 j L186_LF2 648 000016f4 54000000 nop; not filled. 649 000016f8 L184_LF2: 650 000016f8 20420001 addi r2,r2,#1 651 000016fc L187_LF2: 652 000016fc 805f0000 lb r31,(r2) 653 00001700 33e100ff andi r1,r31,#0x00ff 654 00001704 64210000 snei r1,r1,#0 655 00001708 1420ffd0 bnez r1,L183_LF2 656 0000170c 54000000 nop; not filled. 657 00001710 20010000 addi r1,r0,#0 658 00001714 L186_LF2: 659 00001714 8fa20000 lw r2,0(r29) 660 00001718 8fa30004 lw r3,4(r29) 661 0000171c 8fdffff8 lw r31,-8(r30) 662 00001720 001ee820 add r29,r0,r30 663 00001724 8fdefffc lw r30,-4(r30) 664 00001728 4be00000 jr r31 665 0000172c 54000000 nop 666 00001730 .endproc _dindex 667 00001730 .align 2 668 00001730 .proc _ditoa 669 00001730 .global _ditoa 670 00001730 _ditoa: 671 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 672 00001730 afbefffc sw -4(r29),r30; push fp 673 00001734 001df020 add r30,r0,r29; fp = sp 674 00001738 afbffff8 sw -8(r29),r31; push ret addr 675 0000173c 2fbd0020 subui r29,r29,#32; alloc local storage 676 00001740 afa20000 sw 0(r29),r2 677 00001744 afa30004 sw 4(r29),r3 678 00001748 afa40008 sw 8(r29),r4 679 0000174c afa5000c sw 12(r29),r5 680 00001750 afa60010 sw 16(r29),r6 681 00001754 8fc30000 lw r3,(r30) 682 00001758 8fc40004 lw r4,4(r30) 683 0000175c 68610000 slti r1,r3,#0 684 00001760 10200010 beqz r1,L203_LF2 685 00001764 54000000 nop; not filled. 686 00001768 2006002d addi r6,r0,(#0x2d)&0xff 687 0000176c 08000014 j L216_LF2 688 00001770 54000000 nop; not filled. 689 00001774 L203_LF2: 690 00001774 64610000 snei r1,r3,#0 691 00001778 14200018 bnez r1,L205_LF2 692 0000177c 54000000 nop; not filled. 693 00001780 20060030 addi r6,r0,(#0x30)&0xff 694 00001784 L216_LF2: 695 00001784 a0860000 sb (r4),r6 696 00001788 20840001 addi r4,r4,#1 697 0000178c 0800007c j L204_LF2 698 00001790 54000000 nop; not filled. 699 00001794 L205_LF2: 700 00001794 201f0001 addi r31,r0,#1 701 00001798 03e3082c sle r1,r31,r3 702 0000179c 1020001c beqz r1,L208_LF2 703 000017a0 54000000 nop; not filled. 704 000017a4 L209_LF2: 705 000017a4 53e10002 slli r1,r31,#0x2 706 000017a8 003f0820 add r1,r1,r31 707 000017ac 503f0001 slli r31,r1,#0x1 708 000017b0 03e3082c sle r1,r31,r3 709 000017b4 1420ffec bnez r1,L209_LF2 710 000017b8 54000000 nop; not filled. 711 000017bc L208_LF2: 712 000017bc 2005000a addi r5,r0,#10 713 000017c0 L212_LF2: 714 000017c0 03e00035 movi2fp f0,r31 715 000017c4 00a00835 movi2fp f1,r5 716 000017c8 0401000f div f0,f0,f1 717 000017cc 0000f834 movfp2i r31,f0 718 000017d0 00600035 movi2fp f0,r3 719 000017d4 03e00835 movi2fp f1,r31 720 000017d8 0401000f div f0,f0,f1 721 000017dc 00001034 movfp2i r2,f0 722 000017e0 20410030 addi r1,r2,#48 723 000017e4 a0810000 sb (r4),r1 724 000017e8 20840001 addi r4,r4,#1 725 000017ec 00400035 movi2fp f0,r2 726 000017f0 03e00835 movi2fp f1,r31 727 000017f4 0401000e mult f0,f0,f1 728 000017f8 00000834 movfp2i r1,f0 729 000017fc 00611822 sub r3,r3,r1 730 00001800 6fe10001 sgti r1,r31,#1 731 00001804 1420ffb8 bnez r1,L212_LF2 732 00001808 54000000 nop; not filled. 733 0000180c L204_LF2: 734 0000180c 20060000 addi r6,r0,(#0x0)&0xff 735 00001810 a0860000 sb (r4),r6 736 00001814 8fa20000 lw r2,0(r29) 737 00001818 8fa30004 lw r3,4(r29) 738 0000181c 8fa40008 lw r4,8(r29) 739 00001820 8fa5000c lw r5,12(r29) 740 00001824 8fa60010 lw r6,16(r29) 741 00001828 8fdffff8 lw r31,-8(r30) 742 0000182c 001ee820 add r29,r0,r30 743 00001830 8fdefffc lw r30,-4(r30) 744 00001834 4be00000 jr r31 745 00001838 54000000 nop 746 0000183c .endproc _ditoa 747 0000183c .align 2 748 0000183c .proc _dstrtol 749 0000183c .global _dstrtol 750 0000183c _dstrtol: 751 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 752 0000183c afbefffc sw -4(r29),r30; push fp 753 00001840 001df020 add r30,r0,r29; fp = sp 754 00001844 afbffff8 sw -8(r29),r31; push ret addr 755 00001848 2fbd0020 subui r29,r29,#32; alloc local storage 756 0000184c afa20000 sw 0(r29),r2 757 00001850 afa30004 sw 4(r29),r3 758 00001854 afa40008 sw 8(r29),r4 759 00001858 afa5000c sw 12(r29),r5 760 0000185c afa60010 sw 16(r29),r6 761 00001860 8fc20000 lw r2,(r30) 762 00001864 8fc50004 lw r5,4(r30) 763 00001868 8fc40008 lw r4,8(r30) 764 0000186c 20030000 addi r3,r0,#0 765 00001870 08000008 j L247_LF2 766 00001874 54000000 nop; not filled. 767 00001878 L220_LF2: 768 00001878 20420001 addi r2,r2,#1 769 0000187c L247_LF2: 770 0000187c 805f0000 lb r31,(r2) 771 00001880 33e100ff andi r1,r31,#0x00ff 772 00001884 60210020 seqi r1,r1,#32 773 00001888 1420ffec bnez r1,L220_LF2 774 0000188c 54000000 nop; not filled. 775 00001890 23e1fff7 addi r1,r31,#-9 776 00001894 302100ff andi r1,r1,#0x00ff 777 00001898 70210001 sleui r1,r1,#1 778 0000189c 1420ffd8 bnez r1,L220_LF2 779 000018a0 54000000 nop; not filled. 780 000018a4 64a10000 snei r1,r5,#0 781 000018a8 10200008 beqz r1,L222_LF2 782 000018ac 54000000 nop; not filled. 783 000018b0 aca20000 sw (r5),r2 784 000018b4 L222_LF2: 785 000018b4 905f0000 lbu r31,(r2) 786 000018b8 67e10000 snei r1,r31,#0 787 000018bc 10200090 beqz r1,L248_LF2 788 000018c0 54000000 nop; not filled. 789 000018c4 63e1002d seqi r1,r31,#45 790 000018c8 10200014 beqz r1,L224_LF2 791 000018cc 54000000 nop; not filled. 792 000018d0 2006ffff addi r6,r0,#-1 793 000018d4 20420001 addi r2,r2,#1 794 000018d8 08000008 j L225_LF2 795 000018dc 54000000 nop; not filled. 796 000018e0 L224_LF2: 797 000018e0 20060001 addi r6,r0,#1 798 000018e4 L225_LF2: 799 000018e4 64810000 snei r1,r4,#0 800 000018e8 14200054 bnez r1,L226_LF2 801 000018ec 54000000 nop; not filled. 802 000018f0 90410000 lbu r1,(r2) 803 000018f4 60210030 seqi r1,r1,#48 804 000018f8 10200040 beqz r1,L227_LF2 805 000018fc 54000000 nop; not filled. 806 00001900 20420001 addi r2,r2,#1 807 00001904 905f0000 lbu r31,(r2) 808 00001908 63e10078 seqi r1,r31,#120 809 0000190c 14200010 bnez r1,L229_LF2 810 00001910 54000000 nop; not filled. 811 00001914 63e10058 seqi r1,r31,#88 812 00001918 10200014 beqz r1,L228_LF2 813 0000191c 54000000 nop; not filled. 814 00001920 L229_LF2: 815 00001920 20040010 addi r4,r0,#16 816 00001924 20420001 addi r2,r2,#1 817 00001928 08000014 j L226_LF2 818 0000192c 54000000 nop; not filled. 819 00001930 L228_LF2: 820 00001930 20040008 addi r4,r0,#8 821 00001934 08000008 j L226_LF2 822 00001938 54000000 nop; not filled. 823 0000193c L227_LF2: 824 0000193c 2004000a addi r4,r0,#10 825 00001940 L226_LF2: 826 00001940 2081ffff addi r1,r4,#-1 827 00001944 6c21000f sgtui r1,r1,#15 828 00001948 10200010 beqz r1,L233_LF2 829 0000194c 54000000 nop; not filled. 830 00001950 L248_LF2: 831 00001950 00030820 add r1,r0,r3 832 00001954 080000c4 j L245_LF2 833 00001958 54000000 nop; not filled. 834 0000195c L233_LF2: 835 0000195c 805f0000 lb r31,(r2) 836 00001960 23e1ffd0 addi r1,r31,#-48 837 00001964 302100ff andi r1,r1,#0x00ff 838 00001968 70210009 sleui r1,r1,#9 839 0000196c 10200014 beqz r1,L236_LF2 840 00001970 54000000 nop; not filled. 841 00001974 33e100ff andi r1,r31,#0x00ff 842 00001978 2021ffd0 addi r1,r1,#-48 843 0000197c 08000050 j L237_LF2 844 00001980 54000000 nop; not filled. 845 00001984 L236_LF2: 846 00001984 23e1ff9f addi r1,r31,#-97 847 00001988 302100ff andi r1,r1,#0x00ff 848 0000198c 70210019 sleui r1,r1,#25 849 00001990 10200014 beqz r1,L238_LF2 850 00001994 54000000 nop; not filled. 851 00001998 33e100ff andi r1,r31,#0x00ff 852 0000199c 2021ffa9 addi r1,r1,#-87 853 000019a0 0800002c j L237_LF2 854 000019a4 54000000 nop; not filled. 855 000019a8 L238_LF2: 856 000019a8 23e1ffbf addi r1,r31,#-65 857 000019ac 302100ff andi r1,r1,#0x00ff 858 000019b0 70210019 sleui r1,r1,#25 859 000019b4 10200014 beqz r1,L240_LF2 860 000019b8 54000000 nop; not filled. 861 000019bc 33e100ff andi r1,r31,#0x00ff 862 000019c0 2021ffc9 addi r1,r1,#-55 863 000019c4 08000008 j L237_LF2 864 000019c8 54000000 nop; not filled. 865 000019cc L240_LF2: 866 000019cc 200103e8 addi r1,r0,#1000 867 000019d0 L237_LF2: 868 000019d0 0024f82a slt r31,r1,r4 869 000019d4 13e00024 beqz r31,L246_LF2 870 000019d8 54000000 nop; not filled. 871 000019dc 00600035 movi2fp f0,r3 872 000019e0 00800835 movi2fp f1,r4 873 000019e4 0401000e mult f0,f0,f1 874 000019e8 00001834 movfp2i r3,f0 875 000019ec 00611820 add r3,r3,r1 876 000019f0 20420001 addi r2,r2,#1 877 000019f4 17e0ff64 bnez r31,L233_LF2 878 000019f8 54000000 nop; not filled. 879 000019fc L246_LF2: 880 000019fc 64a10000 snei r1,r5,#0 881 00001a00 10200008 beqz r1,L244_LF2 882 00001a04 54000000 nop; not filled. 883 00001a08 aca20000 sw (r5),r2 884 00001a0c L244_LF2: 885 00001a0c 00600035 movi2fp f0,r3 886 00001a10 00c00835 movi2fp f1,r6 887 00001a14 0401000e mult f0,f0,f1 888 00001a18 00000834 movfp2i r1,f0 889 00001a1c L245_LF2: 890 00001a1c 8fa20000 lw r2,0(r29) 891 00001a20 8fa30004 lw r3,4(r29) 892 00001a24 8fa40008 lw r4,8(r29) 893 00001a28 8fa5000c lw r5,12(r29) 894 00001a2c 8fa60010 lw r6,16(r29) 895 00001a30 8fdffff8 lw r31,-8(r30) 896 00001a34 001ee820 add r29,r0,r30 897 00001a38 8fdefffc lw r30,-4(r30) 898 00001a3c 4be00000 jr r31 899 00001a40 54000000 nop 900 00001a44 .endproc _dstrtol 901 00001a44 .align 2 902 00001a44 .proc _bcopy 903 00001a44 .global _bcopy 904 00001a44 _bcopy: 905 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 906 00001a44 afbefffc sw -4(r29),r30; push fp 907 00001a48 001df020 add r30,r0,r29; fp = sp 908 00001a4c afbffff8 sw -8(r29),r31; push ret addr 909 00001a50 2fbd0018 subui r29,r29,#24; alloc local storage 910 00001a54 afa20000 sw 0(r29),r2 911 00001a58 afa30004 sw 4(r29),r3 912 00001a5c afa40008 sw 8(r29),r4 913 00001a60 8fc30000 lw r3,(r30) 914 00001a64 8fc20004 lw r2,4(r30) 915 00001a68 8fdf0008 lw r31,8(r30) 916 00001a6c 08000014 j L259_LF2 917 00001a70 54000000 nop; not filled. 918 00001a74 L257_LF2: 919 00001a74 80640000 lb r4,(r3) 920 00001a78 a0440000 sb (r2),r4 921 00001a7c 20630001 addi r3,r3,#1 922 00001a80 20420001 addi r2,r2,#1 923 00001a84 L259_LF2: 924 00001a84 001f0820 add r1,r0,r31 925 00001a88 23ffffff addi r31,r31,#-1 926 00001a8c 6c210000 sgti r1,r1,#0 927 00001a90 1420ffe0 bnez r1,L257_LF2 928 00001a94 54000000 nop; not filled. 929 00001a98 8fa20000 lw r2,0(r29) 930 00001a9c 8fa30004 lw r3,4(r29) 931 00001aa0 8fa40008 lw r4,8(r29) 932 00001aa4 8fdffff8 lw r31,-8(r30) 933 00001aa8 001ee820 add r29,r0,r30 934 00001aac 8fdefffc lw r30,-4(r30) 935 00001ab0 4be00000 jr r31 936 00001ab4 54000000 nop 937 00001ab8 .endproc _bcopy 938 00001ab8 .align 2 939 00001ab8 .proc _bzero 940 00001ab8 .global _bzero 941 00001ab8 _bzero: 942 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 943 00001ab8 afbefffc sw -4(r29),r30; push fp 944 00001abc 001df020 add r30,r0,r29; fp = sp 945 00001ac0 afbffff8 sw -8(r29),r31; push ret addr 946 00001ac4 2fbd0010 subui r29,r29,#16; alloc local storage 947 00001ac8 afa20000 sw 0(r29),r2 948 00001acc afa30004 sw 4(r29),r3 949 00001ad0 8fc20000 lw r2,(r30) 950 00001ad4 8fdf0004 lw r31,4(r30) 951 00001ad8 08000010 j L270_LF2 952 00001adc 54000000 nop; not filled. 953 00001ae0 L268_LF2: 954 00001ae0 20030000 addi r3,r0,(#0x0)&0xff 955 00001ae4 a0430000 sb (r2),r3 956 00001ae8 20420001 addi r2,r2,#1 957 00001aec L270_LF2: 958 00001aec 001f0820 add r1,r0,r31 959 00001af0 23ffffff addi r31,r31,#-1 960 00001af4 6c210000 sgti r1,r1,#0 961 00001af8 1420ffe4 bnez r1,L268_LF2 962 00001afc 54000000 nop; not filled. 963 00001b00 8fa20000 lw r2,0(r29) 964 00001b04 8fa30004 lw r3,4(r29) 965 00001b08 8fdffff8 lw r31,-8(r30) 966 00001b0c 001ee820 add r29,r0,r30 967 00001b10 8fdefffc lw r30,-4(r30) 968 00001b14 4be00000 jr r31 969 00001b18 54000000 nop 970 00001b1c .endproc _bzero 971 ;;; Ethan L. Miller, 1999. Released to the public domain 972 ;;; 973 ;;; Most of the traps are called in files from libtraps. 976 00001b1c .align 2 977 00001b1c .proc _exit 978 00001b1c .global _exit 979 00001b1c _exit: 980 00001b1c 44000300 trap #0x300 981 00001b20 4be00000 jr r31 982 00001b24 54000000 nop 983 00001b28 .endproc _exit 985 ; for the benefit of gcc. 986 00001b28 .proc ___main 987 00001b28 .global ___main 988 00001b28 ___main: 989 00001b28 4be00000 jr r31 990 00001b2c 54000000 nop 991 00001b30 .endproc ___main 992 00001b30 .text 993 00001b30 .global _etext 994 00001b30 _etext: 995 00001b30 .align 3 996 00001b30 .data 997 0000201b .global _edata 998 0000201b _edata:

option1/lab4_1/src/userprog2.dlx

; Linked by DLX-LD. ; MemSize 20480 ; Data size: 25 ; Text size: 2864 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "\n in Userprog2, Sum : %d\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal ___main nop; not filled. addi r3,r0,(#0x0)&0xff addi r31,r0,#0 addi r2,r0,#28672 L16_LF0: sb (r2),r31 addi r2,r2,#8192 addi r31,r31,#1 slei r1,r31,#12 bnez r1,L16_LF0 nop; not filled. addi r31,r0,#28672 lhi r4,#1 addui r4,r4,#32768 or r2,r31,r4 L21_LF0: lb r4,(r31) add r3,r4,r3 addi r31,r31,#8192 sle r1,r31,r2 bnez r1,L21_LF0 nop; not filled. addi r29,r29,#-8 lhi r4,((LC0_LF0)>>16)&0xffff addui r4,r4,(LC0_LF0)&0xffff sw (r29),r4 andi r1,r3,#0x00ff sw 4(r29),r1 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_1/src/os.dlx

; Linked by DLX-LD. ; MemSize 86016 ; Data size: 32260 ; Text size: 40952 ; Stack size: 8192 .text 0x1000 .data 0xb000 ;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem_LF0 lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg_LF0; skip over the system part.... intrSystem_LF0: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg_LF0: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6; push CAUSE sw 4(r29),r4; push IAR sw 8(r29),r5; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1),r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1),r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1); 156-340 = -184 lw r1,-296(r1); 44-340 = -296 rfe .endproc _intrreturn ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2; save r2 lw r2,16(r29); Get the new interrupt level andi r2,r2,#0x0f; Mask off interrupt levels movs2i r1,status sw 8(r29),r1; Store the old interrupt values andi r1,r1,#0xfff0; Mask off old interrupt level or r1,r2,r1; OR in new interrupt level movi2s status,r1 lw r1,8(r29); Get back the original interrupt level andi r1,r1,#0x0f; Mask off all but interrupt levels lw r2,12(r29); restore r2 addui r29,r29,#16; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom ; Compiled by GCC .data .align 2 _rcsid_LF2: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF2 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF2: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF2: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1_LF2: .ascii "dlx:\000" .align 2 LC2_LF2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3_LF2: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55_LF2 nop; not filled. L56_LF2: addi r29,r29,#-16 lhi r8,((LC0_LF2)>>16)&0xffff addui r8,r8,(LC0_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L55_LF2: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74_LF2 nop; not filled. addi r3,r0,#0 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r2,r0,r6 L61_LF2: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59_LF2 nop; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61_LF2 nop; not filled. L59_LF2: sgti r1,r3,#31 beqz r1,L64_LF2 nop; not filled. L74_LF2: addi r1,r0,#-1 j L73_LF2 nop; not filled. L64_LF2: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65_LF2 nop; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75_LF2 nop; not filled. L65_LF2: addi r8,r0,#0 L75_LF2: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67_LF2 nop; not filled. L68_LF2: addi r29,r29,#-16 lhi r8,((LC2_LF2)>>16)&0xffff addui r8,r8,(LC2_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L67_LF2: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs_LF2)>>16)&0xffff addui r8,r8,(_fs_LF2)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69_LF2 nop; not filled. lhi r8,((_openfiles_LF2)>>16)&0xffff addui r8,r8,(_openfiles_LF2)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73_LF2 nop; not filled. L69_LF2: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF2 nop; not filled. L72_LF2: addi r29,r29,#-24 lhi r8,((LC3_LF2)>>16)&0xffff addui r8,r8,(LC3_LF2)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L71_LF2: add r1,r0,r3 L73_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84_LF2 nop; not filled. addi r2,r0,#1 L84_LF2: snei r1,r2,#0 beqz r1,L82_LF2 nop; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs_LF2)>>16)&0xffff addui r4,r4,(_fs_LF2)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop; not filled. addi r29,r29,#8 lhi r4,((_openfiles_LF2)>>16)&0xffff addui r4,r4,(_openfiles_LF2)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86_LF2 nop; not filled. L82_LF2: addi r1,r0,#-1 L86_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94_LF2 nop; not filled. addi r2,r0,#1 L94_LF2: snei r1,r2,#0 beqz r1,L92_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L91_LF2 nop; not filled. L92_LF2: addi r1,r0,#-1 L91_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103_LF2 nop; not filled. addi r2,r0,#1 L103_LF2: snei r1,r2,#0 beqz r1,L101_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L100_LF2 nop; not filled. L101_LF2: addi r1,r0,#-1 L100_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112_LF2 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112_LF2 nop; not filled. addi r2,r0,#1 L112_LF2: snei r1,r2,#0 beqz r1,L110_LF2 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF2)>>16)&0xffff addui r3,r3,(_fs_LF2)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L109_LF2 nop; not filled. L110_LF2: addi r1,r0,#-1 L109_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1_LF2)>>16)&0xffff addui r1,r1,(LC1_LF2)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118_LF2 nop; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs_LF2+44)>>16)&0xffff addui r1,r1,(_fs_LF2+44)&0xffff j L120_LF2 nop; not filled. L118_LF2: addi r29,r29,#-8 lhi r1,((_fs_LF2+20)>>16)&0xffff addui r1,r1,(_fs_LF2+20)&0xffff L120_LF2: sw (r29),r2 lw r1,(r1) jalr r1 nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4_LF2: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126_LF2 nop; not filled. L127_LF2: addi r29,r29,#-16 lhi r6,((LC4_LF2)>>16)&0xffff addui r6,r6,(LC4_LF2)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L126_LF2: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles_LF2)>>16)&0xffff addui r6,r6,(_openfiles_LF2)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128_LF2 nop; not filled. addi r1,r0,#1 L128_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF2)>>16)&0xffff addui r5,r5,(_openfiles_LF2)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles_LF2)>>16)&0xffff addui r3,r3,(_openfiles_LF2)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles_LF2)>>16)&0xffff addui r31,r31,(_openfiles_LF2)&0xffff addi r2,r31,#8308 L182_LF2: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182_LF2 nop; not filled. lhi r1,((_fs_LF2)>>16)&0xffff addui r1,r1,(_fs_LF2)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs_LF2: .space 48 .align 2 _openfiles_LF2: .space 8576 ; Compiled by GCC .align 2 _rcsid_LF3: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF3 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF3 nop; not filled. L6_LF3: addi r31,r0,#1 L5_LF3: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF3 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF3 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF3 nop; not filled. L12_LF3: addi r2,r0,#1 L11_LF3: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF3 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF3: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone_LF3: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0_LF3: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61_LF3 nop; not filled. addi r2,r3,#31 L61_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF3 nop; not filled. L65_LF3: addi r29,r29,#-16 lhi r6,((LC0_LF3)>>16)&0xffff addui r6,r6,(LC0_LF3)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L64_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1_LF3: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2_LF3: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3_LF3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68_LF3 nop; not filled. addui r2,r2,#65535 L68_LF3: srai r8,r2,#0x10 lhi r3,((_pagestart_LF3)>>16)&0xffff addui r3,r3,(_pagestart_LF3)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69_LF3 nop; not filled. addui r2,r2,#65535 L69_LF3: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax_LF3)>>16)&0xffff addui r3,r3,(_freemapmax_LF3)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70_LF3 nop; not filled. addi r2,r8,#62 L70_LF3: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF3 nop; not filled. L72_LF3: addi r29,r29,#-16 lhi r11,((LC1_LF3)>>16)&0xffff addui r11,r11,(LC1_LF3)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop; not filled. addi r29,r29,#16 L71_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73_LF3 nop; not filled. L74_LF3: addi r29,r29,#-8 lhi r11,((LC2_LF3)>>16)&0xffff addui r11,r11,(LC2_LF3)&0xffff sw (r29),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L73_LF3: addi r2,r0,#0 lhi r4,((_freemapmax_LF3)>>16)&0xffff addui r4,r4,(_freemapmax_LF3)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76_LF3 nop; not filled. lhi r3,((_freepages_LF3)>>16)&0xffff addui r3,r3,(_freepages_LF3)&0xffff L78_LF3: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78_LF3 nop; not filled. L76_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart_LF3)>>16)&0xffff addui r1,r1,(_pagestart_LF3)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81_LF3 nop; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone_LF3)>>16)&0xffff addui r9,r9,(_negativeone_LF3)&0xffff L83_LF3: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85_LF3 nop; not filled. addi r2,r4,#31 L85_LF3: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages_LF3)>>16)&0xffff addui r11,r11,(_freepages_LF3)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89_LF3 nop; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82_LF3 nop; not filled. L89_LF3: addi r29,r29,#-16 lhi r11,((LC0_LF3)>>16)&0xffff addui r11,r11,(LC0_LF3)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L82_LF3: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83_LF3 nop; not filled. L81_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF3 nop; not filled. L92_LF3: addi r29,r29,#-8 lhi r11,((LC3_LF3)>>16)&0xffff addui r11,r11,(LC3_LF3)&0xffff sw (r29),r11 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L91_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42_LF3: .word 0 .align 2 LC4_LF3: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5_LF3: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6_LF3: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((LC4_LF3)>>16)&0xffff addui r7,r7,(LC4_LF3)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110_LF3 nop; not filled. L111_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF3 nop; not filled. L113_LF3: addi r29,r29,#-8 lhi r7,((LC5_LF3)>>16)&0xffff addui r7,r7,(LC5_LF3)&0xffff sw (r29),r7 lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L112_LF3: lhi r2,((_mapnum42_LF3)>>16)&0xffff addui r2,r2,(_mapnum42_LF3)&0xffff lw r1,(r2) lhi r4,((_freepages_LF3)>>16)&0xffff addui r4,r4,(_freepages_LF3)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115_LF3 nop; not filled. lhi r1,((_freemapmax_LF3)>>16)&0xffff addui r1,r1,(_freemapmax_LF3)&0xffff lw r3,(r1) L116_LF3: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114_LF3 nop; not filled. addi r7,r0,#0 sw (r2),r7 L114_LF3: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116_LF3 nop; not filled. L115_LF3: lhi r1,((_mapnum42_LF3)>>16)&0xffff addui r1,r1,(_mapnum42_LF3)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120_LF3 nop; not filled. addi r2,r0,#1 L121_LF3: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121_LF3 nop; not filled. L120_LF3: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42_LF3)>>16)&0xffff addui r5,r5,(_mapnum42_LF3)&0xffff lw r3,(r5) lhi r6,((_freepages_LF3)>>16)&0xffff addui r6,r6,(_freepages_LF3)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125_LF3 nop; not filled. L126_LF3: addi r29,r29,#-16 lhi r7,((LC6_LF3)>>16)&0xffff addui r7,r7,(LC6_LF3)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L125_LF3: lhi r1,((_nfreepages_LF3)>>16)&0xffff addui r1,r1,(_nfreepages_LF3)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7_LF3: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129_LF3 nop; not filled. addi r2,r6,#31 L129_LF3: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone_LF3)>>16)&0xffff addui r1,r1,(_negativeone_LF3)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages_LF3)>>16)&0xffff addui r7,r7,(_freepages_LF3)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133_LF3 nop; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128_LF3 nop; not filled. L133_LF3: addi r29,r29,#-16 lhi r7,((LC0_LF3)>>16)&0xffff addui r7,r7,(LC0_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L128_LF3: lhi r2,((_nfreepages_LF3)>>16)&0xffff addui r2,r2,(_nfreepages_LF3)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134_LF3 nop; not filled. L135_LF3: addi r29,r29,#-16 lhi r7,((LC7_LF3)>>16)&0xffff addui r7,r7,(LC7_LF3)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L134_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139_LF3 nop; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140_LF3 nop; not filled. L139_LF3: addi r1,r0,#0 L140_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L168_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170_LF3 nop; not filled. addi r31,r0,#0 j L169_LF3 nop; not filled. L170_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169_LF3: snei r1,r31,#0 beqz r1,L167_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172_LF3 nop; not filled. add r2,r0,r3 L172_LF3: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168_LF3 nop; not filled. L167_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191_LF3 nop; not filled. lhi r8,#1 addui r8,r8,#0 L192_LF3: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194_LF3 nop; not filled. addi r31,r0,#0 j L193_LF3 nop; not filled. L194_LF3: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193_LF3: snei r1,r31,#0 beqz r1,L191_LF3 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197_LF3 nop; not filled. add r2,r0,r3 L197_LF3: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192_LF3 nop; not filled. L191_LF3: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61_LF3: .word 13316 .align 2 LC8_LF3: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214_LF3 nop; not filled. lhi r1,((_invalidOps61_LF3)>>16)&0xffff addui r1,r1,(_invalidOps61_LF3)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213_LF3 nop; not filled. L214_LF3: addi r1,r0,#-1 j L218_LF3 nop; not filled. L213_LF3: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215_LF3 nop; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215_LF3: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216_LF3 nop; not filled. L217_LF3: addi r29,r29,#-24 lhi r7,((LC8_LF3)>>16)&0xffff addui r7,r7,(LC8_LF3)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L216_LF3: add r1,r0,r4 L218_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart_LF3: .space 4 .align 2 _freemapmax_LF3: .space 4 .align 2 _nfreepages_LF3: .space 4 .align 2 _freepages_LF3: .space 8192 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF4 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF4 nop; not filled. L6_LF4: addi r31,r0,#1 L5_LF4: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF4 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF4 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF4 nop; not filled. L12_LF4: addi r2,r0,#1 L11_LF4: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF4: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF4 nop; not filled. L34_LF4: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF4 nop; not filled. L37_LF4: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF4 nop; not filled. L32_LF4: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF4 nop; not filled. L51_LF4: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF4 nop; not filled. L50_LF4: add r2,r0,r31 lw r31,4(r30) L54_LF4: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF4 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF4 nop; not filled. L75_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF4 nop; not filled. L73_LF4: seq r1,r2,r5 beqz r1,L80_LF4 nop; not filled. L86_LF4: addi r1,r0,#0 j L84_LF4 nop; not filled. L80_LF4: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF4 nop; not filled. sne r2,r31,r3 L82_LF4: add r1,r0,r2 L84_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF4 nop; not filled. L95_LF4: addi r2,r2,#1 L97_LF4: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF4 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF4 nop; not filled. L126_LF4: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF4 nop; not filled. L125_LF4: add r6,r0,r3 j L149_LF4 nop; not filled. L130_LF4: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF4 nop; not filled. L136_LF4: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF4 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF4 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF4 nop; not filled. L134_LF4: seq r1,r2,r6 beqz r1,L141_LF4 nop; not filled. L150_LF4: addi r1,r0,#0 j L132_LF4 nop; not filled. L141_LF4: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF4 nop; not filled. sne r31,r3,r2 L143_LF4: add r1,r0,r31 L132_LF4: snei r1,r1,#0 bnez r1,L131_LF4 nop; not filled. add r1,r0,r5 j L146_LF4 nop; not filled. L131_LF4: addi r5,r5,#1 L149_LF4: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF4 nop; not filled. addi r1,r0,#0 L146_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF4 nop; not filled. add r5,r0,r1 L165_LF4: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF4 nop; not filled. lbu r3,(r4) L169_LF4: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF4 nop; not filled. add r1,r0,r4 j L173_LF4 nop; not filled. L168_LF4: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF4 nop; not filled. L163_LF4: bnez r5,L165_LF4 nop; not filled. L164_LF4: addi r1,r0,#0 L173_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF4 nop; not filled. L183_LF4: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF4 nop; not filled. add r1,r0,r2 j L186_LF4 nop; not filled. L184_LF4: addi r2,r2,#1 L187_LF4: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF4 nop; not filled. addi r1,r0,#0 L186_LF4: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF4 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF4 nop; not filled. L203_LF4: snei r1,r3,#0 bnez r1,L205_LF4 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF4: sb (r4),r6 addi r4,r4,#1 j L204_LF4 nop; not filled. L205_LF4: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF4 nop; not filled. L209_LF4: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF4 nop; not filled. L208_LF4: addi r5,r0,#10 L212_LF4: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF4 nop; not filled. L204_LF4: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF4 nop; not filled. L220_LF4: addi r2,r2,#1 L247_LF4: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF4 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF4 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF4 nop; not filled. sw (r5),r2 L222_LF4: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF4 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF4 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF4 nop; not filled. L224_LF4: addi r6,r0,#1 L225_LF4: snei r1,r4,#0 bnez r1,L226_LF4 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF4 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF4 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF4 nop; not filled. L229_LF4: addi r4,r0,#16 addi r2,r2,#1 j L226_LF4 nop; not filled. L228_LF4: addi r4,r0,#8 j L226_LF4 nop; not filled. L227_LF4: addi r4,r0,#10 L226_LF4: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF4 nop; not filled. L248_LF4: add r1,r0,r3 j L245_LF4 nop; not filled. L233_LF4: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF4 nop; not filled. L236_LF4: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF4 nop; not filled. L238_LF4: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF4 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF4 nop; not filled. L240_LF4: addi r1,r0,#1000 L237_LF4: slt r31,r1,r4 beqz r31,L246_LF4 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF4 nop; not filled. L246_LF4: snei r1,r5,#0 beqz r1,L244_LF4 nop; not filled. sw (r5),r2 L244_LF4: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF4 nop; not filled. L257_LF4: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF4 nop; not filled. L268_LF4: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF4: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF4 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF5 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF5 nop; not filled. L6_LF5: addi r31,r0,#1 L5_LF5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF5 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF5 nop; not filled. L12_LF5: addi r2,r0,#1 L11_LF5: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF5 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF5: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum_LF5: .word 10000 .align 2 LC0_LF5: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1_LF5: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2_LF5: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF5 nop; not filled. L53_LF5: addi r29,r29,#-8 lhi r8,((LC0_LF5)>>16)&0xffff addui r8,r8,(LC0_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L52_LF5: addi r29,r29,#-8 lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff sw (r29),r2 jal _QueueInit nop; not filled. lhi r8,((_runQueue_LF5)>>16)&0xffff addui r8,r8,(_runQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_waitQueue_LF5)>>16)&0xffff addui r8,r8,(_waitQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_zombieQueue_LF5)>>16)&0xffff addui r8,r8,(_zombieQueue_LF5)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs_LF5)>>16)&0xffff addui r1,r1,(_pcbs_LF5)&0xffff add r5,r0,r2 addi r2,r1,#104 add r3,r0,r1 add r6,r0,r3 L57_LF5: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58_LF5 nop; not filled. L59_LF5: addi r29,r29,#-16 lhi r8,((LC1_LF5)>>16)&0xffff addui r8,r8,(LC1_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L58_LF5: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#120 addi r3,r3,#120 addi r6,r6,#120 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57_LF5 nop; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF5 nop; not filled. L65_LF5: addi r29,r29,#-8 lhi r8,((LC2_LF5)>>16)&0xffff addui r8,r8,(LC2_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L64_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r4,#104 lw r1,4(r3) sw 112(r4),r3 sw 108(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r4) slt r1,r2,r1 beqz r1,L83_LF5 nop; not filled. add r3,r0,r4 L85_LF5: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r4) slt r1,r2,r1 bnez r1,L85_LF5 nop; not filled. L83_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3_LF5: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4_LF5: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5_LF5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6_LF5: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7_LF5: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF5 nop; not filled. L92_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3_LF5)>>16)&0xffff addui r8,r8,(LC3_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L91_LF5: lhi r5,((_runQueue_LF5)>>16)&0xffff addui r5,r5,(_runQueue_LF5)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L94_LF5 nop; not filled. addi r29,r29,#-8 lhi r8,((LC4_LF5)>>16)&0xffff addui r8,r8,(LC4_LF5)&0xffff sw (r29),r8 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L94_LF5: lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) seq r1,r4,r1 beqz r1,L98_LF5 nop; not filled. addi r3,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L100_LF5 nop; not filled. lw r1,108(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L100_LF5: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 L98_LF5: lhi r1,((_runQueue_LF5)>>16)&0xffff addui r1,r1,(_runQueue_LF5)&0xffff lw r1,(r1) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105_LF5 nop; not filled. L106_LF5: addi r29,r29,#-16 lhi r8,((LC5_LF5)>>16)&0xffff addui r8,r8,(LC5_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L105_LF5: lhi r7,((_zombieQueue_LF5)>>16)&0xffff addui r7,r7,(_zombieQueue_LF5)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs_LF5)>>16)&0xffff addui r5,r5,(_freepcbs_LF5)&0xffff L107_LF5: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L108_LF5 nop; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L114_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L113_LF5 nop; not filled. L114_LF5: addi r29,r29,#-8 lhi r8,((LC6_LF5)>>16)&0xffff addui r8,r8,(LC6_LF5)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop; not filled. addi r29,r29,#8 L113_LF5: addi r31,r4,#104 lw r1,112(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L116_LF5 nop; not filled. lw r1,108(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,108(r4) sw 4(r1),r8 lw r2,112(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L116_LF5: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 112(r4),r5 sw 108(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r3,r0,#0 lw r1,100(r4) slt r1,r3,r1 beqz r1,L122_LF5 nop; not filled. add r2,r0,r4 L124_LF5: addi r29,r29,#-8 lw r8,96(r2) sw (r29),r8 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r2,r2,#4 addi r3,r3,#1 lw r1,100(r4) slt r1,r3,r1 bnez r1,L124_LF5 nop; not filled. L122_LF5: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L107_LF5 nop; not filled. L108_LF5: addi r29,r29,#-8 lhi r1,((_processQuantum_LF5)>>16)&0xffff addui r1,r1,(_processQuantum_LF5)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L127_LF5 nop; not filled. L128_LF5: addi r29,r29,#-8 lhi r8,((LC7_LF5)>>16)&0xffff addui r8,r8,(LC7_LF5)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L127_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8_LF5: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9_LF5: .ascii "%s: %s\n\000" .align 2 LC10_LF5: .ascii "ProcessSuspend\000" .align 2 LC11_LF5: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF5 nop; not filled. L131_LF5: addi r29,r29,#-16 lhi r4,((LC8_LF5)>>16)&0xffff addui r4,r4,(LC8_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L130_LF5: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L133_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC10_LF5)>>16)&0xffff addui r1,r1,(LC10_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC11_LF5)>>16)&0xffff addui r4,r4,(LC11_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L133_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L136_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L136_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue_LF5)>>16)&0xffff addui r2,r2,(_waitQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12_LF5: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13_LF5: .ascii "ProcessWakeup\000" .align 2 LC14_LF5: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L142_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L141_LF5 nop; not filled. L142_LF5: addi r29,r29,#-8 lhi r4,((LC12_LF5)>>16)&0xffff addui r4,r4,(LC12_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L141_LF5: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L144_LF5 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF5)>>16)&0xffff addui r4,r4,(LC9_LF5)&0xffff sw (r29),r4 lhi r1,((LC13_LF5)>>16)&0xffff addui r1,r1,(LC13_LF5)&0xffff sw 4(r29),r1 lhi r4,((LC14_LF5)>>16)&0xffff addui r4,r4,(LC14_LF5)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L144_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L147_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L147_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue_LF5)>>16)&0xffff addui r2,r2,(_runQueue_LF5)&0xffff lw r1,4(r2) sw 112(r3),r2 sw 108(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15_LF5: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16_LF5: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L153_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L152_LF5 nop; not filled. L153_LF5: addi r29,r29,#-8 lhi r4,((LC15_LF5)>>16)&0xffff addui r4,r4,(LC15_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L152_LF5: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#104 lw r1,112(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L156_LF5 nop; not filled. lw r1,108(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,108(r3) sw 4(r1),r4 lw r2,112(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L156_LF5: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue_LF5)>>16)&0xffff addui r2,r2,(_zombieQueue_LF5)&0xffff sw 112(r3),r2 sw 108(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L160_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L159_LF5 nop; not filled. L160_LF5: addi r29,r29,#-8 lhi r4,((LC16_LF5)>>16)&0xffff addui r4,r4,(LC16_LF5)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L159_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 _str52_LF5: .space 4 .align 2 _location53_LF5: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L173_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r2 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r5,r0,#0 sw (r1),r5 L173_LF5: lhi r31,((_location53_LF5)>>16)&0xffff addui r31,r31,(_location53_LF5)&0xffff lw r3,(r31) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L175_LF5 nop; not filled. sgti r1,r3,#98 beqz r1,L174_LF5 nop; not filled. L175_LF5: addi r1,r0,#0 j L182_LF5 nop; not filled. L183_LF5: addi r1,r31,#1 sw (r2),r1 j L177_LF5 nop; not filled. L174_LF5: slei r1,r3,#99 beqz r1,L177_LF5 nop; not filled. add r4,r0,r2 add r2,r0,r31 L179_LF5: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L183_LF5 nop; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L179_LF5 nop; not filled. L177_LF5: add r1,r0,r3 L182_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .data .align 2 LC17_LF5: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18_LF5: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19_LF5: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20_LF5: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21_LF5: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22_LF5: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23_LF5: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24_LF5: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25_LF5: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26_LF5: .ascii "About to load %s\n\000" .align 2 LC27_LF5: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28_LF5: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29_LF5: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30_LF5: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31_LF5: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32_LF5: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 12 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#728; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 sw 44(r29),r13 lw r5,(r30) lw r10,4(r30) lw r12,8(r30) lw r4,12(r30) addi r13,r0,#0 sw -680(r30),r13 addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L187_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L186_LF5 nop; not filled. L187_LF5: addi r29,r29,#-8 lhi r13,((LC17_LF5)>>16)&0xffff addui r13,r13,(LC17_LF5)&0xffff sw (r29),r13 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L186_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188_LF5 nop; not filled. L189_LF5: addi r29,r29,#-24 lhi r13,((LC18_LF5)>>16)&0xffff addui r13,r13,(LC18_LF5)&0xffff sw (r29),r13 sw 4(r29),r5 sw 8(r29),r10 sw 12(r29),r12 sw 16(r29),r4 jal _printf nop; not filled. addi r29,r29,#24 L188_LF5: lhi r2,((_freepcbs_LF5)>>16)&0xffff addui r2,r2,(_freepcbs_LF5)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L190_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC19_LF5)>>16)&0xffff addui r13,r13,(LC19_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L190_LF5: lw r9,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L195_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L194_LF5 nop; not filled. L195_LF5: addi r29,r29,#-8 lhi r13,((LC20_LF5)>>16)&0xffff addui r13,r13,(LC20_LF5)&0xffff sw (r29),r13 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L194_LF5: lw r1,8(r9) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L197_LF5 nop; not filled. lw r1,4(r9) lw r13,(r9) sw (r1),r13 lw r1,(r9) lw r13,4(r9) sw 4(r1),r13 lw r2,8(r9) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L197_LF5: addi r13,r0,#0 sw (r9),r13 lw r6,12(r9) lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#2 sw 12(r6),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199_LF5 nop; not filled. L200_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC21_LF5)>>16)&0xffff addui r13,r13,(LC21_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L199_LF5: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#73 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L203_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L202_LF5 nop; not filled. L203_LF5: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r13,((LC22_LF5)>>16)&0xffff addui r13,r13,(LC22_LF5)&0xffff sw (r29),r13 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L202_LF5: addi r29,r29,#-8 addi r1,r6,#16 sw (r29),r1 sw 4(r29),r12 jal _dstrcpy nop; not filled. addi r13,r0,#1 sw 100(r6),r13 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L204_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC23_LF5)>>16)&0xffff addui r13,r13,(LC23_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L204_LF5: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop; not filled. sw 96(r6),r1 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L205_LF5 nop; not filled. addi r29,r29,#-8 lhi r13,((LC24_LF5)>>16)&0xffff addui r13,r13,(LC24_LF5)&0xffff sw (r29),r13 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L205_LF5: slli r1,r2,#0x10 sw 8(r6),r1 ori r8,r1,#65164 sw 4(r6),r8 sw (r6),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L207_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L206_LF5 nop; not filled. L207_LF5: addi r29,r29,#-24 lhi r13,((LC25_LF5)>>16)&0xffff addui r13,r13,(LC25_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,8(r6) sw 8(r29),r13 lw r13,96(r6) sw 12(r29),r13 lw r1,100(r6) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 L206_LF5: addi r13,r0,#0 sw 40(r8),r13 addi r1,r6,#96 sw 312(r8),r1 lw r13,100(r6) sw 316(r8),r13 lhi r1,#16 addui r1,r1,#16 sw 320(r8),r1 snei r1,r4,#0 beqz r1,L208_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L210_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L209_LF5 nop; not filled. L210_LF5: addi r29,r29,#-8 lhi r13,((LC26_LF5)>>16)&0xffff addui r13,r13,(LC26_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L209_LF5: addi r29,r29,#-24 sw (r29),r12 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r5,r0,r1 addi r29,r29,#24 slti r1,r5,#0 beqz r1,L211_LF5 nop; not filled. lhi r3,((_freepcbs_LF5)>>16)&0xffff addui r3,r3,(_freepcbs_LF5)&0xffff addi r2,r6,#104 lw r1,4(r3) sw 112(r6),r3 sw 108(r6),r1 lw r13,(r1) sw (r2),r13 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 addi r2,r0,#0 lw r1,100(r6) slt r1,r2,r1 beqz r1,L217_LF5 nop; not filled. add r3,r0,r6 L219_LF5: addi r29,r29,#-8 lw r13,96(r3) sw (r29),r13 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,100(r6) slt r1,r2,r1 bnez r1,L219_LF5 nop; not filled. L217_LF5: addi r29,r29,#-8 lhu r1,8(r6) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r6) addi r13,r0,#-64 and r1,r1,r13 ori r1,r1,#1 sw 12(r6),r1 addi r1,r0,#-1 j L268_LF5 nop; not filled. L211_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L223_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L222_LF5 nop; not filled. L223_LF5: addi r29,r29,#-16 lhi r13,((LC27_LF5)>>16)&0xffff addui r13,r13,(LC27_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-660(r30) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L222_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L225_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L224_LF5 nop; not filled. L225_LF5: addi r29,r29,#-16 lhi r13,((LC28_LF5)>>16)&0xffff addui r13,r13,(LC28_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-664(r30) sw 8(r29),r13 lw r13,-668(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L224_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L227_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L226_LF5 nop; not filled. L227_LF5: addi r29,r29,#-16 lhi r13,((LC29_LF5)>>16)&0xffff addui r13,r13,(LC29_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 lw r13,-672(r30) sw 8(r29),r13 lw r13,-676(r30) sw 12(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L226_LF5: addi r3,r30,#-112 addi r7,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L228_LF5: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 sw 8(r29),r7 addi r13,r0,#100 sw 12(r29),r13 jal _ProcessGetFromFile nop; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L229_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L232_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L231_LF5 nop; not filled. L232_LF5: addi r29,r29,#-16 lhi r13,((LC30_LF5)>>16)&0xffff addui r13,r13,(LC30_LF5)&0xffff sw (r29),r13 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L231_LF5: addi r29,r29,#-16 sw (r29),r6 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 j L228_LF5 nop; not filled. L229_LF5: addi r29,r29,#-8 sw (r29),r5 jal _FsClose nop; not filled. addi r13,r0,#256 sw 300(r8),r13 addui r13,r0,#64512 sw 156(r8),r13 addi r29,r29,#-8 sw (r29),r6 sw 4(r29),r10 lw r13,156(r8) sw 8(r29),r13 addi r13,r0,#992 sw 12(r29),r13 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 snei r1,r10,#0 beqz r1,L234_LF5 nop; not filled. lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff sw (r1),r10 lhi r1,((_location53_LF5)>>16)&0xffff addui r1,r1,(_location53_LF5)&0xffff addi r13,r0,#0 sw (r1),r13 L234_LF5: lhi r3,((_location53_LF5)>>16)&0xffff addui r3,r3,(_location53_LF5)&0xffff lw r4,(r3) lhi r1,((_str52_LF5)>>16)&0xffff addui r1,r1,(_str52_LF5)&0xffff lw r2,(r1) add r1,r2,r4 lbu r1,(r1) snei r1,r1,#0 beqz r1,L236_LF5 nop; not filled. sgti r1,r4,#98 beqz r1,L235_LF5 nop; not filled. L236_LF5: addi r3,r0,#0 j L233_LF5 nop; not filled. L269_LF5: addi r1,r2,#1 sw (r3),r1 j L238_LF5 nop; not filled. L235_LF5: slei r1,r4,#99 beqz r1,L238_LF5 nop; not filled. add r5,r0,r2 L240_LF5: lw r2,(r3) add r1,r5,r2 lbu r1,(r1) snei r1,r1,#0 beqz r1,L269_LF5 nop; not filled. addi r1,r2,#1 sw (r3),r1 slei r1,r1,#99 bnez r1,L240_LF5 nop; not filled. L238_LF5: add r3,r0,r4 L233_LF5: addui r2,r0,#64512 add r1,r3,r2 sw -648(r30),r1 addi r7,r0,#3 lhi r4,((_location53_LF5)>>16)&0xffff addui r4,r4,(_location53_LF5)&0xffff lhi r11,((_str52_LF5)>>16)&0xffff addui r11,r11,(_str52_LF5)&0xffff add r10,r0,r2 addi r5,r30,#4 L243_LF5: lw r31,(r4) lw r3,(r11) add r1,r3,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L249_LF5 nop; not filled. sgti r1,r31,#98 beqz r1,L248_LF5 nop; not filled. L249_LF5: addi r3,r0,#0 j L246_LF5 nop; not filled. L270_LF5: addi r1,r3,#1 sw (r4),r1 j L251_LF5 nop; not filled. L248_LF5: slei r1,r31,#99 beqz r1,L251_LF5 nop; not filled. add r2,r0,r3 L253_LF5: lw r3,(r4) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L270_LF5 nop; not filled. addi r1,r3,#1 sw (r4),r1 slei r1,r1,#99 bnez r1,L253_LF5 nop; not filled. L251_LF5: add r3,r0,r31 L246_LF5: add r1,r3,r10 sw -648(r5),r1 snei r1,r3,#0 beqz r1,L244_LF5 nop; not filled. addi r5,r5,#4 addi r7,r7,#1 j L243_LF5 nop; not filled. L244_LF5: addi r1,r7,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r10,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r6 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r7,#0x2 lw r1,156(r8) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. lw r1,156(r8) sub r1,r1,r2 sw 156(r8),r1 lw r13,-660(r30) sw 296(r8),r13 lw r1,12(r6) ori r1,r1,#512 sw 12(r6),r1 addi r29,r29,#16 j L257_LF5 nop; not filled. L208_LF5: lhi r13,((_ProcessExit_LF5)>>16)&0xffff addui r13,r13,(_ProcessExit_LF5)&0xffff sw 164(r8),r13 lw r1,8(r6) addui r1,r1,#65504 sw 156(r8),r1 sw (r1),r10 sw 296(r8),r5 addi r13,r0,#320 sw 300(r8),r13 lw r1,12(r6) ori r1,r1,#256 sw 12(r6),r1 L257_LF5: addi r29,r29,#-8 addi r13,r0,#15 sw (r29),r13 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r3,((_runQueue_LF5)>>16)&0xffff addui r3,r3,(_runQueue_LF5)&0xffff lw r2,4(r3) sw 8(r9),r3 sw 4(r9),r2 lw r13,(r2) sw (r9),r13 sw (r2),r9 lw r2,(r9) sw 4(r2),r9 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L263_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L264_LF5 nop; not filled. L265_LF5: addi r29,r29,#-16 lhi r13,((LC31_LF5)>>16)&0xffff addui r13,r13,(LC31_LF5)&0xffff sw (r29),r13 sw 4(r29),r6 lw r13,(r6) sw 8(r29),r13 jal _printf nop; not filled. addi r29,r29,#16 L264_LF5: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r6 L263_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r13,r0,#112 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r13,r0,#43 sw 4(r29),r13 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266_LF5 nop; not filled. L267_LF5: addi r29,r29,#-8 lhi r13,((LC32_LF5)>>16)&0xffff addui r13,r13,(LC32_LF5)&0xffff sw (r29),r13 sw 4(r29),r12 jal _printf nop; not filled. addi r29,r29,#8 L266_LF5: lhi r13,((_pcbs_LF5)>>16)&0xffff addui r13,r13,(_pcbs_LF5)&0xffff sub r2,r6,r13 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 L268_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r13,44(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33_LF5: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34_LF5: .ascii "File descriptor is now %d.\n\000" .align 2 LC35_LF5: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36_LF5: .ascii "start:\000" .align 2 LC37_LF5: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#168; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L279_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L281_LF5: addi r29,r29,#-16 lhi r12,((LC33_LF5)>>16)&0xffff addui r12,r12,(LC33_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 j L288_LF5 nop; not filled. L279_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L283_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L282_LF5 nop; not filled. L283_LF5: addi r29,r29,#-8 lhi r12,((LC34_LF5)>>16)&0xffff addui r12,r12,(LC34_LF5)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L282_LF5: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L284_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L286_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L285_LF5 nop; not filled. L286_LF5: addi r29,r29,#-16 lhi r12,((LC35_LF5)>>16)&0xffff addui r12,r12,(LC35_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L285_LF5: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L278_LF5 nop; not filled. L284_LF5: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36_LF5)>>16)&0xffff addui r1,r1,(LC36_LF5)&0xffff sw 4(r29),r1 jal _dstrstr nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L287_LF5 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L289_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L288_LF5 nop; not filled. L289_LF5: addi r29,r29,#-8 lhi r12,((LC37_LF5)>>16)&0xffff addui r12,r12,(LC37_LF5)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L288_LF5: addi r1,r0,#-1 j L278_LF5 nop; not filled. L287_LF5: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. add r1,r0,r3 addi r29,r29,#16 L278_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38_LF5: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39_LF5: .ascii " terminated at %d.\n\000" .align 2 LC40_LF5: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41_LF5: .ascii "New address is 0x%x.\n\000" .align 2 LC42_LF5: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#272; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L292_LF5 nop; not filled. addi r2,r0,#200 L292_LF5: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L293_LF5 nop; not filled. addi r1,r0,#0 j L347_LF5 nop; not filled. L293_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L295_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L294_LF5 nop; not filled. L295_LF5: addi r29,r29,#-16 lhi r12,((LC38_LF5)>>16)&0xffff addui r12,r12,(LC38_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop; not filled. addi r29,r29,#16 L294_LF5: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L350_LF5 nop; not filled. L296_LF5: addi r2,r2,#-1 addi r5,r5,#-1 L350_LF5: lbu r1,(r2) snei r1,r1,#10 bnez r1,L296_LF5 nop; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L301_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L300_LF5 nop; not filled. L301_LF5: addi r29,r29,#-8 lhi r12,((LC39_LF5)>>16)&0xffff addui r12,r12,(LC39_LF5)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop; not filled. addi r29,r29,#8 L300_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L303_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L302_LF5 nop; not filled. L303_LF5: addi r29,r29,#-8 lhi r12,((LC40_LF5)>>16)&0xffff addui r12,r12,(LC40_LF5)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L302_LF5: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L304_LF5: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L305_LF5 nop; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L349_LF5 nop; not filled. sgti r1,r5,#0 bnez r1,L305_LF5 nop; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L311_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L308_LF5 nop; not filled. L311_LF5: addi r29,r29,#-8 lhi r12,((LC41_LF5)>>16)&0xffff addui r12,r12,(LC41_LF5)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L308_LF5: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L305_LF5 nop; not filled. L349_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L315_LF5: lw r1,-220(r30) j L351_LF5 nop; not filled. L318_LF5: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L351_LF5: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L318_LF5 nop; not filled. seqi r1,r31,#9 bnez r1,L318_LF5 nop; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L320_LF5 nop; not filled. addi r1,r2,#1 sw -220(r30),r1 j L304_LF5 nop; not filled. L320_LF5: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L326_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L326_LF5 nop; not filled. snei r1,r3,#65 bnez r1,L325_LF5 nop; not filled. L326_LF5: addi r2,r0,#1 L325_LF5: snei r1,r2,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L329_LF5 nop; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L329_LF5 nop; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L328_LF5 nop; not filled. L329_LF5: addi r3,r0,#1 L328_LF5: snei r1,r3,#0 beqz r1,L304_LF5 nop; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L331_LF5 nop; not filled. add r4,r0,r31 j L330_LF5 nop; not filled. L331_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L333_LF5 nop; not filled. addi r4,r2,#-87 j L330_LF5 nop; not filled. L333_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L330_LF5 nop; not filled. addi r4,r3,#-55 L330_LF5: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L338_LF5 nop; not filled. add r2,r0,r31 j L337_LF5 nop; not filled. L338_LF5: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L340_LF5 nop; not filled. addi r2,r2,#-87 j L337_LF5 nop; not filled. L340_LF5: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L337_LF5 nop; not filled. addi r2,r3,#-55 L337_LF5: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L315_LF5 nop; not filled. L305_LF5: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L346_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L345_LF5 nop; not filled. L346_LF5: addi r29,r29,#-16 lhi r12,((LC42_LF5)>>16)&0xffff addui r12,r12,(LC42_LF5)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L345_LF5: add r1,r0,r5 L347_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb64_LF5: .space 120 .align 2 LC43_LF5: .ascii "Got %d arguments.\n\000" .align 2 LC44_LF5: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC45_LF5: .ascii "Argument count is %d.\n\000" .align 2 LC46_LF5: .ascii "Argument %d is %s.\n\000" .align 2 LC47_LF5: .ascii "Converted %s to %d=%s\n\000" _buf65_LF5: .space 200 .align 2 LC48_LF5: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC49_LF5: .ascii "Option %s not recognized.\n\000" .align 2 LC50_LF5: .ascii "About to initialize queues.\n\000" .align 2 LC51_LF5: .ascii "After initializing queues.\n\000" .align 2 LC52_LF5: .ascii "After initializing memory.\n\000" .align 2 LC53_LF5: .ascii "After initializing processes.\n\000" .align 2 LC54_LF5: .ascii "After initializing synchronization tools.\n\000" .align 2 LC55_LF5: .ascii "After initializing keyboard.\n\000" .align 2 LC56_LF5: .ascii "vm\000" .align 2 LC57_LF5: .ascii "VM Descriptor is %d\n\000" .align 2 LC58_LF5: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC59_LF5: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#200; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb 1(r1),r21 jal _MyFuncRetZero nop; not filled. addi r29,r29,#-8 lhi r21,((LC43_LF5)>>16)&0xffff addui r21,r21,(LC43_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. jal _MemoryGetSize nop; not filled. addi r29,r29,#-8 lhi r21,((LC44_LF5)>>16)&0xffff addui r21,r21,(LC44_LF5)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop; not filled. lhi r21,((LC45_LF5)>>16)&0xffff addui r21,r21,(LC45_LF5)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L354_LF5 nop; not filled. add r2,r0,r20 L356_LF5: addi r29,r29,#-16 lhi r21,((LC46_LF5)>>16)&0xffff addui r21,r21,(LC46_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L356_LF5 nop; not filled. L354_LF5: jal _FsModuleInit nop; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L359_LF5 nop; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf65_LF5)>>16)&0xffff addui r15,r15,(_buf65_LF5)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L361_LF5: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L360_LF5 nop; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L366_LF5 nop; not filled. sgti r1,r2,#102 bnez r1,L378_LF5 nop; not filled. seqi r1,r2,#68 beqz r1,L376_LF5 nop; not filled. j L364_LF5 nop; not filled. L378_LF5: seqi r1,r2,#105 bnez r1,L365_LF5 nop; not filled. seqi r1,r2,#117 beqz r1,L376_LF5 nop; not filled. j L375_LF5 nop; not filled. L364_LF5: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop; not filled. j L411_LF5 nop; not filled. L365_LF5: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop; not filled. lhi r21,((LC47_LF5)>>16)&0xffff addui r21,r21,(LC47_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 j L363_LF5 nop; not filled. L366_LF5: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r10,r0,r1 lhi r21,((LC27_LF5)>>16)&0xffff addui r21,r21,(LC27_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop; not filled. lhi r21,((LC28_LF5)>>16)&0xffff addui r21,r21,(LC28_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop; not filled. lhi r21,((LC29_LF5)>>16)&0xffff addui r21,r21,(LC29_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop; not filled. addi r29,r29,#24 lhi r11,((_buf65_LF5+3)>>16)&0xffff addui r11,r11,(_buf65_LF5+3)&0xffff L367_LF5: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf65_LF5)>>16)&0xffff addui r21,r21,(_buf65_LF5)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L368_LF5 nop; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L367_LF5 nop; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L373_LF5: addi r29,r29,#-24 lhi r21,((LC48_LF5)>>16)&0xffff addui r21,r21,(LC48_LF5)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L373_LF5 nop; not filled. j L367_LF5 nop; not filled. L368_LF5: addi r29,r29,#-8 sw (r29),r10 jal _close nop; not filled. j L411_LF5 nop; not filled. L375_LF5: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L363_LF5 nop; not filled. L376_LF5: addi r29,r29,#-8 lhi r21,((LC49_LF5)>>16)&0xffff addui r21,r21,(LC49_LF5)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop; not filled. L411_LF5: addi r29,r29,#8 L363_LF5: snei r1,r16,#0 bnez r1,L359_LF5 nop; not filled. L360_LF5: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L361_LF5 nop; not filled. L359_LF5: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L382_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L381_LF5 nop; not filled. L382_LF5: addi r29,r29,#-8 lhi r21,((LC50_LF5)>>16)&0xffff addui r21,r21,(LC50_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L381_LF5: jal _QueueModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L384_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L383_LF5 nop; not filled. L384_LF5: addi r29,r29,#-8 lhi r21,((LC51_LF5)>>16)&0xffff addui r21,r21,(LC51_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L383_LF5: jal _MemoryModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L386_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L385_LF5 nop; not filled. L386_LF5: addi r29,r29,#-8 lhi r21,((LC52_LF5)>>16)&0xffff addui r21,r21,(LC52_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L385_LF5: jal _ProcessModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387_LF5 nop; not filled. L388_LF5: addi r29,r29,#-8 lhi r21,((LC53_LF5)>>16)&0xffff addui r21,r21,(LC53_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L387_LF5: jal _SynchModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389_LF5 nop; not filled. L390_LF5: addi r29,r29,#-8 lhi r21,((LC54_LF5)>>16)&0xffff addui r21,r21,(LC54_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L389_LF5: jal _KbdModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L392_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L391_LF5 nop; not filled. L392_LF5: addi r29,r29,#-8 lhi r21,((LC55_LF5)>>16)&0xffff addui r21,r21,(LC55_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L391_LF5: addi r2,r30,#-128 addi r3,r30,#-29 L396_LF5: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L396_LF5 nop; not filled. addi r29,r29,#-8 lhi r21,((LC56_LF5)>>16)&0xffff addui r21,r21,(LC56_LF5)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L399_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L398_LF5 nop; not filled. L399_LF5: addi r29,r29,#-8 lhi r21,((LC57_LF5)>>16)&0xffff addui r21,r21,(LC57_LF5)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L398_LF5: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop; not filled. sw (r29),r9 jal _FsClose nop; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L400_LF5 nop; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L402_LF5 nop; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L406_LF5: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L402_LF5 nop; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L406_LF5 nop; not filled. L402_LF5: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop; not filled. addi r29,r29,#48 L400_LF5: jal _SysprocCreateProcesses nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L408_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L407_LF5 nop; not filled. L408_LF5: addi r29,r29,#-8 lhi r21,((LC58_LF5)>>16)&0xffff addui r21,r21,(LC58_LF5)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L407_LF5: addi r29,r29,#-8 lhi r3,((_processQuantum_LF5)>>16)&0xffff addui r3,r3,(_processQuantum_LF5)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L410_LF5 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L409_LF5 nop; not filled. L410_LF5: addi r29,r29,#-8 lhi r21,((LC59_LF5)>>16)&0xffff addui r21,r21,(LC59_LF5)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L409_LF5: jal _intrreturn nop; not filled. jal _exitsim nop; not filled. jal _exit nop .endproc _main .data .align 2 LC61_LF5: .word 0x00000000 ;; 0.0000000e+00 .text .align 2 .proc _MyFuncRetZero .global _MyFuncRetZero _MyFuncRetZero: ; Function 'MyFuncRetZero'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,((LC61_LF5)>>16)&0xffff addui r1,r1,(LC61_LF5)&0xffff lf f0,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MyFuncRetZero .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs_LF5)>>16)&0xffff addui r31,r31,(_pcbs_LF5)&0xffff sub r2,r1,r31 slli r1,r2,#0x4 add r2,r1,r2 slli r1,r2,#0x8 add r2,r2,r1 slli r1,r2,#0x10 add r1,r2,r1 sub r1,r0,r1 srai r1,r1,#0x3 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1032; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420_LF5 nop; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422_LF5: addi r2,r0,#0 add r3,r4,r5 L423_LF5: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423_LF5 nop; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422_LF5 nop; not filled. L420_LF5: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .align 2 .proc _ProcessKill .global _ProcessKill _ProcessKill: ; Function 'ProcessKill'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _ProcessSchedule nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessKill .align 2 .proc _PageFaultHandler .global _PageFaultHandler _PageFaultHandler: ; Function 'PageFaultHandler'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _PageFaultHandler .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs_LF5: .space 12 .align 2 _runQueue_LF5: .space 12 .align 2 _waitQueue_LF5: .space 12 .align 2 _zombieQueue_LF5: .space 12 .align 2 _pcbs_LF5: .space 3840 .text .align 2 .proc _ProcessExit_LF5 _ProcessExit_LF5: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _exit nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit_LF5 ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF6 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF6 nop; not filled. L6_LF6: addi r31,r0,#1 L5_LF6: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF6 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF6 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF6 nop; not filled. L12_LF6: addi r2,r0,#1 L11_LF6: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF6 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF6: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF6: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool_LF6)>>16)&0xffff addui r2,r2,(_linkpool_LF6)&0xffff L63_LF6: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF6 nop; not filled. L65_LF6: addi r29,r29,#-8 lhi r5,((LC0_LF6)>>16)&0xffff addui r5,r5,(LC0_LF6)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L64_LF6: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63_LF6 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1_LF6: .ascii "%s: %s\n\000" .align 2 LC2_LF6: .ascii "QueueFreeLink\000" .align 2 LC3_LF6: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC2_LF6)>>16)&0xffff addui r1,r1,(LC2_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC3_LF6)>>16)&0xffff addui r4,r4,(LC3_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L77_LF6: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4_LF6: .ascii "QueueAllocLink\000" .align 2 LC5_LF6: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92_LF6 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97_LF6 nop; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97_LF6: addi r4,r0,#0 sw (r3),r4 j L98_LF6 nop; not filled. L92_LF6: addi r3,r0,#0 L98_LF6: snei r1,r3,#0 bnez r1,L100_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF6)>>16)&0xffff addui r4,r4,(LC1_LF6)&0xffff sw (r29),r4 lhi r1,((LC4_LF6)>>16)&0xffff addui r1,r1,(LC4_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC5_LF6)>>16)&0xffff addui r4,r4,(LC5_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L100_LF6: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool_LF6: .space 6400 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF7 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF7 nop; not filled. L6_LF7: addi r31,r0,#1 L5_LF7: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF7 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF7 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF7 nop; not filled. L12_LF7: addi r2,r0,#1 L11_LF7: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF7 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF7: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF7: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1_LF7: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF7 nop; not filled. L53_LF7: addi r29,r29,#-8 lhi r3,((LC0_LF7)>>16)&0xffff addui r3,r3,(LC0_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L52_LF7: lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff addi r2,r31,#620 L57_LF7: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57_LF7 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L60_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L59_LF7 nop; not filled. L60_LF7: addi r29,r29,#-8 lhi r3,((LC1_LF7)>>16)&0xffff addui r3,r3,(LC1_LF7)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L59_LF7: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems_LF7)>>16)&0xffff addui r31,r31,(_sems_LF7)&0xffff L79_LF7: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L86_LF7 nop; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L79_LF7 nop; not filled. L77_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L83_LF7 nop; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems_LF7)>>16)&0xffff addui r5,r5,(_sems_LF7)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L85_LF7 nop; not filled. L86_LF7: addi r5,r0,#1 sw 16(r31),r5 j L77_LF7 nop; not filled. L83_LF7: addi r1,r0,#-1 L85_LF7: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2_LF7: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3_LF7: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4_LF7: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L90_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L89_LF7 nop; not filled. L90_LF7: addi r29,r29,#-8 lhi r7,((LC2_LF7)>>16)&0xffff addui r7,r7,(LC2_LF7)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L89_LF7: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF7 nop; not filled. L92_LF7: addi r29,r29,#-16 lhi r7,((LC3_LF7)>>16)&0xffff addui r7,r7,(LC3_LF7)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 L91_LF7: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L93_LF7 nop; not filled. jal _QueueAllocLink nop; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L96_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L95_LF7 nop; not filled. L96_LF7: addi r29,r29,#-8 lhi r7,((LC4_LF7)>>16)&0xffff addui r7,r7,(LC4_LF7)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L95_LF7: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop; not filled. L93_LF7: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L106_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L107_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L105_LF7 nop; not filled. L107_LF7: addi r1,r0,#1 j L105_LF7 nop; not filled. L106_LF7: addi r1,r0,#1 L105_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5_LF7: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6_LF7: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF7 nop; not filled. L113_LF7: addi r29,r29,#-16 lhi r5,((LC5_LF7)>>16)&0xffff addui r5,r5,(LC5_LF7)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L112_LF7: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L114_LF7 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L117_LF7 nop; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L117_LF7: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L119_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L118_LF7 nop; not filled. L119_LF7: addi r29,r29,#-8 lhi r5,((LC6_LF7)>>16)&0xffff addui r5,r5,(LC6_LF7)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L118_LF7: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop; not filled. sw (r29),r3 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 L114_LF7: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L126_LF7 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF7)>>16)&0xffff addui r2,r2,(_sems_LF7)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L127_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L125_LF7 nop; not filled. L127_LF7: addi r1,r0,#1 j L125_LF7 nop; not filled. L126_LF7: addi r1,r0,#1 L125_LF7: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .data .align 2 _sems_LF7: .space 640 ; Compiled by GCC .align 2 _rcsid_LF8: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF8 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF8 nop; not filled. L6_LF8: addi r31,r0,#1 L5_LF8: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF8 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF8 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF8 nop; not filled. L12_LF8: addi r2,r0,#1 L11_LF8: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF8 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF8: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0_LF8: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler_LF8 _TrapProcessCreateHandler_LF8: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1696; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65_LF8: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65_LF8 nop; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68_LF8: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73_LF8 nop; not filled. j L68_LF8 nop; not filled. L67_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop; not filled. addi r29,r29,#16 L73_LF8: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74_LF8 nop; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85_LF8: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86_LF8 nop; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80_LF8: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77_LF8 nop; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80_LF8 nop; not filled. L77_LF8: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86_LF8 nop; not filled. j L85_LF8 nop; not filled. L74_LF8: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93_LF8: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92_LF8 nop; not filled. addi r29,r29,#-8 lhi r12,((LC0_LF8)>>16)&0xffff addui r12,r12,(LC0_LF8)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L92_LF8: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93_LF8 nop; not filled. L86_LF8: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler_LF8 .align 2 .proc _TrapPrintfHandler_LF8 _TrapPrintfHandler_LF8: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#208; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95_LF8 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96_LF8: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101_LF8 nop; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101_LF8 nop; not filled. j L96_LF8 nop; not filled. L95_LF8: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop; not filled. addi r29,r29,#16 L101_LF8: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103_LF8 nop; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105_LF8: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104_LF8 nop; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107_LF8 nop; not filled. addi r3,r3,#1 j L104_LF8 nop; not filled. L107_LF8: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110_LF8: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109_LF8 nop; not filled. seqi r1,r2,#108 bnez r1,L110_LF8 nop; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116_LF8 nop; not filled. seqi r1,r2,#101 beqz r1,L115_LF8 nop; not filled. L116_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109_LF8 nop; not filled. L115_LF8: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110_LF8 nop; not filled. L109_LF8: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104_LF8: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105_LF8 nop; not filled. L103_LF8: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler_LF8 .data .align 2 LC1_LF8: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2_LF8: .ascii "Got a context switch trap!\n\000" .align 2 LC3_LF8: .ascii "Got an exit trap!\n\000" .align 2 LC4_LF8: .ascii "Got a fork trap!\n\000" .align 2 LC5_LF8: .ascii "Got a process sleep trap!\n\000" .align 2 LC6_LF8: .ascii "Got a printf trap!\n\000" .align 2 LC7_LF8: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8_LF8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9_LF8: .ascii "Got a timer interrupt!\n\000" .align 2 LC10_LF8: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11_LF8: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC12_LF8: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC13_LF8: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#88; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122_LF8 nop; not filled. L123_LF8: addi r29,r29,#-24 lhi r7,((LC1_LF8)>>16)&0xffff addui r7,r7,(LC1_LF8)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L122_LF8: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124_LF8 nop; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126_LF8 nop; not filled. sgtui r1,r2,#1024 bnez r1,L177_LF8 nop; not filled. seqi r1,r2,#530 bnez r1,L158_LF8 nop; not filled. sgtui r1,r2,#530 bnez r1,L178_LF8 nop; not filled. seqi r1,r2,#528 bnez r1,L149_LF8 nop; not filled. sgtui r1,r2,#528 bnez r1,L152_LF8 nop; not filled. seqi r1,r2,#513 beqz r1,L175_LF8 nop; not filled. j L138_LF8 nop; not filled. L178_LF8: seqi r1,r2,#532 bnez r1,L146_LF8 nop; not filled. sltui r1,r2,#532 bnez r1,L141_LF8 nop; not filled. seqi r1,r2,#768 beqz r1,L175_LF8 nop; not filled. j L129_LF8 nop; not filled. L177_LF8: seqi r1,r2,#1074 bnez r1,L162_LF8 nop; not filled. sgtui r1,r2,#1074 bnez r1,L179_LF8 nop; not filled. seqi r1,r2,#1072 bnez r1,L132_LF8 nop; not filled. sgtui r1,r2,#1072 bnez r1,L161_LF8 nop; not filled. seqi r1,r2,#1040 beqz r1,L175_LF8 nop; not filled. j L135_LF8 nop; not filled. L179_LF8: seqi r1,r2,#1105 bnez r1,L167_LF8 nop; not filled. sgtui r1,r2,#1105 bnez r1,L180_LF8 nop; not filled. seqi r1,r2,#1104 beqz r1,L175_LF8 nop; not filled. j L163_LF8 nop; not filled. L180_LF8: seqi r1,r2,#1106 bnez r1,L171_LF8 nop; not filled. seqi r1,r2,#1408 beqz r1,L175_LF8 nop; not filled. j L155_LF8 nop; not filled. L126_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184_LF8 nop; not filled. L128_LF8: addi r29,r29,#-8 lhi r7,((LC2_LF8)>>16)&0xffff addui r7,r7,(LC2_LF8)&0xffff j L206_LF8 nop; not filled. L129_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF8 nop; not filled. L131_LF8: addi r29,r29,#-8 lhi r7,((LC3_LF8)>>16)&0xffff addui r7,r7,(LC3_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L130_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L201_LF8 nop; not filled. L132_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L134_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L181_LF8 nop; not filled. L134_LF8: addi r29,r29,#-8 lhi r7,((LC4_LF8)>>16)&0xffff addui r7,r7,(LC4_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. j L201_LF8 nop; not filled. L135_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L137_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L136_LF8 nop; not filled. L137_LF8: addi r29,r29,#-8 lhi r7,((LC5_LF8)>>16)&0xffff addui r7,r7,(LC5_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L136_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop; not filled. jal _ProcessSchedule nop; not filled. j L201_LF8 nop; not filled. L138_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L140_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L139_LF8 nop; not filled. L140_LF8: addi r29,r29,#-8 lhi r7,((LC6_LF8)>>16)&0xffff addui r7,r7,(LC6_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L139_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler_LF8 nop; not filled. j L201_LF8 nop; not filled. L141_LF8: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L142_LF8 nop; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L143_LF8 nop; not filled. L142_LF8: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L143_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop; not filled. addi r29,r29,#-8 lhi r7,((LC7_LF8)>>16)&0xffff addui r7,r7,(LC7_LF8)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L146_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L149_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L152_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L155_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L158_LF8: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L201_LF8 nop; not filled. L161_LF8: jal _GetCurrentPid nop; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L162_LF8: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler_LF8 nop; not filled. j L201_LF8 nop; not filled. L163_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L165_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L202_LF8 nop; not filled. L165_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L202_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L167_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L169_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L203_LF8 nop; not filled. L169_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L203_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L171_LF8: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L173_LF8 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L204_LF8 nop; not filled. L173_LF8: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L204_LF8: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L201_LF8 nop; not filled. L175_LF8: addi r29,r29,#-8 lhi r7,((LC8_LF8)>>16)&0xffff addui r7,r7,(LC8_LF8)&0xffff j L205_LF8 nop; not filled. L124_LF8: seqi r1,r2,#3 bnez r1,L191_LF8 nop; not filled. sgtui r1,r2,#3 bnez r1,L197_LF8 nop; not filled. seqi r1,r2,#1 bnez r1,L193_LF8 nop; not filled. seqi r1,r2,#2 beqz r1,L195_LF8 nop; not filled. j L192_LF8 nop; not filled. L197_LF8: seqi r1,r2,#64 bnez r1,L183_LF8 nop; not filled. sgtui r1,r2,#64 bnez r1,L198_LF8 nop; not filled. seqi r1,r2,#32 beqz r1,L195_LF8 nop; not filled. j L194_LF8 nop; not filled. L198_LF8: seqi r1,r2,#72 beqz r1,L195_LF8 nop; not filled. j L186_LF8 nop; not filled. L183_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L185_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184_LF8 nop; not filled. L185_LF8: addi r29,r29,#-8 lhi r7,((LC9_LF8)>>16)&0xffff addui r7,r7,(LC9_LF8)&0xffff L206_LF8: sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L184_LF8: jal _ProcessSchedule nop; not filled. j L181_LF8 nop; not filled. L186_LF8: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L187_LF8: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10_LF8)>>16)&0xffff addui r7,r7,(LC10_LF8)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L181_LF8 nop; not filled. j L187_LF8 nop; not filled. L191_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L201_LF8 nop; not filled. L192_LF8: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop; not filled. j L201_LF8 nop; not filled. L193_LF8: addi r29,r29,#-16 lhi r7,((LC11_LF8)>>16)&0xffff addui r7,r7,(LC11_LF8)&0xffff sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#16 j L181_LF8 nop; not filled. L194_LF8: jal _PageFaultHandler nop; not filled. j L181_LF8 nop; not filled. L195_LF8: addi r29,r29,#-8 lhi r7,((LC12_LF8)>>16)&0xffff addui r7,r7,(LC12_LF8)&0xffff L205_LF8: sw (r29),r7 sw 4(r29),r2 jal _printf nop; not filled. jal _exitsim nop; not filled. L201_LF8: addi r29,r29,#8 L181_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199_LF8 nop; not filled. L200_LF8: addi r29,r29,#-8 lhi r7,((LC13_LF8)>>16)&0xffff addui r7,r7,(LC13_LF8)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L199_LF8: jal _intrreturn nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF9 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF9 nop; not filled. L6_LF9: addi r31,r0,#1 L5_LF9: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF9 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF9 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF9 nop; not filled. L12_LF9: addi r2,r0,#1 L11_LF9: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF9 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF9: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF9: .ascii "Process #\000" .align 2 LC1_LF9: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething_LF9 _doSomething_LF9: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#120; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52_LF9 nop; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56_LF9: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0_LF9)>>16)&0xffff addui r8,r8,(LC0_LF9)&0xffff sw 4(r29),r8 jal _dstrcpy nop; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop; not filled. addi r29,r29,#-8 lhi r8,((_doSomething_LF9)>>16)&0xffff addui r8,r8,(_doSomething_LF9)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56_LF9 nop; not filled. L52_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59_LF9 nop; not filled. addi r5,r0,#1000 add r4,r0,r2 L61_LF9: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62_LF9 nop; not filled. addi r29,r29,#-16 lhi r8,((LC1_LF9)>>16)&0xffff addui r8,r8,(LC1_LF9)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 L62_LF9: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61_LF9 nop; not filled. L59_LF9: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF9)>>16)&0xffff addui r8,r8,(_mysems_LF9)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething_LF9 .data .align 2 LC2_LF9: .ascii "chasetail\000" .align 2 LC3_LF9: .ascii "Chasing tail %d.\n\000" .align 2 LC4_LF9: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5_LF9: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail_LF9 _chaseTail_LF9: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2_LF9)>>16)&0xffff addui r3,r3,(LC2_LF9)&0xffff addi r29,r29,#-8 lhi r5,((LC3_LF9)>>16)&0xffff addui r5,r5,(LC3_LF9)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop; not filled. addi r29,r29,#-8 lhi r5,((LC4_LF9)>>16)&0xffff addui r5,r5,(LC4_LF9)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67_LF9 nop; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail_LF9)>>16)&0xffff addui r5,r5,(_chaseTail_LF9)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5_LF9)>>16)&0xffff addui r5,r5,(LC5_LF9)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop; not filled. addi r29,r29,#16 L67_LF9: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail_LF9 .data .align 2 LC6_LF9: .ascii "%d \000" .align 2 LC7_LF9: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems_LF9)>>16)&0xffff addui r2,r2,(_mysems_LF9)&0xffff addi r3,r2,#180 L90_LF9: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90_LF9 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems_LF9: .space 200 ;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8 ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .text .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two sets of traps here. The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 .proc _open .global _open _open: trap #0x2013 jr r31 nop .endproc _open .proc _close .global _close _close: trap #0x2014 jr r31 nop .endproc _close .proc _read .global _read _read: trap #0x2010 jr r31 nop .endproc _read .proc _write .global _write _write: trap #0x2011 jr r31 nop .endproc _write .proc _lseek .global _lseek _lseek: trap #0x2012 jr r31 nop .endproc _lseek ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two exit traps. The first, _exitsim, actually exits the ;;; simulator. The second, _exit, simply calls a regular trap in the ;;; DLX simulator, and would be suitable for a user program that wants ;;; to signal the OS that it's exiting. ;;; ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and ;;; programs run without an OS - should call exitsim() rather than just ;;; falling through to exit. ;;; .align 2 .proc _exitsim .global _exitsim _exitsim: trap #0x2f00 jr r31 nop .endproc _exitsim .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .proc _printf .global _printf _printf: trap #0x2001 jr r31 nop .endproc _printf .text .global _etext _etext: .align 3 .data .global _edata _edata:

option1/lab4_1/src/errors

option1/lab4_1/src/misc.h

// // Routines used by the entire operating system. // #ifndef _misc_h_ #define _misc_h_ extern char* dstrcpy(char*, const char*); extern char* dstrncpy(char*, const char*, int n); extern const char *dstrstr (const char *, const char *); extern int dstrlen (const char *); extern int dstrncmp (const char *, const char *, int); extern int dstrtol(char*, char**, int); extern const char* dindex(const char*, int); extern const char* dmindex(const char*, const char *); inline int isspace (char c) { return ((c == ' ') || (c == '\t') || (c == '\n')); } inline int isxdigit (char c) { return (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) || ((c >= 'A') && (c <= 'A'))); } #endif // !_misc_h_

option1/lab4_1/src/memory.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61 nop ; not filled. addi r2,r3,#31 L61: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68 nop ; not filled. addui r2,r2,#65535 L68: srai r8,r2,#0x10 lhi r3,((_pagestart)>>16)&0xffff addui r3,r3,(_pagestart)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69 nop ; not filled. addui r2,r2,#65535 L69: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax)>>16)&0xffff addui r3,r3,(_freemapmax)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70 nop ; not filled. addi r2,r8,#62 L70: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-16 lhi r11,((LC1)>>16)&0xffff addui r11,r11,(LC1)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop ; not filled. addi r29,r29,#16 L71: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73 nop ; not filled. L74: addi r29,r29,#-8 lhi r11,((LC2)>>16)&0xffff addui r11,r11,(LC2)&0xffff sw (r29),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L73: addi r2,r0,#0 lhi r4,((_freemapmax)>>16)&0xffff addui r4,r4,(_freemapmax)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76 nop ; not filled. lhi r3,((_freepages)>>16)&0xffff addui r3,r3,(_freepages)&0xffff L78: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78 nop ; not filled. L76: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81 nop ; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone)>>16)&0xffff addui r9,r9,(_negativeone)&0xffff L83: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85 nop ; not filled. addi r2,r4,#31 L85: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages)>>16)&0xffff addui r11,r11,(_freepages)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82 nop ; not filled. L89: addi r29,r29,#-16 lhi r11,((LC0)>>16)&0xffff addui r11,r11,(LC0)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L82: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83 nop ; not filled. L81: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-8 lhi r11,((LC3)>>16)&0xffff addui r11,r11,(LC3)&0xffff sw (r29),r11 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42: .word 0 .align 2 LC4: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111 nop ; not filled. addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110 nop ; not filled. L111: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L112: lhi r2,((_mapnum42)>>16)&0xffff addui r2,r2,(_mapnum42)&0xffff lw r1,(r2) lhi r4,((_freepages)>>16)&0xffff addui r4,r4,(_freepages)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115 nop ; not filled. lhi r1,((_freemapmax)>>16)&0xffff addui r1,r1,(_freemapmax)&0xffff lw r3,(r1) L116: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114 nop ; not filled. addi r7,r0,#0 sw (r2),r7 L114: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116 nop ; not filled. L115: lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120 nop ; not filled. addi r2,r0,#1 L121: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121 nop ; not filled. L120: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42)>>16)&0xffff addui r5,r5,(_mapnum42)&0xffff lw r3,(r5) lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125 nop ; not filled. L126: addi r29,r29,#-16 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L125: lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129 nop ; not filled. addi r2,r6,#31 L129: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133 nop ; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128 nop ; not filled. L133: addi r29,r29,#-16 lhi r7,((LC0)>>16)&0xffff addui r7,r7,(LC0)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L128: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134 nop ; not filled. L135: addi r29,r29,#-16 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L134: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,100(r3) sgt r1,r31,r1 bnez r1,L139 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140 nop ; not filled. L139: addi r1,r0,#0 L140: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L168: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L170 nop ; not filled. addi r31,r0,#0 j L169 nop ; not filled. L170: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169: snei r1,r31,#0 beqz r1,L167 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172 nop ; not filled. add r2,r0,r3 L172: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168 nop ; not filled. L167: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L192: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,100(r7) sgt r1,r2,r1 beqz r1,L194 nop ; not filled. addi r31,r0,#0 j L193 nop ; not filled. L194: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193: snei r1,r31,#0 beqz r1,L191 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197 nop ; not filled. add r2,r0,r3 L197: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192 nop ; not filled. L191: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61: .word 13316 .align 2 LC8: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214 nop ; not filled. lhi r1,((_invalidOps61)>>16)&0xffff addui r1,r1,(_invalidOps61)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213 nop ; not filled. L214: addi r1,r0,#-1 j L218 nop ; not filled. L213: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215 nop ; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216 nop ; not filled. L217: addi r29,r29,#-24 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L216: add r1,r0,r4 L218: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart: .space 4 .align 2 _freemapmax: .space 4 .align 2 _nfreepages: .space 4 .align 2 _freepages: .space 8192

option1/lab4_1/src/traps.o

; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler _TrapProcessCreateHandler: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1696 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65 nop ; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73 nop ; not filled. j L68 nop ; not filled. L67: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop ; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L73: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74 nop ; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80 nop ; not filled. L77: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86 nop ; not filled. j L85 nop ; not filled. L74: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop ; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC0)>>16)&0xffff addui r12,r12,(LC0)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L92: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop ; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93 nop ; not filled. L86: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler .align 2 .proc _TrapPrintfHandler _TrapPrintfHandler: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#208 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101 nop ; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101 nop ; not filled. j L96 nop ; not filled. L95: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop ; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L101: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104 nop ; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107 nop ; not filled. addi r3,r3,#1 j L104 nop ; not filled. L107: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109 nop ; not filled. seqi r1,r2,#108 bnez r1,L110 nop ; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116 nop ; not filled. seqi r1,r2,#101 beqz r1,L115 nop ; not filled. L116: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109 nop ; not filled. L115: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110 nop ; not filled. L109: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105 nop ; not filled. L103: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop ; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler .data .align 2 LC1: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2: .ascii "Got a context switch trap!\n\000" .align 2 LC3: .ascii "Got an exit trap!\n\000" .align 2 LC4: .ascii "Got a fork trap!\n\000" .align 2 LC5: .ascii "Got a process sleep trap!\n\000" .align 2 LC6: .ascii "Got a printf trap!\n\000" .align 2 LC7: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9: .ascii "Got a timer interrupt!\n\000" .align 2 LC10: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC12: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC13: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#88 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r5,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff sw (r29),r4 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122 nop ; not filled. L123: addi r29,r29,#-24 lhi r7,((LC1)>>16)&0xffff addui r7,r7,(LC1)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L122: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124 nop ; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1024 bnez r1,L126 nop ; not filled. sgtui r1,r2,#1024 bnez r1,L177 nop ; not filled. seqi r1,r2,#530 bnez r1,L158 nop ; not filled. sgtui r1,r2,#530 bnez r1,L178 nop ; not filled. seqi r1,r2,#528 bnez r1,L149 nop ; not filled. sgtui r1,r2,#528 bnez r1,L152 nop ; not filled. seqi r1,r2,#513 beqz r1,L175 nop ; not filled. j L138 nop ; not filled. L178: seqi r1,r2,#532 bnez r1,L146 nop ; not filled. sltui r1,r2,#532 bnez r1,L141 nop ; not filled. seqi r1,r2,#768 beqz r1,L175 nop ; not filled. j L129 nop ; not filled. L177: seqi r1,r2,#1074 bnez r1,L162 nop ; not filled. sgtui r1,r2,#1074 bnez r1,L179 nop ; not filled. seqi r1,r2,#1072 bnez r1,L132 nop ; not filled. sgtui r1,r2,#1072 bnez r1,L161 nop ; not filled. seqi r1,r2,#1040 beqz r1,L175 nop ; not filled. j L135 nop ; not filled. L179: seqi r1,r2,#1105 bnez r1,L167 nop ; not filled. sgtui r1,r2,#1105 bnez r1,L180 nop ; not filled. seqi r1,r2,#1104 beqz r1,L175 nop ; not filled. j L163 nop ; not filled. L180: seqi r1,r2,#1106 bnez r1,L171 nop ; not filled. seqi r1,r2,#1408 beqz r1,L175 nop ; not filled. j L155 nop ; not filled. L126: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184 nop ; not filled. L128: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff j L206 nop ; not filled. L129: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-8 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L130: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L201 nop ; not filled. L132: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L134 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L181 nop ; not filled. L134: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. j L201 nop ; not filled. L135: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L137 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L136 nop ; not filled. L137: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L136: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop ; not filled. jal _ProcessSchedule nop ; not filled. j L201 nop ; not filled. L138: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L140 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L139 nop ; not filled. L140: addi r29,r29,#-8 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L139: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapPrintfHandler nop ; not filled. j L201 nop ; not filled. L141: andi r1,r5,#64 snei r1,r1,#0 beqz r1,L142 nop ; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L143 nop ; not filled. L142: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L143: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop ; not filled. addi r29,r29,#-8 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L146: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L149: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L152: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L155: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L158: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L201 nop ; not filled. L161: jal _GetCurrentPid nop ; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L162: addi r29,r29,#-8 sw (r29),r3 andi r1,r5,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler nop ; not filled. j L201 nop ; not filled. L163: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L165 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L202 nop ; not filled. L165: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L202: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L167: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L169 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L203 nop ; not filled. L169: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L203: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L171: andi r1,r5,#64 snei r1,r1,#0 bnez r1,L173 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L204 nop ; not filled. L173: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L204: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L201 nop ; not filled. L175: addi r29,r29,#-8 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff j L205 nop ; not filled. L124: seqi r1,r2,#3 bnez r1,L191 nop ; not filled. sgtui r1,r2,#3 bnez r1,L197 nop ; not filled. seqi r1,r2,#1 bnez r1,L193 nop ; not filled. seqi r1,r2,#2 beqz r1,L195 nop ; not filled. j L192 nop ; not filled. L197: seqi r1,r2,#64 bnez r1,L183 nop ; not filled. sgtui r1,r2,#64 bnez r1,L198 nop ; not filled. seqi r1,r2,#32 beqz r1,L195 nop ; not filled. j L194 nop ; not filled. L198: seqi r1,r2,#72 beqz r1,L195 nop ; not filled. j L186 nop ; not filled. L183: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L185 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L184 nop ; not filled. L185: addi r29,r29,#-8 lhi r7,((LC9)>>16)&0xffff addui r7,r7,(LC9)&0xffff L206: sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L184: jal _ProcessSchedule nop ; not filled. j L181 nop ; not filled. L186: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L187: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10)>>16)&0xffff addui r7,r7,(LC10)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L181 nop ; not filled. j L187 nop ; not filled. L191: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L201 nop ; not filled. L192: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessKill nop ; not filled. j L201 nop ; not filled. L193: addi r29,r29,#-16 lhi r7,((LC11)>>16)&0xffff addui r7,r7,(LC11)&0xffff sw (r29),r7 sw 4(r29),r6 sw 8(r29),r5 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#16 j L181 nop ; not filled. L194: jal _PageFaultHandler nop ; not filled. j L181 nop ; not filled. L195: addi r29,r29,#-8 lhi r7,((LC12)>>16)&0xffff addui r7,r7,(LC12)&0xffff L205: sw (r29),r7 sw 4(r29),r2 jal _printf nop ; not filled. jal _exitsim nop ; not filled. L201: addi r29,r29,#8 L181: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L200 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L199 nop ; not filled. L200: addi r29,r29,#-8 lhi r7,((LC13)>>16)&0xffff addui r7,r7,(LC13)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L199: jal _intrreturn nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt

option1/lab4_1/src/userprog.o

; Compiled by GCC .data .align 2 LC0: .ascii "\nTesting case %d\n\000" .align 2 LC1: .ascii "\nUsage: \000" .align 2 LC2: .ascii " [case id]\n\n\000" .align 2 LC3: .ascii "userprog1.dlx.obj\000" .align 2 LC4: .ascii "userprog2.dlx.obj\000" .align 2 LC5: .ascii "Test case %d not supported\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop ; not filled. seqi r1,r2,#2 beqz r1,L14 nop ; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r4,r0,#0 sw 4(r29),r4 addi r4,r0,#10 sw 8(r29),r4 jal _dstrtol nop ; not filled. add r2,r0,r1 lhi r4,((LC0)>>16)&0xffff addui r4,r4,(LC0)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. addi r29,r29,#16 j L12 nop ; not filled. L14: addi r29,r29,#-8 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 jal _Printf nop ; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop ; not filled. lhi r4,((LC2)>>16)&0xffff addui r4,r4,(LC2)&0xffff sw (r29),r4 jal _Printf nop ; not filled. jal _exit nop ; not filled. L12: seqi r1,r2,#1 bnez r1,L17 nop ; not filled. seqi r1,r2,#2 beqz r1,L19 nop ; not filled. j L18 nop ; not filled. L17: addi r29,r29,#-8 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L18: addi r29,r29,#-8 lhi r4,((LC4)>>16)&0xffff addui r4,r4,(LC4)&0xffff sw (r29),r4 addi r4,r0,#0 sw 4(r29),r4 jal _process_create nop ; not filled. j L21 nop ; not filled. L19: addi r29,r29,#-8 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw (r29),r4 sw 4(r29),r2 jal _Printf nop ; not filled. L21: addi r29,r29,#8 jal _exit nop .endproc _main

option1/lab4_1/lab4.ppt

Lab 4: Memory Management

Lab 4

  • Part 1: Dynamic one-level paging
  • Part 2: Dynamic two-level paging
  • Part 3: Shared memory

lab4-1: Dynamic one-level page

  • DLXOS so far
  • Static one-level page table
  • Single 64KB page
  • memory.h:
  • #define MEMORY_L1_PAGE_SIZE_BITS 16
  • #define L1_MAX_ENTRIES 0x01
  • process.c: ProcessFork()
  • pcb->npages = 1;

lab4-1: Dynamic one-level page

  • Page size: 8kb
  • 256 total pages, 2mb total space
  • Max 512kb virtual space per process
  • Max 16 physical pages per process
  • Track using PCB->npages
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Lab4-1: The Translation

Page 0

Page 1

Page 2

Page N-2

Page N-1

Frame

Number

Valid

Flag

page table

Virtual Address

offset

Physical Address

offset

(512KB  19bit)

Frame Number

(2MB  21bit)

Page Number

Lab4-1: To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, …
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address using page table
  • process.c: ProcessFork()
  • Allocate initial pages (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exits.

Lab4-1: More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

Utility functions

  • MemoryAllocPage()
  • Allocate a page of memory and return page number.
  • MemorySetupPte()
  • Given a page number, return the page table entry.
  • MemoryFreePage()
  • Given a page table entry, free the page.

Lab4-2: Dynamic two-level paging

  • Virtual address space per process: 16MB
  • How many bits is virtual address?
  • Page size: 8kb
  • How many pages one process has?
  • One L1 page table entry corresponds to 512kb
  • How many entries in L1, L2 page tables?
  • Max 1MB physical space per process
  • Allocate 3 pages of test & data, 1 page of user stack when creating a process.

Two Level Paging

L1

Virtual Memory

16MB

0

L2

To do

  • memory.h
  • MEMORY_L1_PAGE_SIZE_BITS
  • MEMORY_L2_PAGE_SIZE_BITS
  • L1_MAX_ENTRIES, L2_MAX_ENTRIES …
  • process.c: ProcessFork()
  • Allocate initial L2 page table and initial page (text, data & stack)
  • User stack at the high end of virtual address
  • process.c: ProcessFreeResources()
  • Free pages when process exit.
  • memory.c: MemoryTranslateUserToSystem()
  • Translate virtual address to physical address

More to do

  • process.c: PageFaultHandler()
  • Handle TRAP_PAGEFAULT trap (traps.c).
  • Allocate new page and fix L1, L2 page table
  • process.c: ProcessKill()
  • Called when process exits, handling TRAP_ACCESS (traps.c)
  • Free resource (queue, memory, …)

option1/lab4_1/execs/userprog1.dlx.obj

start:00001000 0000201b 00001000 00000b30 00002000 0000001b 00002000:0a0a496e :20557365 :7270726f :67312c20 :53756d20 :3a202564 :0a0a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :0c000b14 :54000000 :20030000 :201f0000 :20027000 :a05f0000 :20422000 :23ff0001 :73e1000b :1420ffec :54000000 :201f7000 :3c040001 :24846000 :03e41020 :83e40000 :00831820 :23ff2000 :03e2082c :1420ffec :54000000 :23bdfff8 :3c040000 :24842000 :afa40000 :306100ff :afa10004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

option1/lab4_1/execs/os.dlx.obj

start:00001000 00012dfc 00001000 00009ff8 0000b000 00007dfc 00001000:3c010000 :24211010 :00204030 :08005e34 :0060f831 :33ff0040 :17e0001c :3c1f0000 :27fffe28 :8fff0000 :8fff0004 :affdff48 :37fd0000 :10000004 :afbdff48 :2fbd0154 :afa1002c :afa20030 :afa30034 :afa40038 :afa5003c :afa60040 :afa70044 :afa80048 :afa9004c :afaa0050 :afab0054 :afac0058 :afad005c :afae0060 :afaf0064 :afb00068 :afb1006c :afb20070 :afb30074 :afb40078 :afb5007c :afb60080 :afb70084 :afb80088 :afb9008c :afba0090 :afbb0094 :afbc0098 :afbe00a0 :00401831 :afa300a4 :bfa000a8 :bfa200b0 :bfa400b8 :bfa600c0 :bfa800c8 :bfaa00d0 :bfac00d8 :bfae00e0 :bfb000e8 :bfb200f0 :bfb400f8 :bfb60100 :bfb80108 :bfba0110 :bfbc0118 :bfbe0120 :00802031 :afa40128 :00602831 :afa5012c :00c03031 :afa60130 :01201831 :afa30134 :01801831 :afa30138 :01a01831 :afa3013c :01c01831 :afa30140 :afa60000 :afa40004 :afa50008 :8fa1009c :afa1000c :3c010000 :2421fe28 :8c210000 :8c220000 :afa20028 :ac3d0000 :08008908 :54000000 :0c009674 :3c010000 :2421fe28 :8c210000 :8c3d0000 :8fa20028 :ac220000 :8fa30128 :00602030 :8fa3012c :00601830 :8fa30130 :00603030 :8fa30134 :00604830 :8fa30138 :00606030 :8fa3013c :00606830 :8fa30140 :00607030 :9fa000a8 :9fa200b0 :9fa400b8 :9fa600c0 :9fa800c8 :9faa00d0 :9fac00d8 :9fae00e0 :9fb000e8 :9fb200f0 :9fb400f8 :9fb60100 :9fb80108 :9fba0110 :9fbc0118 :9fbe0120 :8fa20030 :8fa30034 :8fa40038 :8fa5003c :8fa60040 :8fa70044 :8fa80048 :8fa9004c :8faa0050 :8fab0054 :8fac0058 :8fad005c :8fae0060 :8faf0064 :8fb00068 :8fb1006c :8fb20070 :8fb30074 :8fb40078 :8fb5007c :8fb60080 :8fb70084 :8fb80088 :8fb9008c :8fba0090 :8fbb0094 :8fbc0098 :8fbe00a0 :8fbf00a4 :27bd0154 :ac3d0004 :37a10000 :8c3dff48 :8c21fed8 :40000000 :2fbd0010 :afa2000c :8fa20010 :3042000f :00a00831 :afa10008 :3021fff0 :00410825 :00202830 :8fa10008 :3021000f :8fa2000c :27bd0010 :4be00000 :54000000 :00a00831 :3021000f :4be00000 :54000000 :44000410 :54000000 :4be00000 :54000000 :44002020 :4be00000 :54000000 :44002021 :4be00000 :54000000 0000b000:3a206669 :6c657379 :732e632c :7620312e :31203230 :30302f30 :392f3230 :2030313a :35303a31 :3920656c :6d204578 :7020656c :6d203030 :30 000012fc:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0ffffe94 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0ffffe50 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0ffffe0c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000b038:41747465 :706d7469 :6e672074 :6f206f70 :656e2025 :73206d6f :64653d25 :642e0a00 0000b058:646c783a :00 0000b060:46696c65 :20257320 :6f70656e :696e6720 :696e2066 :696c6520 :73797374 :656d2025 :642e0a00 0000b084:4f70656e :65642025 :7320696e :20465320 :25642c20 :6d6f6465 :3d256420 :736c6f74 :3d25642e :0a00 00001798:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc40000 :8fc50004 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080066 :afa80004 :0c00264c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c002624 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080000 :2508b038 :afa80000 :afa40004 :afa50008 :0c0097ac :54000000 :23bd0010 :30a50003 :64a10000 :10200044 :54000000 :20030000 :3c060000 :24c6b110 :00061020 :8c410004 :64210000 :10200018 :54000000 :2042010c :20630001 :7061001f :1420ffe0 :54000000 :6c61001f :10200010 :54000000 :2001ffff :08000224 :54000000 :50610004 :00230820 :50210002 :00230822 :50210002 :00261020 :ac450004 :23bdfff0 :afa40000 :3c010000 :2421b058 :afa10004 :20080004 :afa80008 :0c002210 :54000000 :23bd0010 :64210000 :14200014 :54000000 :20840004 :20080001 :08000008 :54000000 :20080000 :ac480000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080066 :afa80004 :0c00250c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0024e4 :54000000 :23bd0008 :64210000 :1020004c :54000000 :23bdfff0 :3c080000 :2508b060 :afa80000 :afa40004 :50610004 :00230820 :50210002 :00230822 :50210002 :3c080000 :2508b110 :00280820 :8c210000 :afa10008 :0c009648 :54000000 :23bd0010 :23bdfff0 :50610004 :00230820 :50210002 :00230822 :50260002 :3c080000 :2508b110 :00c83820 :8ce20000 :50410001 :00220820 :50210003 :3c080000 :2508b0e0 :00280820 :afa30000 :afa40004 :afa50008 :8c210000 :4c200000 :54000000 :00011020 :23bd0010 :68410000 :10200024 :54000000 :3c080000 :2508b110 :00c80820 :20080000 :ac280004 :00020820 :08000090 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080066 :afa80004 :0c0023e0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0023b8 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdffe8 :3c080000 :2508b084 :afa80000 :afa40004 :8ce70000 :afa70008 :afa5000c :afa30010 :0c009534 :54000000 :23bd0018 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c040000 :2484b110 :00240820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200074 :54000000 :23bdfff8 :53e10004 :003f0820 :50210002 :003f0822 :50230002 :3c040000 :2484b110 :00640820 :8c220000 :50410001 :00220820 :50210003 :3c040000 :2484b0e0 :00240820 :afbf0000 :8c210010 :4c200000 :54000000 :23bd0008 :3c040000 :2484b110 :00641020 :20040000 :ac440004 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463b0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210004 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463b0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210008 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463b110 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463b0e0 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c21000c :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff0 :afa20000 :3c010000 :2421b058 :afa10004 :20030004 :afa30008 :0c001bc4 :54000000 :23bd0010 :64210000 :1420001c :54000000 :20420004 :23bdfff8 :3c010000 :2421b10c :08000010 :54000000 :23bdfff8 :3c010000 :2421b0f4 :afa20000 :8c210000 :4c200000 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000b0ac:41747465 :6d707469 :6e672074 :6f206f70 :656e2066 :696c6520 :25732069 :6e746f20 :64657363 :2025642c :206d6f64 :65202564 :2e0a00 00001f94:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc30004 :8fc50008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20060066 :afa60004 :0c001e54 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c001e2c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6b0ac :afa60000 :afa30004 :afa40008 :afa5000c :0c008fb0 :54000000 :23bd0010 :23bdfff8 :afa30000 :afa50004 :0c008f08 :54000000 :00011820 :50810004 :00240820 :50210002 :00240822 :50210002 :3c060000 :24c6b110 :00260820 :ac230108 :23bd0008 :68620000 :00030820 :14400008 :54000000 :20010001 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5b110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008e50 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5b110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008dcc :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5b110 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c008d48 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff8 :50410004 :00220820 :50210002 :00220822 :50210002 :3c030000 :2463b110 :00230820 :8c210108 :afa10000 :0c008cac :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :2001ffff :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffb110 :003f0820 :201f0000 :ac3f0108 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffb110 :003f0820 :8c210108 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :3c1f0000 :27ffb110 :23e22074 :20030000 :afe30004 :23ff010c :03e2082c :1420ffec :54000000 :3c010000 :2421b0e0 :3c030000 :24631f94 :ac230000 :3c030000 :24632270 :ac230010 :3c030000 :246320c0 :ac230004 :3c030000 :24632150 :ac230008 :3c030000 :246321e0 :ac23000c :3c030000 :246322e0 :ac230014 :3c030000 :24632380 :ac230018 :3c030000 :24632430 :ac230028 :3c030000 :24632330 :ac23001c :3c030000 :24632358 :ac230020 :3c030000 :246323dc :ac230024 :3c030000 :24632458 :ac23002c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d290:3a206d65 :6d6f7279 :2e632c76 :20312e31 :20323030 :302f3039 :2f323020 :30313a35 :303a3139 :20656c6d :20457870 :20656c6d :20303030 00002570:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffec20 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffebdc :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffeb98 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d2c4:ffffffff 00002a0c:afbefffc :001df020 :afbffff8 :2fbd0008 :3c01ffff :24210000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d2c8:53657420 :66726565 :6d617020 :656e7472 :79202564 :20746f20 :30782578 :2e0a00 00002a3c:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fdf0004 :00031020 :74610000 :14200008 :54000000 :2062001f :5c450005 :50a10005 :00611822 :20010001 :00231004 :3c010000 :2421d2c4 :8c210000 :00411026 :50a10002 :3c060000 :24c6d438 :00262020 :8c810000 :00221024 :03e30804 :00410825 :ac810000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2006006d :afa60004 :0c001354 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c00132c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6d2c8 :afa60000 :afa50004 :8c840000 :afa40008 :0c0084b0 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d2e8:4d617020 :68617320 :25642065 :6e747269 :65732c20 :6d656d6f :72792073 :697a6520 :69732030 :7825782e :0a00 0000d314:46726565 :20706167 :65732073 :74617274 :20776974 :68207061 :67652023 :20307825 :782e0a00 0000d338:496e6974 :69616c69 :7a656420 :25642066 :72656520 :70616765 :732e0a00 00002b6c:afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :3c01ffff :24210000 :8c220000 :74410000 :14200008 :54000000 :2442ffff :5c480010 :3c030000 :2463d42c :3c010001 :24212df8 :8c210000 :2422fffc :74410000 :14200008 :54000000 :2442ffff :5c410010 :ac610000 :3c030000 :2463d430 :2102001f :74410000 :14200008 :54000000 :2102003e :5c410005 :ac610000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200b006d :afab0004 :0c001200 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c0011d8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256bd2e8 :afab0000 :8c610000 :afa10004 :afa80008 :0c00835c :54000000 :23bd0010 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200b006d :afab0004 :0c001180 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c001158 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256bd314 :afab0000 :3c010000 :2421d42c :8c210000 :afa10004 :0c0082d8 :54000000 :23bd0008 :20020000 :3c040000 :2484d430 :8c810000 :0041082a :1020002c :54000000 :3c030000 :2463d438 :200b0000 :ac6b0000 :20630004 :20420001 :8c810000 :0041082a :1420ffe4 :54000000 :3c020000 :2442d434 :200b0000 :ac4b0000 :3c010000 :2421d42c :8c240000 :0088082a :10200104 :54000000 :00023820 :200a0001 :3c090000 :2529d2c4 :8ce10000 :20210001 :ace10000 :00041020 :74810000 :14200008 :54000000 :2082001f :5c460005 :50c10005 :00810822 :01411804 :8d210000 :00611026 :50c10002 :3c0b0000 :256bd438 :002b2820 :8ca10000 :00220824 :00230825 :aca10000 :23bdfff8 :3c0b0000 :256bfd60 :afab0000 :200b006d :afab0004 :0c001028 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c0b0000 :256bfd60 :afab0000 :200b002b :afab0004 :0c000ff8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256bd2c8 :afab0000 :afa60004 :8ca50000 :afa50008 :0c00817c :54000000 :23bd0010 :20840001 :0088082a :1420ff14 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200b006d :afab0004 :0c000f90 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c000f68 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256bd338 :afab0000 :3c010000 :2421d434 :8c210000 :afa10004 :0c0080e8 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d354:00000000 :4552524f :52204154 :20544849 :5320504f :494e540a :00 0000d370:416c6c6f :63617469 :6e67206d :656d6f72 :792c2073 :74617274 :696e6720 :77697468 :20706167 :65202564 :0a00 0000d39c:416c6c6f :63617465 :64206d65 :6d6f7279 :2c206672 :6f6d206d :61702025 :642c2070 :61676520 :25642c20 :6d61703d :30782578 :2e0a00 00002f48:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :3c010000 :2421d434 :8c210000 :64210000 :1420002c :54000000 :23bdfff8 :3c070000 :24e7d358 :afa70000 :0c008050 :54000000 :20010000 :23bd0008 :08000238 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2007006d :afa70004 :0c000e68 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000e40 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c070000 :24e7d370 :afa70000 :3c010000 :2421d354 :8c210000 :afa10004 :0c007fc0 :54000000 :23bd0008 :3c020000 :2442d354 :8c410000 :3c040000 :2484d438 :50210002 :00240820 :8c210000 :64210000 :1420004c :54000000 :3c010000 :2421d430 :8c230000 :8c410000 :20210001 :ac410000 :0023082d :1020000c :54000000 :20070000 :ac470000 :8c410000 :50210002 :00240820 :8c210000 :64210000 :1020ffc8 :54000000 :3c010000 :2421d354 :8c210000 :50210002 :3c070000 :24e7d438 :00270820 :8c230000 :201f0000 :30610001 :14200020 :54000000 :20020001 :23ff0001 :005f0804 :00610824 :64210000 :1020ffec :54000000 :20010001 :003f1004 :3c010000 :2421d2c4 :8c210000 :00412026 :3c050000 :24a5d354 :8ca30000 :3c060000 :24c6d438 :50610002 :00261020 :8c410000 :00240824 :ac410000 :50610005 :003f1820 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2007006d :afa70004 :0c000cdc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000cb4 :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070000 :24e7d39c :afa70000 :8ca10000 :afa10004 :afa30008 :50210002 :00260820 :8c210000 :afa1000c :0c007e28 :54000000 :23bd0010 :3c010000 :2421d434 :8c220000 :2042ffff :ac220000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d3d0:46726565 :64207061 :67652030 :7825782c :20256420 :72656d61 :696e696e :672e0a00 00003210:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc60000 :20030001 :00061020 :74c10000 :14200008 :54000000 :20c2001f :5c450005 :50a10005 :00c10822 :00611804 :3c010000 :2421d2c4 :8c210000 :00611026 :50a10002 :3c070000 :24e7d438 :00272020 :8c810000 :00220824 :00230825 :ac810000 :23bdfff8 :3c070000 :24e7fd60 :afa70000 :2007006d :afa70004 :0c000b84 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c070000 :24e7fd60 :afa70000 :2007002b :afa70004 :0c000b54 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7d2c8 :afa70000 :afa50004 :8c840000 :afa40008 :0c007cd8 :54000000 :23bd0010 :3c020000 :2442d434 :8c410000 :20210001 :ac410000 :23bdfff8 :3c030000 :2463fd60 :afa30000 :2007006d :afa70004 :0c000ae8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0c000ac0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7d3d0 :afa70000 :afa60004 :8c420000 :afa20008 :0c007c44 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc10004 :583f0010 :3022ffff :8c610064 :03e1082b :14200024 :54000000 :53e10002 :00230820 :8c210060 :2004fff8 :00240824 :00220820 :08000008 :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50004 :8fc40008 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afa50000 :afbf0004 :afa20008 :0c000c9c :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50008 :8fc40004 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce10064 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afbf0000 :afa50004 :afa20008 :0c000b74 :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :50210010 :34210001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :23bdfff8 :97c10000 :afa10000 :0ffffb14 :54000000 :23bd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :201ffff8 :003f0824 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d3f0:00003404 :4f706572 :616e6420 :666f7220 :696e7374 :72756374 :696f6e20 :25303878 :20697320 :30782578 :20287265 :673d3c25 :642c3078 :25783e29 :0a00 00003748:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc50004 :58a1001a :203fffe0 :6fe1000f :14200020 :54000000 :3c010000 :2421d3f0 :8c210000 :003f0806 :30210001 :10200010 :54000000 :2001ffff :080000c4 :54000000 :58a10015 :3026001f :30bfffff :5be1000f :10200010 :54000000 :3c07ffff :24e70000 :03e7f825 :8c420000 :50c10002 :00220820 :8c230028 :007f2020 :23bdfff8 :3c020000 :2442fd60 :afa20000 :2007006d :afa70004 :0c00062c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000604 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070000 :24e7d3f4 :afa70000 :afa50004 :afa40008 :afa6000c :afa30010 :0c007784 :54000000 :23bd0018 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000038a0:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffcef4 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffceb0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffce6c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f438:00002710 :456e7465 :72696e67 :2050726f :63657373 :4d6f6475 :6c65496e :69740a00 0000f458:496e6974 :69616c69 :7a696e67 :20504342 :20256420 :40203078 :25782e0a :00 0000f478:4c656176 :696e6720 :50726f63 :6573734d :6f64756c :65496e69 :740a00 00004738:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff6b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff68c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080000 :2508f43c :afa80000 :0c00681c :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fe2c :afa20000 :0c0038c4 :54000000 :3c080000 :2508fe38 :afa80000 :0c0038b0 :54000000 :3c080000 :2508fe44 :afa80000 :0c00389c :54000000 :3c080000 :2508fe50 :afa80000 :0c003888 :54000000 :20040000 :23bd0008 :3c070000 :24e7fd60 :3c010000 :2421fe5c :00022820 :20220068 :00011820 :00033020 :23bdfff8 :afa70000 :20080070 :afa80004 :0ffff5cc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa70000 :2008002b :afa80004 :0ffff5a4 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080000 :2508f458 :afa80000 :afa40004 :afa60008 :0c00672c :54000000 :23bd0010 :20080001 :ac68000c :20080000 :ac480000 :ac43000c :ac450008 :ac450004 :8ca80000 :ac480000 :aca20000 :8c410000 :ac220004 :8ca10008 :20210001 :aca10008 :20420078 :20630078 :20c60078 :20840001 :7081001f :1420ff38 :54000000 :3c010000 :2421fe28 :20080000 :ac280000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff4e8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff4c0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080000 :2508f478 :afa80000 :0c006650 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8c61000c :201fffc0 :003f0824 :00220825 :ac61000c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030000 :2463fe2c :20820068 :8c610004 :ac830070 :ac81006c :8c250000 :ac450000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8c810064 :0041082a :10200038 :54000000 :00041820 :23bdfff8 :8c650060 :afa50000 :0fffec34 :54000000 :23bd0008 :20630004 :20420001 :8c810064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe738 :54000000 :23bd0008 :8c81000c :2005ffc0 :00250824 :34210001 :ac81000c :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdf0004 :ac3f002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f494:4e6f7720 :656e7465 :72696e67 :2050726f :63657373 :53636865 :64756c65 :20286375 :723d3078 :25782c20 :25642072 :65616479 :290a00 0000f4c8:4e6f2072 :756e6e61 :626c6520 :70726f63 :65737365 :73202d20 :65786974 :696e6721 :0a00 0000f4ec:41626f75 :7420746f :20737769 :74636820 :746f2050 :43422030 :7825782c :666c6167 :733d3078 :25782040 :20307825 :780a00 0000f51c:46726565 :696e6720 :7a6f6d62 :69652050 :43422030 :7825782e :0a00 0000f538:4c656176 :696e6720 :50726f63 :65737353 :63686564 :756c6520 :28637572 :3d307825 :78290a00 00004b4c:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff2a0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff278 :54000000 :23bd0008 :64210000 :10200040 :54000000 :3c010000 :2421fe38 :8c220008 :23bdfff0 :3c080000 :2508f494 :afa80000 :3c010000 :2421fe28 :8c210000 :afa10004 :afa20008 :0c0063e8 :54000000 :23bd0010 :3c050000 :24a5fe38 :8ca10008 :60210000 :10200028 :54000000 :23bdfff8 :3c080000 :2508f4c8 :afa80000 :0c0063b4 :54000000 :0c006394 :54000000 :23bd0008 :8ca10000 :8c24000c :3c010000 :2421fe28 :8c210000 :00810828 :10200078 :54000000 :20830068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8c680000 :ac280000 :8c610000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :ac680000 :8ca10004 :ac850070 :ac81006c :8c280000 :ac680000 :ac230000 :8c610000 :ac230004 :8ca10008 :20210001 :aca10008 :3c010000 :2421fe38 :8c210000 :8c24000c :3c010000 :2421fe28 :ac240000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0ffff120 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff0f8 :54000000 :23bd0008 :64210000 :10200038 :54000000 :23bdfff0 :3c080000 :2508f4ec :afa80000 :afa40004 :8c88000c :afa80008 :8c810004 :8c210128 :afa1000c :0c006270 :54000000 :23bd0010 :3c070000 :24e7fe50 :3c060000 :24c6fd60 :3c050000 :24a5fe2c :8ce10008 :60210000 :1420016c :54000000 :8ce10000 :8c24000c :23bdfff8 :afa60000 :20080070 :afa80004 :0ffff06c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa60000 :2008002b :afa80004 :0ffff044 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c080000 :2508f51c :afa80000 :afa40004 :0c0061d0 :54000000 :23bd0008 :209f0068 :8c810070 :8c210008 :6c210000 :1020002c :54000000 :8c81006c :8fe80000 :ac280000 :8fe10000 :8c88006c :ac280004 :8c820070 :8c410008 :2021ffff :ac410008 :20080000 :afe80000 :8ca10004 :ac850070 :ac81006c :8c280000 :afe80000 :ac3f0000 :8fe10000 :ac3f0004 :8ca10008 :20210001 :aca10008 :20030000 :8c810064 :0061082a :10200038 :54000000 :00041020 :23bdfff8 :8c480060 :afa80000 :0fffe81c :54000000 :23bd0008 :20420004 :20630001 :8c810064 :0061082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe320 :54000000 :23bd0008 :8c81000c :2008ffc0 :00280824 :34210001 :ac81000c :0bfffe8c :54000000 :23bdfff8 :3c010000 :2421f438 :8c210000 :afa10000 :0c0044d0 :54000000 :3c020000 :2442fd60 :afa20000 :20080070 :afa80004 :0fffeeec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0fffeec4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c080000 :2508f538 :afa80000 :3c010000 :2421fe28 :8c210000 :afa10004 :0c006044 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f55c:53757370 :656e6469 :6e672050 :43422030 :78257820 :28257329 :2e0a00 0000f578:25733a20 :25730a00 0000f580:50726f63 :65737353 :75737065 :6e6400 0000f590:54727969 :6e672074 :6f207375 :7370656e :64206120 :6e6f6e2d :72756e6e :696e6720 :70726f63 :65737321 :0a00 00004fe0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffee18 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffedf0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c040000 :2484f55c :afa40000 :afa30004 :20610010 :afa10008 :0c005f74 :54000000 :23bd0010 :8064000f :58810001 :30210001 :14200038 :54000000 :23bdfff0 :3c040000 :2484f578 :afa40000 :3c010000 :2421f580 :afa10004 :3c040000 :2484f590 :afa40008 :0c005f2c :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210004 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020000 :2442fe44 :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f5bc:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 0000f5d4:50726f63 :65737357 :616b6575 :7000 0000f5e4:54727969 :6e672074 :6f207761 :6b652075 :70206120 :6e6f6e2d :736c6565 :70696e67 :2070726f :63657373 :210a00 00005178:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffec80 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffec58 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040000 :2484f5bc :afa40000 :afa30004 :0c005de4 :54000000 :23bd0008 :8064000f :58810002 :30210001 :14200038 :54000000 :23bdfff0 :3c040000 :2484f578 :afa40000 :3c010000 :2421f5d4 :afa10004 :3c040000 :2484f5e4 :afa40008 :0c005d9c :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210002 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020000 :2442fe38 :8c410004 :ac620070 :ac61006c :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f610:456e7465 :72696e67 :2050726f :63657373 :44657374 :726f7920 :666f7220 :30782578 :2e0a00 0000f634:4c656176 :696e6720 :50726f63 :65737344 :65737472 :6f792066 :6f722030 :7825782e :0a00 00005308:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffeaf0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffeac8 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040000 :2484f610 :afa40000 :afa30004 :0c005c54 :54000000 :23bd0008 :8c61000c :2004ffc0 :00240824 :34210010 :ac61000c :207f0068 :8c610070 :8c210008 :6c210000 :1020002c :54000000 :8c61006c :8fe40000 :ac240000 :8fe10000 :8c64006c :ac240004 :8c620070 :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020000 :2442fe50 :ac620070 :ac62006c :8c440000 :afe40000 :ac5f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20040070 :afa40004 :0fffe9ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffe9c4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040000 :2484f634 :afa40000 :afa30004 :0c005b50 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :00000000 000054c4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :64410000 :10200020 :54000000 :3c010000 :2421f658 :ac220000 :3c010000 :2421f65c :20050000 :ac250000 :3c1f0000 :27fff65c :8fe30000 :3c010000 :2421f658 :8c220000 :00430820 :90210000 :64210000 :10200010 :54000000 :6c610062 :10200020 :54000000 :20010000 :08000058 :54000000 :23e10001 :ac410000 :08000044 :54000000 :70610063 :10200038 :54000000 :00022020 :001f1020 :8c5f0000 :009f0820 :90210000 :64210000 :1020ffc8 :54000000 :23e10001 :ac410000 :70210063 :1420ffd8 :54000000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f660:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 0000f680:456e7465 :72696e67 :2050726f :63657373 :466f726b :20617267 :733d3078 :25782030 :78257820 :25732025 :640a00 0000f6ac:46415441 :4c206572 :726f723a :206e6f20 :66726565 :2070726f :63657373 :6573210a :00 0000f6d0:476f7420 :61206c69 :6e6b2040 :20307825 :780a00 0000f6e4:4265666f :72652072 :6573746f :72652069 :6e746572 :72757074 :2076616c :75652069 :73203078 :25782e0a :00 0000f710:4e657720 :696e7465 :72727570 :74207661 :6c756520 :69732030 :7825782e :0a00 0000f730:61464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65206d65 :6d6f7279 :202d206e :6f206672 :65652070 :61676573 :210a00 0000f764:62464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65207379 :7374656d :20737461 :636b202d :206e6f20 :66726565 :20706167 :6573210a :00 0000f7a0:53657474 :696e6720 :75702050 :43422040 :20307825 :78202873 :79732073 :7461636b :3d307825 :782c206d :656d3d30 :7825782c :2073697a :653d3078 :2578290a :00 0000f7e0:41626f75 :7420746f :206c6f61 :64202573 :0a00 0000f7f4:46696c65 :20257320 :2d3e2073 :74617274 :3d307825 :3038780a :00 0000f810:46696c65 :20257320 :2d3e2063 :6f646520 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 0000f838:46696c65 :20257320 :2d3e2064 :61746120 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 0000f860:506c6163 :696e6720 :25642062 :79746573 :20617420 :76616464 :72202530 :38782e0a :00 0000f884:53657474 :696e6720 :63757272 :656e7450 :43423d30 :7825782c :20737461 :636b6672 :616d653d :30782578 :0a00 0000f8b0:4c656176 :696e6720 :50726f63 :65737346 :6f726b20 :28257329 :0a00 000055cc:afbefffc :001df020 :afbffff8 :2fbd02d8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :afad002c :8fc50000 :8fca0004 :8fcc0008 :8fc4000c :200d0000 :afcdfd58 :23bdfff8 :200d000f :afad0000 :0fffbc54 :54000000 :00011820 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0049 :afad0004 :0fffe7d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe7b0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf660 :afad0000 :afa30004 :0c00593c :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe760 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe738 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c0d0000 :25adf680 :afad0000 :afa50004 :afaa0008 :afac000c :afa40010 :0c0058b8 :54000000 :23bd0018 :3c020000 :2442fe2c :8c410008 :60210000 :10200028 :54000000 :23bdfff8 :3c0d0000 :25adf6ac :afad0000 :0c005884 :54000000 :0c005864 :54000000 :23bd0008 :8c490000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe69c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe674 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf6d0 :afad0000 :afa90004 :0c005800 :54000000 :23bd0008 :8d210008 :8c210008 :6c210000 :1020002c :54000000 :8d210004 :8d2d0000 :ac2d0000 :8d210000 :8d2d0004 :ac2d0004 :8d220008 :8c410008 :2021ffff :ac410008 :200d0000 :ad2d0000 :8d26000c :8cc1000c :200dffc0 :002d0824 :34210002 :acc1000c :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0049 :afad0004 :0fffe5c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe5a0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffba18 :54000000 :23bdfff8 :3c0d0000 :25adf6e4 :afad0000 :afa10004 :0c005724 :54000000 :23bd0008 :23bdfff8 :afa30000 :0fffb9ac :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0049 :afad0004 :0fffe534 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe50c :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffb984 :54000000 :23bdfff8 :3c0d0000 :25adf710 :afad0000 :afa10004 :0c005690 :54000000 :23bd0008 :23bdfff8 :20c10010 :afa10000 :afac0004 :0fffdffc :54000000 :200d0001 :accd0064 :0fffd5c0 :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0000 :25adf730 :afad0000 :0c005638 :54000000 :0c005618 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fffdcdc :54000000 :acc10060 :0fffd56c :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0d0000 :25adf764 :afad0000 :0c0055e4 :54000000 :0c0055c4 :54000000 :23bd0008 :50410010 :acc10008 :3428fe8c :acc80004 :acc80000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe3ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe3c4 :54000000 :23bd0008 :64210000 :10200040 :54000000 :23bdffe8 :3c0d0000 :25adf7a0 :afad0000 :afa60004 :8ccd0008 :afad0008 :8ccd0060 :afad000c :8cc10064 :50210010 :afa10010 :0c005534 :54000000 :23bd0018 :200d0000 :ad0d0028 :20c10060 :ad010138 :8ccd0064 :ad0d013c :3c010010 :24210010 :ad010140 :64810000 :10200640 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe328 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe300 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf7e0 :afad0000 :afac0004 :0c00548c :54000000 :23bd0008 :23bdffe8 :afac0000 :23c1fd6c :afa10004 :23c1fd68 :afa10008 :23c1fd64 :afa1000c :23c1fd60 :afa10010 :23c1fd5c :afa10014 :0c0007b0 :54000000 :00012820 :23bd0018 :68a10000 :102000bc :54000000 :3c030000 :2463fe2c :20c20068 :8c610004 :acc30070 :acc1006c :8c2d0000 :ac4d0000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :20020000 :8cc10064 :0041082a :10200038 :54000000 :00061820 :23bdfff8 :8c6d0060 :afad0000 :0fffdac8 :54000000 :23bd0008 :20630004 :20420001 :8cc10064 :0041082a :1420ffd4 :54000000 :23bdfff8 :94c10008 :afa10000 :0fffd5cc :54000000 :23bd0008 :8cc1000c :200dffc0 :002d0824 :34210001 :acc1000c :2001ffff :080006a0 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe1ac :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe184 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0000 :25adf7f4 :afad0000 :afac0004 :8fcdfd6c :afad0008 :0c005308 :54000000 :23bd0010 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe12c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe104 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0000 :25adf810 :afad0000 :afac0004 :8fcdfd68 :afad0008 :8fcdfd64 :afad000c :0c005280 :54000000 :23bd0010 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffe0a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffe07c :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0d0000 :25adf838 :afad0000 :afac0004 :8fcdfd60 :afad0008 :8fcdfd5c :afad000c :0c0051f8 :54000000 :23bd0010 :23c3ff90 :23c7fd58 :3c040000 :2484fd60 :23bdfff0 :afa50000 :afa30004 :afa70008 :200d0064 :afad000c :0c000984 :54000000 :00011020 :23bd0010 :6c410000 :102000b0 :54000000 :23bdfff8 :afa40000 :200d0070 :afad0004 :0fffdfe0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :200d002b :afad0004 :0fffdfb8 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0d0000 :25adf860 :afad0000 :afa20004 :8fc1fd58 :00220822 :afa10008 :0c005138 :54000000 :23bd0010 :23bdfff0 :afa60000 :afa30004 :8fc1fd58 :00220822 :afa10008 :afa2000c :0fffd580 :54000000 :23bd0010 :0bffff24 :54000000 :23bdfff8 :afa50000 :0fffbbfc :54000000 :200d0100 :ad0d012c :240dfc00 :ad0d009c :23bdfff8 :afa60000 :afaa0004 :8d0d009c :afad0008 :200d03e0 :afad000c :0fffd530 :54000000 :23bd0010 :65410000 :10200020 :54000000 :3c010000 :2421f658 :ac2a0000 :3c010000 :2421f65c :200d0000 :ac2d0000 :3c030000 :2463f65c :8c640000 :3c010000 :2421f658 :8c220000 :00440820 :90210000 :64210000 :10200010 :54000000 :6c810062 :10200020 :54000000 :20030000 :08000054 :54000000 :20410001 :ac610000 :08000040 :54000000 :70810063 :10200034 :54000000 :00022820 :8c620000 :00a20820 :90210000 :64210000 :1020ffcc :54000000 :20410001 :ac610000 :70210063 :1420ffd8 :54000000 :00041820 :2402fc00 :00620820 :afc1fd78 :20070003 :3c040000 :2484f65c :3c0b0000 :256bf658 :00025020 :23c50004 :8c9f0000 :8d630000 :007f0820 :90210000 :64210000 :10200010 :54000000 :6fe10062 :10200020 :54000000 :20030000 :08000054 :54000000 :20610001 :ac810000 :08000040 :54000000 :73e10063 :10200034 :54000000 :00031020 :8c830000 :00430820 :90210000 :64210000 :1020ffcc :54000000 :20610001 :ac810000 :70210063 :1420ffd8 :54000000 :001f1820 :006a0820 :aca1fd78 :64610000 :10200014 :54000000 :20a50004 :20e70001 :0bffff5c :54000000 :20e1fffe :afc1fd70 :50210002 :01410822 :afc1fd74 :23bdfff0 :afa60000 :23c1fd70 :afa10004 :50e20002 :8d01009c :00220822 :afa10008 :afa2000c :0fffd360 :54000000 :8d01009c :00220822 :ad01009c :8fcdfd6c :ad0d0128 :8cc1000c :34210200 :acc1000c :23bd0010 :08000038 :54000000 :3c0d0000 :25ad7ad4 :ad0d00a4 :8cc10008 :2421ffe0 :ad01009c :ac2a0000 :ad050128 :200d0140 :ad0d012c :8cc1000c :34210100 :acc1000c :23bdfff8 :200d000f :afad0000 :0fffb118 :54000000 :23bd0008 :3c030000 :2463fe38 :8c620004 :ad230008 :ad220004 :8c4d0000 :ad2d0000 :ac490000 :8d220000 :ac490004 :8c620008 :20420001 :ac620008 :23bdfff8 :afa10000 :0fffb0d0 :54000000 :23bd0008 :3c010000 :2421fe28 :8c210000 :64210000 :14200090 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffdc40 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdc18 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0d0000 :25adf884 :afad0000 :afa60004 :8ccd0000 :afad0008 :0c004d9c :54000000 :23bd0010 :3c010000 :2421fe28 :ac260000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200d0070 :afad0004 :0fffdbb4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200d002b :afad0004 :0fffdb8c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0d0000 :25adf8b0 :afad0000 :afac0004 :0c004d18 :54000000 :23bd0008 :3c0d0000 :25adfe5c :00cd1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fad002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f8cc:50726f63 :65737347 :6574436f :6465496e :666f3a20 :6f70656e :206f6620 :25732066 :61696c65 :64202825 :64292e0a :00 0000f8fc:46696c65 :20646573 :63726970 :746f7220 :6973206e :6f772025 :642e0a00 0000f918:50726f63 :65737347 :6574436f :6465496e :666f3a20 :72656164 :20676f74 :20256420 :286e6f74 :20256429 :20627974 :65732066 :726f6d20 :25730a00 0000f950:73746172 :743a00 0000f958:50726f63 :65737347 :6574436f :6465496e :666f3a20 :2573206d :69737369 :6e672073 :74617274 :206c696e :6520286e :6f742061 :20444c58 :20657865 :63757461 :626c653f :290a00 0000634c:afbefffc :001df020 :afbffff8 :2fbd00a8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc60000 :8fc70004 :8fc80008 :8fc9000c :8fca0010 :8fcb0014 :23bdfff8 :afa60000 :200c0001 :afac0004 :0fffb3e4 :54000000 :00011820 :23bd0008 :68610000 :10200088 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffda4c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffda24 :54000000 :23bd0008 :64210000 :10200224 :54000000 :23bdfff0 :3c0c0000 :258cf8cc :afac0000 :afa60004 :afa30008 :0c004bac :54000000 :23bd0010 :080001f8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd9c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd9a0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0000 :258cf8fc :afac0000 :afa30004 :0c004b2c :54000000 :23bd0008 :23bdfff0 :afa30000 :23c4ff90 :afa40004 :200c0064 :afac0008 :0fffb718 :54000000 :00012820 :23bd0010 :64a10064 :102000a8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd91c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd8f4 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0c0000 :258cf918 :afac0000 :afa50004 :200c0064 :afac0008 :afa6000c :0c004a74 :54000000 :23bd0010 :23bdfff8 :afa30000 :0fffb568 :54000000 :2001ffff :23bd0008 :080001d0 :54000000 :23bdfff8 :afa40000 :3c010000 :2421f950 :afa10004 :0fffd664 :54000000 :23bd0008 :64210000 :14200088 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd84c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd824 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0000 :258cf958 :afac0000 :afa60004 :0c0049b0 :54000000 :23bd0008 :2001ffff :08000120 :54000000 :23bdfff8 :afa40000 :200c003a :afac0004 :0fffd7d0 :54000000 :20210001 :afc1ff8c :23bdfff8 :afa10000 :23c2ff8c :afa20004 :200c0010 :afac0008 :0fffd930 :54000000 :ace10000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd910 :54000000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8f4 :54000000 :ad010000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8d4 :54000000 :ad210000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd8b4 :54000000 :ad410000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffd894 :54000000 :ad610000 :afa40000 :200c000a :afac0004 :0fffd6f4 :54000000 :23c2ff8f :00220822 :afa30000 :afa10004 :200c0000 :afac0008 :0fffb694 :54000000 :00030820 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f99c:476f7420 :25642062 :79746573 :20617420 :6f666673 :65742025 :64202e2e :2e00 0000f9bc:20746572 :6d696e61 :74656420 :61742025 :642e0a00 0000f9d0:42756666 :65722069 :73202725 :73270a00 0000f9e0:4e657720 :61646472 :65737320 :69732030 :7825782e :0a00 0000f9f8:5365656b :696e6720 :746f2025 :6420616e :64207265 :7475726e :696e6720 :25642062 :79746573 :210a00 000067ac:afbefffc :001df020 :afbffff8 :2fbd0110 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fca0000 :8fc70008 :8fc2000c :8fcb0004 :23c3ff28 :afc3ff24 :23bdfff0 :afaa0000 :200c0000 :afac0004 :200c0001 :afac0008 :0fffb5d8 :54000000 :00014820 :50420001 :23bd0010 :6c4100c8 :10200008 :54000000 :200200c8 :23bdfff0 :afaa0000 :afa30004 :afa20008 :0fffb3ac :54000000 :00012820 :23bd0010 :70a10000 :10200010 :54000000 :20010000 :08000594 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd5a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd57c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c0c0000 :258cf99c :afac0000 :afa50004 :afa90008 :0c004704 :54000000 :23bd0010 :20a5ffff :23c1ff28 :00251020 :0800000c :54000000 :2042ffff :20a5ffff :90410000 :6421000a :1420ffec :54000000 :23c1ff29 :00250820 :200c005a :a02c0000 :23c1ff2a :00250820 :200c0000 :a02c0000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd4dc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd4b4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0000 :258cf9bc :afac0000 :afa50004 :0c004640 :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd464 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd43c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0000 :258cf9d0 :afac0000 :23c1ff28 :afa10004 :0c0045c4 :54000000 :23bd0008 :20050000 :3c080000 :2508fd60 :23bdfff8 :8fccff24 :afac0000 :200c005a :afac0004 :0fffd3e0 :54000000 :23bd0008 :64210000 :102002ec :54000000 :23bdfff8 :8fccff24 :afac0000 :200c003a :afac0004 :0fffd3b4 :54000000 :23bd0008 :64210000 :102002c0 :54000000 :8fc2ff24 :90410000 :6421003a :102000b8 :54000000 :6ca10000 :142002a0 :54000000 :23bdfff0 :afa20000 :23c1ff24 :afa10004 :200c0010 :afac0008 :0fffd4ec :54000000 :ace10000 :afa80000 :200c0066 :afac0004 :0fffd34c :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa80000 :200c002b :afac0004 :0fffd324 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0000 :258cf9e0 :afac0000 :8ce10000 :afa10004 :0c0044ac :54000000 :23bd0008 :8fc1ff24 :90210000 :6421003a :142001f8 :54000000 :8fc1ff24 :20210001 :afc1ff24 :00ab3020 :8fc1ff24 :08000010 :54000000 :8fc1ff24 :20210001 :afc1ff24 :903f0000 :63e10020 :1420ffe8 :54000000 :63e10009 :1420ffdc :54000000 :8fc2ff24 :805f0000 :33e300ff :6061000a :10200014 :54000000 :20410001 :afc1ff24 :0bfffe78 :54000000 :20020000 :23e1ffd0 :302100ff :70210009 :14200024 :54000000 :23e1ff9f :302100ff :70210005 :14200010 :54000000 :64610041 :14200008 :54000000 :20020001 :64410000 :1020fe30 :54000000 :8fc1ff24 :80220001 :20030000 :2041ffd0 :302100ff :70210009 :14200028 :54000000 :2041ff9f :302100ff :70210005 :14200014 :54000000 :304100ff :64210041 :14200008 :54000000 :20030001 :64610000 :1020fddc :54000000 :8fc1ff24 :90220000 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f2020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2044ffa9 :0800001c :54000000 :2061ffbf :70210005 :20040000 :10200008 :54000000 :2064ffc9 :8fc1ff24 :90220001 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f1020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2042ffa9 :0800001c :54000000 :2061ffbf :70210005 :20020000 :10200008 :54000000 :2062ffc9 :50810004 :00220820 :a0c10000 :20c60001 :20a50001 :8fc1ff24 :20210002 :afc1ff24 :8ce10000 :20210001 :ace10000 :0bfffe20 :54000000 :23bdfff0 :afaa0000 :8fc1ff24 :00290820 :23c3ff28 :00230822 :afa10004 :200c0000 :afac0008 :0fffb07c :54000000 :3c020000 :2442fd60 :afa20000 :200c0066 :afac0004 :0fffd0a0 :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd078 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0c0000 :258cf9f8 :afac0000 :8fc1ff24 :00290820 :00230822 :afa10004 :afa50008 :0c0041f4 :54000000 :23bd0010 :00050820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000fa98:476f7420 :25642061 :7267756d :656e7473 :2e0a00 0000faac:41766169 :6c61626c :65206d65 :6d6f7279 :3a203078 :2578202d :3e203078 :25782e0a :00 0000fad0:41726775 :6d656e74 :20636f75 :6e742069 :73202564 :2e0a00 0000fae8:41726775 :6d656e74 :20256420 :69732025 :732e0a00 0000fafc:436f6e76 :65727465 :64202573 :20746f20 :25643d25 :730a00 0000fbdc:25303878 :3a202530 :32782530 :32782530 :32782530 :32780a00 0000fbf4:4f707469 :6f6e2025 :73206e6f :74207265 :636f676e :697a6564 :2e0a00 0000fc10:41626f75 :7420746f :20696e69 :7469616c :697a6520 :71756575 :65732e0a :00 0000fc30:41667465 :7220696e :69746961 :6c697a69 :6e672071 :75657565 :732e0a00 0000fc4c:41667465 :7220696e :69746961 :6c697a69 :6e67206d :656d6f72 :792e0a00 0000fc68:41667465 :7220696e :69746961 :6c697a69 :6e672070 :726f6365 :73736573 :2e0a00 0000fc88:41667465 :7220696e :69746961 :6c697a69 :6e672073 :796e6368 :726f6e69 :7a617469 :6f6e2074 :6f6f6c73 :2e0a00 0000fcb4:41667465 :7220696e :69746961 :6c697a69 :6e67206b :6579626f :6172642e :0a00 0000fcd4:766d00 0000fcd8:564d2044 :65736372 :6970746f :72206973 :2025640a :00 0000fcf0:43726561 :74656420 :70726f63 :65737365 :73202d20 :61626f75 :7420746f :20736574 :2074696d :65722071 :75616e74 :756d2e0a :00 0000fd24:53657420 :74696d65 :72207175 :616e7475 :6d20746f :2025642c :2061626f :75742074 :6f207275 :6e206669 :72737420 :70726f63 :6573732e :0a00 00006e44:afbefffc :001df020 :afbffff8 :2fbd00c8 :8fce0000 :8fd40004 :0c0040f4 :54000000 :20100000 :20150000 :afd5ff50 :afd5ff54 :afd5ff58 :afd5ff5c :afd5ff60 :afd5ff64 :afd5ff68 :afd5ff6c :afd5ff70 :afd5ff74 :afd5ff78 :afd5ff7c :3c010000 :2421fd60 :20150000 :a0350001 :0c0009e4 :54000000 :23bdfff8 :3c150000 :26b5fa98 :afb50000 :afae0004 :0c004120 :54000000 :0fffbb38 :54000000 :23bdfff8 :3c150000 :26b5faac :afb50000 :3c020001 :24422df8 :8c420000 :afa20004 :afa10008 :0c0040ec :54000000 :3c150000 :26b5fad0 :afb50000 :afae0004 :0c0040d4 :54000000 :20090000 :23bd0010 :012e082a :10200044 :54000000 :00141020 :23bdfff0 :3c150000 :26b5fae8 :afb50000 :afa90004 :8c550000 :afb50008 :0c004098 :54000000 :23bd0010 :20420004 :21290001 :012e082a :1420ffc8 :54000000 :0fffb50c :54000000 :20090000 :012e082a :1020033c :54000000 :23ccff80 :23cdff38 :3c0f0000 :25effb13 :21f20001 :21f10002 :00144020 :8d020000 :90410000 :6021002d :102002f8 :54000000 :90420001 :60410066 :142000e0 :54000000 :6c410066 :14200018 :54000000 :60410044 :102002a0 :54000000 :08000024 :54000000 :60410069 :14200048 :54000000 :60410075 :10200280 :54000000 :08000260 :54000000 :23bdfff8 :3c150000 :26b5fd60 :afb50000 :21080004 :21290001 :8d010000 :afa10004 :0fffc948 :54000000 :08000268 :54000000 :23bdfff0 :21080004 :21290001 :8d150000 :afb50000 :20150000 :afb50004 :afb50008 :0fffcf60 :54000000 :00011820 :afa10000 :afac0004 :0fffce40 :54000000 :3c150000 :26b5fafc :afb50000 :8d010000 :afa10004 :afa30008 :afac000c :0c003f58 :54000000 :23bd0010 :08000200 :54000000 :20150000 :afd5ff38 :23bdffe8 :21080004 :21290001 :8d150000 :afb50000 :23c1ff4c :afa10004 :23c1ff48 :afa10008 :23c1ff44 :afa1000c :23c1ff40 :afa10010 :23c1ff3c :afa10014 :0ffff260 :54000000 :00015020 :3c150000 :26b5f7f4 :afb50000 :8d010000 :afa10004 :8fd5ff4c :afb50008 :0c003ed8 :54000000 :3c150000 :26b5f810 :afb50000 :8d010000 :afa10004 :8fd5ff48 :afb50008 :8fd5ff44 :afb5000c :0c003eac :54000000 :3c150000 :26b5f838 :afb50000 :8d010000 :afa10004 :8fd5ff40 :afb50008 :8fd5ff3c :afb5000c :0c003e80 :54000000 :23bd0018 :3c0b0000 :256bfb16 :23bdfff0 :afaa0000 :3c150000 :26b5fb13 :afb50004 :afad0008 :201500c8 :afb5000c :0ffff60c :54000000 :00011820 :23bd0010 :6c610000 :10200098 :54000000 :20020000 :0043082a :1020ffb8 :54000000 :000b3820 :00113020 :00122820 :000f2020 :23bdffe8 :3c150000 :26b5fbdc :afb50000 :8fc1ff38 :00220820 :00230822 :afa10004 :90810000 :afa10008 :90a10000 :afa1000c :90c10000 :afa10010 :90e10000 :afa10014 :0c003dd0 :54000000 :23bd0018 :20e70004 :20c60004 :20a50004 :20840004 :20420004 :0043082a :1420ff98 :54000000 :0bffff34 :54000000 :23bdfff8 :afaa0000 :0c003d10 :54000000 :0800003c :54000000 :21080004 :21290001 :8d100000 :00099820 :08000028 :54000000 :23bdfff8 :3c150000 :26b5fbf4 :afb50000 :8d010000 :afa10004 :0c003d54 :54000000 :23bd0008 :66010000 :14200018 :54000000 :21080004 :21290001 :012e082a :1420fce8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffcb58 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcb30 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc10 :afb50000 :0c003cc0 :54000000 :23bd0008 :0c000c64 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffcadc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcab4 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc30 :afb50000 :0c003c44 :54000000 :23bd0008 :0fffb7b8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffca60 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffca38 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc4c :afb50000 :0c003bc8 :54000000 :23bd0008 :0fffd308 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc9e4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc9bc :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc68 :afb50000 :0c003b4c :54000000 :23bd0008 :0c00127c :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc968 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc940 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fc88 :afb50000 :0c003ad0 :54000000 :23bd0008 :0c001f08 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc8ec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc8c4 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fcb4 :afb50000 :0c003a54 :54000000 :23bd0008 :23c2ff80 :23c3ffe3 :20150061 :a0550000 :20420001 :0043082c :1420ffec :54000000 :23bdfff8 :3c150000 :26b5fcd4 :afb50000 :20150002 :afb50004 :0fffa1bc :54000000 :00014820 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc838 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc810 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c150000 :26b5fcd8 :afb50000 :afa90004 :0c00399c :54000000 :23bd0008 :23bdfff0 :afa90000 :20150000 :afb50004 :afb50008 :0fffa784 :54000000 :afa90000 :23c1ff80 :afa10004 :20150050 :afb50008 :0fffa66c :54000000 :afa90000 :0fffa45c :54000000 :23bd0010 :66010000 :102000c4 :54000000 :00134820 :026e082a :10200044 :54000000 :23c4fff8 :51210002 :00341820 :01331022 :7041000a :10200028 :54000000 :50410002 :00240820 :8c750000 :ac35ff58 :20630004 :21290001 :012e082a :1420ffd0 :54000000 :23bdffd0 :8fd5ff50 :afb50000 :8fc1ff54 :afa10004 :8fd5ff58 :afb50008 :8fd5ff5c :afb5000c :8fd5ff60 :afb50010 :8fd5ff64 :afb50014 :8fd5ff68 :afb50018 :8fd5ff6c :afb5001c :8fd5ff70 :afb50020 :8fd5ff74 :afb50024 :8fd5ff78 :afb50028 :8fd5ff7c :afb5002c :0c000220 :54000000 :23bd0030 :0c003764 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc6a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc67c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150000 :26b5fcf0 :afb50000 :0c00380c :54000000 :23bd0008 :23bdfff8 :3c030000 :2463f438 :8c750000 :afb50000 :0c001bfc :54000000 :3c020000 :2442fd60 :afa20000 :20150069 :afb50004 :0fffc618 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc5f0 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c150000 :26b5fd24 :afb50000 :8c610000 :afa10004 :0c003778 :54000000 :23bd0008 :0fff98e8 :54000000 :0c00374c :54000000 :0c003750 :54000000 0000fd5c:00000000 00007894:afbefffc :001df020 :afbffff8 :2fbd0008 :3c010000 :2421fd5c :98200000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :3c010000 :2421fe28 :8c210000 :3c1f0000 :27fffe5c :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :3c1f0000 :27fffe5c :003f1022 :50410004 :00221020 :50410008 :00411020 :50410010 :00410820 :00010822 :5c210003 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0408 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :20040000 :8fc10000 :64210000 :1020005c :54000000 :23c5fc10 :001ef820 :20020000 :00851820 :8fe10000 :00220820 :80210000 :a0610000 :20420001 :20630001 :20840001 :8fe10000 :00410820 :9021ffff :64210000 :1420ffd0 :54000000 :23ff0004 :8fe10000 :64210000 :1420ffb4 :54000000 :23c3fc10 :00641020 :23c1fc11 :00240820 :20060000 :a0260000 :a0460000 :23bdfff0 :20060000 :afa60000 :afa30004 :8fc60000 :afa60008 :20060001 :afa6000c :0fffdb78 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0fffd0b4 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0c0034f8 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff9690 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff964c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff9608 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010d5c:496e6974 :69616c69 :7a696e67 :20717565 :7565206c :696e6b20 :25642e0a :00 00007f9c:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :3c050001 :24a50dc8 :afa50000 :0c0000e0 :54000000 :20030000 :23bd0008 :3c040000 :2484fd60 :3c020001 :24420dd4 :23bdfff8 :afa40000 :20050069 :afa50004 :0fffbe34 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2005002b :afa50004 :0fffbe0c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c050001 :24a50d5c :afa50000 :afa30004 :0c002f98 :54000000 :23bd0008 :20050000 :ac450000 :23bdfff8 :afa20000 :0c000078 :54000000 :23bd0008 :20420010 :20630001 :7061018f :1420ff64 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :ac210000 :ac210004 :201f0000 :ac3f0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010d7c:25733a20 :25730a00 00010d84:51756575 :65467265 :654c696e :6b00 00010d94:4c696e6b :206e6f74 :20656d70 :747900 000080e8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8c610000 :64210000 :10200038 :54000000 :23bdfff0 :3c040001 :24840d7c :afa40000 :3c010001 :24210d84 :afa10004 :3c040001 :24840d94 :afa40008 :0c002ea8 :54000000 :23bd0010 :3c020001 :24420dc8 :8c410004 :ac620008 :ac610004 :8c240000 :ac640000 :ac230000 :8c610000 :ac230004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00010da4:51756575 :65416c6c :6f634c69 :6e6b00 00010db4:4c696e6b :206e6f74 :20616c6c :6f636174 :65642100 000081a0:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24420dc8 :8c410008 :60210000 :14200054 :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c640000 :ac240000 :8c610000 :8c640004 :ac240004 :8c620008 :8c410008 :2021ffff :ac410008 :20040000 :ac640000 :08000008 :54000000 :20030000 :64610000 :14200038 :54000000 :23bdfff0 :3c040001 :24840d7c :afa40000 :3c010001 :24210da4 :afa10004 :3c040001 :24840db4 :afa40008 :0c002d8c :54000000 :23bd0010 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff8f04 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff8ec0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8e7c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000126d4:456e7465 :72696e67 :2053796e :63684d6f :64756c65 :496e6974 :0a00 000126f0:4c656176 :696e6720 :53796e63 :684d6f64 :756c6549 :6e69740a :00 00008728:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20030070 :afa30004 :0fffb6d8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb6b0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :246326d4 :afa30000 :0c002840 :54000000 :23bd0008 :3c1f0001 :27ff27b8 :23e2026c :20030000 :afe30010 :23ff0014 :03e2082c :1420ffec :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20030070 :afa30004 :0fffb640 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb618 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :246326f0 :afa30000 :0c0027a8 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :23bdfff8 :afa20000 :0ffff81c :54000000 :ac43000c :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :2005000f :afa50000 :0fff899c :54000000 :00012020 :23bd0008 :20030000 :3c1f0001 :27ff27b8 :001f1020 :8fe10010 :64210000 :10200078 :54000000 :205f0014 :20630001 :7061001f :1420ffdc :54000000 :23bdfff8 :afa40000 :0fff8950 :54000000 :23bd0008 :60610020 :14200054 :54000000 :50610002 :00230820 :50210002 :3c050001 :24a527b8 :00251020 :23bdfff8 :afa20000 :0ffff740 :54000000 :8fc50000 :ac45000c :23bd0008 :00030820 :08000018 :54000000 :20050001 :afe50010 :0bffff94 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001270c:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 0001272c:50726f63 :20307825 :78207761 :6974696e :67206f6e :2073656d :20307825 :782c2063 :6f756e74 :3d25642e :0a00 00012758:53757370 :656e6469 :6e672063 :75727265 :6e742070 :726f6320 :28307825 :78292e0a :00 000089c4:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc40000 :23bdfff8 :2007000f :afa70000 :0fff8888 :54000000 :00013020 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070049 :afa70004 :0fffb40c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb3e4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c070001 :24e7270c :afa70000 :afa60004 :0c002570 :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070073 :afa70004 :0fffb394 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb36c :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070001 :24e7272c :afa70000 :3c010000 :2421fe28 :8c210000 :afa10004 :afa40008 :8c87000c :afa7000c :0c0024e0 :54000000 :23bd0010 :8c81000c :2021ffff :ac81000c :68210000 :102000d8 :54000000 :0ffff670 :54000000 :00011020 :3c050000 :24a5fe28 :8ca10000 :20070000 :ac470000 :ac41000c :23bdfff8 :3c030000 :2463fd60 :afa30000 :20070073 :afa70004 :0fffb2c8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0fffb2a0 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c070001 :24e72758 :afa70000 :8ca10000 :afa10004 :0c002428 :54000000 :23bd0008 :8c810004 :ac440008 :ac410004 :8c270000 :ac470000 :ac220000 :8c410000 :ac220004 :8c810008 :20210001 :ac810008 :0fff86d8 :54000000 :23bdfff8 :afa60000 :0fff867c :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244227b8 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffd2c :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001277c:5369676e :616c6c69 :6e67206f :6e207365 :6d203078 :25782c20 :636f756e :743d2564 :2e0a00 000127a0:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 00008cd4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :23bdfff8 :2005000f :afa50000 :0fff8580 :54000000 :00012020 :23bd0008 :23bdfff8 :3c030000 :2463fd60 :afa30000 :20050073 :afa50004 :0fffb104 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2005002b :afa50004 :0fffb0dc :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c050001 :24a5277c :afa50000 :afa20004 :8c45000c :afa50008 :0c002260 :54000000 :23bd0010 :8c41000c :20210001 :ac41000c :70210000 :102000ec :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c650000 :ac250000 :8c610000 :8c650004 :ac250004 :8c620008 :8c410008 :2021ffff :ac410008 :20050000 :ac650000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20050073 :afa50004 :0fffb024 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2005002b :afa50004 :0fffaffc :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c050001 :24a527a0 :afa50000 :8c61000c :afa10004 :0c002184 :54000000 :23bd0008 :23bdfff8 :8c65000c :afa50000 :0fffc2f8 :54000000 :afa30000 :0ffff25c :54000000 :23bd0008 :23bdfff8 :afa40000 :0fff83e8 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :244227b8 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffdb0 :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012a38:3a207472 :6170732e :632c7620 :312e3120 :32303030 :2f30392f :32302030 :313a3530 :3a313920 :656c6d20 :45787020 :656c6d20 :303030 00008f60:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff8230 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff81ec :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff81a8 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :24210010 :8fdf0000 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :242101c0 :201f0001 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012a6c:46617461 :6c3a2043 :756d756c :61746976 :65206c65 :6e677468 :206f6620 :616c6c20 :61726775 :6d656e74 :73203e20 :3130300a :00 00009464:afbefffc :001df020 :afbffff8 :2fbd06a0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc40000 :8fc60004 :23c2fbf8 :23c3fc5b :200c0000 :a04c0000 :20420001 :0043082c :1420ffec :54000000 :20050000 :64c10000 :142000a0 :54000000 :23bdfff0 :3c020000 :2442fe28 :8c4c0000 :afac0000 :afa40004 :23c1f990 :afa10008 :200c0200 :afac000c :0fffa080 :54000000 :23bd0010 :23c4fb8f :23c3fb90 :23bdfff0 :8c4c0000 :afac0000 :8fc1f990 :00250820 :afa10004 :afa30008 :200c0001 :afac000c :0fffa048 :54000000 :20840001 :20630001 :20a50001 :23bd0010 :70a10063 :10200060 :54000000 :90810000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1f990 :afa10004 :200c0200 :afac0008 :0fffac34 :54000000 :8fccf990 :afac0000 :23c1fb90 :afa10004 :200c0064 :afac0008 :0fffa428 :54000000 :23bd0010 :200c0000 :a3ccfbf3 :20050000 :64c10000 :142000b0 :54000000 :3c080000 :2508fe28 :23cbfbf8 :23cafbf7 :23c6fff8 :23c90020 :8cc1f998 :64210000 :1020012c :54000000 :20020000 :00063820 :00aa2020 :00ab1820 :23bdfff0 :8d0c0000 :afac0000 :8ce1f998 :00220820 :afa10004 :afa30008 :200c0001 :afac000c :0fff9f54 :54000000 :20840001 :20630001 :20a50001 :20420001 :23bd0010 :70a103ff :10200014 :54000000 :90810000 :64210000 :1420ffa8 :54000000 :20c60004 :00c9082c :102000b0 :54000000 :0bffff70 :54000000 :23c5fbf8 :00053820 :23c3fff8 :23c60020 :2064f998 :8c820000 :64410000 :10200084 :54000000 :23bdfff8 :afa20000 :0fffa518 :54000000 :00a11020 :00470822 :23bd0008 :6c210064 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c2a6c :afac0000 :0c001910 :54000000 :0c0018f0 :54000000 :23bd0008 :23bdfff8 :afa50000 :8c810000 :afa10004 :0fffa274 :54000000 :200c0000 :a04c0000 :23bd0008 :20630004 :0066082c :1420ff70 :54000000 :200c0000 :a3ccfff7 :23bdfff0 :200c0000 :afac0000 :23c1fbf8 :afa10004 :23c1fb90 :afa10008 :200c0001 :afac000c :0fffbe7c :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd00d0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :8fc40000 :8fc10004 :20080000 :00081820 :64210000 :142000a0 :54000000 :23bdfff0 :3c020000 :2442fe28 :8c4b0000 :afab0000 :afa40004 :23c1ff58 :afa10008 :200b0028 :afab000c :0fff9d6c :54000000 :23bd0010 :23c5ffa7 :23c4ffa8 :23bdfff0 :8c4b0000 :afab0000 :8fc1ff58 :00230820 :afa10004 :afa40008 :200b0001 :afab000c :0fff9d34 :54000000 :20a50001 :20840001 :20630001 :23bd0010 :7061004f :10200060 :54000000 :90a10000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1ff58 :afa10004 :200b0028 :afab0008 :0fffa920 :54000000 :8fcbff58 :afab0000 :23c1ffa8 :afa10004 :200b0050 :afab0008 :0fffa114 :54000000 :23bd0010 :200b0000 :a3cbfff7 :23c3ffa8 :80620000 :304100ff :64210000 :102000f0 :54000000 :23cafff8 :23c9ff5c :51010002 :00293820 :002a3020 :304100ff :60210025 :102000b4 :54000000 :90610001 :60210025 :10200010 :54000000 :20630001 :08000098 :54000000 :8ceb0000 :accbff88 :51010002 :00292820 :002a2020 :20630001 :807f0000 :33e200ff :60410073 :14200060 :54000000 :6041006c :1420ffe0 :54000000 :23e1ff9a :302100ff :70210001 :14200010 :54000000 :60410065 :10200020 :54000000 :20e70004 :20c60004 :21080001 :8ca50004 :ac85ff8c :08000018 :54000000 :23e1ff9f :302100ff :70210019 :1020ff90 :54000000 :20e70004 :20c60004 :21080001 :20630001 :80620000 :304100ff :64210000 :1420ff2c :54000000 :23bdffd8 :23c1ffa8 :afa10000 :8fc1ff80 :afa10004 :8fcbff84 :afab0008 :8fcbff88 :afab000c :8fcbff8c :afab0010 :8fcbff90 :afab0014 :8fcbff94 :afab0018 :8fcbff98 :afab001c :8fcbff9c :afab0020 :0c0015c4 :54000000 :23bd0028 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012aa0:496e7465 :72727570 :74206361 :7573653d :30782578 :20696172 :3d307825 :78206973 :723d3078 :25782061 :7267733d :30782530 :38782e0a :00 00012ad8:476f7420 :6120636f :6e746578 :74207377 :69746368 :20747261 :70210a00 00012af4:476f7420 :616e2065 :78697420 :74726170 :210a00 00012b08:476f7420 :6120666f :726b2074 :72617021 :0a00 00012b1c:476f7420 :61207072 :6f636573 :7320736c :65657020 :74726170 :210a00 00012b38:476f7420 :61207072 :696e7466 :20747261 :70210a00 00012b4c:476f7420 :616e206f :70656e20 :77697468 :20706172 :616d6574 :65727320 :28272573 :272c3078 :2578290a :00 00012b78:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :74726170 :20283078 :25782920 :2d206578 :6974696e :67210a00 00012ba4:476f7420 :61207469 :6d657220 :696e7465 :72727570 :74210a00 00012bbc:476f7420 :61206b65 :79626f61 :72642069 :6e746572 :72757074 :20286368 :61723d30 :78257828 :2563292c :206e6c65 :66743d25 :6429210a :00 00012bf4:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c20696e :73747275 :6374696f :6e206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 00012c30:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :73797374 :656d2069 :6e746572 :72757074 :20283078 :25782920 :2d206578 :6974696e :67210a00 00012c68:41626f75 :7420746f :20726574 :75726e20 :66726f6d :20646f69 :6e746572 :72757074 :2e0a00 00009a6c:afbefffc :001df020 :afbffff8 :2fbd0058 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc60004 :8fc50008 :8fc3000c :23bdfff8 :3c040000 :2484fd60 :afa40000 :20070074 :afa70004 :0fffa374 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2007002b :afa70004 :0fffa34c :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070001 :24e72aa0 :afa70000 :afa20004 :afa60008 :afa5000c :afa30010 :0c0014cc :54000000 :23bd0018 :3c070800 :24e70000 :00470824 :64210000 :10200924 :54000000 :3c07f7ff :24e7ffff :00471024 :60410400 :14200110 :54000000 :6c410400 :14200074 :54000000 :60410212 :14200638 :54000000 :6c410212 :14200030 :54000000 :60410210 :1420050c :54000000 :6c410210 :1420055c :54000000 :60410201 :102008b0 :54000000 :080002dc :54000000 :60410214 :14200484 :54000000 :68410214 :14200358 :54000000 :60410300 :10200884 :54000000 :08000100 :54000000 :60410432 :14200658 :54000000 :6c410432 :14200030 :54000000 :60410430 :14200174 :54000000 :6c410430 :14200600 :54000000 :60410410 :10200840 :54000000 :080001cc :54000000 :60410451 :142006dc :54000000 :6c410451 :14200018 :54000000 :60410450 :10200814 :54000000 :08000614 :54000000 :60410452 :14200758 :54000000 :60410580 :102007f4 :54000000 :080004e8 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa1b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa18c :54000000 :23bd0008 :64210000 :10200894 :54000000 :23bdfff8 :3c070001 :24e72ad8 :08000870 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa148 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa120 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72af4 :afa70000 :0c0012b0 :54000000 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffdd28 :54000000 :080008fc :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa0b0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa088 :54000000 :23bd0008 :64210000 :102008a8 :54000000 :23bdfff8 :3c070001 :24e72b08 :afa70000 :0c001218 :54000000 :08000884 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fffa038 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa010 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72b1c :afa70000 :0c0011a0 :54000000 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffb174 :54000000 :0fffacd8 :54000000 :080007e4 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fff9f98 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9f70 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72b38 :afa70000 :0c001100 :54000000 :23bd0008 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff890 :54000000 :08000750 :54000000 :30a10040 :64210000 :1020001c :54000000 :8c670000 :afc7ffe8 :8c630004 :afc3ffec :0800006c :54000000 :23bdfff0 :3c020000 :2442fe28 :8c470000 :afa70000 :afa30004 :23c1ffe8 :afa10008 :20070008 :afa7000c :0fff961c :54000000 :8c420000 :afa20000 :8fc1ffe8 :afa10004 :23c2ffc8 :afa20008 :2007001f :afa7000c :0fff95f4 :54000000 :20070000 :a3c7ffe7 :afc2ffe8 :23bd0010 :23bdfff8 :20070000 :afa70000 :0fff72d4 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :8fc1ffec :3c070001 :24e70000 :00270820 :afa10004 :0fffab2c :54000000 :23bdfff8 :3c070001 :24e72b4c :afa70000 :8fc1ffe8 :afa10004 :8fc7ffec :afa70008 :0c000fd8 :54000000 :23bd0010 :23bdfff8 :afa20000 :0fff7260 :54000000 :08000630 :54000000 :23bdfff8 :20070000 :afa70000 :0fff7244 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffaaa8 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7204 :54000000 :080005d4 :54000000 :23bdfff8 :20070000 :afa70000 :0fff71e8 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffaa4c :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff71a8 :54000000 :08000578 :54000000 :23bdfff8 :20070000 :afa70000 :0fff718c :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa9f0 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff714c :54000000 :0800051c :54000000 :23bdfff8 :20070000 :afa70000 :0fff7130 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa994 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff70f0 :54000000 :080004c0 :54000000 :23bdfff8 :20070000 :afa70000 :0fff70d4 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa938 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff7094 :54000000 :08000464 :54000000 :0fffd6c0 :54000000 :00011020 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa8f0 :54000000 :08000430 :54000000 :23bdfff8 :afa30000 :30a10040 :afa10004 :0ffff21c :54000000 :08000410 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010000 :2421fe28 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff92f4 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9f0c :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe5ec :54000000 :00011020 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa828 :54000000 :08000368 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010000 :2421fe28 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff924c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9e64 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe8c8 :54000000 :00011020 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa780 :54000000 :080002c0 :54000000 :30a10040 :64210000 :1420003c :54000000 :23bdfff0 :3c010000 :2421fe28 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff91a4 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9dbc :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffeaac :54000000 :00011020 :3c010000 :2421fe28 :8c210000 :afa10000 :afa20004 :0fffa6d8 :54000000 :08000218 :54000000 :23bdfff8 :3c070001 :24e72b78 :080001ec :54000000 :60410003 :14200148 :54000000 :6c410003 :14200024 :54000000 :60410001 :14200178 :54000000 :60410002 :102001b0 :54000000 :08000140 :54000000 :60410040 :14200038 :54000000 :6c410040 :14200018 :54000000 :60410020 :10200184 :54000000 :0800016c :54000000 :60410048 :10200170 :54000000 :08000088 :54000000 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fff9940 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9918 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72ba4 :afa70000 :0c000aa8 :54000000 :23bd0008 :0fffa5fc :54000000 :0800010c :54000000 :3c04fff0 :248401a0 :3c03fff0 :24630180 :8c820000 :8c610000 :23bdfff0 :3c070001 :24e72bbc :afa70000 :afa10004 :afa10008 :afa2000c :0c000a58 :54000000 :23bd0010 :6c410001 :102000c0 :54000000 :0bffffc0 :54000000 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffd4bc :54000000 :08000090 :54000000 :23bdfff8 :3c010000 :2421fe28 :8c210000 :afa10000 :0fffd498 :54000000 :0800006c :54000000 :23bdfff0 :3c070001 :24e72bf4 :afa70000 :afa60004 :afa50008 :0c0009d8 :54000000 :0c0009b8 :54000000 :23bd0010 :0800003c :54000000 :0fffd480 :54000000 :0800002c :54000000 :23bdfff8 :3c070001 :24e72c30 :afa70000 :afa20004 :0c000998 :54000000 :0c000978 :54000000 :23bd0008 :23bdfff8 :3c020000 :2442fd60 :afa20000 :20070074 :afa70004 :0fff97b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff978c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e72c68 :afa70000 :0c00091c :54000000 :23bd0008 :0fff6a8c :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff6a84 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff6a40 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff69fc :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012c8c:50726f63 :65737320 :2300 00012c98:52756e6e :696e6720 :70726f63 :65737320 :25642028 :69746572 :6174696f :6e202564 :29210a00 0000aba8:afbefffc :001df020 :afbffff8 :2fbd0078 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc60000 :2001000a :00c00035 :00200835 :0401000f :00001034 :50410002 :00220820 :50210001 :00c13822 :70c10063 :102000dc :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25082d30 :00280820 :afa10000 :20080001 :afa80004 :0fffdc34 :54000000 :20030001 :23bd0008 :23c4ffd0 :23c5ffa8 :00061020 :23bdfff8 :afa40000 :3c080001 :25082c8c :afa80004 :0fff8d10 :54000000 :afa30000 :afa50004 :0fff923c :54000000 :afa40000 :afa50004 :0fff8de0 :54000000 :23bdfff8 :3c080000 :2508aba8 :afa80000 :50410005 :00220822 :50210002 :00220820 :50210003 :00260820 :afa10004 :afa40008 :20080000 :afa8000c :0fffa908 :54000000 :23bd0010 :00461020 :20630001 :70610006 :1420ff70 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25082d30 :00280820 :afa10000 :0fffdcc0 :54000000 :20030000 :23bd0008 :50c20001 :0062082a :10200070 :54000000 :200503e8 :00022020 :00600035 :00a00835 :0401000f :00001034 :50410005 :00220822 :50210002 :00220820 :50210003 :00610829 :14200028 :54000000 :23bdfff0 :3c080001 :25082c98 :afa80000 :afa60004 :afa30008 :0c000278 :54000000 :23bd0010 :20630001 :0064082a :1420ffa0 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :25082d30 :00280820 :afa10000 :0fffdf24 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012cbc:63686173 :65746169 :6c00 00012cc8:43686173 :696e6720 :7461696c :2025642e :0a00 00012cdc:4f70656e :206f6620 :2825732c :30782578 :29207265 :7475726e :73203078 :25782e0a :00 00012d00:43686173 :65546169 :6c00 0000ade8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :24632cbc :23bdfff8 :3c050001 :24a52cc8 :afa50000 :afa40004 :0c0001c0 :54000000 :afa30000 :20822000 :afa20004 :0c000158 :54000000 :23bdfff8 :3c050001 :24a52cdc :afa50000 :afa30004 :afa20008 :afa1000c :0c000188 :54000000 :23bd0010 :70810027 :1020003c :54000000 :23bdfff0 :3c050000 :24a5ade8 :afa50000 :20810001 :afa10004 :3c050001 :24a52d00 :afa50008 :20050000 :afa5000c :0fffa724 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012d0c:25642000 :52616e64 :6f6d206e :756d6265 :72202530 :32692069 :73203078 :25303878 :2e0a00 0000aed4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24422d30 :204300b4 :23bdfff8 :afa20000 :20040001 :afa40004 :0fffd958 :54000000 :23bd0008 :20420014 :0043082c :1420ffd8 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00012df8:00012e00 0000af48:44000300 :4be00000 :54000000 :4be00000 :54000000 :44002013 :4be00000 :54000000 :44002014 :4be00000 :54000000 :44002010 :4be00000 :54000000 :44002011 :4be00000 :54000000 :44002012 :4be00000 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44002f00 :4be00000 :54000000 :44000300 :4be00000 :54000000 :44002001 :4be00000 :54000000

option1/lab4_1/execs/userprog.dlx.obj

start:00001000 00002074 00001000 00000bf8 00002000 00000074 00002000:0a546573 :74696e67 :20636173 :65202564 :0a00 00002014:0a557361 :67653a20 :00 00002020:205b6361 :73652069 :645d0a0a :00 00002030:75736572 :70726f67 :312e646c :782e6f62 :6a00 00002044:75736572 :70726f67 :322e646c :782e6f62 :6a00 00002058:54657374 :20636173 :65202564 :206e6f74 :20737570 :706f7274 :65640a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :8fc20000 :8fc30004 :0c000bd0 :54000000 :60410002 :10200050 :54000000 :23bdfff0 :8c630004 :afa30000 :20040000 :afa40004 :2004000a :afa40008 :0c0008b4 :54000000 :00011020 :3c040000 :24842000 :afa40000 :afa20004 :0c000134 :54000000 :23bd0010 :08000048 :54000000 :23bdfff8 :3c040000 :24842014 :afa40000 :0c000110 :54000000 :8c630000 :afa30000 :0c000100 :54000000 :3c040000 :24842020 :afa40000 :0c0000ec :54000000 :0c000b28 :54000000 :60410001 :14200018 :54000000 :60410002 :1020005c :54000000 :0800002c :54000000 :23bdfff8 :3c040000 :24842030 :afa40000 :20040000 :afa40004 :0c0000bc :54000000 :08000048 :54000000 :23bdfff8 :3c040000 :24842044 :afa40000 :20040000 :afa40004 :0c000094 :54000000 :08000020 :54000000 :23bdfff8 :3c040000 :24842058 :afa40000 :afa20004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

option1/lab4_1/execs/userprog2.dlx.obj

start:00001000 00002019 00001000 00000b30 00002000 00000019 00002000:0a20696e :20557365 :7270726f :67322c20 :53756d20 :3a202564 :00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :0c000b14 :54000000 :20030000 :201f0000 :20027000 :a05f0000 :20422000 :23ff0001 :73e1000c :1420ffec :54000000 :201f7000 :3c040001 :24848000 :03e41025 :83e40000 :00831820 :23ff2000 :03e2082c :1420ffec :54000000 :23bdfff8 :3c040000 :24842000 :afa40000 :306100ff :afa10004 :0c000058 :54000000 :23bd0008 :0c000a90 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000

option2/Makefile

all: gcc -g fs.c filefs.c -o filefs

option2/fs.c

#include "fs.h" void mapfs(int fd){ if ((fs = mmap(NULL, FSSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == NULL){ perror("mmap failed"); exit(EXIT_FAILURE); } } void unmapfs(){ munmap(fs, FSSIZE); } void formatfs(){ } void loadfs(){ } void lsfs(){ } void addfilefs(char* fname){ } void removefilefs(char* fname){ } void extractfilefs(char* fname){ }

option2/filefs.c

#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <errno.h> #include <sys/mman.h> #include "fs.h" int zerosize(int fd); void exitusage(char* pname); int main(int argc, char** argv){ int opt; int create = 0; int list = 0; int add = 0; int remove = 0; int extract = 0; char* toadd = NULL; char* toremove = NULL; char* toextract = NULL; char* fsname = NULL; int fd = -1; int newfs = 0; int filefsname = 0; while ((opt = getopt(argc, argv, "la:r:e:f:")) != -1) { switch (opt) { case 'l': list = 1; break; case 'a': add = 1; toadd = strdup(optarg); break; case 'r': remove = 1; toremove = strdup(optarg); break; case 'f': filefsname = 1; fsname = strdup(optarg); break; default: exitusage(argv[0]); } } if (!filefsname){ exitusage(argv[0]); } if ((fd = open(fsname, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) == -1){ perror("open failed"); exit(EXIT_FAILURE); } else{ if (zerosize(fd)){ newfs = 1; } if (newfs) if (lseek(fd, FSSIZE-1, SEEK_SET) == -1){ perror("seek failed"); exit(EXIT_FAILURE); } else{ if(write(fd, "\0", 1) == -1){ perror("write failed"); exit(EXIT_FAILURE); } } } mapfs(fd); if (newfs){ formatfs(); } loadfs(); if (add){ addfilefs(toadd); } if (remove){ removefilefs(toremove); } if (extract){ extractfilefs(toextract); } if(list){ lsfs(); } unmapfs(); return 0; } int zerosize(int fd){ struct stat stats; fstat(fd, &stats); if(stats.st_size == 0) return 1; return 0; } void exitusage(char* pname){ fprintf(stderr, "Usage %s [-l] [-a path] [-e path] [-r path] -f name\n", pname); exit(EXIT_FAILURE); }

option2/fs.h

#ifndef __FS_H__ #define __FS_H__ #include <sys/mman.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #define FSSIZE 10000000 unsigned char* fs; void mapfs(int fd); void unmapfs(); void formatfs(); void loadfs(); void lsfs(); void addfilefs(char* fname); void removefilefs(char* fname); void extractfilefs(char* fname); #endif

home/bshapir/cs314/project4/option2/fs.h

#ifndef __FS_H__ #define __FS_H__ #include <sys/mman.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #define FSSIZE 10000000 unsigned char* fs; void mapfs(int fd); void unmapfs(); void formatfs(); void loadfs(); void lsfs(); void addfilefs(char* fname); void removefilefs(char* fname); void extractfilefs(char* fname); #endif

home/bshapir/cs314/project4/option2/Makefile

all: gcc -g fs.c filefs.c -o filefs

home/bshapir/cs314/project4/option2/filefs.c

#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <errno.h> #include <sys/mman.h> #include "fs.h" int zerosize(int fd); void exitusage(char* pname); int main(int argc, char** argv){ int opt; int create = 0; int list = 0; int add = 0; int remove = 0; int extract = 0; char* toadd = NULL; char* toremove = NULL; char* toextract = NULL; char* fsname = NULL; int fd = -1; int newfs = 0; int filefsname = 0; while ((opt = getopt(argc, argv, "la:r:e:f:")) != -1) { switch (opt) { case 'l': list = 1; break; case 'a': add = 1; toadd = strdup(optarg); break; case 'r': remove = 1; toremove = strdup(optarg); break; case 'f': filefsname = 1; fsname = strdup(optarg); break; default: exitusage(argv[0]); } } if (!filefsname){ exitusage(argv[0]); } if ((fd = open(fsname, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) == -1){ perror("open failed"); exit(EXIT_FAILURE); } else{ if (zerosize(fd)){ newfs = 1; } if (newfs) if (lseek(fd, FSSIZE-1, SEEK_SET) == -1){ perror("seek failed"); exit(EXIT_FAILURE); } else{ if(write(fd, "\0", 1) == -1){ perror("write failed"); exit(EXIT_FAILURE); } } } mapfs(fd); if (newfs){ formatfs(); } loadfs(); if (add){ addfilefs(toadd); } if (remove){ removefilefs(toremove); } if (extract){ extractfilefs(toextract); } if(list){ lsfs(); } unmapfs(); return 0; } int zerosize(int fd){ struct stat stats; fstat(fd, &stats); if(stats.st_size == 0) return 1; return 0; } void exitusage(char* pname){ fprintf(stderr, "Usage %s [-l] [-a path] [-e path] [-r path] -f name\n", pname); exit(EXIT_FAILURE); }

home/bshapir/cs314/project4/option2/fs.c

#include "fs.h" void mapfs(int fd){ if ((fs = mmap(NULL, FSSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == NULL){ perror("mmap failed"); exit(EXIT_FAILURE); } } void unmapfs(){ munmap(fs, FSSIZE); } void formatfs(){ } void loadfs(){ } void lsfs(){ } void addfilefs(char* fname){ } void removefilefs(char* fname){ } void extractfilefs(char* fname){ }